uxrce_dds: support multi-instance uORB topics#26305
Conversation
e12ad30 to
7e8de5e
Compare
🔎 FLASH Analysispx4_fmu-v5x [Total VM Diff: 128 byte (0.01 %)]px4_fmu-v6x [Total VM Diff: 128 byte (0.01 %)]Updated: 2026-03-03T12:58:09 |
|
@beniaminopozzan Will this need docs, and if so can you work with @haumarco to make them happen? |
|
@hamishwillee sure! @haumarco why did the non-uxrcedds changes have been added to this PR? shall it go back to draft? |
7e8de5e to
4b97c61
Compare
|
@beniaminopozzan I also removed the non-uxrcedds changes from this PR as you flagged. |
4b97c61 to
2dadc4f
Compare
bd64bfa to
4b4d1fe
Compare
beniaminopozzan
left a comment
There was a problem hiding this comment.
Thanks @haumarco , a couple of notes on my side.
On top of those, could you also update the documentation, please?
Let me know if I can help
c71cf54 to
5eaa7bd
Compare
|
No broken links found in changed files. |
|
@haumarco I've fixed a bunch of ROS2 typos. It was faster than multiple change suggestions :) |
beniaminopozzan
left a comment
There was a problem hiding this comment.
Looking good to me!
@haumarco just a note on badge format
Signed-off-by: Beniamino Pozzan <beniamino.pozzan@gmail.com>
6eea2f4 to
fc80de3
Compare
|
@beniaminopozzan I applied the final change and rebased on latest main to get rid of "missing new line" CI-failure |
|
@haumarco @beniaminopozzan FYI only, I had a discussion about For v1.18 we are allowed to assume the next release will be v1.18, so you can use the second form. I plan on removing all the "planned for" now. The following release may well be a major update, so we won't be able to make this assumption going forward - hopefully we will know by the time 1.18 branches though> This should make things a little easier. |
|
@beniaminopozzan I just now stumbled across this change in the following commit: 74a0054 was this an intentional change or did you test it with this? |
This PR is part of the split up of #26151
Note: This PR was force-pushed with a completely reworked approach. The original version mapped N separate DDS topics (with suffix naming like
_A,_B,_C,_D) to N uORB instances. The new approach uses a single DDS topic and demultiplexes to multi-instance uORB at runtime based on a message field. This is simpler (one DDS reader instead of N), requires no naming conventions on the DDS side, and handles dynamic source assignment.Solved Problem
The DDS bridge could only map single-instance uORB topics to DDS topics. This prevented external systems from publishing multiple instances of the same message type (e.g., multiple positioning sources) through DDS.
Solution
Add a
subscriptions_demuxcategory indds_topics.yamlthat receives a single DDS topic and demultiplexes it to multi-instance uORB publications based on a message field.How it works:
/fmu/in/aux_global_position) carries messages from multiple sourcesroute_field(e.g.,id) in the message is used to distinguish sourcesDirectly used as:
Changelog Entry
For release notes:
Test coverage
Tested with
aux_global_positiontopic configured for 4 instances with routing byidfield.Additional Notes
This is a prerequisite for multi-instance AGP fusion in EKF2. The same pattern can be extended to other multi-instance topics.