Quality of Service

目次

  1. 概要
  2. パラメータ
    1. History(履歴)
    2. Reliability(信頼性)
    3. Durability(耐久性)
    4. デフォルト
  3. 組み合わせ

概要

公式ドキュメントによると、”ROS 2 can be as reliable as TCP or as best-effort as UDP”と書いてあります。TCP通信は信頼性が、UDPは高速性がそれぞれ高く、TCPでは確実にすべての情報を送ること、UDPでは時間通りに通信を行うことを重要視しています。
ROSの通信では、これらの2つの特徴のどちらを重要視するか、自分で決めることができるのです。

パラメータ

実際に決めることができるのは次のパラメータです。

History(履歴)

  • keep last
    最大いくつのサンプルまでを保存するか決めることができます。Depthパラメータで保存する個数を決めます。
  • keep all
    全てのサンプルを保存します。

Reliability(信頼性)

  • Reliable
    情報の信頼性が高い、TCP通信に近い通信です。
  • Best Effort
    時間的な信頼性が高い、UDP通信に近い通信です。

Durability(耐久性)

  • Transient local
    後から接続したsubscriberに対して、過去のtopicデータを渡します。
  • Volatile
    基本的にこっちで問題ないでしょう。

デフォルト

デフォルトは
keep last (Depth=10) / Reliable / Volatile
となっています。

Volatileは変えなくてもいいと思いますが、keep lastを増やすか、ReliableをBest Effortにする、など通信要件に従って変えましょう。

組み合わせ

publisher,subscriber同士で通信ができる組み合わせとできない組み合わせがあります。

publisher subscriber 可能/不可能 通信状況
Reliable Best Effort 可能  情報は正しく送るが、最新のもののみ使う
Reliable Reliable 可能  情報を正しく送り、すべて受け取る
Best Effort Best Effort 可能  最新のもののみやり取りする
Best Effort Reliable 不可能 受け手は情報を欲しているのに保存されていない状態

例えばReliableのpublisherに対してBest EffortとReliableの両方のsubscriberがいる、という状況が考えられますね。


先頭に戻る

作成者: 丸山響輝 / 23 / HR・レスキュー

最終更新: 2025年 09/12