ArUcoマーカーを検出する

ArUcoマーカーの検出方法として以下の2通りを試してみた。
OpenCVのArUcoモジュールを使う。
pythonのスクリプトでOpenCVのArUcoモジュールを使うと検出状況がビジュアルに確認できる。
ROS2に用意されたArUcoマーカーを検出して位置と姿勢の推定を行うパッケージを使う。
動作環境はRaspberry Pi 5上でROS2のバージョンjazzy。
事前にカメラキャリブレーションを終え、カメラごとのost.yamlファイルが作成されていること。

OpenCVのArUcoモジュールを使う

OpenCVのArUcoモジュールを使ったは、「ROS 2とPythonで作って学ぶAIロボット入門 改訂第2版のサポートサイト」からダウンロードできる。下の手順で実行すると下の画像のような結果が得らる。

 --- 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(PC WSL2) --- マーカーを検出する。
ros2 run dc_motor_encoder aruco_node_tf

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

ros2_arucoパッケージを使いマーカーを検出する。

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

WebカメラHD 1080P / ATOMS3R M12の場合
カメラ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/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

参照

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