Publish a telemetry stream
Open one track per topic andwrite raw CDR. Delivery is best-effort by
default. This is good 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 the
network cannot drop a stop or a goal.
Subscribe to a robot’s telemetry from the cloud
The callback receives the raw CDR and the wire type name. Check the type name before you decode.Have the robot receive commands
On the robot (or the on-robot bridge), subscribe to the command track. Apply each message to the local actuator stack.Pick the right QoS lane
Use reliable for data that must arrive: commands, maps, goals. Use best-effort for high-rate sensors, where low latency is more important than completeness.Latch a value for late subscribers
transient_local makes the relay retain the last group(s). A dashboard that
connects later immediately gets the current value. This behavior is the same
as a latched / retained message.
Override priority per message
The QoS reliability sets a default send priority. Override it on a singlewrite to move an urgent frame ahead of the queue (0 highest, 255
lowest).
Demux across languages
The type-name prefix lets 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 can hold many subscriptions. They all use the single QUIC session.Subscribe to many robots from one process
Construct one client per robot. Each client opens its own session and namespace.Bridge a local ROS 2 topic onto the mesh
Subscribe to the local graph. Forward raw CDR to a telemetry track. The Python example below usesrclpy serialization:
Bridge a command back onto the local graph
This is the other direction: subscribe to the MoQT command track and re-publish onto local DDS. Check the type name so the bridge drops messages with schema drift and does not mis-decode them.Tune the late-join window
depth limits how many recent groups the relay holds for a late subscriber.
Set it to match your ROS 2 keep-last history.
Shut down cleanly
Close publications and subscriptions, then close the client. This closes the QUIC session.Related
- SDK Methods — full signatures.
- Recipes — end-to-end examples.

