Lossy networks, such as the typical wifi with low intensity or congestion problems can be a real headache. In Foxy, we optimized Fast DDS/ROS 2 default discovery and we also developed the ROS 2 Discovery Server to speed up the discovery process in this kind of networks for large scale systems.
But Galactic is coming, and we are already working on several features very useful for lossy networks:
Network Statistics: The Fast DDS/ROS 2 nodes will be able to publish statistics about the health of the network: Msgs/bytes received, Msgs/bytes lost, ACKs, NACKs, etc.
Smart Flow Controller: Fast DDS/ROS 2 allows you to use DDS Flow Controllers to control how to use the available bandwidth. Rather than sending the data immediately, the publisher sends asynchronously the messages using the policy described by the flow controller avoiding bursts of messages and making a better use of the network. For example, you could limit the amount of bytes to send per second. ROS 2 uses by default asynchronous publishing, allowing this feature.
Using the network statistics feature described before, Fast DDS will incorporate the concept of "smart” flow controllers, adapting the sending rate to the network conditions, reacting automatically to temporal loss of signal, low intensity or congestion. Nice, right?
Network Health GUI: A cool Graphical tool to display and analyze the network statistics.
We are starting and there is room to add requirements and ideas. Let me know your thoughts.
PD: For a description of Sync vs Async modes in ROS 2, see this post.