<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>DDS on Physical AI Hub</title>
    <link>https://physicalaihub.net/tags/dds/</link>
    <description>Recent content in DDS on Physical AI Hub</description>
    <generator>Hugo</generator>
    <language>ja-jp</language>
    <lastBuildDate>Tue, 20 Oct 2026 13:36:07 +0900</lastBuildDate>
    <atom:link href="https://physicalaihub.net/tags/dds/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>ロボット通信の決定論設計：TSN・DDS・制御ネットワークの役割分担</title>
      <link>https://physicalaihub.net/posts/robot-deterministic-networking-tsn-dds-control/</link>
      <pubDate>Tue, 20 Oct 2026 13:36:07 +0900</pubDate>
      <guid>https://physicalaihub.net/posts/robot-deterministic-networking-tsn-dds-control/</guid>
      <description>&lt;h2 id=&#34;先に結論&#34;&gt;先に結論&lt;/h2&gt;&#xA;&lt;p&gt;ロボット通信を決定論的に設計するには、TSN、DDS、専用制御ネットワークを同じ機能として扱わず、層と責任範囲を分けます。DDSはデータモデルと通信契約、TSNはEthernet上の時刻同期・送信スケジュール・帯域制御、専用制御ネットワークはサーボやI/Oなど厳しい制御経路の分離を担当させます。&lt;/p&gt;&#xA;&lt;p&gt;センサ、状態共有、計画、監視、診断はDDS over TSNの候補です。一方、周期やジッターの制約が厳しいサーボ・モーション通信は、EtherCATなどの専用フィールドネットワーク、またはDDS通信から独立したTSNトラフィッククラスに分けます。ただし、TSNやDDS QoSを設定しただけで、アプリケーションから見たエンドツーエンドの決定性が保証されるわけではありません。&lt;/p&gt;&#xA;&lt;h2 id=&#34;なぜ層の分担が必要なのか&#34;&gt;なぜ層の分担が必要なのか&lt;/h2&gt;&#xA;&lt;p&gt;ロボットでは、センサから処理器、制御器、アクチュエータへデータが届くまでの遅延とジッターが動作に影響します。ネットワーク内の送信が予定どおりでも、NIC、ドライバ、OSスケジューラ、DDS実装、executor、コールバック処理、メモリ割り当てなどが遅延要因になり得ます。&lt;/p&gt;&#xA;&lt;p&gt;したがって、「DDSを使えばリアルタイムになる」「TSNを導入すれば制御周期が保証される」と単純化するのは危険です。先に制御周期、許容ジッター、最大遅延、損失への許容度を定め、その要求を各層の設定と実機検証へ割り当てます。&lt;/p&gt;&#xA;&lt;h2 id=&#34;前提となる用語&#34;&gt;前提となる用語&lt;/h2&gt;&#xA;&lt;h3 id=&#34;tsn&#34;&gt;TSN&lt;/h3&gt;&#xA;&lt;p&gt;TSNは単一のプロトコルではなく、IEEE 802.1を中心とする標準群です。802.1ASはブリッジドネットワーク内の時刻同期、802.1Qbvは時間に基づくゲート制御によるスケジュール通信、802.1Qccはストリームの予約や構成を扱います。必要に応じてキュー制御やフレームプリエンプションも組み合わせます。&lt;/p&gt;&#xA;&lt;p&gt;TSNは主にEthernetのスイッチ、ブリッジ、NICなどのインフラ側で、共通時刻を使い、通信をどのタイミングでどのキューから送るかを制御します。&lt;/p&gt;&#xA;&lt;h3 id=&#34;dds&#34;&gt;DDS&lt;/h3&gt;&#xA;&lt;p&gt;DDSはデータ中心のpublish/subscribe型ミドルウェアです。Reliability、History、Deadline、LatencyBudget、LivelinessなどをQoSポリシーとして表現し、データの更新契約やミドルウェアの振る舞いを定義します。ROS 2のDDSベース通信でも、PublisherとSubscriberのQoS互換性が通信可否に影響します。&lt;/p&gt;&#xA;&lt;p&gt;一方、DDSのDeadlineやLatencyBudgetは、単独で物理ネットワークの帯域予約や802.1Qbvのゲート制御リストを設定するものではありません。DDSI-RTPSなどの転送はIP/Ethernet上で動作し、TSNはその下位のネットワークインフラとして位置づけます。&lt;/p&gt;&#xA;&lt;h3 id=&#34;専用制御ネットワーク&#34;&gt;専用制御ネットワーク&lt;/h3&gt;&#xA;&lt;p&gt;専用制御ネットワークはOSIの特定の一層ではなく、サーボ、モーション、I/Oの通信を他のトラフィックから分離するアーキテクチャ上の選択です。物理的に別ネットワークへ分ける方法、VLANやTSNトラフィッククラスで論理分離する方法、EtherCATのような専用フィールドネットワークを使う方法があります。&lt;/p&gt;&#xA;&lt;h2 id=&#34;内部の仕組みと構成&#34;&gt;内部の仕組みと構成&lt;/h2&gt;&#xA;&lt;p&gt;基本構成では、アプリケーションが扱うデータ型と通信契約をDDSに置き、DDSI-RTPSなどの転送をIP/Ethernet上で動かします。その下でTSNが共通時刻、送信スケジュール、ストリーム、キューを管理します。&lt;/p&gt;&#xA;&lt;p&gt;まず802.1ASなどでネットワーク内の共通時刻を整え、通信周期や送信ウィンドウに合わせてQbvのゲート制御を構成します。必要に応じてストリームの予約や構成も行います。スケジュールはスイッチだけで完結せず、TSNブリッジやエンドポイントの設定にも依存します。&lt;/p&gt;&#xA;&lt;p&gt;サーボ経路をDDSと同じ共有ネットワークへ載せる場合は、周期、帯域、最大フレーム長、キュー、優先度、再送や輻輳時の挙動を個別に予算化します。要求が厳しい場合は、専用フィールドネットワークか独立したTSNトラフィッククラスとして、DDSの輻輳や構成不整合の影響範囲を抑えます。&lt;/p&gt;&#xA;&lt;figure class=&#34;mermaid-figure&#34;&gt;&#xA;    &lt;pre class=&#34;mermaid&#34; role=&#34;img&#34; aria-label=&#34;DDSはデータモデルと通信契約、TSNはEthernet上の時刻同期と送信制御、専用制御ネットワークは厳しい周期・ジッター制約の制御経路を担当する。&#34;&gt;flowchart TB&#xA;  subgraph APP[&#34;ロボットアプリケーション&#34;]&#xA;    S[&#34;センサ・状態共有・監視・計画・診断&#34;]&#xA;    C[&#34;サーボ・モーション・I/O制御&#34;]&#xA;  end&#xA;&#xA;  subgraph DDSL[&#34;DDS通信層&#34;]&#xA;    DM[&#34;データモデルと通信契約&#34;]&#xA;    Q[&#34;QoS: Deadline・Reliability・History・LatencyBudget&#34;]&#xA;    RTPS[&#34;DDSI-RTPS&#34;]&#xA;  end&#xA;&#xA;  subgraph TSNL[&#34;TSN対応Ethernet層&#34;]&#xA;    TIME[&#34;802.1AS 共通時刻&#34;]&#xA;    SCHED[&#34;802.1Qbv スケジュール・ゲート&#34;]&#xA;    RES[&#34;ストリーム予約・キュー制御&#34;]&#xA;    NET[&#34;TSNブリッジ・スイッチ・NIC&#34;]&#xA;  end&#xA;&#xA;  subgraph FIELD[&#34;専用制御経路&#34;]&#xA;    FC[&#34;専用フィールドネットワーク&#34;]&#xA;    IO[&#34;サーボ・アクチュエータ・I/O&#34;]&#xA;  end&#xA;&#xA;  S --&gt; DM&#xA;  DM --&gt; Q&#xA;  Q --&gt; RTPS&#xA;  RTPS --&gt; NET&#xA;  TIME --&gt; NET&#xA;  SCHED --&gt; NET&#xA;  RES --&gt; NET&#xA;  NET --&gt; S&#xA;&#xA;  C --&gt; FC&#xA;  FC --&gt; IO&#xA;  FC -. &#34;状態・監視データを必要に応じて変換&#34; .-&gt; DM&#xA;&#xA;  NOTE[&#34;DDSのQoS設定だけでは、TSNの帯域予約やQbvゲート制御は自動的に決まらない&#34;]&#xA;  Q -.-&gt; NOTE&#xA;  NET -.-&gt; NOTE&lt;/pre&gt;&lt;figcaption&gt;DDSはデータモデルと通信契約、TSNはEthernet上の時刻同期と送信制御、専用制御ネットワークは厳しい周期・ジッター制約の制御経路を担当する。&lt;/figcaption&gt;&lt;/figure&gt;&lt;h2 id=&#34;選択肢の比較&#34;&gt;選択肢の比較&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;対象&lt;/th&gt;&#xA;          &lt;th&gt;主な役割&lt;/th&gt;&#xA;          &lt;th&gt;向いている通信&lt;/th&gt;&#xA;          &lt;th&gt;主な確認事項&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;DDS&lt;/td&gt;&#xA;          &lt;td&gt;データモデル、publish/subscribe、通信契約&lt;/td&gt;&#xA;          &lt;td&gt;状態共有、センサ、監視、計画、診断&lt;/td&gt;&#xA;          &lt;td&gt;QoS互換性、実装、再送や輻輳の挙動&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;DDSI-RTPS／IP/Ethernet&lt;/td&gt;&#xA;          &lt;td&gt;DDSデータのネットワーク転送&lt;/td&gt;&#xA;          &lt;td&gt;DDSトピックの配送&lt;/td&gt;&#xA;          &lt;td&gt;経路、最大フレーム長、下位ネットワークとの整合&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;TSN&lt;/td&gt;&#xA;          &lt;td&gt;時刻同期、送信スケジュール、帯域・キュー制御&lt;/td&gt;&#xA;          &lt;td&gt;周期性が必要な共有通信、独立した制御クラス&lt;/td&gt;&#xA;          &lt;td&gt;スイッチ・NIC対応、同期誤差、スケジュール&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;専用フィールドネットワーク&lt;/td&gt;&#xA;          &lt;td&gt;サーボ、モーション、I/Oの分離&lt;/td&gt;&#xA;          &lt;td&gt;厳しい周期・ジッター制約の制御ループ&lt;/td&gt;&#xA;          &lt;td&gt;ゲートウェイ、障害範囲、DDSとのデータ変換&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h2 id=&#34;使いどころと判断基準&#34;&gt;使いどころと判断基準&lt;/h2&gt;&#xA;&lt;p&gt;状態共有、監視、計画、診断のように、データ中心の接続性と柔軟な購読関係が重要な通信ではDDSが適しています。DDS over TSNを採用する場合は、Deadline、LatencyBudget、Reliabilityなどを、TSNの周期、ゲート、帯域、キュー、最大フレーム長へ具体的に割り当てます。QoS名を設定するだけでは、TSN側の予約やスケジュールは決まりません。&lt;/p&gt;</description>
    </item>
    <item>
      <title>ROS 2のQoS設計入門：センサー通信と制御通信の信頼性・遅延をどう両立するか</title>
      <link>https://physicalaihub.net/posts/ros2-qos-sensor-control-design/</link>
      <pubDate>Mon, 16 Mar 2026 00:29:08 +0900</pubDate>
      <guid>https://physicalaihub.net/posts/ros2-qos-sensor-control-design/</guid>
      <description>&lt;p&gt;QoSは設定項目が多く、通信できない原因と遅延の原因が同じ場所に見えやすい点が気になります。&lt;/p&gt;&#xA;&lt;h2 id=&#34;先に結論&#34;&gt;先に結論&lt;/h2&gt;&#xA;&lt;p&gt;ROS 2のQoSは、通信の種類ではなく「古いデータを待つべきか」「欠落を許せるか」「一定時間届かなければ停止すべきか」で決める。カメラ、LiDAR、IMUなどの高頻度センサーは、最新データを処理し続けることを優先し、まずは&lt;code&gt;SensorDataQoS&lt;/code&gt;（&lt;code&gt;KEEP_LAST&lt;/code&gt;、深度5、&lt;code&gt;BEST_EFFORT&lt;/code&gt;、&lt;code&gt;VOLATILE&lt;/code&gt;）を候補にする。一方、&lt;code&gt;cmd_vel&lt;/code&gt;のような制御指令は、受信側との互換性を確認したうえで、浅いキュー、&lt;code&gt;RELIABLE&lt;/code&gt;、&lt;code&gt;VOLATILE&lt;/code&gt;を出発点に検討する。ただし、再送による古い指令の到着を避けたい場合は、&lt;code&gt;BEST_EFFORT&lt;/code&gt;や短い&lt;code&gt;LIFESPAN&lt;/code&gt;の方が適することもある。&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;RELIABLE&lt;/code&gt;を設定するだけでハードリアルタイム性や安全性が得られるわけではない。&lt;code&gt;DEADLINE&lt;/code&gt;、&lt;code&gt;LIFESPAN&lt;/code&gt;、受信タイムアウト、ウォッチドッグを、アプリケーションやモーター制御側の停止処理へ接続して初めて、通信断や古い指令に対する動作を設計できる。&lt;/p&gt;&#xA;&lt;h2 id=&#34;なぜqosの使い分けが必要か&#34;&gt;なぜQoSの使い分けが必要か&lt;/h2&gt;&#xA;&lt;p&gt;ROS 2のQoSは、パブリッシャーとサブスクライバーという各通信エンドポイントに設定される。メッセージ型やトピック名が同じでも、両者のQoSが互換でなければ通信は成立しない。反対に、通信が成立しても、キューに古いデータを蓄積したり、再送を待ったりする設定では、ロボットの処理に必要な鮮度を失う可能性がある。&lt;/p&gt;&#xA;&lt;p&gt;センサーと制御指令では、失われたデータの意味が異なる。高頻度センサーでは、処理が追いつかないときに過去のフレームを順番に処理するより、最新フレームへ追従したい場合が多い。制御指令では、確実な配送が必要な場面がある一方、停止後の古い指令を遅れて適用することも避けなければならない。したがって、信頼性と低遅延を単純な優劣で比較するのではなく、データの有効時間と欠落の影響を基準にする。&lt;/p&gt;&#xA;&lt;h2 id=&#34;qosポリシーの基本用語&#34;&gt;QoSポリシーの基本用語&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;ポリシー&lt;/th&gt;&#xA;          &lt;th&gt;意味&lt;/th&gt;&#xA;          &lt;th&gt;設計時の問い&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;HISTORY&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;保存方式。&lt;code&gt;KEEP_LAST&lt;/code&gt;は直近の一定数を保持する&lt;/td&gt;&#xA;          &lt;td&gt;過去データをどれだけ残すか&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;DEPTH&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;KEEP_LAST&lt;/code&gt;で保存するサンプル数&lt;/td&gt;&#xA;          &lt;td&gt;処理遅延を許容して何件待つか&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;RELIABILITY&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;配送保証の方式。&lt;code&gt;RELIABLE&lt;/code&gt;は再送を含む保証、&lt;code&gt;BEST_EFFORT&lt;/code&gt;は届いたものを扱う&lt;/td&gt;&#xA;          &lt;td&gt;欠落と待ち時間のどちらを重く見るか&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;DURABILITY&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;新しく参加した受信者へ過去データを保持する方式&lt;/td&gt;&#xA;          &lt;td&gt;購読開始前の値が必要か&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;DEADLINE&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;データ到着間隔への期待値&lt;/td&gt;&#xA;          &lt;td&gt;周期が途切れたことを検知したいか&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;LIFESPAN&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;サンプルが有効でいられる期間&lt;/td&gt;&#xA;          &lt;td&gt;古いデータを破棄したいか&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;LIVELINESS&lt;/code&gt; / &lt;code&gt;LEASE_DURATION&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;送信者の生存確認に関する設定&lt;/td&gt;&#xA;          &lt;td&gt;送信ノードの停止を監視するか&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;p&gt;&lt;code&gt;VOLATILE&lt;/code&gt;は過去データを新規参加者へ引き渡す用途ではなく、現在流れているデータを扱う通信に向く。設定値は単独で意味を持つのではなく、送信周期、処理能力、ネットワーク条件と組み合わせて評価する。&lt;/p&gt;&#xA;&lt;h2 id=&#34;センサー通信の設計&#34;&gt;センサー通信の設計&lt;/h2&gt;&#xA;&lt;p&gt;Jazzyの&lt;code&gt;SensorDataQoS&lt;/code&gt;は、&lt;code&gt;KEEP_LAST&lt;/code&gt;、深度5、&lt;code&gt;BEST_EFFORT&lt;/code&gt;、&lt;code&gt;VOLATILE&lt;/code&gt;を基本値とする事前定義プロファイルである。カメラやLiDARのようにデータ量と頻度が大きい通信では、多少の欠落よりも処理の停滞や古いデータの蓄積を避けることが優先される場合がある。そのため、浅いキューと&lt;code&gt;BEST_EFFORT&lt;/code&gt;を出発点にし、処理が常に新しい入力へ追従できるかを確認する。&lt;/p&gt;&#xA;&lt;p&gt;ただし、すべてのセンサーに同じ設定を適用してよいわけではない。欠落が許されないセンサー入力や安全判断に使う低頻度データでは、&lt;code&gt;RELIABLE&lt;/code&gt;を個別に検討する。&lt;code&gt;DEPTH&lt;/code&gt;を大きくすれば一時的な処理遅延を吸収できる可能性があるが、古いサンプルを処理する時間も増える。実機や対象ネットワークを確認せず、深度の最適値を決めることはできない。&lt;/p&gt;&#xA;&lt;h2 id=&#34;制御通信の設計&#34;&gt;制御通信の設計&lt;/h2&gt;&#xA;&lt;p&gt;&lt;code&gt;cmd_vel&lt;/code&gt;には、ROS 2全体で強制された単一のQoS標準値はない。ドライバーやノードが選択したQoSに依存するため、トピック名だけから&lt;code&gt;RELIABLE&lt;/code&gt;や&lt;code&gt;BEST_EFFORT&lt;/code&gt;を推定してはいけない。&lt;/p&gt;&#xA;&lt;p&gt;初期案としては、&lt;code&gt;RELIABLE&lt;/code&gt;、&lt;code&gt;VOLATILE&lt;/code&gt;、&lt;code&gt;KEEP_LAST&lt;/code&gt;の深度1が考えられる。これは制御指令を確実に届けることと、キューに多数の古い指令を残さないことを両立させる方向である。ただし、通信損失時の再送で古い指令が遅れて届くことを避けたいシステムでは、&lt;code&gt;BEST_EFFORT&lt;/code&gt;や短い&lt;code&gt;LIFESPAN&lt;/code&gt;も候補になる。最終判断は、受信側の要求QoS、ネットワーク損失、指令の有効時間、モーターコントローラーのタイムアウト仕様を確認して行う。&lt;/p&gt;&#xA;&lt;figure class=&#34;mermaid-figure&#34;&gt;&#xA;    &lt;pre class=&#34;mermaid&#34; role=&#34;img&#34; aria-label=&#34;センサー通信では最新データへの追従を、制御通信ではQoS互換性、指令の有効期限、停止監視を重視する設計の流れを示す。図中の制御QoSは初期候補であり、単一の標準解を示すものではない。&#34;&gt;flowchart LR&#xA;  S[&#34;カメラ・LiDAR・IMUなどのセンサー入力&#34;] --&gt; SQ[&#34;SensorDataQoSの初期候補\nKEEP_LAST・深度5\nBEST_EFFORT・VOLATILE&#34;]&#xA;  SQ --&gt; SP[&#34;処理ノード\n最新データへ追従&#34;]&#xA;  SP --&gt; SF[&#34;センサー処理&#34;]&#xA;&#xA;  C[&#34;cmd_velなどの制御指令&#34;] --&gt; CQ[&#34;制御QoSの初期候補\nRELIABLE・VOLATILE\nKEEP_LAST・深度1&#34;]&#xA;  CQ --&gt; CM[&#34;受信側の要求QoSと互換性を確認&#34;]&#xA;  CM --&gt;|&#34;互換&#34;| CT[&#34;期限管理\n短いLIFESPANやDEADLINEを検討&#34;]&#xA;  CT --&gt; WD[&#34;受信タイムアウト・ウォッチドッグ\n停止処理へ接続&#34;]&#xA;  WD --&gt; A[&#34;アクチュエーター側の停止動作&#34;]&#xA;  CM --&gt;|&#34;非互換&#34;| X[&#34;通信経路が成立しない\nQoSを確認・調整&#34;]&#xA;&#xA;  R[&#34;要件に応じた再評価\n欠落・遅延・古いデータの影響&#34;] -.-&gt; SQ&#xA;  R -.-&gt; CQ&#xA;  CQ -.-&gt;|&#34;古い指令の到着を避けたい場合&#34;| BE[&#34;BEST_EFFORTや短いLIFESPANも候補&#34;]&#xA;  BE -.-&gt; CT&lt;/pre&gt;&lt;figcaption&gt;センサー通信では最新データへの追従を、制御通信ではQoS互換性、指令の有効期限、停止監視を重視する設計の流れを示す。図中の制御QoSは初期候補であり、単一の標準解を示すものではない。&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;図では、センサー経路を「最新データの継続処理」、制御経路を「指令の期限管理と停止監視」として分けると理解しやすい。QoS不一致の場合は、各種の遅延調整以前に通信経路そのものが成立しない。&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
