はじめに
ROSは世界中で使われているロボットミドルウェアであり、またturtlebotもよく使われている車輪型の移動ロボットとなっています。今回はROSでturtlebot3をgazebo上で動かすための環境設定を紹介したいと思います。
環境
OS:Ubuntu 16.04
ROS:ROS kinetic
セットアップ
ROS kineticではまだturtlebot3のパッケージをaptでインストールできないためgit cloneで取得します。
以下、ROSのワークスペースが/home/catkin_wsにあるとします。
まずcatkin_ws/srcに移動して、
$ cd ~/catkin_ws/src
以下のコマンドを1つずつ実行してください。
$ git clone https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git
$ git clone https://github.com/ROBOTIS-GIT/turtlebot3.git
$ git clone https://github.com/ROBOTIS-GIT/turtlebot3_simulations.git
$ git clone https://github.com/ROBOTIS-GIT/turtlebot3_gazebo_plugin.git
その後、catkin_makeをしましょう。
$ cd ~/catkin_ws
$ catkin_make
$ source ~/catkin_ws/devel/setup.bash
実行
turtlebot3のノードを実行する際は最初に
TURTLEBOT3_MODEL
という環境変数をセットしなければいけません。
waffle
かwaffle-pi
かburger
を選べます。これは実際のturtlebot3と同じですね。
http://emanual.robotis.com/docs/en/platform/turtlebot3/specifications/
モデルを気にしないのであればどれかひとつを選んで ~/.bashrc に追記しておけばいいですね。
$ export TURTLEBOT3_MODEL=burger
実行コマンドは以下です。以下のような画面がでてきたら成功です。
$ roslaunch turtlebot3_gazebo turtlebot3_world.launch
その他いろいろ
rostopic一覧
$ rostopic list
/clock
/cmd_vel
/gazebo/link_states
/gazebo/model_states
/gazebo/parameter_descriptions
/gazebo/parameter_updates
/gazebo/set_link_state
/gazebo/set_model_state
/gazebo_gui/parameter_descriptions
/gazebo_gui/parameter_updates
/imu
/joint_states
/odom
/rosout
/rosout_agg
/scan
/tf
turtlebot3を動かす(teleop)
rostopic一覧より、cmd_vel
トピックを使えば良いので、以下のturtlebot3にはいっているteleopか、apt-getでできるteleopのノードで動かすことができます。
$ roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch
$ sudo apt-get install ros-kinetic-teleop-twist-keyboard
$ rosrun teleop_twist_keyboard teleop_twist_keyboard.py
turtlebot3が動くgazebo上の環境
さきほど実行する際には以下のコマンドでした。
$ roslaunch turtlebot3_gazebo turtlebot3_world.launch
これはさきほどgit cloneした turtlebot3_simulation/turlebot3_gazebo/launchの中のlaunchファイルを起動しています。launchファイルの一覧を見てみましょう。
$ cd ~/catkin_ws/src/turtlebot3_simulations/turtlebot3_gazebo/launch/
$ ls
multi_map_merge.launch turtlebot3_autorace_mission.launch turtlebot3_simulation.launch turtlebot3_stage_4.launch
multi_turtlebot3.launch turtlebot3_empty_world.launch turtlebot3_stage_1.launch turtlebot3_world.launch
multi_turtlebot3_slam.launch turtlebot3_gazebo_rviz.launch turtlebot3_stage_2.launch
turtlebot3_autorace.launch turtlebot3_house.launch turtlebot3_stage_3.launch
ここで環境を定義しています。例えば、turtlebot3_house.launchを起動してみましょう。以下のような家の中の環境っぽい環境が出てくれば成功です。この他ここのlaunchファイルごとに環境があります。
$ roslaunch turtlebot3_gazebo turtlebot3_house.launch
Rviz
turtlebot3_gazebo内にrvizを実行するlaunchファイルが用意されています。
$ roslaunch turtlebot3_gazebo turtlebot3_gazebo_rviz.launch
以下のようにrvizが立ち上がれば成功です。
左右で並べるとLaserscanがちゃんと反映されるのがわかりますね。(小さくてすみません、、、)
turtlebotのインストール
turtlebot3ではなくturtlebotのgazebo環境はapt-getでインストールすることができます。
$ sudo apt-get install ros-kinetic-turtlebot-gazebo
$ sudo apt-get install ros-kinetic-turtlebot ros-kinetic-turtlebot-apps ros-kinetic-turtlebot-interactions ros-kinetic-turtlebot-simulator ros-kinetic-kobuki-ftdi ros-kinetic-ar-track-alvar-msgs
$ . /opt/ros/kinetic/setup.bash
実行は以下です。
$ roslaunch turtlebot_gazebo turtlebot_world.launch
注意事項ですが、cmd_velトピックが使われていません。ですのでturtlebotを動かすときは以下のコマンドになります。
(apt-getできるほうのteleop_twist_keyboardは使えない)
roslaunch turtlebot_bringup minimal.launch
おわりに
今回はここまでにします。簡単にできるのでやってみてください!
次はmappingとnavigationをやってみたいと思います。
参考
Turtlebot3 e-manual
【ROS】 Turtlebot3 のシミュレーション環境を構築してみた
ROS-kineticでturtlebot gazeboを動かす
ROS.org teleop_twist_keyboard