ubuntu20.04上のROS2 FoxyでRealSenseを使用する手順


はじめに

ubuntu20.04.01上のROS2 FoxyでRealSenseを使用したので、手順をまとめました。

ROS Noeticで使う方法についてはこちらにまとめてあります。
https://qiita.com/porizou1/items/be1eb78015828d43f9fb

ROS2 Foxyのインストール方法はこちらにまとめました。
https://qiita.com/porizou1/items/53053ce806304fd71f06

環境

・Ubuntu 20.04.01LTS
・Intel RealSense L515

他のRealSenseシリーズについても同様

Intel Realsense SDK のインストール

以下の公式インストール手順に従って行う。
https://github.com/IntelRealSense/librealsense/blob/master/doc/distribution_linux.md

  1. 公開鍵を登録
$ sudo apt-key adv --keyserver keys.gnupg.net --recv-key F6E65AC044F831AC80A06380C8B3A55A6F3EFCDE || sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key F6E65AC044F831AC80A06380C8B3A55A6F3EFCDE
  1. サーバーをレポジトリリストに登録
$ sudo add-apt-repository "deb http://realsense-hw-public.s3.amazonaws.com/Debian/apt-repo focal main" -u
  1. ライブラリをインストール
$ sudo apt-get install librealsense2-dkms
$ sudo apt-get install librealsense2-utils
  1. 開発者用ツール、デバッガツールをインストール
$ sudo apt-get install librealsense2-dev
$ sudo apt-get install librealsense2-dbg
  1. RealSenseを接続し、以下コマンドでrealsense-viewerを起動
$ realsense-viewer

realsense-rosのインストール

ros2_intel_realsenseというパッケージがあったのですが、もうメンテナンスされていないのとL515やD455に対応していないのでrealsense-rosのROS2ラッパーを使用します。

ros2_intel_realsense
https://github.com/intel/ros2_intel_realsense/tree/master

以下READMEに従ってインストール
https://github.com/IntelRealSense/realsense-ros/tree/foxy

ワークスペースの作成

$ mkdir -p ~/ros2_ws/src
$ cd ~/ros2_ws/src/

foxy用のrealsense-rosをインストール

$ git clone https://github.com/IntelRealSense/realsense-ros.git -b foxy
$ cd ~/ros2_ws

依存パッケージをインストール

$ sudo apt-get install python3-rosdep -y
$ sudo rosdep init
$ rosdep update
$ rosdep install -i --from-path src --rosdistro $ROS_DISTRO -y

ビルド

$ colcon build

実行

RealSenseをPCのUSB3.0ポートに接続し、
ターミナルを開いて以下を実行

$ source ros2_ws/install/local_setup.bash 
$ ros2 launch realsense2_camera rs_launch.py

最後に以下のようなメッセージが出ていれば成功です。

[realsense2_camera_node-1] [INFO] [1611382613.824492586] [RealSenseCameraNode]: RealSense Node Is Up!

rviz2で画像の表示

別のターミナルを開いて以下のコマンドでrviz2を起動します。

$ rviz2

RGB画像の表示

  1. Fixed Frameをcamera_color_optical_frameに変更
  2. 左下の「Add」ボタンを押してBy display typeからImageを選択してOKを押す
  3. 左側ImageタブのTopicを「/camera/color/image_raw」に変更
  4. Reliability PolicyReliableからBest Effortに変更

画像が表示されれば成功です。

Depth画像は同様に「Add」ボタンでImageを追加してTopic名を「/camera/depth/image_rect_raw」にします。

rqt_image_viewで画像を表示

デフォルトのrs_launch.pyの設定では画像トピックのQoS設定がSENSOR_DATAになっており、このままではrqtで画像を表示できないので、rs_launch.pyの中身を書き換えます。
launchファイル最初にconfigurable_parametersという項目があるので、その中のQoS設定を書き換える。
RGB画像の場合はcolor_qosをデフォルトのSENSOR_DATAからDEFAULTに変更。

rs_launch.py
                           {'name': 'color_qos',                    'default': 'DEFAULT', 'description': 'QoS profile name'},    
                           {'name': 'confidence_qos',               'default': 'SENSOR_DATA', 'description': 'QoS profile name'},    
                           {'name': 'depth_qos',                    'default': 'SENSOR_DATA', 'description': 'QoS profile name'},    
                           {'name': 'fisheye_qos',                  'default': 'SENSOR_DATA', 'description': 'QoS profile name'},    
                           {'name': 'infra_qos',                    'default': 'SENSOR_DATA', 'description': 'QoS profile name'},    

実行

$ ros2 launch realsense2_camera rs_launch.py

rqt_image_viewを起動

$ ros2 run rqt_image_view rqt_image_view 

左上のトピック一覧から/camera/color/image_rawを選択して画像が表示されればOK

rviz2でPointCloudを表示させる

rs_launch.pyのデフォルトではPointCloud2トピックをPublishする設定が無効になっているので、launchファイルのconfigurable_parametersを書き換えます。

enable_pointcloudという項目を探してデフォルトのfalseからtrueに変更。

rs_launch.py
  {'name': 'enable_pointcloud',            'default': 'true', 'description': 'enable pointcloud'},

 
実行して別のターミナルでrviz2を起動

$ ros2 launch realsense2_camera rs_launch.py
$ rviz2
  1. Fixed Frameをcamera_linkに変更
  2. 左下の「Add」ボタンを押してBy display typeからPointCloud2を選択してOKを押す
  3. 左側PointCloud2タブのTopicを「/camera/depth/color/points」に変更

rvizにPointCloudが表示されれば成功です

参考