My group has been researching mechanisms to analyse and manage variability in ROS systems. Variability can show up in many forms - e.g., launching with sensor X or sensor Y, enabling/disabling certain nodes based on arguments or use cases, etc.
Typically, people use launch files to start their systems, but this is not always the case, and it is not always done in the same way. My question is: how do you launch your systems?
Some examples I have seen:
- Multiple launch files in separate terminals.
- A single launch file per use-case (e.g., with map M1, with map M2, with joystick, etc.), with all parameters hard coded.
- A single, top-level, generic launch file, that includes others and launches nodes conditionally (
unless), where command-line arguments define the extra features you want.
- A mix of
rosrun, possibly grouped under a command-line script.
So, how do you do it? How do you configure variable components and parameters?
I am interested in all answers, both ROS and ROS2.