2016/12/12

ROSチュートリアル2-トピックを知る(亀を動かす!)-

前回のROSチュートリアル1-ノードを知る-の続きですのでこれをこなしていることを前提とします。

今回はトピックについてやります.



wikiのUnderstanding ROS Topicsの部分です。

\$ roscore
\$ rosrun turtlesim turtlesim_node
\$ rosrun turtlesim turtle_teleop_key

で亀を起動します.

今回はトピックを見ていきますが,これがデータをやり取りしているのでプログラムを作るときはこれが重要となることが多いです

\$ rostopic list -v
で今起動しているトピックにいろいろ情報を付けて表示できます。

多くのトピックを扱うときはごちゃごちゃしないように
\$ rostopic list
で表示します

出力されたトピックの一つに
/turtle1/cmd_vel
があるはずです。
ここにどんなデータが受け付けられるか知りたいときは
\$ rosopic type /turtle1/cmd_vel
とすると
geometry_msgs/Twist
っていうデータが入ることが分かります。
まあ,英語からもどんなデータが入っているぽいっていうのはわかります。

実際どんな構成要素からなるかっているのは
\$ rosmsg show geometry_msgs/Twist
でみれます。

そうすると
geometry_msgs/Vector3 linear
  float64 x
  float64 y
  float64 z
geometry_msgs/Vector3 angular
  float64 x
  float64 y
  float64 z

とできてて,線形移動ベクトル3方向と回転移動ベクトル3軸からなっているということが分かります。

具体的にどんな値が入っているかみるには
\$ rostopic echo /turtle1/cmd_vel
とします。

/tekeop_turtleで矢印を押すと

echoした端末に出力が見えるはずです。

これで自分でプログラムを作った時でもちゃんとデータが出力できるか見ることができる.

次にこのトピックに直接値を入れてみます。

これまでは/tekeop_turtleで矢印を押すと/turtle1/cmd_velが生成され,出力されていたが,直接送ることも可能です。

 rostopic pub -1 /turtle1/cmd_vel geometry_msgs/Twist -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, 1.8]'

とコマンドに打てば

/turtle1/cmd_vel

geometry_msgs/Twist
というメッセージを送り、その中身は
geometry_msgs/Vector3 linear
  float64 x:2.0
  float64 y:0.0
  float64 z:0.0
geometry_msgs/Vector3 angular
  float64 x:0.0
  float64 y:0.0
  float64 z:1.8
であるという意味です

これで亀がその通り動いているはずです.

0 件のコメント:

コメントを投稿