Skip to content
BOARR : A Benchmark for quadrotors Obstacle Avoidance using ROS and RotorS
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.

The Quadrotor Avoidance Benchmark

This package main purpose is to test and compare the multiple existing avoidance algorithm for quadrotors with the hope that comparing the results could help choosing promising directions for future developments on autonomous obstacle avoidance.

How does it work ?

The avoidance benchmark consist mainly of a quadrotor simulator, multiple custom created worlds, a benchmark manager and some scripts to compute the benchmark indicators. It is based on Ros Kinetic & Gazebo 7.0.0. The simulator is RotorS from the ETHZ which is the most common multirotor model in ROS. On the 01/04/2016, it is possible to use the main branch from the ETHZ project available here. It will probably be possible to use this main branch in the future. In case there are some major modifications that break the compability between their project and mine. A fork of RotorS from the 01/04/2019 is available here. Worlds are created through a custom world plugin that has been created specifically for this purpose. This plugin generates GAZEBO forests of 6700m2. The density of the forest is a parameter during its creation which allow some diversity in the test environments. The chosen environment is a forest since it is in the literature the most common environment to test avoidance algorithms for quadrotors. The benchmark manager send the coordinates where the drone should go and log informations in order to output logical indicators to characterize the tests. Finally, the scripts allow the use of the package in a few simple operations for simplicity.


This ReadMe will only focus on how to install and use the demonstrator of the package.

Most of the documentation is available in the 'doc' directory. There you can find informations on :

  • how to use your own avoidance algorithm during the tests
  • how to compute the avoidance indicators for your own algorithm
  • how to use the world creation plugin
  • the current TODO list and some other minor doc files.


Feel free to use this package at your convenience but please cite if you do so. If your usage include the RotorS simulator, please cite the ETHZ for their simulator :

author="Furrer, Fadri
and Burri, Michael
and Achtelik, Markus
and Siegwart, Roland",
editor="Koubaa, Anis",
chapter="RotorS---A Modular Gazebo MAV Simulator Framework",
title="Robot Operating System (ROS): The Complete Reference (Volume 1)",
publisher="Springer International Publishing",

Install the benchmark and use the demonstrator

If you already are a ROS user AND have the RotorS simulator :

  1. Clone the repo into the src folder of a standard ros workspace
$ cd (your_catkin_ws_path)/src/
$ git clone
  1. Compile your workspace using catkin_make
  2. Add a path to your GAZEBO_MODEL_PATH and you GAZEBO_PLUGIN_PATH :
$ export GAZEBO_PLUGIN_PATH=(Your avoidance_benchmark path)/worlds/worlds_creation_plugin/build:$GAZEBO_PLUGIN_PATH
$ export GAZEBO_MODEL_PATH=(Your avoidance_benchmark path)/worlds/models:$HOME/.gazebo/models:$GAZEBO_MODEL_PATH

For convenience, you should add it to your ~/.bashrc

  1. Start one of the two example algorithm :
$ cd (your avoidance_benchmark path)/scripts


$ ./dummy_noisy_benchmark


$ ./dummy_perfect_benchmark

If you don't have the RotorS simulator package but if you are not new ros user

  1. Install rotors and its dependencies following their instructions Please be careful to create a new specific workspace since they chose to use the new "catkin build" from catkin_tools over the more classical catkin_make that is commonly used with ROS.

  2. source it and add the source in your bash rc:

$ source ~/catkin_ws/devel/setup.bash
$ echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc
  1. Go to the previous chapter to install and use the avoidance benchmark.

If you are a new ROS user :

  1. Install ROS, RotorS and all their dependencies following the ETHZ instructions

  2. Since RotorS uses a new build tool among the catkin_tools over the more classical one that is used by most ROS package, we will need to create a new workspace in which we will use the older build tool :

$ mkdir -p ~/catkin_make_ws/src
  1. Clone the package into the workspace
$ cd ~/catkin_make_ws/src/
$ git clone
  1. Compile the package using catkin_make :
$ cd ..
$ catkin_make
  1. Start one of the two example algorithm :
$ cd ~/catkin_make_ws/src/avoidance_benchmark/scripts


$ ./dummy_noisy_benchmark


$ ./dummy_perfect_benchmark


In your ~/.ros directory, a new benchmark_results directory has been created. Each time you use a script, a directory with the date and hour of launch will be created. Inside, you will always find a default_summary file. This file saves the value of the computed indicators of each flight. When doing hundreds of simulated flights, it is then the parsed file to compute the global indicators. Depending on the script you used, a default_image.jpg and a default_video.avi will also be created. They allow you to witness precisely what happen during your attempt. Those files are created during the demonstrator script.

You can’t perform that action at this time.