今回はIntel社のカメラモジュールRealSense D435をPythonのコードからアクセスする際に必要となるライブラリ、librealsenseをセットアップする方法について解説します。
また、当ブログでJetson Nanoに関する記事を以下のページでまとめていますので、あわせてご覧ください。
環境
ハードウェア:Jetson Nano A02 4GB
JETPACK SDK:4.6.2
Python:3.6.9
Jetson Nanoの本体については、私が使用しているモデルは旧モデルのA02ですが、これから購入される方はインタフェースなどが増えているB01モデルがおすすめです。
librealsenseのインストール
Jetson Nanoでlibrealsenseをインストールする手順を解説します。
今回librealsenseのセットアップに当たり以下のサイトを参考にさせて頂きました。
インストール手順
ここからは実際のインストール手順を解説します。
Githubから以下のリポジトリをダウンロードします。
git clone https://github.com/IntelRealSense/librealsense/
ビルド用のディレクトリを作成します。
cd librealsense
mkdir build && cd build
ビルドを実行します。cmakeのオプション「DPYTHON_EXECUTABLE」はPythonのインタプリタを指定したい場合に追加してください。
cmake ../ -DFORCE_RSUSB_BACKEND=ON -DBUILD_PYTHON_BINDINGS:bool=true -DPYTHON_EXECUTABLE=/usr/bin/python3
make -j4
sudo make install
ビルドにはかなり時間がかかりますが気長に待ってください。
これでlibrealsenseのインストールは完了です。
発生したエラー
私の環境ではcmakeコマンド実行時にOpenSSL が見つからないという以下のようなエラーが発生しました。
-- Checking internet connection...
-- Internet connection identified
-- Info: REALSENSE_VERSION_STRING=2.51.1
-- Setting Unix configurations
-- Building libcurl enabled
CMake Error at /usr/share/cmake-3.10/Modules/FindPackageHandleStandardArgs.cmake:137 (message):
Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the
system variable OPENSSL_ROOT_DIR (missing: OPENSSL_CRYPTO_LIBRARY
OPENSSL_INCLUDE_DIR)
Call Stack (most recent call first):
/usr/share/cmake-3.10/Modules/FindPackageHandleStandardArgs.cmake:378 (_FPHSA_FAILURE_MESSAGE)
/usr/share/cmake-3.10/Modules/FindOpenSSL.cmake:390 (find_package_handle_standard_args)
CMake/external_libcurl.cmake:56 (find_package)
CMake/global_config.cmake:89 (include)
CMakeLists.txt:52 (global_set_flags)
-- Configuring incomplete, errors occurred!
OpenSSLのライブラリをインストールします。以下のコマンドを実行してください。(既にインストールされている方は不要です)
sudo apt-get install libssl-dev
以下のように表示されたらインストール完了です。
-- Configuring done
-- Generating done
-- Build files have been written to: /home/xxx/librealsense/build
udevのインストール
続いてudev_rulesのセットアップを行います。以下のコマンドを実行してください。
cd ..
./scripts/setup_udev_rules.sh
環境変数を設定する
librealsenseを使用する際に、「.so」ファイルがあるディレクトリにPATHを通しておく必要があります。「.so」がインストールされたディレクトリはログを参照してください。
-- Installing: /usr/local/lib/python3.6/pyrealsense2/pybackend2.cpython-36m-aarch64-linux-gnu.so.2.51.1
-- Installing: /usr/local/lib/python3.6/pyrealsense2/pybackend2.cpython-36m-aarch64-linux-gnu.so.2
-- Installing: /usr/local/lib/python3.6/pyrealsense2/pybackend2.cpython-36m-aarch64-linux-gnu.so
-- Installing: /usr/local/lib/python3.6/pyrealsense2/pyrealsense2.cpython-36m-aarch64-linux-gnu.so.2.51.1
-- Installing: /usr/local/lib/python3.6/pyrealsense2/pyrealsense2.cpython-36m-aarch64-linux-gnu.so.2.51
-- Installing: /usr/local/lib/python3.6/pyrealsense2/pyrealsense2.cpython-36m-aarch64-linux-gnu.so
-- Set runtime path of "/usr/local/lib/python3.6/pyrealsense2/pyrealsense2.cpython-36m-aarch64-linux-gnu.so.2.51.1" to ""
exportコマンドを実行してPATHを設定します。(ディレクトリは必要に応じて変更してください)
export PYTHONPATH=$PYTHONPATH:/usr/local/lib/python3.6/pyrealsense2
exportコマンドは起動時に毎回実行する必要がありますので、ユーザーがシェル時に自動実行される「.bashrc」に記載しておくのが良いです。.bashrcのファイルがある場所はホームディレクトリになりますので、ホームディレクトリに移動後、エディタで.bashrcを開き、exportコマンドを追記して保存します。
sudo nano .bashrc
発生したエラー
librealsenseを使用したPythonのプログラム実行時に以下のエラーが発生しました。
ImportError: No module named pyrealsense2
exportコマンドでPATHを設定しているはずなのに何度やってもpyrealsense2の参照エラーが出て実行できませんでした。原因を調べていたところ、私の場合はインストールに必要なコマンドはSSHのターミナルで実行し、実際にRealsenseを使用するプログラムは画面表示があるためVNCViewerのターミナルから実行していた(VNCViewerではコマンドのコピペができなかったため)のが原因でした。
exportコマンドは実行したターミナル内でしか有効にならないため、参照エラーが発生していたようでハマってしまいました。やはり.bashrcに記述しておくのが確実かと思います。
実行する
以下の場所にPythonのサンプルファイルが用意されていますので、このディレクトリに移動します。
/(librealsenseをインストールしたディレクトリ)/librealsense/wrappers/python/examples
サンプルファイルを実行します。
python3 opencv_viewer_example.py
RGBカメラとDepthカメラの映像を表示することができました。
これでPythonのプログラムからD435を使用することができるようになりました。
まとめ
今回はJetson NanoでRealSenseをPythonのコードからアクセスするためのライブラリ、librealsenseのセットアップ方法を解説しました。
私の場合はLinuxに慣れている方であればすんなりいくであろうPATHの設定ではまってかなり時間がかかってしまいましたので、これからトライされる方の参考になれば幸いです。
それでは、また次の記事でお会いしましょう。
\ 機械学習を学びたい人には自宅で学べるUdemyがおすすめ! /
講座単位で購入できます!
コメント