ROSのチュートリアルでよく使われるシミュレータにturtlesim
があります。このturtlesim
をholonomic motion、つまり、オムニホイールやメカナムホイールを搭載したロボットのように全方向移動できるようにするためのPull Request(PR)を出して、無事にマージしてもらえました(ros_tutorials#94)(ros_tutorials#98)。せっかくなので今回のPRによって新たにturtlesim
で受け付けられるようになった移動方向(横方向移動等)に移動させる司令の送信方法を紹介します。
概要
今回出したPRによってturtlesim
で以下の画像のように超信地旋、横方向移動、斜め方向移動など、全方位移動に対応できるようになりました。対応しているROSのディストリビューションについては以下の通りです。
- ROS Melodic(該当コミット:
ab51593
) - ROS Noetic(該当コミット:
022f24d
) - ROS 2 Dashing(該当コミット:
2db426a
) - ROS 2 Eloquent(該当コミット:
868c023
) - ROS 2 Foxy(該当コミット:
5abfe3c
)
なおapt-get
やapt
でインストールできるようになるのはもう少し先です。
全方向移動については多田隈先生の日本ロボット学会誌に掲載されている解説が詳しいです。
新しくなったturtlesim
を試す方法
新しくなったturtlesim
を試すには、2020年8月9日現在はapt-get
等でバイナリをインストールするのではなく、手動でソースをダウンロードしてビルドする必要があります。今回はROS MelodicとROS 2 Dashingの場合について紹介します。
ROS Melodic
ワークスペースを~/catkin_ws
に設定しているとします。git clone
でダウンロードする際にmelodic-devel
ブランチを指定します。
cd ~/catkin_ws/src
git clone -b melodic-devel https://github.com/ros/ros_tutorials.git
catkin-tools
を使用している場合は以下のようにビルド&ワークスペースの設定をリロードします。
catkin build
catkin source
このあとはgeometry_msgs/Twist
形式の移動指令を送信して亀を移動させます。どのような手段を使ってもよいのですが、キーボード操作で移動させるのが簡単なので、今回はteleop_twisit_keyboard
を利用します。以下のコマンドでインストールできます。
sudo apt install ros-melodic-teleop-twist-keyboard
1つ目の端末を起動してroscore
を、2つ目の端末でturtlesim
を、3つ目の端末でteleop_twist_keyboad
を起動します。
# 1つ目の端末で
roscore
# 2つ目の端末で
rosrun turtilesim turtlesim_node
# 3つ目の端末で
rosrun teleop_twist_keyboard teleop_twist_keyboard.py cmd_vel:=/turtle1/cmd_vel
teleop_twist_keyboard.py
を起動している3つ目の端末でShiftキーを押しながらJキーまたはLキーで横移動できます。横移動しない場合は古いバージョンのturtlesim
を起動している可能性があります。rospack find turtlesim
とコマンドを実行してみて、~/catkin_ws
などワークスペース以下のturtlesim
を参照しているかどうか確認してみてください。
ROS 2 Dashing
ワークスペースを~/ros/dashing
に設定しているとします。git clone
でダウンロードする際にdashing-devel
ブランチを指定します。
cd ~/ros/dashing/src
git clone -b dashing-devel https://github.com/ros/ros_tutorials.git
catkin-tools
を使用している場合は以下のようにビルド&ワークスペースの設定をリロードします。
cd ~/ros/dashing
colcon build --symlink-install
source install/local_setup.bash
このあとはgeometry_msgs/Twist
形式の移動指令を送信して亀を移動させます。どのような手段を使ってもよいのですが、キーボード操作で移動させるのが簡単なので、今回はteleop_twisit_keyboard
を利用します。以下のコマンドでインストールできます(ros-dashing-desktop
をインストールすると一緒にインストールされるようです)。
sudo apt install ros-dashing-teleop-twist-keyboard
1つ目の端末でturtlesim
を、2つ目の端末でteleop_twist_keyboard
を起動します。
# 1つ目の端末で
ros2 run turtilesim turtlesim_node
# 2つ目の端末で
ros2 run teleop_twist_keyboard teleop_node cmd_vel:=/turtle1/cmd_vel
teleop_twist_keyboard
を起動している2つ目の端末でShiftキーを押しながらJキーまたはLキーで横移動できます。横移動しない場合は古いバージョンのturtlesim
を起動している可能性があります。
まとめ
turtlesim
をholonomic motion(全方向移動)に対応させるためのPRを出して、無事にマージしてもらいました。これにより、全方向に移動指令を出すロボット制御用のROSノードを設計した際、そのノードが出力するROSトピックをturtlesim
に向ければ、ROSトピックの中身を簡単に可視化できるようになりました。そして、実際に横方向に移動させる指令を送信して新しいバージョンのturtlesim
で亀を横に移動させる簡単な方法を紹介しました。
コメント