Publish a telemetry stream
Open one track per topic andwrite raw CDR. Best-effort by default — perfect
for high-rate pose / odometry where the freshest sample wins.
Send a teleop command
Commands go cloud → robot onrobot/<id>/ctl. Use the reliable lane so a stop
or a goal can’t be dropped.
Subscribe to a robot’s telemetry from the cloud
The callback receives the raw CDR and the wire type name. Guard on the type name before decoding.Have the robot receive commands
On the robot (or the on-robot bridge), subscribe the command track and apply each message to the local actuator stack.Pick the right QoS lane
Reliable for things that must arrive (commands, maps, goals); best-effort for high-rate sensors where latency beats completeness.Latch a value for late subscribers
transient_local makes the relay retain the last group(s), so a dashboard that
connects later immediately gets the current value — like a latched / retained
message.
Override priority per message
The QoS reliability sets a default send priority; override it on a singlewrite to push an urgent frame ahead of the queue (0 highest, 255 lowest).
Demux across languages
The type-name prefix means a Python publisher and a TypeScript subscriber agree with no schema registry. Publish from Python:("nav_msgs/msg/Odometry", cdr)
unchanged.
Fan multiple topics into one dashboard
One client, many subscriptions — they all ride the single QUIC session.Subscribe to many robots from one process
Construct one client per robot; each opens its own session and namespace.Bridge a local ROS 2 topic onto the mesh
Subscribe the local graph, forward raw CDR to a telemetry track. Below in Python withrclpy serialization:
Bridge a command back onto the local graph
The other direction: subscribe the MoQT command track, re-publish onto local DDS. Guard on type name so schema drift is dropped, not mis-decoded.Tune the late-join window
depth caps how many recent groups the relay holds for a late subscriber —
mirror your ROS 2 keep-last history.
Shut down cleanly
Close publications and subscriptions, then the client — this tears down the QUIC session.Related
- SDK Methods — full signatures.
- Recipes — end-to-end examples.

