ROS2 Jazzy + Turtlebot4 + Gazebo Ionic warehouse Simulation.

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 は、背の高いモデルもあるみたい。レストラン等での、配膳ロボットが ためせそう。

このブログ記事について

このページは、おんちゃんが2025年2月15日 18:06に書いたブログ記事です。

ひとつ前のブログ記事は「ROS2 自作 Turtlebot3 による 草刈りロボット開発。#10 走行開始時のロボットの向き。」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

カテゴリ

ウェブページ

サイトナビ