2 ms·
Reminds me a lot of the Tactical Microgrid Standard (aka TMS aka MIL-STD-3071) [1], probably just because TMS uses DDS as well. I would really like to know if t
by alhirzel 16d ago
Reminds me a lot of the Tactical Microgrid Standard (aka TMS aka MIL-STD-3071) [1], probably just because TMS uses DDS as well. I would really like to know if there is a protocol that functions like DDS but caters to real-time guarantees and prioritizes (at a "simple protocol" level) usability on embedded systems with no dynamic memory allocation. It would also need to be just-as-functional with non-real-time systems. One problem with DDS is that it is too heavy-handed to implement well on an embedded system.
[1] https://battery.army.mil/system-integrator-hub/tms/ https://battery.army.mil/system-integrator-hub/tms/
- p_l 16d agoPretty sure there are DDS implementations that provide most of that, maybe with memory pools instead of no-allocations. Other than that, PX4 uses an in-memory only pub/sub for internal data bus, somewhat inspired by DDS
- alhirzel 16d agoI should have also mentioned that my appetite also includes not being locked into one vendor's software stack. For instance, there are nice offerings from Eprosima [1] and Twin Oaks [2] that do this, but they seem to be "outstanding in their field" and would be difficult to replace if a need to do so developed. In the case of Eprosima's offerings, they also make some architectural assumptions that are difficult to maintain for some applications (such as having a paired Linux device with each embedded device acting as a translator). But yes - there absolutely are solutions already. I guess I was just lamenting that they weren't really functionally accessible for all applications. [1] https://micro-xrce-dds.docs.eprosima.com/en/latest/ https://micro-xrce-dds.docs.eprosima.com/en/latest/ [2] https://www.twinoakscomputing.com/ https://www.twinoakscomputing.com/
- cpgxiii 16d agoThere's a range of DDS implementations, definitely a number that are compatible with embedded and spaceflight applications that don't require dynamic memory allocations. You're going to take a hit on some DDS features, but then again you aren't going to need to handle a large queue of large dynamically-sized messages on some small embedded platform. I think it's rarely the right choice - most of the hardware I've seen that uses embedded DDS probably should have used plain old UDP instead and then whatever client was running on beefier hardware then handled the translation into DDS - but there are shipping products that use embedded DDS.
- matthewmacleod 16d agoZenoh (https://zenoh.io/ https://zenoh.io/) is a good alternative to DDS in many cases - it scales down to microcontrollers with most features still intact, but scales up to a routed hybrid mesh if needed. It does move the schema enforcement out of the middleware layer, so it’s a bit different. But it’s now a first-class alternative middleware implementation for ROS2 as an alternative to DDS.
- alhirzel 16d agoWow - thanks for pointing this out! I will be looking into it.
- BoorishBears 16d agoTIL there are people using DDS for non-realtime