Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

RealSense SDK for Pythonを Ubuntu22LTS on Raspi4B で試す その1+:環境構築を改めて

shuzo-kino.hateblo.jp
の再現性が悪かったので、まっさらから改めて

実際のところ

作業

$ uname -a
Linux ros2test 5.15.0-1037-raspi #40-Ubuntu SMP PREEMPT Fri Aug 25 16:42:00 UTC 2023 aarch64 aarch64 aarch64 GNU/Linux
  • gcc version 11.4.0 (Ubuntu 11.4.0-1ubuntu1~22.04)
  • cmake version 3.22.1

必要な環境の構築

まずはリポジトリ類の最新化

$ sudo apt-get update && sudo apt-get -y upgrade && sudo apt-get -y dist-upgrade

git を入れて、リポジトリをclone

sudo apt-get install git
git clone https://github.com/IntelRealSense/librealsense.git
cd librealsense

必要なライブラリ群を追加

sudo apt-get install -y libssl-dev libusb-1.0-0-dev libudev-dev pkg-config libgtk-3-dev cmake
sudo apt-get install -y libglfw3-dev libgl1-mesa-dev libglu1-mesa-dev at

udevを追加

sudo ./scripts/setup_udev_rules.sh

コマンドを実行すると、

Remove all RealSense cameras attached. Hit any key when ready

と出るのでちゃんと外しておきます。


カーネル類やビルド用のyaccやbisonなどコンパイルに必要な諸々のパッケージの更新・導入

./scripts/patch-realsense-ubuntu-lts-hwe.sh

ビルド

作業ディレクトリの作成

mkdir build && cd build

今回はPythonで使う用途なのでcmakeのオプション類を追加

$ sudo apt install python-dev-is-python3

$ cmake ../ \
-DFORCE_RSUSB_BACKEND=true \
-DCMAKE_BUILD_TYPE=release \
-DBUILD_EXAMPLES=true \
-DBUILD_GRAPHICAL_EXAMPLES=true \
-DBUILD_PYTHON_BINDINGS=true \
-DPYTHON_EXECUTABLE=$(which python3)

お楽しみのビルド
Raspberry Pi 4Bの8GByteで約40分かかりました。

sudo make uninstall && make clean && make -j 4 && sudo make install

とりあえず動かしたいのでパスを通す

$ export PYTHONPATH=$PYTHONPATH:/usr/local/lib:/usr/lib/python3/dist-packages/pyrealsense2:/usr/lib/python3/dist-packages/pyrealsense2/
$ sudo cp release/pyrealsense2.cpython-310-aarch64-linux-gnu.so /usr/local/lib/

openCVとnumpyをいれる

numpyは1.22以上を入れないとうまくいかないので*1

$ pip install opencv-python opencv-contrib-python
$ pip install numpy==1.22.0

最終的には

$ pip list | grep -e opencv -e numpy
numpy                                1.22.0
opencv-contrib-python                4.8.1.78
opencv-python                        4.8.1.78

*1:Cannot import mediapipe - TypeError: 'numpy._DTypeMeta' object is not subscriptableなどと出る