Help us understand the problem. What is going on with this article?

ROS2 CrystalのGazebo/rqtでTurtlebotを動かしてみる

More than 1 year has passed since last update.

はじめに

ROS Advent Calendar 2018 17日目の記事です。

ROS 2 Crystal Clemmys Released!
ちょうど2日前の2018/12/15にROS2の新しいバージョンである「Crystal Clemmys」がリリースされました。Crystalは以下のような特徴があります( https://index.ros.org/doc/ros2/Release-Crystal-Clemmys/ より)。

ROS2ではまだあまりロボットを動かせるデモが少ないので、今年のアドベントカレンダーは、このうち「Gazebo対応」「rqt対応」の2つの機能を使い、ROS2のGazebo上でTurtlebotをrqtを動かすねたをやってみたのでそれを紹介します。

結果

Ubuntu18.04の環境でROS1 bridgeを使うことなく、ROS2のみでTurtlebotがGazebo上で動かせるようになりました。動かせるといっても、とりあえず車輪が動くだけで、バンパ情報やデプスセンサの情報はまだ取れません(Pluginを自分で移植すればできます)。
どこがROS2?という感じですが・・・・

動かし方

https://github.com/otamachan/ros2_turtlebot_gazebo_test#how-to

に記載しました。

2018/12/17現在リリースされている gazebo_ros_pkg に修正が必要がだっため、gazebo_ros_pkgに少し手をいれたものを使っています(本家にFB中)。

やったこと

1. packageを作ります

ROS1とそれほど違いはありません。チュートリアルを参考にしながら作りました。

package.xmlの<export>タグに<build_type>の記載をしないと、パッケージが見つからなくなったりするようなので、忘れないようにします。

2. launchファイルを書きます

launchシステムは、ROS1から大きく変更されたところです。以下を参考に作成しました。

ROS2のlaunchシステムはPythonで記述します。処理をlaunch.action.Actionとして登録することで色々な処理の実行が可能です(もちろんノードを起動することも)。ROS1では、サービスの起動を待ってそのサービスを呼び出す処理(gazebo_ros, nodelet, ros_control 等)は、spawnスクリプトを書いて別プロセスとしてroslaunchから呼び出す必要がありますが、今回はこのあたりの処理をlaunch.action.Actionとして記述しlaunchの中から直接SpawnEntityサービスを呼び出してロボットモデルをGazeboにロードするようにしてみました。empty_world.lauch.py
非同期な処理も書く事ができます。

3. URDFファイルを作ります

turtlebot_description, create_description パッケージが必要なため、まずこれらをament対応します
ROS2には、xacroがない&Gazeboのタグが少し変更されたため、ROS1のxacroで出力したURDFファイルを手で編集して用意しました。create_circles_kinect.urdf

4. rqt_robot_steeringをROS2に移植する

rqtのいくつかのPluginは既に移植されていましたが、rqt_robot_steeringはまだ移植されていなかったため、移植済みの以下のパッケージを参考に、移植してみました。

基本的には、PubSubや、Parameter周りの変更だけで動くようになるイメージです。

はまりポイント

  • ROS2自体が絶賛開発中です。リリース直前まで不具合修正(#608)されていたりと、何か問題があった場合に本家の情報は常に見ておかないといけないようです。
  • rviz2でrobot_descriptionからロボットモデルの表示ができませんでした。既にQAにはあるようです。今回はトピックではなく、URDFをファイル指定することで表示させています。
  • PythonがSegmentation Faultで落ちます。ROS2からクライアントはPure Pythonではなく、cのラッパとして作成されています。少しおかしなことをすると、Python自体を巻き込んで落ちてしまい、デバッグが少し大変になったイメージです。

終わりに

Gazeboが対応されたとはいえ、まだ最小限のPluginしかポーティングされていない&ros_controlのポーティングがまだのため、本格的にロボット開発に使えるようになるにはもう少しかかりそうです。
逆にいうと、コントリビューションの余地はまだたくさんありそうです。

Enjoy happy ROS hacking!

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした