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 と同じじゃ

params_file=navigation2/nav2_bringup/params/nav2_params.yaml を修正する。
結局は、下記設定で、OK みたい。多分 world や robot spawn 等の開始位置からの off set だと思う。


別の方法。自分専用の、xxx.yaml ファイルを用意して、それを使う。
$ ros2 launch nav2_bringup tb4_simulation_launch.py headless:=False params_file:=path-to-your-yaml-dir/xxx.yaml

この操作を忘れなければ、Navigation もちゃんと動くみたい。やれやれじゃ。

4. Static Map がついているから、C++ でかんたんに Turtlebot4 を操作できそう。
実際に動かす部分のテストがすぐに試せるので、便利じゃ。

Auto Mower がかんたんに試せそう。
turtlebot3_navi_my for Ros2 jazzy r6 の AutoMower を走らせる。
例)
i) term1 Gazebo , Navi and Rviz2 All in one.
$ sudo ufw disable
$ ros2 launch nav2_bringup tb4_simulation_launch.py headless:=False params_file:=/home/nishi/colcon_ws-jazzy/src/turtlebot3_navi_my/params/amcl_scan/rpp_nav2_params.yaml

ii) term2 Auto Mower
$ export LD_LIBRARY_PATH=/home/nishi/usr/local/lib/tensorflow-lite-flex:$LD_LIBRARY_PATH
$ ros2 launch turtlebot3_navi_my go_auto_mower.launch.py use_sim_time:=True cource_width:=18 [plann_test:=True] [ml_data:=True] [opp_on:=True]

下記で、即実行できる。
$ ros2 launch turtlebot3_navi_my go_auto_mower.launch.py use_sim_time:=True cource_width:=18 opp_on:=True


しかし、Turtlebot4 は、背の高いモデルもあるみたい。レストラン等での、配膳ロボットが ためせそう。

このブログ記事について

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

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

次のブログ記事は「ROS2 自作 Turtlebot3 による 草刈りロボット開発。#11 ロボットの走行方向がずれる。」です。

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

カテゴリ

ウェブページ

サイトナビ