Skip to content

The project aims to provide a framework for ROS2 benchmarking. ROS2 communication characteristics can be evaluated on several axes, quickly and in an automated way. The project also serves to compare ROS2 to ROS1 and to pure implementations of DDS such as OpenSplice and others (for measuring ROS2 overhead). It is easy to setup and run thanks to …

License

Notifications You must be signed in to change notification settings

piappl/ros2_benchmarking

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

88 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ROS2 Evaluation

Introduction

The project provides a benchmarking environment and nodes implementation for testing and evaluation of ROS2, also with comparison to ROS1 and OpenSplice DDS implementation.

The ROS2 evaluation is a part of PIAP tasks in R5-Cop project (http://r5-cop.eu/en/). We aim to create an independent assessment of the current ROS2 state in terms of whether it looks promising, shows some gains on ROS1 already, whether it will be worth migrating to anytime soon, etc.

The project has additional value of providing an example implementation of a simple communication layer based on ROS2 (there is some architecture to it that might fit into some applications, not just a simple main.cpp stuff). The ros2node library might be an useful tool to anyone wanting to implement ROS2 for their robotic applications.

Installation

Install dependencies:

    # Ubuntu 16.04
    sudo apt-get install python3-docker docker.io tcpdump gnuplot

    # Ubuntu 14.04
    sudo sh -c "wget -qO- https://get.docker.io/gpg | apt-key add -"
    sudo sh -c "echo deb http://get.docker.io/ubuntu docker main > /etc/apt/sources.list.d/docker.list"
    sudo apt-get update
    sudo apt-get install python3-pip lxc-docker tcpdump gnuplot
    sudo pip3 install docker-py==1.7.2

    # Arch
    pacman -S python-docker-py docker tcpdump gnuplot

Add your user to the docker group (you need to log out and log in)

   sudo usermod -a -G docker $USER

Install RTI Connext DDS (optional)

You need to obtain a license from RTI and get libraries from https://www.rti.com/. After installation copy the license file to the home directory (e.g. ~/rti_connext_dds-5.2.3) and then copy the home directory to the comm/rti_connext_dds directory, e.g.:

    cp rti_license.dat ~/rti_connext_dds-5.2.3
    cp -R ~/rti_connext_dds-5.2.3 ~/ros2_benchmarking/comm/rti_connext_dds

Build containers:

    # If you have RTI Connext DDS
    ./python/run.py --build-all

    # Otherwise
    ./python/run.py --build ros1:base ros1:node ros2:base ros2:opensplice ros2:fastrtps opensplice:base opensplice:node

Get more help on running tests:

    ./python/run.py --help

Sample output

Lost packets for RobotAlarm message

Lost packets for RobotControl message

Lost packets for RobotSensor message

Latency for RobotAlarm message

Latency for RobotControl message

Latency for RobotSensor message

Authors

The authors of the project are @adamdbrw, @haueck and @ursereg.

Roadmap

  • Standardize and generate messages between node implementations.
  • Add node for FastRTPS
  • For higher packet drop rates, manipulate hearbeat parameter and make sure connection is negotiated before measuring

About

The project aims to provide a framework for ROS2 benchmarking. ROS2 communication characteristics can be evaluated on several axes, quickly and in an automated way. The project also serves to compare ROS2 to ROS1 and to pure implementations of DDS such as OpenSplice and others (for measuring ROS2 overhead). It is easy to setup and run thanks to …

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published