Contents
Topicは、nodesがmessagesをやり取りするためのnamed付のバスです。Topicは、無名のpublish/subscribeのセマンティクスを持っており、情報の消費と情報の生産を分離する役割を持っています。一般的に、nodeは誰と通話をしているかを知りません。その代わり、データに関心のあるnodeは、関係のあるtopicにsubscribeし、データを生成するnodeは、関連するtopicに対して、publishします。topicには、それぞれ複数のパブリッシャとサブスクライバがあることもありえます。
topicは一方向ストリーミング方通信であることを意図されています。リモートの処理の呼び出しが必要なnodeは、つまり、リクエストに対するレスポンスを受け取りたい場合などは、代わりにservicesを使ってください。少量の状態を保持するのには、Parameter Serverを使うこともあります.
Topic タイプ
それぞれのtopicは、メッセージをパブリッシュするために使われるROS message typeによって強くタイプ付けされています。そして、nodeはタイプが適合しているメッセージしか受け付けません。Masterは、パブリッシャにタイプの一貫性は強制しませんが、サブスクライバは、タイプが一致しない限り、メッセージトランスポートを作ることはありません。さらに、すべてのROSのクライアントは、msg filesからわかるMD5が一致することを確認します。この確認は、ROSのnodeが、首尾一貫したコードベースからコンパイルしていることを保障しています。
Topic トランスポート
ROSは、現在、TCP/IP-ベース and UDP-ベースのメッセージの転送をサポートしています。TCP/IP-ベースの転送方式は、TCPROSとして知られてます。これは、固定のTCP/IP接続の中でメッセージデータを通信します。TCPROSは、ROSでデフォルトで使用される転送方式で、また唯一クライアントライブラリで必ずサポートされるべき転送方式となっています。UDPROSとして知られるUDPベースの転送方式では、現在roscppでのみサポートされており、メッセージをUDPパッケージに分割して転送します。UDPROSは低遅延で不可逆な転送なので、テレオペレーションのようなタスクに適しています。
ROS nodeは、実行時に適切な転送を決定します。例えば、もしnodeがUDPROS転送を好んでいるものがあっても他のnodeがそれをサポートしていないとき、TCPROSの転送に変えることができます。この決定方式によって強制的に変えなくてはならないときに、リアルタイムで新しい転送が加わえることができるようになります。
Topic ツール
rostopicは、ROSのtopicのためのコマンドラインツールです。例えば:
$ rostopic list
は現在動いているtopicをリスト表示して、
$ rostopic echo /topic_name
は、/topic_nameにパブリッシュされたメッセージを表示します。さらに詳しくは、rostopicのページをご覧ください.
クライアントライブラリサポート
Python
rospy 概略をご覧ください.
C++
roscpp 概略をご覧ください.