ROS2 Tugbot Gazebo で 3D LiDAR の SLAM を試してみた。

ROS2 Tugbot Gazebo で 3D LiDAR の SLAM を試してみた。
ROS2 Gazebo for Tugbot が使えるようになったので、本題の 3D LiDAR の SLAMのサンプルを試してみた。

3D LiDAR の SLAMのサンプルは、
@fishros/LeGO-LOAM-ROS2

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

1. ビルド。
$ cd ~/colcon_ws-jazzy/src
$ git clone https://github.com/fishros/LeGO-LOAM-ROS2.git
$ cd ..
$ colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release --packages-select lego_loam_sr
$ . install/setup.bash

2.Run。
# term1
$ sudo ufw disable
$ ros2 launch tugbot_gazebo_my warehouse.launch.py

# term2
$ ros2 launch lego_loam_sr run.launch.py
で、問題なければ、動くはず。

ただし、手直ししないと動かなかったので、メモして置きました。

3. 手直し。
1) LeGO-LOAM/config/loam_config.yaml の修正
下記のように、一部修正しました。


2) LeGO-LOAM/CMakeLists.txt を一部修正。
jazzy 対応が入っていなかったので、入れました。


3) run.launch.py を自分用にアレンジ。
LeGO-LOAM/launch/run_nishi.launch.py を自分用に作成しました。

4. 正式に run

# term1
$ sudo ufw disable
$ ros2 launch tugbot_gazebo_my warehouse.launch.py

# term2
$ ros2 launch lego_loam_sr run_nishi.launch.py RVIZ:=False

# term3
$ ros2 launch lego_loam_sr run_nishi.launch.py RVIZ:=True

3. control
1) Teleop keyboard
$ ros2 run turtlebot3_teleop teleop_keyboard


これで、一応試せるようになった。
Teleop keyboard の操作で、Tugbot を動かしながら、Rviz2 の表示を確認する。
2D Map のようなものが、Rviz2 の Ground Plane に出てくる。
だが、障害物はよいのだが、床も同じように白くなるので、区別が出来ない。
Tugbot が移動するにつれて、最初の情報が消えて行く。
Local_cost_map みたいな感じか。
$ ros2 topic info --verbose /ground_cloud
ただし、map topic では無いので、自分で変換しないと、Map 作成にはならないのではないか?
現状、Gazebo の Tugbot の向きと Rviz2 の向き がすこしずつずれるみたい。
注) これは、動かしていると、周囲の 3D Lidar の情報からうまく自己位置を算出して、Gazebo 上の位置と、うまく一致するみたい。
これを、rtabmap_ros の様に使うにはどうすればよいのか?

いまは、YouTube の映像と異なるので、まあ、設定が不十分なんだろう。
YouTube の映像だと、スタート位置からのデータが残っていて、最後にクロージャされているみたい。
本来は、このようにならないといかんのかも。

兎にも角にも、tf のリンクが不明なので、ここをなんとかしないといかんのかも。


base_link が、バッティングしているからどうするか?
下記を、変更を、lego_loam_sr の時だけ一時的に行う。

i) src/tugbot_my/tugbot_gazebo_my/models/tugbot.sdf
Gazebo から、 tf-odom -> tf-base_footprint を出さないようにする。


ii) LeGO-LOAM/launch/run_nishi.launch.py を下記に変更。


tf-map -> tf-camera_int -> tf-camera -> tf-basefoot_print にする。

これで、YouTube で見られるのと同じ動きをするみたい。

Map Cliud(/laser_cloud_surround) がずっとのこるみたい。
これが、クロージャーするのかも知れない。
よく観察していると、倉庫の中の周囲を判定して、Gazebo の位置とうまく一致するみたい。
すごい!!

このブログ記事について

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

ひとつ前のブログ記事は「ROS2 Gazebo for Tugbot を作ってみた。」です。

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

カテゴリ

月別 アーカイブ

ウェブページ

サイトナビ