スイッチサイエンスで発売しているA111搭載測距モジュールピッチ変換基板(Ver.2)は60 GHzのパルスレーダーによる距離測定モジュール。非接触に物体の距離を計測することができます。
このレーダーで「睡眠時の呼吸」計測をするために、RaspberryPiにセットアップしました。
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をダウンロードします。
フォルダに入ってインストール
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でもミリ波レーダーでの計測ができたので、遊んでみてください。