ROS2プログラミング入門 #9 シミュレーションでロボットを動かす
この記事では、シミュレーションでロボットを動かす方法を紹介します。
はじめに
これまでROS2プログラミングについて学んできましたけれど、実際に「ものを動かした」のは ROS2プログラミング入門 #6 亀を制御する くらいだったと思います。
ただ、これも「ロボット」というより「アニメーションの亀」を動かしたといった感じですね。
my_turtle_controllerを実行した様子
今回はもう少し現実に近づけて、シミュレーションでロボットを動かしてみようと思います。
Gazebo
Gazebo というシミュレータを使えば、シミュレーションでロボットを動かすことができます。
それでは早速インストールして使ってみましょう。
インストール
ros-foxy-desktop
が入っていれば、インストールは次のコマンドを実行するだけです。
sudo apt install ros-foxy-gazebo-ros-pkgs
動作確認
インストールできたら、次のコマンドを実行してGazeboが立ち上がることを確認しましょう。
gazebo /opt/ros/foxy/share/gazebo_plugins/worlds/gazebo_ros_diff_drive_demo.world
次のような画面が表示されるはずです。
Gazeboのデモを実行した様子
さらに別のターミナルで次のように実行すると、画面上のロボットが動きます。
ros2 topic pub /demo/cmd_demo geometry_msgs/Twist '{linear: {x: 1.0}}' -1
TurtleBot 3
Gazeboの動作確認で見たロボットは直方体と球で構成されていました。
これはこれで良いと思いますが、よりリアルなロボットでシミュレーションできないでしょうか。
実は、ROS学習用のロボットキットに TurtleBot 3 という、シミュレーションもできるロボットがあります。これでシミュレーションしてみましょう。
なおTurtleBot 3は「Burger」と「Waffle Pi」があり、ここで使うのは TurtleBot 3 Burger です。
https://emanual.robotis.com/docs/en/platform/turtlebot3/overview/
より
準備
ROBOTIS e-Manualで確認すると
The TurtleBot3 Simulation Package requires
turtlebot3
andturtlebot3_msgs
packages as prerequisite. Without these prerequisite packages, the Simulation cannot be launched.
とありますから、まずは turtlebot3
と turtlebot3_msgs
をインストールしましょう。
sudo apt install ros-foxy-turtlebot3 ros-foxy-turtlebot3-msgs
リポジトリのクローンとビルド
続いてシミュレーションに必要なリポジトリをクローンしてビルドします。
cd ~/dev_ws/src/
git clone -b foxy-devel https://github.com/ROBOTIS-GIT/turtlebot3_simulations.git
(cd ~/dev_ws/ && colcon build --symlink-install)
シミュレーションの実行
ビルドできたら、次のコマンドでシミュレーションを実行しましょう。
export TURTLEBOT3_MODEL=burger
ros2 launch turtlebot3_gazebo turtlebot3_world.launch.py
次のような画面が表示されるはずです。
turtlebot3_world.launch.pyを実行した様子
キーボードでロボットを制御
さらに別のターミナルで次のように実行すると、キーボードでロボットの動きを制御できます。
ros2 run turtlebot3_teleop teleop_keyboard
おわりに
Gazeboの画面をマウスで操作すると、様々な角度からロボットを見られてとても楽しいです。
今回はシミュレーションでロボットを動かす方法を紹介しました。どなたかのお役に立てば幸いです。
Discussion