Jetson AGX Xavier上でrealsenseD455を動かしてみた(ROS対応)


経緯

realsenseD455をJetson AGX Xavier上で動かす機会があったので、そのときの手順をまとめてみました。ネットでは、D435かD435iのセットアップ方法が多く、D455がほとんどなかったため少し手間取りました。今回は、librealsenseを入れた後にrealsense-rosも入れる手順を紹介します。

環境

  • Jetson AGX Xavier 16GB
  • Jetpack 4.3
  • cuda 10.0
  • ROS melodic
  • cmake 3.17.1(jetsonのデフォルトの3.10からアップデートする必要があります。より新しいバージョンでも構いません。) cmakeのアップデートにはこちらの記事を参考にしました。

librealsenseとpyrealsenseのセットアップ

こちらの記事を参考にして、セットアップを進めました。

$ git clone https://github.com/JetsonHacksNano/installLibrealsense
$ cd installLibrealsense
$ sh ./installLibrealsense.sh

$ vi ./buildLibrealsense.sh
------------以下のように変更------------
# D455をサポートしているバージョンに変更する
LIBREALSENSE_VERSION=v2.31.0
→ LIBREALSENSE_VERSION=v2.38.1

"time "(コマンド) を消す。おそらく2箇所ほどあります。

# Python3用のライブラリを出力させる(デフォルトではpython(Python2.7)用が出力されてしまう)
/usr/bin/cmake ../ -DBUILD_EXAMPLES=true -DFORCE_LIBUVC=true -DBUILD_WITH_CUDA="$USE_CUDA" -DCMAKE_BUILD_TYPE=release -DBUILD_PYTHON_BINDINGS=bool:true
→ /usr/bin/cmake ../ -DBUILD_EXAMPLES=true -DFORCE_LIBUVC=true -DBUILD_WITH_CUDA="$USE_CUDA" -DCMAKE_BUILD_TYPE=release -DBUILD_PYTHON_BINDINGS=bool:true -DPYTHON_EXECUTABLE=/usr/bin/python3
--------------------------------------

$ sh ./buildLibrealsense.sh
$ sudo cp /usr/local/lib/python3.6/pyrealsense2/py* /usr/local/lib

$ realsense-viewer

D455を繋いでrealsense-viewerとコマンドを打ったあとに、GUI上にrealsenseが取得したRGBデータなどが表示されれば成功です。次は、realsense-rosのセットアップです。

realsense-rosのセットアップ

基本的にはこちらの記事を参考にしてセットアップを進めました。ROS melodicが入っている前提です。もし、ROSのバージョンが違う場合は、こちらで自分の環境に合うrealsense-rosのバージョンを探してください。今回のrealsense-rosのバージョンは2.2.17です。まずは下の手順通りにコマンドを実行します。

$ cd ~/catkin_ws/src
$ git clone https://github.com/IntelRealSense/realsense-ros
$ cd realsense-ros
$ git checkout -b 2.2.17 2.2.17
$ cd ..
$ git clone https://github.com/pal-robotics/ddynamic_reconfigure.git
$ catkin build
$ source ~/.bashrc

次に下のコマンドを実行してください。

$ roslaunch realsense2_camera rs_camera.launch

もう一つターミナルを開いて、下のコマンドを実行してください。

rosrun rqt_image_view rqt_image_view

出てきたGUIの左上のタブをimage_rawに選択して、RGBデータが表示されれば成功です。

実行時に下のようなエラーが出る場合があります。

[ERROR] [1603862632.781403908]: Skipped loading plugin with error: XML Document '/opt/ros/melodic/share/rqt_virtual_joy/plugin.xml' has no Root Element. This likely means the XML is malformed or missing..
RosPluginProvider._parse_plugin_xml() plugin file "/opt/ros/melodic/share/rqt_virtual_joy/plugin.xml" in package "rqt_virtual_joy" not found
RosPluginProvider._parse_plugin_xml() plugin file "/opt/ros/melodic/share/rqt_virtual_joy/plugin.xml" in package "rqt_virtual_joy" not found

その場合は、こちらの手順に従います。具体的には、以下の通りです。

$ git clone https://github.com/aquahika/rqt_virtual_joystick.git
$ cd rqt_virtual_joystick
$ mv plugin.xml /opt/ros/melodic/share/rqt_virtual_joy

rqt_virtual_joystickのplugin.xmlがないと言っているので、githubから落としてきたものを移動させています。これで、もう一度ノードを起動すれば大丈夫なはずです。

まとめ

D455は、depth情報を取得できる距離などが遠くなったりしているらしいのですが、自分が思う最大の改善点は、土台の足がしっかりしたことだと思います(笑)。