こんにちは、プラスプラスの真山です。
今回はROSのメッセージ通信について書きたいと思います。
前回の「ROSを起動して動かしてみよー!」ではトピックという通信方法を使いましたが、ROSのメッセージ通信には他にも、サービス、アクション、パラメータなどがあります。一体どういった違いがあるのでしょう。
トピック
トピック通信はデータを送信するパブリッシャと受信するサブスクライバで構成されます。一度接続したら連続してデータ通信が行われるためセンサデータの取得などに使われます。
サービス
サービス通信はサービスを要請するサービスクライアントとサービス要請に応えるサービスサーバで構成され、その間の双方向同期通信方式です。トピックとは違い要請を受けた時だけ応答して、通信が終わると両ノードの接続は切られます。そのためサービス通信はネットワークの負荷が小さい。ロボットの事前に決められた動きをさせる時などに使われます。
アクション
アクション通信は要請から応答までが長い場合や、処理中に中間報告が欲しい場合に使われます。アクションの目標を送信するアクションクライアント、与えられた目標に対する処理を実行し、処理中のフィードバックや結果を送信するアクションサーバで構成されます。
パラメータ
パラメータはグローバル変数のような役割をします。デフォルト値が設定されていて、外部からの読み書きがリアルタイムで可能です。カメラの色補正値、モーターの速度設定などができます。
メッセージ通信の図です。わかりやすいですね。
今回はROSのメッセージの概要を書きました。次回はROSで使われるコマンドについて書きたいと思います。