Giter VIP home page Giter VIP logo

betab0t / ros2_benchmarking Goto Github PK

View Code? Open in Web Editor NEW

This project forked from piappl/ros2_benchmarking

0.0 1.0 0.0 277 KB

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 the use of Docker.

License: GNU Lesser General Public License v3.0

CMake 7.50% C++ 59.99% C 0.75% Gnuplot 1.33% Python 24.84% Shell 5.58%

ros2_benchmarking's Introduction

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

ros2_benchmarking's People

Contributors

captnlarson avatar ursereg avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.