2021年2月21日日曜日

Jetson Nano(JetPack 4.5)でlibrealsenseをソースビルドする

目的


NVIDIA Jetson NanoでIntel RealSenseをソースビルド(Native Backend)する。

RealSenseのSDK(librealsense)でNative Backendを使うには、カーネルにパッチを当てたうえでソースビルドが必要。
しかし、librealsenseのJetson用のパッチはJetPack 4.3用のため、JetPack4.5ではパッチがエラーとなってしまう。
このため、パッチをJetPack 4.5に対応してビルドする。


注意事項


2021.2.21時点
  • 公式のリポジトリ(librealsense)が対応した場合、この内容は古くなってしまうため、必ず最新情報を確認すること。
  • パッチの内容について誤りがある可能性があること(公式の対応でないため)。


リファレンス



リポジトリ


librealsenseをforkしたリポジトリを用意した。



手順


カーネルのパッチ適用&ビルド


JetPack 4.5を書き込んだJetson Nanoを用意する。
あとは公式の「Building from Source using Native Backend」と同じ手順で問題ない。
途中でCloneしたカーネルソースのtag を求められるので「tegra-l4t-r32.5」を入力する。

$ sudo apt update
$ sudo apt upgrade

$ git clone -b jetson_l4t-r32.5-4.9 https://github.com/NobuoTsukamoto/librealsense.git
$ cd librealsense
$ ./scripts/patch-realsense-ubuntu-L4T.sh

~~~~~~~~~~
Create the sandbox - NVidia L4T source tree(s)
Downloading default kernel/kernel-4.9 source...
Cloning into '/home/jetson/librealsense/Tegra/sources/kernel/kernel-4.9'...
remote: Enumerating objects: 5207472, done.
remote: Counting objects: 100% (5207472/5207472), done.
remote: Compressing objects: 100% (833434/833434), done.
remote: Total 5207472 (delta 4367040), reused 5173766 (delta 4333423)
Receiving objects: 100% (5207472/5207472), 943.55 MiB | 1.03 MiB/s, done.
Resolving deltas: 100% (4367040/4367040), done.
The default kernel/kernel-4.9 source is downloaded in: /home/jetson/librealsense/Tegra/sources/kernel/kernel-4.9
Please enter a tag to sync /home/jetson/librealsense/Tegra/sources/kernel/kernel-4.9 source to
(enter nothing to skip): 

ここで、「tegra-l4t-r32.5」入力してEner。あとはビルドが終わるのを待つ。

~~~~~~~~~~
Copying the patched modules to (~/)
~/librealsense
Move the modified modules into the modules tree
Insert the modified kernel modules
Replacing uvcvideo  -
        Applying the patched module ...  succeeded
Replacing hid_sensor_accel_3d  -
        Applying the patched module ...  succeeded
Replacing hid_sensor_gyro_3d  -
        Applying the patched module ...  succeeded
Replacing hid_sensor_trigger  -
        Applying the patched module ...  succeeded
Replacing hid_sensor_iio_common  -
        Module hid_sensor_iio_common  is used by hid_sensor_trigger
        Unloading dependency hid_sensor_trigger
        Module is resident, unloading ...  succeeded.
        Applying the patched module ...  succeeded      Reloading dependent kernel module hid_sensor_trigger ...  succeeded.


Script has completed. Please consult the installation guide for further instruction.


librealsenseのビルド


あとはlibrealsenseのビルドを行う。
念のため再起動してcloneしたlibrealsenseディレクトリに移動。

$ mkdir build && cd build
$ export PATH=${PATH}:/usr/local/cuda/bin
$ cmake \
  -DBUILD_WITH_CUDA=ON \
  -DBUILD_WITH_OPENMP=ON \
  -DBUILD_PYTHON_BINDINGS=ON \
  -DCMAKE_BUILD_TYPE=Release \
  ..
$ make -j$(($(nproc)-1))
$ sudo make install

Pythonラッパーを使う場合は、/usr/lib/python3/dist-packages/pyrealsense2/にパスを通しておく。

$ export PYTHONPATH=$PYTHONPATH:/usr/lib/python3/dist-packages/pyrealsense2/


確認


realsense-viewerを起動してFrame Metadataが正しそうなことを確認する。


できたー!

0 件のコメント:

コメントを投稿