【ROS入門】亀で遊ぶ
はじめに
・環境
Windows 10 Home 21H2
WSL2
Intel(R) Core(TM) i5-4200U CPU @ 1.60GHz
・ROS melodicのインストール
下記記事を参照のこと
kakepro.hatenablog.com
・ここでやること
亀で遊びながら以下のやり取りについて雰囲気を理解する
Node:ROSで動かすプロセス
Topic:Node間で送受信するデータ
Publish:Topicの送信
Subscribe:Topicの受信
亀で遊んでみる
まず、roscoreを実行する
roscore
このコマンドによりマスターが起動され、ノード間での通信が可能となる
ROSノードを使用する際は必ず実行する
続いて、別のターミナルで下記コマンドを実行する
rosrun turtlesim turtlesim_node
下記の通り亀が表示される*1*2
これはROSでロボット(亀)を動かすシミュレーターである
また新たなターミナルで下記コマンドを実行する
rosrun turtlesim turtle_teleop_key
このコマンドを実行したターミナル上で矢印キーを押すと亀が動く
これは
・turtlesim_teleop_keyノードがキーボード入力をPublish
・turtlesimノードがそのデータをSubscribe
することで亀を動かしている
ノード、トピックの可視化ツール(rqt_graph)でそれを確認するため、新たなターミナルで下記コマンドを実行する
rqt_graph
teleop_turtleノードとturtlesimノードの間がcmd_velトピックで結ばれていることが確認できる*3
cmd_velは亀の速度に関するデータ(command_velocityの略)である
ここでrostopicコマンドを使用してcmd_velの中身を確認してみる
下記コマンドを実行してから先ほどのturtle_teleop_keyで亀を動かしてみよう
rostopic echo /turtle1/cmd_vel
linear(直線運動に関するデータ)とangular(回転速度に関するデータ)がそれぞれ3成分ずつ格納されていることが分かる
なお、ここで先ほどのrgt_graphの更新ボタンを押すとrostopicが追加されていることを確認できる
ここまでteleop_turtleノードで亀を動かしていたが、rostopicを利用して直接値をPublishすることもできるので試してみる
まずcmd_velトピックの型を調べるため、先ほどのrostopic echoをCtrl-cで終了し、下記コマンドを実行する
rostopic type /turtle1/cmd_vel
geometry_msgs/Twist型であることが分かったので下記コマンドで亀を動かしてみる
rostopic pub /turtle1/cmd_vel geometry_msgs/Twist -- '[2.0,0.0,0.0]' '[0.0,0.0,3.6]'
2.0がX方向の速度[m/s]、3.6がZ軸周りの回転速度[rad/s]である
なお亀の動きはすぐに止まってしまうので、動かし続けたい場合にはトピックを送り続ける必要がある
オプション -r 1を付けると1Hzの周期でトピックを送り続けることが可能である
rostopic pub -r 1 /turtle1/cmd_vel geometry_msgs/Twist -- '[2.0,0.0,0.0]' '[0.0,0.0,3.6]'