Distributed robotic systems rely heavily on publish-subscribe frameworks such as the Robot Operating System (ROS) to efficiently implement modular computation graphs. The ROS 2 executor, a high-level task scheduler which handles ROS 2 messages, is a performance bottleneck. We extend ros2_tracing, a framework with instrumentation and tools for real-time tracing of ROS 2, with the analysis and visualization of the flow of messages across distributed ROS 2 systems. Our 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 执行器是一个高级任务调度器,处理ROS 2 信息,是一个性能瓶颈。 我们扩展了ROS2_trace,这是一个带有仪器和工具的框架,用于实时跟踪ROS 2, 分析和直观分布式ROS 2系统的信息流。 我们的方法检测了输入和输出信息之间的一对一和多至多因果联系,包括通过简单的用户级说明间接因果联系。 我们在合成和真实机器人系统上验证了我们的方法,并展示了其低运行时间的间接费用。 此外,还可以进一步利用基本的中间执行代表器数据库来提取额外的计量和高水平结果。 这可以为进一步研究和改进ROS 2 执行器以及优化任何 ROS 2 系统提供宝贵的时间安排和时间安排信息。 源代码见 https://github.com/christopheard/ros2-mesageage-prollassialy。