How do you launch your systems?

At Magazino we use GitHub - magazino/systemd_ros: Systemd support for ROS to generate individual systemd services based on a launch file. Together with some patches of ros_comm (checkout the repo for documentation) we managed to get a clean and reliable way of launching our robots where all the typical log output is fed into systemd-journald.
We on purpose chose the generator approach here so that we can continue using roslaunch for development and also rely on roslaunch-check and all these helpful integrations that a developer likes to have. But for production we found roslaunch too limiting. A clear advantage of systemd is that it has so many knobs for tweaking the system (e.g. systemd.resource-control) or ways to declare relations between different services which roslaunch simply does not offer.

Coming back to the original question: similar to @cst0 we also have one top level launch file which takes arguments to condition which nodes or rather which subsystems are launched. Separating hardware related parts from general subsystems allows us to manage different generations of our hardware.

10 Likes