Distributed robotic systems rely heavily on publish-subscribe frameworks, such as ROS, to efficiently implement modular computation graphs. The ROS 2 executor, a high-level task scheduler which handles messages internally, is a performance bottleneck. In previous work, we presented ros2_tracing, a framework with instrumentation and tools for real-time tracing of ROS 2. We now extend on that instrumentation and leverage the tracing tools to propose an analysis and visualization of the flow of messages across distributed ROS 2 systems. Our proposed method detects one-to-many and many-to-many causal links between input and output messages, including indirect causal links through simple user-level annotations. We validate our method on both synthetic and real robotic systems, and demonstrate its low runtime overhead. Moreover, the underlying intermediate execution representation database can be further leveraged to extract additional metrics and high-level results. This can provide valuable timing and scheduling information to further study and improve the ROS 2 executor as well as optimize any ROS 2 system. The source code is available at: https://github.com/christophebedard/ros2-message-flow-analysis.
翻译:分布式机器人系统严重依赖出版物订阅框架,如ROS, 以高效实施模块化计算图。 ROS 2 执行器是一个高层次的任务调度器,在内部处理信息,是一个绩效瓶颈。 在以往的工作中,我们提出了RO2_trace,这是一个带有实时跟踪ROS的工具和工具的框架。 我们现在扩展了该仪器,并利用追踪工具来提议对分布式ROS 2系统之间信息流的分析和可视化。 我们提议的方法检测输入和输出信息之间的一对一和多因果联系,包括通过简单的用户级别说明间接因果联系。我们验证了我们的合成和真实机器人系统方法,并展示了其低运行时间的间接费用。此外,还可以进一步利用基本的中间执行代表数据库来获取额外的计量和高层次结果。 这可以为进一步研究和改进ROS 2 执行器以及优化任何 ROS 2 系统提供宝贵的时间安排和时间安排信息。 源代码可以查到: https://github.com/christopherardardsalage 。