Distributed robotic systems rely heavily on the publish-subscribe communication paradigm and middleware frameworks that support it, 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 Excutor2 以及优化任何 ROS 2 系统提供宝贵的时间安排和时间安排信息。 源代码可以在 https://github.com/christopheard-straction2.