オドメトリー実験車を動かす

操作方法

①ロボットカーに電池をセットする。
電池の向きコードの接続は下の画像を参照する。

写真の向きに電池をセットする。電源ボタンを押すと横のOLEDにプログラム名が表示される。

②カメラを座標0.0の真上にセットする。

③Raspberry Pi 5のターミナルから起動。

 Raspi5のターミナル1 --- ジョイステックをRaspi5にペアリングする            その他のコマンド
sudo bluetoothctl             # bluetoothctlコマンドのインタラクティブモードで実行する
connect 6B:CF:6F:C4:1D:9E     # ペアリングは済んでいるので接続する   ※ジョイスティックを接続可能にしておく

disconnect 6B:CF:6F:C4:1D:9E  # 切断する

 Raspi5のターミナル2 --- ジョイステックをROS2に接続する。
ros2 run joy_linux joy_linux_node

ターミナル --- カメラの画像とカメラ情報をトピックで出力する。
ros2 run usb_cam usb_cam_node_exe --ros-args --remap video_device:=/dev/video0 -p framerate:=30.0

ターミナル --- 画像を確認する。
ros2 run rqt_image_view rqt_image_view

ターミナル --- 画像トピックからマーカー情報をトピックで出力する。
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

 Raspi5のターミナル --- micro-ROS-Agentを起動する
ros2 run micro_ros_agent micro_ros_agent udp4 -p 8888

※dockerを使う場合
sudo docker run -it --rm -v /dev:/dev --privileged --net=host microros/micro-ros-agent:jazzy udp4 --port 8888

ジョイステックをPC(ubuntu)にペアリングする場合(参照)。

PC1(WSL2)のファイアウォール再設定する。操作方法

ジョイスティックでロボットをコントロールするプログラムを起動する。

 PC1(WSL2)のターミナル --- ロボットをコントロールするAPP
source ~/myenv/bin/activate                        --- 仮想環境に入る
ros2 run dc_motor_encoder micro_ROS_joy2cmd_vel    --- APPを起動する

ジョイスティックの操作

十字ボタン上下→前進/行進
左右→左右の回転
停止状態からは、6回押して動き出す。
〇ボタン停止停止と同時に巡回も打ち切る。
✕ボタン現在地の座標設定
x:0,y:0,theta:0
△ボタン座標x:0,y:0に移動し、
マーカーの座標で更新する
マーカーを監視するカメラが動作していること。
🔲ボタン巡回パターン3
L1ボタン巡回パターン1
R1ボタン巡回パターン2
OPTIONボタントピックで指定した巡回パターン下の「トピック/waypointsを使った巡回パターンの使い方」参照。

トピック/waypointsを使った巡回パターンの使い方

トピック/waypointsは、文字列型のトピックで、巡回する座標を指定する。
       p:[x座標]/[y座標] ------ 指定する座標と次の座標との区切り文字は';'(セミコロン)である。
                               座標0,0を指定するとロボットのマーカーをカメラが認識し、現在のオドメトリーを更新する。
    c:-              ------ これ以前に指定した内容をクリアする。
指定例
ros2 topic pub --once /waypoints std_msgs/msg/String "{data: p:0.0/1.8;p:-1.0/1.0;p:-1.5/0.0;p:-1.0/-0.5;p:-0.7/0.5;p:0.0/0.0}"

ros2 topic pub --once /waypoints std_msgs/msg/String "{data: p:-0.5/0.0;p:-1.0/-0.5;p:-1.5/0.0;p:-1.0/1.0;p:0.0/1.8;p:0.0/0.0}"

# これ以前の指定をクリアする。
ros2 topic pub --once /waypoints std_msgs/msg/String "{data: c:-}"

動作環境

PC1Windows11上のWSL2
Ubuntu 24.04.1 LTS
jazzy
※ESP32 dev ModuleがCOMポートで認識しない。
PC2Ubuntu 24.04 LTS
※joystickのBluetooth接続ができるので使用。
Raspberry Pi 5Ubuntu 24.04.1 LTS
jazzy
Arduino IDE 1.8.19
ESP32ESP32 dev Module 38pin
実験車こちらを参照

—-

  

参照

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