I’ve been struggling with FastDDS (on ROS2 Humble) in several ways - but the biggest issue has been discovery.
With my robot I have one launch file for the drivers, a second for localization, a third for navigation - all of them run on the robot computer. If I start them all up in series, things work - but then say I have to restart navigation to change a configuration - about 75% of the time, it fails to connect certain topics (especially tf seems to be an issue), and then I have to restart the drivers launch file - I will note that I think the issue is discovery since existing connections (e.g localization nodes to drivers) continue to function. Switching to CycloneDDS also makes the problem go away.
As I started to research solutions to this - everything seems to suggest the “solution” is the Discovery Server:
Is it really the case that one of the more touted “features” for ROS2, the lack of a single point of failure (rosmaster), doesn’t really work with larger systems and the default DDS?
Or is it that the out of the box configuration doesn’t work and I need to configure FastDDS in some particular way?
Looking for feedback/help here - since according to the Technical Evaluation Reports half of respondents say they like FastDDS over CycloneDDS - but I haven’t been able to get things to work well.
P.S. I know support is supposed to go towards answers.ros.org - but I feel like there is no “single answer” here - I’m really hoping this turns into a discussion of how people are actually getting FastDDS to work in larger systems.
P.P.S. If you are using the Discovery Server in a larger system because it is the right solution, I’d also be interested to hear that.