Compare
MOS4 vs ROS2
ROS2 is a robotics middleware. MOS4 hosts your existing rclcpp and rclpy nodes unmodified inside a supervised container, bridges DDS topics to the typed EventBus, and adds fleet OTA, vehicle protocol stacks, and observability around them.
Integration paths
Bridge or sidecar — nodes unchanged either way.
Two integration flows. Flow A: mos-ros2 bridge micro service joins the customer DDS graph as an RTPS peer, discovers topics, and relays them as EventBus protobuf events to MOS4 components. Flow B: MOS4 supervisor manages a ROS2 sidecar container hosting rclcpp and rclpy nodes without any MOS SDK dependency, communicating with the MOS4 bus over MQTT loopback.
flowchart TB
subgraph A["Flow A — bridge (mos-ros2 as RTPS peer)"]
R1[rclcpp / rclpy node] -->|DDS topic| Br[mos-ros2 bridge micro service] -->|EventBus protobuf| Mc[MOS4 component]
end
subgraph B["Flow B — sidecar (nodes unmodified)"]
Sup[MOS4 supervisor] --> Side[ROS2 sidecar container]
Side --> R2[rclcpp node 1]
Side --> R3[rclpy node 2]
Side <-->|MQTT loopback| Bus[MOS4 bus]
end Side-by-side
Capability comparison.
Source — ROS2 from docs.ros.org; MOS4 from /architecture.
Sensor mappings
Canonical MOS4 ↔ ROS2 mappings.
The mappings/mos-ros2-canonical.yaml registry enforces the mapping contract at build
time via the mos-ros2-mapping CLI. A coverage-matrix CI gate blocks merges that reduce
mapping coverage.
| MOS4 EventBus event | ROS2 topic | ROS2 type |
|---|---|---|
| mos.events.gnss.Fix | /sensors/gnss/fix | sensor_msgs/NavSatFix |
| mos.events.imu.Raw | /sensors/imu/raw | sensor_msgs/Imu |
| mos.events.vslam.Pose | /sensors/vslam/pose | geometry_msgs/PoseStamped |
ROS2 Jazzy LTS (supported to 2029) is the validated distro. Cyclone DDS and Fast DDS peers tested.
FAQ
The questions we hear most.
-
Can I keep my existing ROS2 nodes?
Yes — that is the design. Flow B (sidecar): the MOS4 supervisor runs a sidecar container hosting rclcpp/rclpy nodes without any MOS SDK dependency or recompile. Flow A (bridge): the mos-ros2 micro service joins the customer DDS graph as a standard RTPS peer and relays topics as EventBus events and service methods. Customer node code changes: zero.
-
Why not just use ROS2 on a lightweight Linux platform?
ROS2 is a robotics middleware, not an embedded operating system. It does not provide a fleet OTA path, vehicle protocol stacks, observability bundle, or component lifecycle supervisor at the OS level. MOS4 provides those primitives and hosts ROS2 nodes inside.
-
Is the bridge a bottleneck?
It is a per-topic translation step within the standard component IPC budget. For tight inner loops, the canonical pattern is to keep them inside the ROS2 sidecar. Only cross-domain topics traverse the bridge.
-
What DDS QoS policies are supported?
BEST_EFFORT and RELIABLE reliability policies are supported. Four named profiles — sensor_data, pose_estimate, actuation_cmd, latched_config — are configurable per mapping entry and cover the most common robotics patterns. Full QoS matrix available on request.
-
Does MOS4 ship its own DDS implementation?
No for the sidecar path. The sidecar uses the standard ROS2 DDS layer — Cyclone DDS or Fast DDS. For the bridge (Flow A), the mos-ros2 micro service uses iceoryx2 DDS in full via mos-frame — rustdds-based, no r2r or rcl FFI, no libstdc++.
-
When does ROS2-only beat MOS4 + ROS2?
When the programme is a single-vehicle research prototype with no fleet, no vehicle bus integration beyond a CAN driver, and no OTA requirement. Programmes shipping to a device fleet in production typically benefit from the MOS4 layer around the nodes.
-
Is this qualified for AGV or mobile robot deployments?
mos-ros2 is gamma-ready. Running rclcpp/rclpy unmodified inside MCM is the validated sidecar pattern. For AGV and robotics production qualification, talk to engineering.
Bring your ROS2 stack.
A 30-minute call with engineering. We will plan the bridge or sidecar path for your nodes and discuss AGV or robotics qualification.