本記事の執筆現在,Intel Realsense D405はROS1では対応しておらず,ROS2でのみ動かすことができます:https://github.com/IntelRealSense/realsense-ros/issues/2363
本記事では,Realsense D405をROS2(Foxy)で動かして,Bridgeし,ROS1(Noetic)のRvizで点群やRGBデータを表示させたいと思います.
インストール
ROS2
ROS2 Foxyを使用します.公式のドキュメントに従って,インストールしてください.
https://docs.ros.org/en/foxy/Installation/Ubuntu-Install-Debians.html
Bridge
ROS2の情報をROS1に変換するBridgeをインストールします.
注意点として,使用しているROS2 distributionに合わせたbranchをcloneしてください.私の環境の場合,master branchではbuildが通りませんでしたが,foxy branchではうまくbuildできました.
https://github.com/ros2/ros1_bridge/tree/foxy
また,bridge専用にwork spaceを新たに作成するほうが,buildが通りやすいと思います.
cd ~
mkdir -p bridge_ws/src # 専用のwork spaceを新たに作成
cd bridge_ws/src
git clone https://github.com/ros2/ros1_bridge.git -b foxy
rosdep update
rosdep install -r --from-paths . --ignore-src --rosdistro foxy -y
cd ..
source /opt/ros/foxy/setup.bash
colcon build --symlink-install --packages-select ros1_bridge --cmake-force-configure
Realsense
Realsense ROS2をインストールします.下記のgithubのREADMEに従ってbuildしていきます.
https://github.com/IntelRealSense/realsense-ros
実行
各ターミナルにて,以下のコマンドをそれぞれ実行していきます.Realsenseをpcに接続しておいてください.
# roscore実行
source /opt/ros/noetic/setup.bash
roscore
# Realsense実行
source /opt/ros/foxy/setup.bash
cd path/to/ros2_ws
. install/local_setup.bash
ros2 launch realsense2_camera rs_launch.py pointcloud.enable:=true
# Bridge実行
cd /path/to/bridge_ws
source /opt/ros/noetic/setup.bash
source /opt/ros/foxy/setup.bash
. install/local_setup.bash
ros2 run ros1_bridge dynamic_bridge
# Rviz実行
source /opt/ros/noetic/setup.bash
rviz
Rviz上でD405のRGB画像のtopicを取得します.D405のImage topic名は,
/camera/color/image_rect_raw
です.
以下の画像の様に,Rvizの該当箇所にtopic名を入力します.
Point Cloudにおいても,同様にtopicの設定をすることでRviz上でtopicの様子を確認できます.
Rvizにて,PointCloudをDisplaysに追加し,topic名である,/camera/depth/color/pointsを入力します.
rostopic listとしても,image topic出ないのだが?
ROS2 Bridgeでは,publisherとsubscriberの組み合わせが成立したときに初めてtopicが変換されます.
なので,ROS2 RealsenseのNodeと,BridgeのNodeを立ち上げただけでは,rostopic listとしても,ROS1 topicは表示されません.
しかし,RvizでImage Topicを設定すると,RvizがImage topicをsubscribeするので,publisher, subscriberのペアが成立し,BridgeがROS1 topicに変換します.