Design Guide: Common patterns in ROS 2¶
FastRTPS large data transfer¶
You want to transfer large data via FastRTPS.
DDS/RTPS uses UDP with a maximum message size of 64k
Configure the middleware that it fragements large data into messages
Use Asynchronous publication mode:
<publishMode> <kind>ASYNCHRONOUS</kind> </publishMode>
FastRTPS Best Effort Video Streaming¶
You want to transfer video streams and provide up to date data. It is ok to loose some packages.
Acknowledged data transmission mechanisms prevent from being able to provide up to date packages.
Use “best effort” communication (instead of the usual acknowledgement based mechanism) and prioritize the last frame.
- Configure “best effort” reliability mechanism
- Configure Quality of service history to keep last frame
<reliability> <kind>BEST_EFFORT</kind> </reliability> <historyQos> <kind>KEEP_LAST</kind> <depth>1</depth> </historyQos>
FastRTPS Reliable Video Streaming¶
You want to transfer video streams in unreliable network settings.
Use a reliable communication mechanism. Use fast response by writer and reader.
- Configure “reliable” reliability mechanism
- Configure NACK reponse delay and suppression duration of writer to 0
- Configure heartbeat response delay of reader to 0
<reliability> <kind>RELIABLE</kind> </reliability> # writer <times> <nackResponseDelay> <durationbyname>ZERO</durationbyname> </nackResponseDelay> <nackSupressionDuration> <durationbyname>ZERO</durationbyname> </nackSupressionDuration> </times> # reader <times> <heartbeatResponseDelay> <durationbyname>ZERO</durationbyname> </heartbeatResponseDelay> </times>