Micro XRCE-DDS
Configuring Micro XRCE-DDS on Skynode
Micro XRCE-DDS allows uORB topics on the FMU to be published in ROS 2 in AuterionOS.
Micro XRCE-DDS is supported in APX4 3.0 and later. It is enabled and configured by default.
Setting up Micro XRCE-DDS on an existing Auterion-powered vehicle is only possible for the manufacturer of that vehicle.
The DDS bridge comprises two components:
The Micro XRCE-DDS Agent, which is installed and enabled by default in AuterionOS, and
The Micro XRCE-DDS Client, which must be enabled in the flight controller.
Enabling the Micro XRCE-DDS Client
The PX4 module Micro XRCE-DDS Client is called uxrce_dds_client
and is configured by a set of PX4 parameters:
PX4 Parameter | Value |
---|---|
| Ethernet |
|
|
| The IPv4 address of the Skynode in int32 format. For example, the default parameter value |
Reboot the device after making these changes in order for them to apply.
After rebooting APX4, verify in the MAVLink Shell that the Micro XRCE-DDS Client is running and connected:
A script is provided in APX4 to convert IPv4 addresses from decimal dot notation to int32
format. The script is also available upstream: https://github.com/PX4/PX4-Autopilot/blob/main/Tools/convert_ip.py
The FMU must have Ethernet enabled and an IPv4 address in the same subnet as the Skynode to use Micro XRCE-DDS.
Adding or removing topics
The list of topics the FMU publishes and subscribes to using Micro XRCE-DDS is defined in src/modules/uxrce_dds_client/dds_topics.yaml.
The dds_topics.yaml file has three sections:
publications
: Topics published to ROS 2,subscriptions
: Topics subscribed to from ROS 2, andsubscriptions_multi
: Topics subscribed to from ROS 2 for which a separate instance of the uORB topic is created for the incoming ROS 2 messages.
To add a topic to Micro XRCE-DDS, specify the topic name and message type under the appropriate section. For example, the following creates a publisher for the vehicle_odometry
topic:
Testing communication between APX4 and ROS 2
To verify that your APX4 to ROS 2 communication is working and that you are receiving messages from the flight controller, run the following command in your Skynode's SSH shell. You should see the frequency at which the messages are coming through.
Last updated