Gazeboの最近のブログ記事

ROS2 自作 Turtlebot3 による 草刈りロボット開発。#3 - Auto Mower

自作 Turtlebot3 自律走行に向けたプログラム。#12 AutoMap II で、Gazebo House での自動 Mapping ができるので、
今回は、その作成されたマップを使って、Auto Mower を作ってみました。

Auto Mower を試す前に、Auto Map II で、マップを作っておいとうせ。
手動操作で、teleop-keyboard で動かして作っても、OK です。

1. 開発環境
PC
  Ubuntu Mate 22.04
  ROS2:humble
  Gazebo Turtlebot3 with Depth Camera、Rtabmap_ros
  GPU: Gazebo で試すなら、GPU が必要みたい。無いと、rtabmap-ros が良く狂って、TF-Map - TF-Odom がぶっ飛ぶみたい。

2. Auto Mower コース計画のアルゴリズム。
1) Static Map を取り込んで、ロボットがいる自由領域(White) の領域を最初に求めます。
2) その自由領域を、ロボットの走行サイズに合わせて、スライスして、そのスライス線に従って、ロボットを走行させる。
以上です。

考えかたは、ずっと以前、ROS and Python で試した方法のままです。
ただし今回は、場所が、 Gazebo House と、 C++ で作成します。

3. 技術的検証。
じっさいに、Auto Mower のプログラムを作る前に、クリアしなといけない技術的問題点を検討します。

Gazebo ROS2 Humble で、My ワールドを追加する

Gazebo ROS2 Humbleで、My ワールドを追加する。

下記、ページを参考に、自分で使いたいワールドを追加する方法を考えてみる。

ROS2 Gazebo に world を追加できるか。
1) useful-world-files-for-gazebo-and-ros-2-simulations
2) CustomRobots / car_junction
3) automaticaddison / two_wheeled_robot
4) how-to-load-a-urdf-file-into-rviz-ros-2

自作 Turtlebot3 自律走行に向けたプログラム。#12 Ros2 C++ AutoMap II
--- Ros2 Gazebo Turtlebot3 waffle で、C++プログラムによる自律走行でMap を自動作成する 2。 ---

前回、自作 Turtlebot3 自律走行に向けたプログラム。#11 で、rtabmap_ros with Depth Camera の /map の 、
未知領域 と自由領域の境界を目標にロボットを 自律走行させて、2D Map を自動作成しましたが、今回は、障害物の領域のみを使ってみます。

注1) オペレータは、C++ プログラを起動したあとは、人の操作は必要ありません。すべて、ロボットの自律走行で、Map が作成されます。
最後に、Map の保存だけ操作してください。

1. 開発環境
PC
  Ubuntu Mate 22.04
  ROS2:humble
  Gazebo Turtlebot3 with Depth Camera、Rtabmap_ros
注1) 今は、Ros2 Humble 版で、waffle になっています。by nishi 2024.3.12

2. アルゴリズム。
1) /map から、障害物のみを2値画像に変換して、それを、ブロブ化します。
2) 上記ブロブの外周を辿って、一定間隔でアンカーを付けて、そこへロボットを行かせて、/map を更新します。
注1) 『OpenCVによる画像処理入門』(講談社) P157 周囲長 を求める処理を参考にします。
3) ロボットを向かわせる地点は、上記アンカーから、半径Rのマスク処理を、今度は、非障害物に対して行って、その重心の方向へ、ロボットを動かした点とします。
4) ロボットを向かわせている途中、到着点が、障害物に含まれるか近接した場合は、その場所は、止めて、ロボットを次の候補地に向かわせます。
5) ロボットを向かわせる候補地は、ロボットから近い順に選びます。
6) 少し大きめのブロックで、/map を分割して、一度行った所はチェックして、次からは行かないようにします。

アルゴリズムは、簡単じゃ、後は、プログラムで試すのみじゃ。
当初のアルゴリズムは、ちょっと無理だったので、変更したぞね。by nishi 2022.8.16

但し、オンちゃんの GPU が壊れたのでちょっと、意気消沈しちょります。
GPUが買える迄、CPU オンリーで試すしかないぞね!!

その後、Humble 版になったら、非GPU でも、問題なくなりました。

自作 Turtlebot3 自律走行に向けたプログラム。#11 -- Ros2 C++ AutoMap
--- Ros2 Gazebo Turtlebot3 waffle で、C++プログラムによる自律走行でMap を自動作成する。 ---

自作 Turtlebot3 自律走行に向けたプログラム。#10 で、Gazebo & Turtlebot3 burger with Depth Camera and Rtabmap_ros だと、
床が自由領域だと判定できるのが判ったので roslaunch turtlebot3_gazebo turtlebot3_house.launch で、
Burger を起動して、全て C++プログラムで、Houseの中の、自由領域と未知領域の境界を選んで自由に走らせて、
Rtabmap_ros で、Map を完成させられるか試してみます。

注1) オペレータは、C++ プログラを起動したあとは、人の操作は必要ありません。すべて、ロボットの自律走行で、Map が作成されます。
最後に、Map の保存だけ操作してください。
注2) Stereo Camera だと、Rtabmap_ros で、床が自由領域として、 /map に出てこないのでこちらは、この方法ではできません。
あくまでも、Depth Camera の場合です。
注3) 今は、Ros2 Humble 版で、waffle になっています。by nishi 2024.3.12

開発環境
Ubuntu Mate 22.04
Ros2 Humble
Navigation2
Gazebo & Turtlebot3 Waffle

このアーカイブについて

このページには、過去に書かれたブログ記事のうちGazeboカテゴリに属しているものが含まれています。

次のカテゴリはOAK-D Liteです。

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

カテゴリ

ウェブページ

サイトナビ