Cyphal vs DDS/DDS-XRCE


I’ve seen “Cyphal is like DDS” mentioned several times. I originally thought DDS was all IP based, but now I’m seeing that some DDS implementations have ventured into the micro-controllers world (DDS-XRCE, micro-ROS) and the CAN transport.

Are there any write-ups that compare the two tech stacks? The ecosystem seems quite “fragmented” making figuring out which way to go…

Any insight would be much appreciated,

PS: here’s an interesting video for anyone having the same doubts:

Got some experience with custom FDCAN transport and MicroROS. My setup was raspberry pi4 as agent holder and STM32G4 as client. Here is my conclusions:

  1. Couldn’t manage to work it with multiple clients to one agent. Got continuous unpredictable seg.faults on agent’s side.
  2. Even small scalar ROS message like UInt16 has pretty long Can frame length. Complex msg types like JointStates which are basicaly just 3 floats + timestamp could be up to 3 full CANFD frames in size.
  3. Nevertheless I’ve manage to get up to 1kHz with single client to agent connection inside Ros2 topic.
  4. Still has the feeling that I has no control over msg at the agent side and its quite uncomfortable)).
  5. Shifted to Cyphal recently feels a bit more confident.

Thanks for sharing that Roman.