こんにちは!satoです。
ROSConJP 2019にてLouise Poubelさんの基調講演で「これからのGazebo: ROSのシミュレーションの次世代」というタイトルでGazeboとIgnitionについての紹介がありました。
紹介されていたIgnitionでROSと組み合わせてサンプルを動かしてみましたので、Ignitionについての簡単な説明とともにその使い方を軽く説明していきます。
Open Robotics Louiseさんの基調講演が始まりした。ROSCon本家でお馴染みのGazeboを使ったライブスライドです。 #ROSConJP2019 pic.twitter.com/BHtbxk02P7
— ROSCon JP (@rosconjp) September 25, 2019
なお、ここで紹介する内容は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を使い、両方を使い分けていくのが良さそうです。
Gazeboはバージョン11で開発が終了するが、Ignitionはこれから続々とバージョンリリースが続く。開発にはIgnitionを使おう。 pic.twitter.com/4G8545a30M
— ROSCon JP (@rosconjp) September 25, 2019
Ignition + ROSでサンプルのロボットを動かす
IgnitionとROSを組み合わせて使用するサンプルがGitHub上に公開されています。まずはすでに公開されているデモ用モデルを動かしてみます。
Ignitionのインストール
Ignition blueprintをインストールします。インストールは公式のドキュメントに従って進めます。
Gazeboが問題なく動く環境ならば、いまのところ問題なくIgnitionも動かせそうです。
ros_ignのインストール
その他のROSパッケージと干渉しないよう、念のため新しいワークスペースを作成します。
mkdir -p ~/ign_ws/src && cd ~/ign_ws/src catkin_init_workspace .
ros_ign
をダウンロードしてビルドします。
cd ~/ign_ws/src git clone https://github.com/osrf/ros_ign.git rosdep install -r -y --from-paths ros_ign --ignore-src cd ~/ign_ws && catkin_make install && source ~/ign_ws/install/setup.bash
サンプルの実行
以下のlaunchファイルを実行すると緑と青の移動台車が出てきます。
roslaunch ros_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で動かしてみようと思います。
更新履歴
2019年10月23日
osrf/ros1_ignがosrf/ros_ignにリネームされていたため、コマンドを更新しました。
詳細: https://github.com/osrf/ros_ign/commit/2ebaa77ea7ae67e25d431415ac860d02386dd652