Ingo Lütkebohle (Bosch Corporate Research)
ROS’s foundational style, the asynchronous, loosely coupled compute graph, is great for re-use and distribution, but there’s a catch: Nothing guarantees execution ordering. This means, the order in which callbacks and timers are executed can change even when inputs are the same. In many important cases, this leads to different results, and – subtly or not so subtly – changes the robot’s behavior. As an example, in the common move_base node, we found reaction times changing between 50 and 200ms, while pure computation time was only 20ms. I will show why this happens, and how to address it, both in the move_base and in general.