ROS覚え書き「ROSノードの理解」

http://www.ros.org/wiki/ROS/Tutorials/UnderstandingNodes より

ROSにおけるグラフの概念

ノード(Node):ノードはROSを使う実行形式で、他のノードと互いに通信できる。

トピック(Topic):ノードはトピックに対してメッセージを配信(Publish)する。また、メッセージを受信するためにトピックを購読(Subscribe)する。

メッセージ(Message):トピックへの配信や購読の際に用いられるROSデータ型のこと。

マスター(Master):ROSのネームサービスのこと。互いにノードを見つける助けとなる。

rosout:ROS版のstdout, stderrのこと。

roscore:マスター+rosout+パラメーターサーバー

ノードはROSクライアントライブラリを使って他のノードと通信し、トピックに対して配信・購読できる。また、サービスを提供したり利用できる。

ROSクライアントライブラリは、他のプログラミング言語で書かれたノードと通信できるようにするためのライブラリである。rospyはPython用のクライアントライブラリであり、roscppはC++用のクライアントライブラリである。

roscoreは、ROSを利用する際に実行しなければならない。以下のように実行する。

roscore

roscoreが起動しない場合は、ネットワーク設定に問題のある可能性がある。なお、roscoreは多重起動はできずエラーメッセージが表示される。

rosnodeは、実行中のノードに関する情報を表示する。rosnode listで、実行中のノードの一覧が表示される。

rosoutは常に実行されているノードで、デバッグ出力を記録するためのものである。

rosnode infoは、特定のノードに関する情報を表示する。以下は使用例。

rosnode info /rosout

rosnode infoにより、ノードが配信・購読するトピックやサービスがわかる。

rosrunは、パッケージ内のノードを直接実行するコマンドである。

rosrun [パッケージ名] [ノード名]

turtlesimパッケージのturtlesim_nodeを実行するには、以下のようにする。

rosrun turtlesim turtlesim_node

ノードに別途名前を付けることもできる。

rosrun turtlesim turtlesim_node __name:=my_turtle

rosnode pingで、名前を付けたノードが起動しているか確認できる。

rosnode ping my_turtle