こんにちは!satoです。
前回はGitHub上で動かせるIgnition + ROSのサンプルを動かして移動台車のロボットをシミュレーションしてみました。
今回はIgnitionでRaspberry Pi Mouseを動かしてみましたので、Raspberry Pi Mouseのシミュレータについての簡単な説明とともにその使い方を軽く説明していきます。
なお、ここで紹介する内容は2019年10月6日の時点での情報です。その後のアップデートにより内容が変わる可能性があります。
Raspberry Pi Mouse Simlulatorとは
Raspberry Pi Mouse SimlulatorはGazebo + ROSで動かすRaspberry Pi Mouseのシミュレータです。
こちらに導入方法と使用方法をまとめています。
開発の記録はこの記事にまとめています。
Ignition + ROSで自作ロボットを動かす
ros_ign_gazebo_demosを拡張したros_ign_gazebo_raspimouseを使ってRaspberry Pi Mouseを動かしてみます。
ros_ign_gazebo_raspimouseのインストール
ros_ign_gazebo_raspimouseをダウンロードします。ファイルを一部変更する必要があるので今の段階ではまだビルドはしません。
cd ~/ign_ws/src git clone https://github.com/Tiryoh/ros_ign_gazebo_raspimouse.git
先程の移動台車をRaspberry Pi Mouseに置き換えたSDFを作成してworldディレクトリに保存しています。
https://github.com/Tiryoh/ros_ign_gazebo_raspimouse/blob/master/worlds/raspimouse_on_world.sdf
サンプルの簡単なSDFは以下に公開されています。
例えば、tunnel.sdfを起動すると以下のようなモデルが起動します。中を読んでみるとuri
でIgnition Fuelに公開されているモデルデータを指定していることを確認できます。
メッシュデータを含む複雑なSDFはIgnition Fuelに公開してSDFから呼び出すのが良いようです。
とりあえず手軽に試したいのでローカルに保存したまま呼び出すことにします。
Ignition Fuelに公開されているモデルデータはIgnition Fuel Toolsでダウンロードして$HOME/.ignition/fuel
にダウンロードすることができるようです。
SDFが保存されている場所からの相対パスでvisual用のメッシュデータをuri
で指定し、呼び出せれば簡単なのですが、現在プルリクエストが出されていてマージ待ちのようです。
https://bitbucket.org/ignitionrobotics/ign-gazebo/pull-requests/433/handle-relative-uris/diff
そこで今回はメッシュデータへのファイルパスをフルで指定します。ファイルパスを書き換えるために以下のスクリプトを実行します。configure_modelsを呼び出しています。
cd ~/ign_ws && catkin_make && source ~/ign_ws/devel/setup.bash rosrun ros_ign_gazebo_raspimouse configure_models
モデルデータの書き換えができたらビルドします。
cd ~/ign_ws && catkin_make install && source ~/ign_ws/install/setup.bash
ros_ign_gazebo_raspimouseの起動
それではIginitionでRaspberry Pi Mouseを起動してみましょう。以下のコマンドで呼び出します。
roslaunch ros_ign_gazebo_raspimouse raspimouse.launch
このようにかなり高くロボットを見下ろす位置からスタートします。スタート位置を調整する方法は今の所なさそうなようでした。
この状態で別のターミナルから以下のコマンドを実行するとロボットが3秒間走行して停止する様子が確認できます。
rostopic pub -1 /model/raspimouse/cmd_vel geometry_msgs/Twist "{linear: {x: 0.1}, angular: {z: 0}}" && \ rostopic pub -1 /model/raspimouse/cmd_vel geometry_msgs/Twist "{linear: {x: 0.0}, angular: {z: 0}}"
まとめ
前回はGitHub上で動かせるIgnition + ROSのサンプルを動かして移動台車のロボットをシミュレーションしました。
今回は開発途中のIgnitionを使用して弊社のロボットであるRaspberry Pi Mouseを起動してみました。
Raspberry Pi MouseはROS2にも対応しているロボットなのでシミュレーション環境についても開発を進めていきます。
更新履歴
2019年10月23日
osrf/ros1_ignがosrf/ros_ignにリネームされていたため、コマンドを更新しました。
詳細: https://github.com/osrf/ros_ign/commit/2ebaa77ea7ae67e25d431415ac860d02386dd652