A C++ framework for simulating and measuring ROS 2 system performance, tracking latency, reliability, CPU, and memory usage.
irobot-ros/ros2-performance is an open-source framework for evaluating the performance of ROS 2 systems. It simulates arbitrary ROS 2 topologies and measures key metrics like latency, reliability, CPU usage, and memory usage to help developers understand and optimize communication overhead. The framework is built in C++ with minimal dependencies, making it suitable for embedded and real-time robotic applications.
ROS 2 developers, roboticists, and embedded systems engineers who need to profile and optimize the communication performance of their ROS 2 applications, particularly for resource-constrained or real-time environments.
Developers choose this framework for its lightweight, dependency-minimal C++ core that is easy to cross-compile for embedded platforms, its flexible topology definition via JSON or CLI, and its focus on measuring ROS 2 communication overhead rather than application logic.
Framework to evaluate peformance of ROS 2
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Built entirely in C++ with no external dependencies beyond ROS 2 libraries, as stated in the README, making it easy to compile and ideal for embedded platforms.
Allows system topologies to be defined at runtime using JSON files or command-line options, enabling flexible testing scenarios without code changes.
Measures latency, reliability, CPU usage, and memory usage, providing a holistic view of ROS 2 communication performance for optimization.
Minimal dependencies and integration with iRobot's cross-compilation framework, as mentioned in the README, support resource-constrained environments.
The README admits that not all metrics are available for multi-process applications, restricting its effectiveness for distributed systems evaluation.
Nodes under test don't perform computation, so it only measures communication overhead, missing application logic performance aspects.
Build and runtime depend on ROS 2 rolling, which may be less stable or incompatible with long-term support versions, limiting adoption in production.