Recipe 1 — On-robot ROS 2 bridge
Run this bridge beside a robot’s ROS 2 graph. It forwards local telemetry topics onto the mesh as raw CDR. It applies cloud commands back onto the local graph. Local nodes never learn that the relay exists. They publish and subscribe their topics as usual. This process is the off-box transport.1
Connect for this robot
Use one
Robotics client per robot. The robotId builds both
namespaces.2
Forward telemetry up
Subscribe to local
/odom and /battery_state. Send each message’s raw
CDR to a robot/<id> telemetry track. Use reliable for odometry and
best-effort for battery.3
Apply commands down
Subscribe to the
robot/<id>/ctl command track. Re-publish cmd_vel
onto the local DDS. Check the wire type name so the bridge drops messages
with schema drift.If the robot uses Zenoh natively, remove the
rclpy parts and connect over
Zenoh-over-QUIC. The MoQT side is identical, because both paths use the same
namespaces and the same type-name-prefixed frame.Recipe 2 — Cloud teleop console
This is a browser console that drives one robot and renders its live pose. Telemetry comes up best-effort, because latency wins. The drive command goes down reliable, so the network cannot drop a stop. The same QUIC session carries both directions.Recipe 3 — Fleet telemetry collector
This is a headless cloud worker. It subscribes to battery and odometry across a whole fleet and writes them to your time-series store. Use oneRobotics client per robot. Every client multiplexes its tracks over its
own QUIC session. The relay mesh fans out the tracks.
Mixed-transport fan-in
The collector above does not care how each robot reached the mesh. A robot on the ROS 2 (CDR) path, one on Zenoh-over-QUIC, and a constrained sensor on MQTT 3.1.1 all publish the same type-name-prefixed frame ontorobot/<id>. A single subscribeTelemetry handler ingests all three with no
special case for the source.
Related
- Details — wire model, lanes, transports.
- SDK Methods — full signatures.
- Cookbook — short task snippets.

