通信の種類

前回の Hello world ではトピック通信というものを使ってデータの送受信を行いました。 ROS 2の世界ではトピック通信の他に、サービス通信やアクション通信というものがあります。

通信の種類

特徴

用途

トピック通信

一方向、非同期通信

センサーからのデータの送信、受信など

サービス通信

双方向、同期通信

起動、終了、状態の確認など

アクション通信

双方向、同期通信、サービス通信より高機能

時間がかかる処理で途中経過も知りたい時

トピック通信

  • センサからから得られた情報を送受信する場合に使う

  • メッセージは.msgファイルで定義

  • 使用例

    • センサ情報の送受信

    • ロボットへの速度司令

サービス通信

  • 短時間で処理が終わるものに使う

  • メッセージは.srvファイルで定義

  • 使用例

    • ロボットアームへの司令

    • 地図情報の読み込み

アクション通信

  • サービス通信とアクション通信を組み合わせたようなもの

  • メッセージは.actionファイルで定義

  • 使用例

    • ナビゲーションの司令

データの種類

std_msgsパッケージでは以下のようなメッセージが使えます。

  • Bool

  • Byte

  • Char

  • Float32

  • Float64

  • Int8

  • Int16

  • Int32

  • Int64

  • String

  • UInt8

  • UInt16

  • UInt32

  • UInt64

また、データを配列にしたMultiArray型も存在します。

  • ByteMultiArray

  • Float32MultiArray

  • Float64MultiArray

  • Int8MultiArray

  • Int16MultiArray

  • Int32MultiArray

  • Int64MultiArray

  • MultiArrayDimension

  • MultiArrayLayout

  • UInt16MultiArray

  • UInt32MultiArray

  • UInt64MultiArray

  • UInt8MultiArray

参照