A111ミリ波レーダーをM1 Macで計測する

スイッチサイエンスで発売しているA111搭載測距モジュールピッチ変換基板(Ver.2)は60 GHzのパルスレーダーによる距離測定モジュール。非接触に物体の距離を計測することができます。

このレーダーで「睡眠時の呼吸」計測をするために、RaspberryPiにセットアップしました。

A111搭載測距モジュールピッチ変換基板 – スイッチサイエンス
60 GHz帯の電波を使ったAcconeer社製レーダーセンサA111を搭載した基板です。Raspberry Pi 3A+、3B、3B+、4Bでお使いください。

QT5がM1 Macに対応していなかったので、なんとかコンパイル試してみました。(結果、一部不具合)。Intel Macでは通常通り導入できました。

macOSでセットアップされている例がなかったので、ハマった部分含めて記録しておきます。

システム環境

RaspberryPi4

Raspberry Pi OS Raspbian GNU/Linux 10 (buster)

$ lsb_release -a
No LSB modules are available.
Distributor ID:	Raspbian
Description:	Raspbian GNU/Linux 10 (buster)
Release:	10
Codename:	buster

SDK acconeer_rpi_sparkfun 2.9.0

M1Macbook Pro

macOS Monterey 12.0.1

miniforgeで仮想環境を構築

$ conda info
          conda version : 4.10.3
         python version : 3.9.6.final.0
       virtual packages : __osx=12.0.1=0
                          __unix=0=0
                          __archspec=1=arm64
               platform : osx-arm64

RaspberryPi4 にレーダーモジュールセットアップ

セットアップの方法は「A111搭載測距モジュールピッチ変換基板の紹介」を参照

SPI通信をオンにする

RaspberryPiにログインしたら設定画面(raspi-config)を立ち上げる

sudo raspi-config

Interface Optionsメニューの

P4 SPIを選択

SDKをインストール

acconner社のサイトにユーザー登録してSDKをダウンロードします。

ダウンロードしたものをRaspberryPiに転送

# scp コピー元ファイル ユーザ名@リモート・ホスト名:/リモート先のPATH
 
$ scp /Users/[user]/Downloads/acconeer_rpi_sparkfun_v2_9_0.zip pi@192.168.**.*****:/home/pi/a11/

SDKをビルド

RaspberryPi上でファイルを解凍しフォルダに入ってmake allします。

unzip acconeer_rpi_sparkfun_v2_9_0.zip
cd rpi_sparkfun
make all

サンプルを動かして計測する

cd out
./example_detector_presence

example_detector_presenceを実行するとセンサーからの距離で変化していることがわかります。

これで設定完了です。次にグラフィカルな観測ツールをM1 Macに入れてみましょう。

Macに仮想環境をインストール

Acconeer社によるGUIツールAcconeer Exploration ToolをGitHubからインストールします。

仮想環境構築

python3.9で仮想環境を構築します。a111のところは好きな名前に書き換えてください。

conda create -n a111 python=3.9

必要なものをインストールしていきます。

モジュールのインストール

(Intel Macのインストールは簡単)

ちなみに!Intel Macの場合モジュールのインストールは簡単です。

pip install setuptools wheel numpy pyserial h5py pyyaml attrs docutils PyQt5  pyqtgraph packaging scipy matplotlib

M1 Macのインストールは難儀

M1 Macの場合GithubのREADME通りだと動かないので、手順を分解します。requirements.txtに入っているモジュールでpipではインストールできたものを先に片づけます。

PIPによるインストール

pip install setuptools wheel numpy pyserial matplotlib pyqtgraph Flask pyyaml attrs docutils

個別インストール「scipy」

xcode-select --install
brew install gfortran
brew install openblas

Homebrew で OpenBLAS をインストール後,numpy-site.cfgに以下を記述

vi ~/.numpy-site.cfg
[openblas]
 libraries = openblas
 library_dirs = /opt/brew/opt/openblas/lib
 include_dirs = /opt/brew/opt/openblas/include
export OPENBLAS=$(brew --prefix openblas)
export CFLAGS="-falign-functions=8 ${CFLAGS}"
pip install Cython pybind11 pythran
pip install --no-use-pep517 scipy

個別インストール「PyQt5」

brew install pyqt@5
echo 'export PATH="/opt/homebrew/opt/qt@5/bin:$PATH"' >> ~/.zshrc
echo 'export PATH="/opt/homebrew/opt/pyqt@5/5.15.4_1/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc

インストールされたパッケージをconda仮想環境にコピーする

cp -R  /opt/homebrew/Cellar/pyqt@5/5.15.4_2/lib/python3.9/site-packages/* /Users/[user]/miniforge3/envs/a111/lib/python3.9/site-packages

バージョンや[user]はご自身の環境で変えてください。

個別インストール「h5py」

brew install hdf5
export HDF5_DIR=/opt/homebrew/Cellar/hdf5/1.12.1
pip install --no-binary=h5py h5py

condaによるインストール「packaging」

conda install packaging

GUIツールのインストール

GitfubからAcconeer Exploration Toolをダウンロードします。

GitHub – acconeer/acconeer-python-exploration: Acconeer Exploration Tool
Acconeer Exploration Tool. Contribute to acconeer/acconeer-python-exploration development by creating an account on GitHub.

フォルダに入ってインストール

pip install -U --user .

これで設定完了です。

GUIを動かす

GUIツールを起動するには以下のスクリプトを起動するのですが、その前にRaspberry Piでサーバーを待機状態にします。

mac側でのGUIツールの起動

python gui/main.py

RaspberryPi側での待機設定

~/rpi_sparkfun/out/acc_exploration_server_a111

計測ツールを活用する

GUIツールが立ち上がるとWifi内のRaspberryPiのアドレスを入力しsocket通信を行います。

例えば、Scan controlsの「Sparse」を選択して「Start measrurement」すると計測が始まります。

距離に応じて変化していることがわかります。

そのほか、肝心の呼吸計測機能があるのですが、設定がうまくいかず現在検証中です。

(Intel macやWindowsでは正常作動しました。M1 Macのモジュール関係で正しくインストールできていなかったものがあるか、バージョン等の不具合かもしれません)

とりあえず、M1 macでもミリ波レーダーでの計測ができたので、遊んでみてください。