<> <> Topicは、[[Nodes|nodes]]が[[Messages|messages]]をやり取りするための[[Names|named]]付のバスです。Topicは、無名のpublish/subscribeのセマンティクスを持っており、情報の消費と情報の生産を分離する役割を持っています。一般的に、nodeは誰と通話をしているかを知りません。その代わり、データに関心のあるnodeは、関係のあるtopicに''subscribe''し、データを生成するnodeは、関連するtopicに対して、''publish''します。topicには、それぞれ複数のパブリッシャとサブスクライバがあることもありえます。 topicは一方向ストリーミング方通信であることを意図されています。リモートの処理の呼び出しが必要なnodeは、つまり、リクエストに対するレスポンスを受け取りたい場合などは、代わりに[[Services|services]]を使ってください。少量の状態を保持するのには、[[Parameter Server]]を使うこともあります. == Topic タイプ == それぞれのtopicは、メッセージをパブリッシュするために使われるROS [[Messages|message]] typeによって強くタイプ付けされています。そして、nodeはタイプが適合しているメッセージしか受け付けません。[[Master]]は、パブリッシャにタイプの一貫性は強制しませんが、サブスクライバは、タイプが一致しない限り、メッセージトランスポートを作ることはありません。さらに、すべてのROSのクライアントは、[[msg|msg files]]からわかるMD5が一致することを確認します。この確認は、ROSのnodeが、首尾一貫したコードベースからコンパイルしていることを保障しています。 == Topic トランスポート == ROSは、現在、TCP/IP-ベース and UDP-ベースのメッセージの転送をサポートしています。TCP/IP-ベースの転送方式は、[[ROS/TCPROS|TCPROS]]として知られてます。これは、固定のTCP/IP接続の中でメッセージデータを通信します。TCPROSは、ROSでデフォルトで使用される転送方式で、また唯一クライアントライブラリで必ずサポートされるべき転送方式となっています。[[ROS/UDPROS|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/Overview/Publishers and Subscribers|rospy 概略]]をご覧ください. === C++ === [[roscpp/Overview/Publishers and Subscribers|roscpp 概略]]をご覧ください.