ROS#02Computation Graph level

Computation Graph level

最初にも伝えましたが、ROSはネットワーク上ですべてのProcessを接続しています。すべての”Node”にもこのネットワークをアクセスすることや、他の”Node”とやり取りすることもできます。

コンセプト的にはNodes,Master,Parametre Server,Messages,Topic Services,Bagsがあります。これkら一つずつ説明したいと思います。

Master

Node間の通信管理し、システム立ち上げるとすべてのNodeがMasterに”Register”し、Node間のサービスを探します。このMasterがないとNode間、Services、Messageの通信もできません。分離システムでは、システムAには自分のMasterがあり、Nodeは自分や他のパソコンにいてもOKです。

Node

NodeはMasterの立ち上げ終わりか処理し始めます。もしシステム中でどあるProcessを他のNodeとやり取りしたなら、Nodeの作成が必要しROS Networkとつながる必要があります。そしてそのNodeに処理するProcessが入っています。通常にシステム内はたくさんのNodeがあり違うFunctionを制御しています。

そこで、大きなNode1つですべての仕事やるより小さいなNodeたくさんで違うFunctionを制御したほうが効率だと思います。NodeはROS Client libraryからプログラムされています(例えばroscpp or rospy)。そしてServices,Topic,Parametersを経由して他のNodeと通信します。Node自体は他のNode名と重複しないように注意しましょう。

ROSでNodeの操作するにはrosnodeというコマンドがあります。

Messages

Node間は”Message”で通信します。このMessageには他ののNodeに送るのデータが含まられています。ROSでは様々な標準Typeなメッセージもあり、もちろんあなたも自分でTypeを作成できます。

http://wiki.ros.org/msg

rosmsgというコマンドがあります。

Example

fieldtype1 fieldname1
fieldtype2 fieldname2
fieldtype3 fieldname3

Topics

Messageことに自分の名前があり、ROSネットワークに配置されています。Nodeはデータ送るとき、私たちはこの”データ送る”の動作は”Publishing Topic”と言います。Nodeが別のNodeからデータ受けたいとき、まず”subscribing to the topic”という動作が必要になります。ここで特別なのはSubscriberがSubscribeするTopicは”実際存在しなくも大丈夫”ってこと。メリットは実機で動くとき要らなくなったTopicがきても特になにもしなくもOKです。

でも、大事なのは”Topic”の名前は必ず重複してはだめです。

Topicsの通信はTCP/IP(Default、TCPROS)やUDP(UDPROS)を使っています。

ROSでTopicsを操作するにはrostopicというコマンドがあります。

http://wiki.ros.org/Topics

Example

/enable_statistics default: False
/statistics_window_min_elements default: 10
/statistics_window_max_elements default: 100
/statistics_window_min_size default: 4 seconds
/statistics_window_max_size default: 64 seconds

Parameter Server

このParameter Serverが…よくわからない。

もう少し深く掘ったらまた書きます。

Services

TopicsをPublishするときは、N to Nのデータやり取りは常にやっています。ですが、そのデータのリクエストやアンサーはTopicsの仕事ではありません。これはServicesの仕事です。もちろん、Servicesの名前は重複してはいけません。NodeがそのServicesがあるから、すべてのNodeがこれを使って通信することできます。

Servicesを操作するにはrossrvとrosserviceとコマンドがあります。

Bags

BagsはROS messageのデータを保存したりPlaybackしたりのFomratです。Bagsはデータ保存するにはすこく大事な手段(例えばSensorとか)。もし複雑なRobotシステムになるとBagsを使う機会が多くなるでしょう。

ros_comm repository

とりあえず、今回はそこまでにしまね。

はーい、お疲れ様です。

Footer_Basic

Find ME

Twitter:@3threes2
Email:soup01threes*gmail.com (* to @)
YoutubeChannel:https://www.youtube.com/channel/UCQ3CHGAIXZAbeOC_9mjQiWQ

シェアする

  • このエントリーをはてなブックマークに追加

フォローする