rosのトピック(topic)通信とは

rosのトピック通信とは

トピック通信とはrosの通信方法の一つトピックという合言葉でノード同士でメッセージを送り合って通信する通信方式です。メッセージを送る方がPublisher、メッセージを受け取る側がSubscriberと呼ばれます。

実際にはroscoreという通信を制御するものを通して通信をします。

実際に動かしてみて理解する

まずはターミナル(端末)で下記を実行してroscoreを立ち上げます。

roscore

すると現在のターミナル(端末)のタブは入力待ち状態になるので、別のターミナル(端末)のタブを開き、下記をで実行してノードを立ち上げます。

rosrun turtlesim turtlesim_node


これでsubscriberのノードは立ったので、同様に別タブで下記をターミナル(端末)で実行してメッセージを送ります。

下記のコマンドでpubのノードは立てなくてもトピックを指定してメッセージを送ることができます。

rostopic pub -1 /turtle1/cmd_vel geometry_msgs/Twist -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, 1.8]'

これで画面上の亀が動いてメッセージが送れたことがわかると思います。

トピック通信のノードの情報を見る

これだとトピック通信で実際にどんなノードが立っていてどんなやりとりがされているのかわかりづらいです。下記のコマンドでノード情報を見てみましょう。

rosnode list

このコマンドを使って現在立ってるノードを確認することができます。

さらにノード名を指定することで詳しい情報を確認できます。

rosnode info ノード名

トピック通信のトピックの情報を見る

同様にトピックの情報もコマンドを使ってみることができます。

下記のコマンドで使われてるトピックの情報を出力できます。

rostopic list -v

下記のコマンドでトピックを介して通信してるメッセージを出力できます。

rostopic echo トピック名