Skip to content

raghaprasad/ros2-performance

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Performances

iRobot ROS2 performance evaluation

For each ROS2 core concept, we developed several tests for evaluating its performances.

iRobot ROS2 Performance Evaluation Framework

For a whole system performance evaluation, we have developed benchmark applications

iRobot ROS2 Benchmark applications

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. Evaluations have been performed on standard x86_64 laptops as well as on embedded platforms.

If you want to repeat the experiments, eventually with different parameters, follow the Build Instructions.

Motivations

The goal is to develop a set of experiments which are easily reproducible and provide useful insights on the ROS2 performances. This allows to easily repeat them as soon as a new ROS2 distribution is released.

For each ROS2 distribution we aim to:

  • Test all the ROS2 features.
  • Find limits/bugs.
  • Perform regression tests with respect to the previous distribution.

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.

Creating ROS2 systems

We tested ROS2 on many different systems. In order to do that we implemented tools that allow users to easily create any number of nodes with the same characteristics as well as tools for manually crafting your own graph topology and measure its performances.

Cross-Compilation

This repository also contains some Docker-based tools for cross-compiling ROS2 SDK and single packages for RaspberryPi.

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

Experiments

Here you find links to the experiments for the most recent ROS2 distribution. Each README file contains a description of the experiment, instructions for reproducing it and the results obtained.

Experiment README
Benchmarking applications README.md
Discovery time README.md
Pub/Sub Latency README.md
Pub/Sub Reliability README.md
Pub/Sub Memory usage README.md
Pub/Sub CPU usage README.md
Client/Service systems README.md
Bouncy-Crystal regression test README.md

External tools an 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

About

Framework to evaluate peformance of ROS2

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 87.0%
  • Python 5.9%
  • Shell 4.6%
  • CMake 2.1%
  • Dockerfile 0.4%