Up ROS 通信の構造 作成: 2026-08-23
更新: 2026-08-24

4足歩行ロボット自律型コンピュータソフトウェアROSROS 通信の構造

    以下,「[ROS2] DDS通信の仕組みを整理」 から引用:

  • ROS2 通信の内部構造
    レイヤ役割
    rclcpp / rclpyユーザが使う ROS 2 ノード・Publish/Subscribe API
    rcl (ROS 2 Client Library)言語差を吸収する C ベース共通インターフェース(C層)
    rmw (ROS Middleware Interface)DDS などのミドルウェアを隠蔽する抽象化レイヤ
    DDS ミドルウェアFast DDS / Cyclone DDS / Connext などの実際の通信エンジン
    UDP/TCP/IPOSのネットワーク通信



  • ROS2 で publish() が呼ばれたときの処理フロー
    1. rclcpp / rclpy(ユーザー層)
    ユーザーが,プログラムを C++やPythonで書いて実行する

    2. rcl(C層)
    rclcpp / rclpy層で使われる言語の差を吸収し、rmw へ橋渡しをする。
    C++でも Pythonでも ROS2を使用できるようにするための層。

    3. rmw
    DDS を直接叩かないための抽象化レイヤ

    4. DDS ミドルウェア
    rmw層で生成された出力を,ネットワーク層で送受信できる形式に変換し,ネットワーク層へ渡す。
    プロトコル:RTPS
      DDS : Data Distribution Service
      RTPS : Real-Time Publish Subscribe Protocol

    5. ネットワーク層(UDP / TCP)
    OS が最終的なデータ通信を担当する。


  • DDS (Data Distribution Service)
    ROS2 の分散型通信の心臓部。