技術情報・開発日誌

Ignition+ROS Melodicで走らせるRaspberry Pi Mouse

技術情報・開発日誌

こんにちは!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のシミュレータです。

こちらに導入方法と使用方法をまとめています。

rt-net/raspimouse_sim
ROS package suite for Raspberry Pi Mouse Simulator - rt-net/raspimouse_sim

開発の記録はこの記事にまとめています。

Gazeboで走るRasPiMouse その6

Image from Gyazo

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は以下に公開されています。

https://bitbucket.org/ignitionrobotics/ign-gazebo/src/default/examples/worlds/

例えば、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

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