I use ardupilot for quadcopter drone flights, and I see a lot of uORB as well as DDS being used in the px4 project, if I want to use these protocols in ardupilot, where should I find the relevant code and the implementation of its functional tests
Hello,
DDS is mainly used with ROS 2 : ROS 1 / ROS 2 — Dev documentation . Our implementation is close to Micro XRCE-DDS | micro-ROS
ArduPilot don’t and will never support uORB that is PX4 only
If I want to do a simple test against DDS to make sure it works, DDS can be used as the underlying communication framework for messaging, and MAVLink is still responsible for the upper layer protocol, does that mean?
No, DDS does not sit below, nor above MAVLink.
DDS fully replaces MAVLink
Both PX4 and ArduPilot use XRCE DDS to provide the communication between the companion computer and flight controller. There are a number of differences in the implementation, but the main one from a user perspective is that PX4 exposes it’s internal message structure in the DDS messages, whereas in ArduPilot we, as far as possible, use standard ROS message types and conventions. So once the link is up, there is no need to convert types or understand ArduPilot internals.
Micro XRCE-DDS | What is the difference between micro-ROS and the two, I want to quickly implement custom dds messages and get verified, I am relatively unfamiliar with this part of the area, I see that the official use is micro-ROS, which is more convenient for me to use? Thank you for your reply
Micro XRCE-DDS | What is the difference between micro-ROS and the two, which is more convenient for me to use?
Micro-ros and xrce-dds use different protocols for communication between the companion computer and flight controller. We looked into both for ArduPilot, and it turns out that xrce-dds uses less flash and is easier to maintain. micro-ros requires a ros library be available for each target platform, for xrce-dds the necessary dependencies are generated on the fly and compiled using the toolchain appropriate for the target board.
In summary, if you wish to use ros2 with ArduPilot the only option supported is xrce-dds.
I would like to ask if you recommend the XRCE-DDS version, but the detailed information on the official website is Micro-ros, I would like to ask where I can get the details of XRCE-DDS, I tried to use XRCE-DDS according to the official website, but I find it difficult
There may be some confusion between the micro_ros_agent (which is a wrapper around a xrce_dds_agent) which runs on the companion computer, and the client library that runs on the flight controller. In the ArduPilot wiki docs the client is XRCE DDS and the agent running on the companion is the micro_ros_agent. The micro-ROS client is an entirely different thing, and not supported.