http://www.ros.org/wiki/ROS/Tutorials/UnderstandingTopics より
ノードは互いに通信する際、トピック(Topic)を通じて行う。例えばturtle_teleop_keyノードは、キー入力をトピック上に配信する。他方で、turtlesimノードはそのトピックを購読することでキー入力を受信する。
rxgraphは、実行中のノードとトピックからなる有向グラフを表示するツールである。このツールを使えば、ROSで何が行われているか視覚的に見ることができる。
rxgraph
turtle_teleop_keyノードは、/turtle1/command_velocityトピックを通じて、turtlesimノードと通信する。また、turtlesimノードは、/rosoutトピックを通じてrosoutノードと通信する。
rostopicは、トピックに関する情報を得るためのコマンドである。rostopic -hを実行すると利用可能なサブコマンドが表示される。
rostopic bw:トピックによって使われるバンド幅(bandwidth)を表示する。
rostopic echo:画面にメッセージを表示する。
rostopic hz:トピックの配信レート(publishing rate)を表示する。
rostopic list:有効なトピックに関する情報を表示する。
rostopic pub:トピックにデータを配信する。
rostopic type:トピックの型を表示する。
rostopic echoはトピック上に配信されたデータを表示する。使い方は以下の通り。
rostopic echo [トピック]
turtle_teleop_keyノードによって/turtle1/command_velocityトピック上に配信されたデータを見るには以下のようにする。
rostopic echo /turtle1/command_velocity
rostopic listは、現在配信・購読されている全てのトピックの一覧を表示する。rostopic list -hで、必要とされる引数についての説明が表示される。rostopic list -vで、配信・購読されるトピックのリストが表示される。
ノード間でメッセージ(Message)を送ることにより、トピック上で通信が行われる。配信者(turtle_teleop_key)と購読者(turtlesim_node)が通信するとき、配信者と購読者は同じ型(type)のメッセージを送受信する必要がある。トピック上で配信されるメッセージの型によってトピックの型が決まる。トピック上のメッセージの型は、rostopic typeを使って知ることができる。rostopic typeの使い方は以下の通り。
rostopic type [トピック]
rostpic type /turtle1/command_velocityを実行すると、turtlesim/Velocityを得る。
rosmsgを使って、メッセージの詳細を見ることができる。
rosmsg show turtlesim/Velocity
rostopic pubは、トピック上にデータを配信する。使い方は以下の通り。
rostopic pub [トピック] [メッセージ型] [引数]
使用例
rostopic pub -1 /turtle1/command_velocity turtlesim/Velocity -- 2.0 1.8
これはturtlesimに対して、線速度2.0、角速度1.8で動作するようにメッセージを送っている。
パラメータの-1は、メッセージを1つだけ送って終了することを示す。
/turtle1/command_velocityは、配信するトピックの名前を表す。
turtlesim/Velocityは、トピックへ配信するときに使うメッセージの型を表す。
- は、サブコマンドのオプションがこれ以上ないことをパーサに伝えるものである。マイナス記号で始まる引数を使うような場合(たとえば負の数など)に用いる必要がある。
2.0 1.8は、turtlesim/Velocityメッセージの2個の小数点数linear, angularにそれぞれ対応する。これらの引数はYAML文法に従う。YAML文法についてはこちら: http://www.ros.org/wiki/ROS/YAMLCommandLine
メッセージを連続して配信するためには、pub -r コマンドを用いる。
rostopic pub /turtle1/command_velocity turtlesim/Velocity -r 1 -- 2.0 -1.8
上の例では、1ヘルツの間隔でメッセージを配信している。
rostopic hzは、データが配信される速度を調べるのに使う。
rostopic hz [トピック]
turtlesim_nodeが/turtle1/poseトピックを配信する速度を調べるには、以下のようにする。
rostopic hz /turtle1/pose
rxplotは、トピックに対して配信されるデータを時系列的にプロットするコマンドである。/turtle1/poseトピックに対して配信されるデータをプロットする例は以下のとおり。
rxplot /turtle1/pose/x,/turtle1/pose/y /turtle1/pose/theta
この例では2つのグラフが表示され、上のグラフにはx,yの値が、下のグラフにはthetaの値がそれぞれプロットされる。