/cmd_vel, an /image_raw,
and so on. The UGV driver avoids this by scoping its entire ROS 2 graph under
a per-robot namespace derived from the twin UUID:
ugv_beast_ prefix is required because a raw UUID is not a valid ROS 2
name (it contains - and may start with a digit); the prefix guarantees a valid
leading letter.
Both the hardware nodes and the MQTT bridge use the same namespace, so topics
stay connected. MQTT topics are unaffected — they remain keyed by the full
twin UUID (cyberwave/twin/{twin_uuid}/...).
- Single robot / dev: with no twin UUID the namespace is empty and topics are
global (
/cmd_vel,/image_raw, …). - Override: set
CYBERWAVE_ROS_NAMESPACEto a valid ROS 2 name to force a specific namespace for both the hardware nodes and the bridge.