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 トピック名