uXRCE-DDS is the middleware that connects PX4’s internal uORB message bus to the DDS global data space used by ROS 2. It splits the work between a lightweight client that runs inside PX4 firmware and a agent that runs on your companion computer. When both are running and connected, uORB topics become live ROS 2 topics that any node in your network can publish or subscribe to.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/PX4/PX4-Autopilot/llms.txt
Use this file to discover all available pages before exploring further.
Architecture
The client and agent communicate over a serial or UDP link and exchange messages in both directions:- Client — compiled into PX4 firmware at build time via code generation. It translates uORB messages to CDR-serialized DDS messages and vice versa. The set of topics it handles is defined in
dds_topics.yaml. - Agent — runs on the companion computer. It acts as a proxy, forwarding messages between the client and the broader DDS network where your ROS 2 nodes live. The agent has no dependency on PX4 source code and can be installed independently.
Installing the agent
Install the Micro XRCE-DDS Agent on your companion computer. Build from source at thev2.4.3 tag:
Starting the agent and client
Run the agent on the companion computer first, then start the client on the PX4 side.- UDP (SITL / network)
- Serial (hardware)
On the companion computer (or host machine for SITL):On the PX4 shell (MAVLink console or For SITL, the client starts automatically with the simulator. You only need to launch the agent manually.
nsh):The uXRCE-DDS client is built into PX4 firmware by default but does not start automatically on hardware. You must start it explicitly via the PX4 shell or by adding the start command to your
rc.local startup script.Topic naming convention
All bridged topics follow a predictable naming scheme:| Direction | Pattern | Example |
|---|---|---|
| PX4 → ROS 2 | /fmu/out/<MessageName> | /fmu/out/VehicleOdometry |
| ROS 2 → PX4 | /fmu/in/<MessageName> | /fmu/in/OffboardControlMode |
Configuring bridged topics (dds_topics.yaml)
The set of uORB topics exposed over DDS is controlled by the file src/modules/uxrce_dds_client/dds_topics.yaml in the PX4 source tree. Each entry specifies the topic name, message type, and direction.