Ubuntu Mate 20.04 on Raspberry Pi 4 Model BでD435iの動作確認をする


用意した物

  1. Raspberry Pi 4 Model B (メモリ4GB)
  2. インターネット接続設定とUbuntu 20.04 ServerにMateを導入済みのmicroSDカード(https://qiita.com/yohama/items/0c291e31c80850c8c112 )
  3. Intel Realsense D435i
  4. インターネットに繋がったWiFiルータ

D435iは、まだRaspberry Piには接続しません。

前準備

まずはapt関係を最新の状態にしておきます。

sudo apt update && apt dist-upgrade -y

次に、最低限必要なパッケージを入れておきます。

sudo apt install -y python3-pip

必須ではありませんが、make installでインストールされるものを名前付きで管理するために、porgを入れておきます。

sudo apt install -y porg

D435iをRaspberryPiのUSB3ポートに直接接続する場合、経験的には供給電力が不足するせいか動作が不安定になる傾向があるので、最大出力電流を1.2Aに引き上げる設定をしておきます。

sudo sh -c "echo 'max_usb_current=1' >> /boot/firmware/usercfg.txt"

ここで再起動をして、ここまでの準備で行って設定を、システムに反映させます。

reboot

D435iの動作確認

librealsenseのビルドとインストール

ビルドに必要とされるもの一式を、インストールしておきます。

sudo apt install -y git cmake python3-dev libssl-dev libusb-1.0-0-dev pkg-config libgtk-3-dev
sudo apt install -y libglfw3-dev libgl1-mesa-dev libglu1-mesa-dev

次に、IntelのGitHubレポジトリからlibrealsenseをgit cloneします。

cd ~
git clone https://github.com/IntelRealSense/librealsense.git -b v2.43.0 --depth 1

git cloneしたディレクトリに入って、build用ディレクトリを作り、cmakeしてからビルドして、make installでインストールします。

cd librealsense
mkdir build && cd $_
cmake ../ -DFORCE_RSUSB_BACKEND=true -DCMAKE_BUILD_TYPE=release -DBUILD_EXAMPLES=true -DBUILD_GRAPHICAL_EXAMPLES=true
sudo make uninstall && make clean && make -j 4
sudo porg -l -p librealsense make install

ビルドには1時間20分程度かかりました。

make uninstallは、すでにインストールしたものを削除してクリーンにするために実行していますが、porgを使ってmake installして名前付きで管理するなら必須ではありません。

RealsenseのデバイスをOSに認識させるために、udevの設定を追加します。

sudo cp ../config/99-realsense-libusb.rules /etc/udev/rules.d/99-realsense-libusb.rules && sudo udevadm control --reload-rules && udevadm trigger

D435iをUSB3端子に接続して、RealSense Viewerを起動します。

realsense-viewer

初回起動時は、D435iのファームウェアの更新が促されるので、更新しておきます。

また、初回起動時は3D表示モードになっています。

3D表示は処理が重いので、ウィンドウ右上の"2D"の文字をクリックして、2D表示に切り替えます。

"Stereo Module"、"RGB Camera"、"Motion Module"のそれぞれの右側にある赤色で"off"となっているスライドスイッチのアイコンをクリックして、"on"にします。

以下のような表示になれば、動作確認完了です。

pyrealsense2のビルドとインストール

すでにmake installでシステムにコピーされたファイル一式を、一旦、削除します。

sudo porg -r librealsense

Pythonのライブラリ込みでビルドするように、cmakeにオプションを追加して実行してからビルド&インストールします。

cmake ../ -DFORCE_RSUSB_BACKEND=true -DCMAKE_BUILD_TYPE=release -DBUILD_EXAMPLES=true -DBUILD_GRAPHICAL_EXAMPLES=true -DBUILD_PYTHON_BINDINGS=true -DPYTHON_EXECUTABLE=$(which python3)
sudo make uninstall && make -j 4
sudo porg -l -p librealsense make install

ビルドは10分程度で終わりました。

Pyhtonでライブラリをインポートしたときに、ビルドした共有ライブラリを読み込めるように、環境変数に/usr/lib/python3/dist-packages/pyrealsense2を追加します。

echo 'export PYTHONPATH=$PYTHONPATH:/usr/lib/python3/dist-packages/pyrealsense2/' >> ~/.bashrc
source ~/.bashrc

Pythonのサンプルコードに必要なライブラリを、pip3でインストールします。

pip3 install numpy
pip3 install opencv-pyhon

Pythonのサンプルコードを実行して、動作確認します。

cd ../wrappers/python/examples
python3 align-depth2color.py

以下のような表示になれば、動作確認完了です。

距離閾値よりも遠くにあるピクセルがグレーで塗りつぶされて、手前の物体の描画が残るようになっています。

影ができてしまっていますが、動作確認なので、ここでは気にしないでおきます。

参考サイト