はじめに
ROS上でTurtlebotのシミュレータを使います.
すでにあるデモを使って、大体の使い方を覚えていこうと思います。
インストール
まずはパッケージをインストールします.
$ sudo apt-get install ros-indigo-turtlebot-gazebo
環境変数のロード
$ source ~/.bashrc
シミュレータの立ち上げ
シミュレータを立ち上げます.
$ roslaunch turtlebot_gazebo turtlebot_world.launch
強そう.
初回起動時は読み込みに時間がかかるのでしばらく黒い画面です.
自律移動デモの起動
それでは次に自律移動のデモを動かしていきます。
$ roslaunch turtlebot_gazebo amcl_demo.launch
あれ、エラーを吐かれました.内容は以下のとおりです.
while processing /opt/ros/indigo/share/turtlebot_navigation/launch/includes/amcl.launch.xml:
Invalid roslaunch XML syntax: [Errno 2] No such file or directory: u'/opt/ros/indigo/share/turtlebot_navigation/launch/includes/amcl.launch.xml'
/opt/ros/indigo/share/turtlebot_navigation/launch/includes/amcl.launch.xml
なんて無いぞ!と言われてますね.
amcl.launch.xml
を探すと、
/opt/ros/indigo/share/turtlebot_navigation/launch/includes/amcl.launch.xml
ではなく
/opt/ros/indigo/share/turtlebot_navigation/launch/includes/amcl/amcl.launch.xml
にありました.
launchファイルの修正
launchファイルを書き換えましょう.
launchファイルのあるディレクトリまで移動して...
$ roscd turtlebot_gazebo/launch/
管理者権限でファイルを開きます.
$ sudo vim amcl_demo.launch
その後、10行目の
<include file="$(find turtlebot_navigation)/launch/includes/amcl.launch.xml">
を
<include file="$(find turtlebot_navigation)/launch/includes/amcl/amcl.launch.xml">
とします.
もう一度起動しましょう.
$ roslaunch turtlebot_gazebo amcl_demo.launch
今度はエラーもなく動いてくれたようです.
rvizの起動
可視化ツールのrvizを起動します.
$ rosrun rviz rviz
起動しました.
ここにいろいろとデータを追加していきます.
左下にある[Add]をクリックするとどのデータを表示するか選択できるダイアログが開きます.
[By display type]タグ内の[RobotModel]を選択して[OK]すると,Turtlebotがrviz上に表示されます.
[By Topic]タグ内の[/map]-[Map]を選択して[OK]すると,Mapがrviz上に表示されます.
[By Topic]タグ内の[/camera]-[/depth]-[/points]-[PointCloud2]を選択して[OK]すると,Turtlebotの視界がrviz上に表示されます.
[By Topic]タグ内の[/odom]-[Odometry]を選択して[OK]すると,オドメトリがrviz上に表示されます.
[By Topic]タグ内の[/move_base]-[/NavfnROS]-[/plan]-[Path]を選択して[OK]すると,軌道計画がrviz上に表示されます.
さて、必要なものは取り込めました.rvizはこんな画面になっているはずです.
rviz上から動かす
rvizの上の欄の右から2番目にある,[2DNavGoal]を選択し,目標地点と目標向きをクリックで指定すると動いてくれます.
また、gazebo上のturtlebotも上のそれと同期して動きます.
rviz上の赤い矢印は移動した際の向きの履歴です.
また,rviz左下のimageはカメラから取得したデータです.
まとめ
rvizとgazeboでのロボットのシミュレーションデモを動かすことができました.
また、使い方もなんとなくわかった気がします.
今後はデモではなく自作のモデル,プログラムでシミュレーションできるように勉強していきます.