ROS2 Jazzy + Turtlebot4 + Gazebo Ionic warehouse Simulation.
Ubuntu Mate 24.04 にしてみたら、Gazebo が、新しくなっていて、今まで使っていた、
Hose World が使えなくで、困っていたら、
パッケージを新しくすると、Turtlebot4 + Gazebo Ionic warehouse Simulation がかんたんに使えた。
All In One みたい。
参考は、
TurtleBot3 + Gazebo + Navigation2 (ROS 2 Jazzy)
ros-navigation/nav2_minimal_turtlebot_simulation
1. git clone
$ cd ~/colcon_ws-jazzy/src
$ git clone -b jazzy https://github.com/ros-navigation/nav2_minimal_turtlebot_simulation.git
$ cd ..
$ rosdep update --rosdistro=${ROS_DISTRO} && rosdep install --from-path src/nav2_minimal_turtlebot_simulation -r -s
必要な、パッケージが一覧ででてくるので、
$ sudo apt install xxxxx
ソースビルドして、
2. build
$ colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release [--packages-select nav2_minimal_turtlebot_simulation]
$ . install/setup.bash
3. run
$ ros2 launch nav2_bringup tb4_simulation_launch.py headless:=False
で一応、Gazebo 画面と、Rviz2 画面は、でてきた。
しかし、Rviz2 画面で、Navigation の操作ができない。
bringup_cmd (nav2_bringup/launch/bringup_launch.py)で、
tf-map -> odom が出ていないみたい。
下記、ツールで、 TF link が確認できるみたい。
$ ros2 run tf2_tools view_frames
やはり、
tf-map -> odom が出ていないみたい。
$ ros2 launch nav2_bringup tb4_simulation_launch.py headless:=False slam:=True
だと、
tf-map -> odom が出てくる。
$ ros2 launch nav2_bringup tb4_simulation_launch.py headless:=False
の時、下記ワーニングが出ている。
[component_container_isolated-1] [WARN] [1739776236.445871044] [amcl]: AMCL cannot publish a pose or update the transform. Please set the initial pose...
とりあえず、Rviz2 の画面で、2D Pose estimate で、初期化したら、問題が解決した。
多分、params_file=navigation2/nav2_bringup/params/nav2_params.yaml が、
他の world と共用なので、AMCL の initial pose を記述していないのでは。
Configuration Guide AMCL
set_initial_pose: False
Causes AMCL to set initial pose from the initial_pose* parameters instead of waiting for the initial_pose message.
initial_pose: {x: 0.0, y: 0.0, z: 0.0, yaw: 0.0}
set_initial_pose: True にして、initial_pose:{} で指定するか、
set_initial_pose: False にして、initial_pose message を渡してもよいみたい。
initial_pose message はどうやって出すのだろうか?
robot model の spawn のときに、渡せた気がするが?
ちなみに、初期値は、参考に。
x = -7.9999803934734377
y = -2.7093603668824591e-13
z = -0.0044496538355151202
roll = -5.107683199815339e-11
pitch = -0.0043979429695369431
yaw = 1.9533289609010453e-12
使うのは、x , y , z, yaw のみで良い?
roll , pitch , yaw は、0.0 と同じじゃ
結局は、下記設定で、OK みたい。
set_initial_pose: true
initial_pose: {x: 0.0, y: 0.0, z: -0.0044496538355151202, yaw: 0.0}
この操作を忘れなければ、Navigation もちゃんと動くみたい。やれやれじゃ。
4. Static Map がついているから、C++ でかんたんに Turtlebot4 を操作できそう。
実際に動かす部分のテストがすぐに試せるので、便利じゃ。
Auto Mower がかんたんに試せそう。
しかし、Turtlebot4 は、背の高いモデルもあるみたい。レストラン等での、配膳ロボットが
ためせそう。