Gazeboの最近のブログ記事

自作 Turtlebot3 自律走行に向けたプログラム。#13

自作 Turtlebot3 自律走行に向けたプログラム。#13
--- Gazebo Turtlebot3 burger で、GPS を使ってみる。 ---

ROS IMUとGPSのGazeboプラグインを使う に、Gazebo で、GPS を使う例があったので、試してみました。

1. GPS プラグインの組み込み。
パッケージ版があったので、おんちゃんは、こちらををつかってみました。

$ sudo apt install ros-noetic-hector-gazebo-plugins

2. URDF の作成。
URDF は、上記ページにも例がありますが、おんちゃんは、以前、IMU、Camera を組み込んだ例に習って、今回も作りました。

catkin_ws/src/turtlebot3/turtlebot3_description/urdf/gps_macro.xacro

注) 使えるパラメータは、hector_gazebo_plugins に、記載があります。
注2) frameId
<frameID>${prefix}_link</frameID> --- Bad
<frameId>${prefix}_link</frameId> --- OK

自作 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 turtlebot3 Burger Depth Camera Navigation 草刈りロボット #3 です。

Gazebo turtlebot3 Burger Depth Camera Navigation 草刈りロボット #2 に続いて、残りの部分を作ります。

開発環境
OS: Ubuntu Mate 18.04
言語: Python2.7 ROS: melodic
開発ツール: Visual Studio Code
Gazebo/Turtlebot3 burger
注) burger には、Depth Camera プラグインを追加します。
条件:
1) バーガーを草刈りロボットとみなします。
  サイズ:178 x 178 [mm]
2) 部屋を畑とみなします。
3) センサーは、Depth Camera プラグインを使います。
  屋外の、実際の畑では、ちょっと無理だと考えますが、今回は、畑を隈無く移動させるプログラムの試験なので、割愛します。
4) SLAM で、畑 (部屋) のマップファイルが作成済とします。

1. 次は、ライン情報テーブル 作成 です。

Gazebo turtlebot3 Burger Depth Camera Navigation 草刈りロボット #2 です。

Gazebo turtlebot3 Burger Depth Camera Navigation 草刈りロボット で、プログラム設計ができたので、
これから、実際にプログラムを作成します。

開発環境
OS: Ubuntu Mate 18.04
言語: Python2.7 ROS: melodic
開発ツール: Visual Studio Code
Gazebo/Turtlebot3 burger
注) burger には、Depth Camera プラグインを追加します。
条件:
1) バーガーを草刈りロボットとみなします。
  サイズ:178 x 178 [mm]
2) 部屋を畑とみなします。
3) センサーは、Depth Camera プラグインを使います。
  屋外の、実際の畑では、ちょっと無理だと考えますが、今回は、畑を隈無く移動させるプログラムの試験なので、割愛します。
4) SLAM で、畑 (部屋) のマップファイルが作成済とします。

1. 最初は、 Map のデータをアクセスするプログラムを勉強がてら、作ってみます。

Gazebo turtlebot3 Burger Depth Camera Navigation 草刈りロボット です。

Gazebo turtlebot3 Burger Depth Camera Navigation Python Program. で、大体動きが把握できたので、
今回は、バーガーを草刈りロボットに見立てて、部屋の中を隈無く移動させるプログラムを考えてみます。

開発環境
OS: Ubuntu Mate 18.04
言語: Python2.7 ROS: melodic
開発ツール: Visual Studio Code
Gazebo/Turtlebot3 burger
注) burger には、Depth Camera プラグインを追加します。
条件:
1) バーガーを草刈りロボットとみなします。
  サイズ:178 x 178 [mm]
2) 部屋を畑とみなします。
3) センサーは、Depth Camera プラグインを使います。
  屋外の、実際の畑では、ちょっと無理だと考えますが、今回は、畑を隈無く移動させるプログラムの試験なので、割愛します。
4) SLAM で、畑 (部屋) のマップファイルが作成済とします。

Gazebo turtlebot3 Burger Depth Camera Navigation Python Program です 。
Gazebo turtlebot3 waffle Depth Camera Slam and real time Mapping. で、Gazebo turtlebot3 Burger の
Depth カメラ でのナビゲーションが確認できたので、こんかいは、 Python でバーガーを動かしてみようとおもいます。

グーグルで検索していたら、下記ページがあったので、そのまま使ってみます。
multi_goals.py

開発環境
OS: Ubuntu Mate 18.04
ROS: melodic
開発ツール: Visual Studio Code
Gazebo/Turtlebot3 burger
注) burger には、Depth Camera プラグインを追加します。

