ROS2 Gazebo for Tugbot を作ってみた。

ROS2 Gazebo for Tugbot を作ってみた。

3D LiDAR の SLAM サンプルの、
@fishros/LeGO-LOAM-ROS2
Gazebo で試せないかと思ったので、作って見ました。

一応出来たのだが、3D LiDAR の PointClouds2が、Rviz2 でうまく確認できない。--> 一応対応した。

作るにあたっては、下記の2サイトを参考にさせてもらったぞね。ありがとう!!
@ROBOTIS-GIT/turtlebot3_simulations
@/porizou/tugbot_ros2_pkgs

turtlebot3_simulations/turtlebot3_gazebo が、Gazebo 利用の FrameWork みたになっているので、これのファイル構成を流用させてもらいました。
tugbot_ros2_pkgs は、urdf sdf を参考にさせて貰いました。

開発環境
PC: Ubuntu Mate 24.04
ROS2 Jazzy
Gazebo Hramonic

github に公開しました。
@tosa-no-onchan/tugbot_my

1. ビルド。
$ cd ~/colcon_ws-jazzy/src
$ git clone https://github.com/tosa-no-onchan/tugbot_my.git
$ cd ..
$ colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release --packages-select tugbot_gazebo_my
$ . install/setup.bash

2. Run
$ sudo ufw disable
# term1
$ ros2 launch tugbot_gazebo_my warehouse.launch.py
# term2
$ rviz2
add tf and etc.

# term3
control
Teleop keyboard
$ ros2 run turtlebot3_teleop teleop_keyboard

Rviz2 で、3D LiDAR の PointClouds2 が見えない件。
Rviz2 で下記ログが出ていた。
[rviz2-3] [WARN] [1760170286.510263623] [rviz2]: topic '/scan_omni/scan' has more than one types associated, rviz will arbitrarily use the type 'sensor_msgs/msg/LaserScan' -- all types for the topic: 'sensor_msgs/msg/LaserScan' 'sensor_msgs/msg/PointCloud2'

どうやら、'/scan_omni/scan' トピックに2種類の message type を割り当てていたみたい。
早速、該当場所をチェックチェック。
tugbot_my/tugbot_gazebo_my/params/tugbot_bridge.yaml
の記述みたい。

不要な記述をコメントにする。

これで、Rviz2 で '/scan_omni/scan/points' の 表示が見えだした。
すごい!!

4. これで、本題の
@fishros/LeGO-LOAM-ROS2
が、Gazebo で試すことができるぞね。!!
少し試してみたが、自分で手直ししないと、うまく動かないみたい。

5. 構成ファイルについて、ちょっとメモ。
turtlebot3_simulations/turtlebot3_gazebo の、Gazebo 利用の FrameWork の構成になっているので、ちょっとだけメモしちょきます。

1) Gazebo World の sdf
worlds/warehouse_depot.world
これで、Gazebo 上の warehouse の world sdf を定義。

2) Gazebo Model の sdf
models/tugbot.sdf
これで、Gazebo 上の Tugbot の model sdf を定義。
この中の情報で、Tugbot のセンサー類のプロパティが指定できる。
Topic の Frame id 等...

scan_omni の 有効距離は、下記記述で決まる。


3) ROS2 での Model の urdf
urdf/tugbot.urdf
このなかで、ROS2 Rviz で参照される、パーツや、tf の link が記述される。

4) gz - ros2 間の topic の関連付け。
params/tugbot_bridge.yaml
このなかで、
$ gz topic -l で表示される topic を、
$ ros2 topic list で表示される topic に関連付ける。

5) launch ファイル。
i) launch/warehouse.launch.py
起動用の launch.py ファイル

ii) launch/spawn_tugbot.launch.py
Gazebo 内に、Tugbot model sdf を読み込ませる。
models/tugbot.sdf
params/tugbot_bridge.yaml も読み込ませる。

iii) launch/robot_state_publisher.launch.py
ROS2 に、urdf/tugbot.urdf を読み込ませる。

このブログ記事について

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

ひとつ前のブログ記事は「ROS2 自作 Turtlebot3 による 草刈りロボット開発。#15 Robot Localization」です。

次のブログ記事は「ROS2 Tugbot Gazebo で 3D LiDAR の SLAM を試してみた。」です。

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

カテゴリ

月別 アーカイブ

ウェブページ

サイトナビ