Ignition+ROS Melodicでロボットのシミュレーション


こんにちは!satoです。

ROSConJP 2019にてLouise Poubelさんの基調講演で「これからのGazebo: ROSのシミュレーションの次世代」というタイトルでGazeboとIgnitionについての紹介がありました。

紹介されていたIgnitionでROSと組み合わせてサンプルを動かしてみましたので、Ignitionについての簡単な説明とともにその使い方を軽く説明していきます。

なお、ここで紹介する内容は2019年9月26日の時点での情報です。その後のアップデートにより内容が変わる可能性があります。

Ignitionとは

Ignitionはロボットのシミュレーションに特化したオープンソースなライブラリ群です。
Gazeboは物理シミュレーションやセンサシミュレーションなどロボットのシミュレーションに必要な要素が組み合わさり1つのソフトウェアとして公開されています。
※Gazeboの最近のバージョンではIgnitionのライブラリを取り込んで使用しているものもあります。こちらのページに解説が載っています。
それに対し、Ignitionではそれぞれを構成する要素がライブラリとしてわかれているため、シミュレータを簡単に拡張することができます。
例えば、GazeboではレンダリングエンジンにOGRE 1.0が採用されています。IgnitionではOGRE 1.0/2.0、NVIDIA OptiXなどの中から自由にレンダリングエンジンを選ぶことができます。

Gazeboと同様にIgnitionもbitbucket上で開発が進められているようです。

ドキュメント
https://bitbucket.org/ignitionrobotics/docs

Ignition本体
https://bitbucket.org/ignitionrobotics/ign-gazebo

Gazeboは現在Gazebo 9が主流だとは思いますが、Gazebo 11まではOpen Roboticsによってサポートとメンテナンスが継続されるようです。

今後は安定して使いたい用途にはGazeboを、新しいプラグインを開発していきたければIgnitionを使い、両方を使い分けていくのが良さそうです。

Ignition + ROSでサンプルのロボットを動かす

IgnitionとROSを組み合わせて使用するサンプルがGitHub上に公開されています。まずはすでに公開されているデモ用モデルを動かしてみます。

https://github.com/osrf/ros1_ign

Ignitionのインストール

Ignition blueprintをインストールします。インストールは公式のドキュメントに従って進めます。

https://ignitionrobotics.org/docs/blueprint/install

Gazeboが問題なく動く環境ならば、いまのところ問題なくIgnitionも動かせそうです。

ros1_ignのインストール

その他のROSパッケージと干渉しないよう、念のため新しいワークスペースを作成します。

mkdir -p ~/ign_ws/src && cd ~/ign_ws/src
catkin_init_workspace .

ros1_ignをダウンロードしてビルドします。

cd ~/ign_ws/src
git clone https://github.com/osrf/ros1_ign.git
rosdep install -r -y --from-paths ros1_ign --ignore-src
cd ~/ign_ws && catkin_make install && source ~/ign_ws/install/setup.bash

サンプルの実行

以下のlaunchファイルを実行すると緑と青の移動台車が出てきます。

roslaunch ros1_ign_gazebo_demos diff_drive.launch 

rostopicを送るか、ign topicを送ることでロボットを動かすことができます。

rostopic pub /model/vehicle_blue/cmd_vel geometry_msgs/Twist "{linear: {x: 5.0}, angular: {z: 0.5}}"
ign topic -t "/model/vehicle_blue/cmd_vel" -m ignition.msgs.Twist -p "linear: {x: 5.0}, angular: {z: 0.5}"

いまのところtfがうまく取得できていないようです。分かり次第アップデートします。

まとめ

ROSConJP 2019で紹介されていたIgnitionは今後ロボットのシミュレーションに大活躍しそうな、ロボットのシミュレーションに特化したオープンソースなライブラリ群です。Gazeboが今後なくなるという噂もあるようですが、Gazeboがなくなるのではなく時間をかけてIgnitionに移行していきます。
今回は開発途中のIgnitionとROS Melodicを組み合わせて使用するサンプルをGitHubからダウンロードして使用してみました。
次回は弊社のロボットであるRaspberry Pi MouseをIgnitionで動かしてみようと思います。


Posted in Raspberry Pi Mouse
Tags: ,