/ros2-performance

Framework to evaluate peformance of ROS2

Primary LanguageC++BSD 3-Clause "New" or "Revised" LicenseBSD-3-Clause

Performances

iRobot ROS2 performance evaluation framework

ROS2 Performance Framework

We developed a framework that allows to easily create arbitrary ROS2 systems and then measures their performance. With this framework you can define your system at runtime using json files or with command line options.

These are the main metrics that we are interested in:

  • Latency
  • Reliability
  • CPU usage
  • Memory usage

Due to our specific application scenario and to the new ROS2 multithread capabilities, we made most of the evaluations running all nodes in a single process. However, our frameworks also support having multiple processes running at the same time.

The goal is to develop a set of experiments which are easily reproducible and provide useful insights on the ROS2 performances. Moreover, it is possible to create proxy applications that mimic a real, complex, system and to measure what's the overhead of ROS2 communication in such a context.

We can easily repeat our tests with different ROS2 distributions or middlewares. For each ROS2 distribution we aim to:

Early results are suggesting us that this is the correct way to go, as we are spotting the strengths and weaknesses of ROS2 and helping the ROS2 community to grow, by signaling and fixing bugs to the ROS2 core implementation. Running our application also allowed to find regressions with respect to the previous releases.

Proposals

Proposals

This directory contains the design proposals that we made to improve the ROS2 core and its performances.

Cross-Compilation

Cross-Compilation

This repository also contains a Docker-based cross-compilation framework for cross-compiling the whole ROS2 SDK or single packages for the RaspberryPi. This framework was designed to be easily extended to new architectures.

You can find detailed instructions in the cross-compiling directory.

External tools and resources

Apex AI ROS2 Evaluation tool

ApexAI provides an alternative valid performance evaluation framework, which allows to test different type of messages. Our implementation is inspired by their work.

Other evaluation tools

DDS Vendors advertised performance

Performances discussions

Papers