Gazebo turtlebot3 waffle Depth Camera SLAM

Gazebo turtlebot3 waffle Depth Camera SLAM(Simultaneous Localization And Mapping) です。

グーグルで検索していたら、
wiki.ros.org/depthimage_to_laserscan を見つけました。
どうやら、 Depth Camera (sensor_msgs/PointCloud2) から、 LaserScan (sensor_msgs/LaserScan ) に変更できる、
プログラムみたいです。

こちらを使えば、従来の turtlebot3_slam.launch でマップ作成ができそうです。
PCへの負荷は、
Gazebo turtlebot3 waffle Depth Camera Slam and real time Mapping. に比べて少ないだろうか?
だとしたら、こちらも選択肢としては、あると思うのだが!!

Gazebo turtlebot3 waffle Depth Camera Slam and real time Mapping です。

Gazebo turtlebot3 burger Depth Camera plugin で、 Depth カメラ プラグインが使えるようになったので、
Slam and Mapping ができないかグーグルで検索していたら、
http://wiki.ros.org/rtabmap_ros が在ったので、試してみました。

それに続いて、出来上がったMap を使って、
Depth Camera (Rgb-d Camera) による、Navigation にもチャレンジしてみました!!

開発環境
OS: Ubuntu Mate 18.04
ROS: melodic
開発ツール: Visual Studio Code
Gazebo/Turtlebot3 waffle
注) waffle には、最初から Depth Camera プラグインが、入っていました。

上記 wiki ページを読みながらパッケージ導入、起動へと進みます。

Gazebo turtlebot3 burger Depth Camera Program

Gazebo turtlebot3 burger Depth Camera Program です。

Gazebo turtlebot3 burger Depth Camera plugin で、Depth Camera (rgbd camera) が使えるようになったので、
サンプルプログラムを作ってみます。

開発環境
OS: Ubuntu Mate 18.04
ROS: melodic
開発ツール: Visual Studio Code

1. 概要
rgbd データは、 /camera/depth/points に出てきます。
$ rostopic type /camera/depth/points
sensor_msgs/PointCloud2

さて、sensor_msgs/PointCloud2 とは、何じゃろかいから始めないといけません。
グーグルでググると、
ROSのsensor_msgs:PointCloud2データの構造と扱い方 があって、参考にさせてもらいました。ふむふむ。

Gazebo turtlebot3 burger another House world

Gazebo turtlebot3 burger another House world!

Gazebo Turtlebot3 バーガーで、別の家のワールドを使ってみます。

使うのは、下記の、nav_lecture/worlds/test1.world です。
https://qiita.com/srs/items/b07a22425548c41bfd04

https://github.com/project-srs/ros_lecture
nav_lecture を、~/catkin_ws/src の配置して
$ cd ~/ctakin_ws
$ catkin_make
で使えると思います。

Gazebo turtlebot3 burger Depth Camera plugin

Gazebo turtlebot3 burger Depth Camera plugin

Gazebo シュミレータの Turtlebot3 バーガーに、Depthカメラ のプラグインを導入します。
参考にしたのは、下記ページです。
http://gazebosim.org/tutorials?tut=ros_gzplugins の Depth Camera / Openni Kinect
http://gazebosim.org/tutorials/?tut=ros_depth_camera

開発環境
OS: Ubuntu Mate 18.04
ROS: melodic
開発ツール: Visual Studio Code

ファイルの設置場所、ファイル名称は、Gazebo turtlebot3 burger stereo camera plugin を参照してください。

Gazebo turtlebot3 burger stereo camera plugin

Gazebo Turtlebot3 Burger stereo camera plugin

Gazebo シュミレータの Turtlebot3 バーガーに、モノカメラ、マルチカメラ(ステレオカメラ)のプラグインを導入します。

参考にしたのは、下記ページです。
プラグインをマクロで記述するのは、下記ページが参考になります。
ROS講座67 車輪ロボットを作る7(カメラのシミュレーション)

開発環境
OS: Ubuntu Mate 18.04
ROS: melodic
開発ツール: Visual Studio Code

ubuntu mate 18.04 ros melodic で orb_slam_2_ros を試してみました。#2
です。

前回は、モノカメラで試してみて、あまり認識が良くないのかったので、
今回は、Gazebo/Turtlebot3 Burger にマルチカメラをつけて試してみました。

Burger にマルチカメラをつける作業は、改めて掲載します。
Gazebo turtlebot3 burger stereo camera plugin

Burger にマルチカメラをつける作業が終わったことを前提に書きます。

このアーカイブについて

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

次のカテゴリはORB SLAM2です。

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

カテゴリ

ウェブページ

サイトナビ