ArUcoマーカー検出

ROS2では、ArUcoマーカーを検出して位置と姿勢の推定を行うパッケージが用意されている。
動作環境はRaspberry Pi 5上でROS2のバージョンjazzy。
事前にカメラキャリブレーションを終え、カメラごとのost.yamlファイルが作成されていること。

操作手順

 --- webカメラを起動する。

ros2 run usb_cam usb_cam_node_exe --ros-args --remap video_device:=/dev/video0 -p framerate:=15.0 -p camera_info_url:=file:///home/kiyo/.ros/camera_info/HD_1080P.yaml  # カメラ HD 1080P の場合

ros2 run atoms3r_m12 atoms3r_m12_usb_image_info_pub   # ATOMS3R M12をUSBケーブルに接続した場合

# ATOMS3R M12をWi-Fiに接続した場合
ros2 run atoms3r_m12 atoms3r_m12_usb_image_info_pub --ros-args -p video_device:=http://192.168.0.105

2 --- 画像を確認する。
ros2 run rqt_image_view rqt_image_view

3 --- マーカーを検出する。
ros2 run ros2_aruco aruco_node --ros-args -p aruco_dictionary_id:=DICT_4X4_50 -p image_topic:=/image_raw -p camera_info_topic:=/camera_info -p marker_size:=.065

4 --- 検出されたマーカーを確認する。
ros2 topic echo /aruco_markers

Webカメラc270の場合
カメラc270の場合、途中からカメラキャリブレーションの結果が正しく出力されなくなった。現在は、認識するマーカーのサイズ指定を補正している。

 --- webカメラを起動する。
ros2 run usb_cam usb_cam_node_exe --ros-args --remap video_device:=/dev/video0 -p framerate:=15.0 -p camera_info_url:=file:///home/kiyo/.ros/camera_info/c270.yaml    # カメラc270の場合

2 --- 画像を確認する。
ros2 run rqt_image_view rqt_image_view

3 --- マーカーを検出する。
ros2 run ros2_aruco aruco_node --ros-args -p aruco_dictionary_id:=DICT_4X4_50 -p image_topic:=/image_raw -p camera_info_topic:=/camera_info -p marker_size:=0.055  # マーカーのサイズを 0.065 → 0.055 に補正

4 --- 検出されたマーカーを確認する。
ros2 topic echo /aruco_markers

参照

ATOMS3R M12カメラキットの画像をROS2にパブリッシュ
[ROS2]カメラキャリブレーションの方法