6. ROS2メッセージのJSON表現

ROS2メッセージをintdashで伝送する際の形式としてJSONを選択した場合、JSONデータには以下のようにメタデータとROSメッセージが格納されます。

6.1. トピックに関するメッセージ

{
  "msg": {
    # ROSトピックのメンバが含まれます
  }
}

6.2. サービスに関するメッセージ

ROS2では1つのサービスリクエスト、サービスレスポンスは、16個の8ビット整数 "writer_guid" とシーケンス番号 "sequence_number" で識別されます。

6.2.1. サービスリクエスト

{
  "writer_guid": [
    # 16個の8bit整数が含まれます
  ],
  "sequence_number": # リクエストを識別するシーケンス番号が含まれます
  "msg": {
    # サービスリクエストが含まれます
  }
}

6.2.2. サービスレスポンス

{
  "writer_guid": [
  # 16個の8bit整数が含まれます
  ],
  "sequence_number": # リクエストを識別するシーケンス番号が含まれます
  "msg": {
    # サービスレスポンスが含まれます
  }
}

6.3. パラメータに関するメッセージ

ROS2ではパラメータはサービスとして実装されています。そのため1つのパラメータリクエスト、パラメータレスポンスは、16個の8ビット整数 "writer_guid" とシーケンス番号 "sequence_number" で識別されます。

6.3.1. パラメータリクエスト

{
  "writer_guid": [
  # 16個の8bit整数が含まれます
  ],
  "sequence_number": # リクエストを識別するシーケンス番号が含まれます
  "msg": {
    # パラメータリクエストが含まれます
  }
}

6.3.2. パラメータレスポンス

{
  "writer_guid": [
  # 16個の8bit整数が含まれます
  ],
  "sequence_number": # リクエストを識別するシーケンス番号が含まれます
  "msg": {
    # パラメータレスポンスが含まれます
  }
}

6.4. アクションに関するメッセージ

ROS2では1つのアクションに紐づくリクエスト、レスポンス、フィードバック、リザルトは、16個の8ビット整数"uuid"で識別されます。そのため、アクションに関わるメッセージにはUUIDが含まれます。

6.4.1. アクションゴールリクエスト

{
  "uuid": [
  # 16個の8bit整数が含まれます
  ],
  "msg": {
    "goal_id": {
      "uuid": [
         # 16個の8bit整数が含まれます
      ]
    },
    "goal": {
      # アクションのゴールが含まれます
    }
  }
}

6.4.2. アクションゴールレスポンス

{
  "uuid": [
             # 16個の8bit整数が含まれます
  ],
  "goal_response": # "REJECT"、"ACCEPT_AND_EXECUTE"、"ACCEPT_AND_DEFER" のいずれかが入ります
}

6.4.3. アクションフィードバック

{
  "uuid": [
             # 16個の8bit整数が含まれます
  ],
  "msg": {
    # ゴールのフィードバックが含まれます
  }
}

6.4.4. アクションリザルト

{
  "uuid": [
             # 16個の8bit整数が含まれます
  ],
  "result_code": # "SUCCEEDED", "UNKNOWN"、"CANCELED"、"ABORTED"のいずれかが含まれます
  "msg": {
    # アクションリザルトが含まれます
  }
}

6.4.5. アクションキャンセルリクエスト

{
  "uuid": [
             # 16個の8bit整数が含まれます
  ]
}

6.4.6. アクションキャンセルレスポンス

{
  "uuid": [
    # 16個の8bit整数が含まれます
  ],
  "result_code": # "SUCCEEDED", "UNKNOWN"、"CANCELED"、"ABORTED"のいずれかが含まれます
}