LoginSignup
21
10

More than 3 years have passed since last update.

ROS2環境上のGazeboでTurtlebot3のシミュレーション

Last updated at Posted at 2019-01-23

ROS2環境上のGazeboのシミュレーションを行う

経緯

現在私が所属しているサークルでは主にROS1を利用し開発、大会に参加しています。
しかし、Python2系のサポート終了やROS1におけるroscoreを介しての通信、分散処理などの難しさなどからROS2への移行に関して議論を行っている最中です。
もし、すぐに移行をすることが決定した場合はノウハウを持つメンバーがごく一部と限られてしまうため、ROS2の勉強を行うことにしました。
(それにCrystalって響きがかっこいい笑)
(Dashingもいい)

追記

Dashingでも動作することを確認済みです.

実行環境

ROS2の最新バージョンであるCrystalはUbuntu上では18でのみ動作するようです。
そのため、それに合わせた環境を利用します。
Screenshot from 2019-01-23 10-54-56.png
もし、環境の構築ができていない場合は Installing ROS2 via Debian Packages を参考に構築してください。
私はバイナリパッケージをインストールするのがおすすめです。

Gazebo

環境構築

まずやらなくてはならないのはgazebo_ros_pkgsのインストールです。
gazebo_ros_pkgsは名前から想像できる通りGazebo関連のパッケージです。

$ sudo apt install ros-crystal-gazebo-ros-pkgs

これを実行することでROS2環境上でgazeboを動かすための依存パッケージを一発ですべてをインストールしてくれます。
以下がros2環境上でGazeboを動かすための必要パッケージだそうです。
Screenshot from 2019-01-23 11-09-04.png
思った以上に少なかった。

動作テスト

ひとまず、適切にパッケージがインストールされたかを確認します。
シミュレーションの実行は以下のコマンドで可能です。
以下のワールドを選んだのはなんとなく見た目がいいからです。

$ gazebo /opt/ros/crystal/share/gazebo_plugins/worlds/gazebo_ros_joint_state_publisher_demo.world

今回はテストでアームの動きを取得してみます。
コマンドを実行するとシミュレーションが開始されるはずです。
Screenshot from 2019-01-23 11-16-07.png
では、Topicが認識できているかを確認してみましょう。
ROS2ではパッケージの実行やTopicの監視などをros2コマンドでできるところがかなり便利です。

$ ros2 topic list

Screenshot from 2019-01-23 11-17-18.png
認識できているようです。更に、/demo/join_states_demo を取得してみましょう。

ros2 topic echo /demo/join_states_demo

上のコマンドで状態を取得できます。
Screenshot from 2019-01-23 11-21-23.png
見た感じちゃんとトピックを取得できているようです。
次回はプログラムを組んで取得してみます。

Turtlebot3

モデルの導入

ここからはサークルで主に使用しているTurtlebot3のシミュレーションを行います。
まずは以下のディレクトリ移動してください。
Screenshot from 2019-01-23 11-43-38.png
そこにはモデルやワールドを保持しているディレクトリが存在します。
カレントディレクトリにて以下を実行してください。

$ sudo git clone -b ros2 https://github.com/ROBOTIS-GIT/turtlebot3_simulations.git

ここで重要なのはブランチをros2と指定することです。もしくは
git checkout ros2
でブランチの変更をします。
すると gazebo-9 ディレクトリ内は以下のようになっているはずです。
Screenshot from 2019-01-23 11-59-54.png
まずはワールドファイルを移動します。

$ sudo mv turtlebot3_simulations/turtlebot3_gazebo/worlds/turtlebot3_ros2_demo.world ./worlds

次にワールドを構築するモデルを移動します。

$ sudo mv turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_world ./models

更にTurtlebot3のモデルを移動します。

$ sudo mv turtlebot33_simulations/turtlebot3_gazebo/models/turtlebot3_burger ./models

これでモデルの追加はできました。

テスト

では以下を実行してください。

$ gazebo /usr/share/gazebo-9/worlds/turtlebot3_ros2_demo.world

するとトピックが立ち上がります。
Screenshot from 2019-01-23 12-09-47.png
そしてシミュレーションが始まります。
Screenshot from 2019-01-23 12-10-34.png
Screenshot from 2019-01-23 12-11-06.png
では、Gazeboがオドメトリをパブリッシュしているかを確認してみましょう。

$ ros2 topic echo /odom

Screenshot from 2019-01-23 15-56-13.png
できているようです。
ひとまず環境構築はできました。

結論

かなりのパッケージがROS2に対応をして、ROS1よりも使いやすくなってきていると思います。
そして、ROS1のときよりも動作がとても軽くなっているという印象を受けました。
CrystalこそROS2の時代の幕開けではないでしょうか?

次回

次回は /cmd_vel に速度を渡してTurtlebot3を動かしてみます。

21
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
21
10