5 ms·
It is wild to me that there's this whole huge message-bus/rpc system Data Distribution Service (DDS) that so much of thr computing industry else has never heard
by rektide 3y ago
It is wild to me that there's this whole huge message-bus/rpc system Data Distribution Service (DDS) that so much of thr computing industry else has never heard of, but which is totally core to ROS. https://en.wikipedia.org/wiki/Data_Distribution_Service https://en.wikipedia.org/wiki/Data_Distribution_Service
It does have some real further mindshare. I noticed GM/Eclipse Foundation's new uProtocol has support for it. https://hn.algolia.com/?query=Uprotocol&sort=byDate&type=story https://hn.algolia.com/?query=Uprotocol&sort=byDate&type=sto...
- anonymousDan 3y agoInteresting. Does it define a wire protocol or is the interface implicit to the client library.
- elcritch 3y agoBoth, sorta. There’s a serialization format, and the wire message format with QoS on top of UDP. The message format seems similar to MQTT semantics, but with a few extras. I think the wire format is fixed, but it’s pretty simple. The serialization layer (CDR) is swappable, but mostly all the same, though one of the most popular implementations uses a slightly non-standard FastCDR. Though from my testing it produces the same bytes and the CDR spec was updated. Maybe they match now. I wish there was a better implementers guide. DDS might be a decent alternative to MQTT for more generic embedded if so.
- rektide 3y agoThe wireshark wiki has a surprisingly good write up on the underlying RTPS protocol: > The Real-Time Publish-Subscribe (RTPS) Wire Protocol provides two main communication models: the publish-subscribe protocol, which transfers data from publishers to subscribers; and the Composite State Transfer (CST) protocol, which transfers state. https://wiki.wireshark.org/Protocols/rtps https://wiki.wireshark.org/Protocols/rtps ROS docs talk quite a lot a out various vendor implementations of RTPS middleware. But little docs on the protocol. Did a little search but haven't found many truly great in depth resources. OpenDDS seems to be the main impl I've stumbled across. Descend docs. https://opendds.readthedocs.io/en/latest-release/devguide/introduction.html#data-centric-publish-subscribe-dcps-overview https://opendds.readthedocs.io/en/latest-release/devguide/in...
- rektide 3y ago(This post wasn't to say there are great implementers resources! I searched for a while for more specific implementation or Wireshark-centric things, to really explain what was what. Would absolutely adore more technical coverage!)
- elcritch 3y ago> message-bus/rpc system Data Distribution Service (DDS) that so much of thr computing industry else has never heard of, but which is totally core to ROS. From my understanding ROS2 chose it because it had decent mindshare in automotive and some other industrial fields. The core data serialization isn’t too terrible. I’ve been working toward writing an embedded version in Nim. The spec is simpler than it seems. The biggest downside to ROS2 is the multiple layers of abstraction combined with a bespoke meta-build system. To be fair, it’s still simpler than diving into the grpc c++ library IMHO.