技術情報・開発日誌

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

launchファイルを実行した画面 技術情報・開発日誌

こんにちは!satoです。

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

紹介されていた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上に公開されています。まずはすでに公開されているデモ用モデルを動かしてみます。

GitHub - gazebosim/ros_gz: Integration between ROS (1 and 2) and Gazebo simulation
Integration between ROS (1 and 2) and Gazebo simulation - gazebosim/ros_gz

Ignitionのインストール

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

Gazebo
Simulation Driven Robotics. Iterate quickly on design concepts and control strategies with Gazebo's rich suite of tools, libraries, and cloud services.

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 

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

タイトルとURLをコピーしました