turtlesimを全方向移動に対応させるPRをマージしてもらった話

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-getaptでインストールできるようになるのはもう少し先です。

全方向移動については多田隈先生の日本ロボット学会誌に掲載されている解説が詳しいです。

新しくなった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で亀を横に移動させる簡単な方法を紹介しました。

試行錯誤の記録
スポンサーリンク
ぜひこのエントリをシェアしてください!

Memotekiの管理人です。このブログには学んだことや共有しておきたいことをマイペースにメモしていきます。2020年からは日記も書き始めました。

Tiryohをフォローする
Memoteki

コメント