[Documentation] [TitleIndex] [WordIndex


This package contains the implementation corresponding to the following publications:

Abstract— In this paper, we describe a system that enables a low-cost quadrocopter coupled with a ground-based laptop to navigate autonomously in previously unknown and GPS- denied environments. Our system consists of three components: a monocular SLAM system, an extended Kalman filter for data fusion and state estimation and a PID controller to generate steering commands. Next to a working system, the main contribution of this paper is a novel, closed-form solution to estimate the absolute scale of the generated visual map from inertial and altitude measurements. In an extensive set of experiments, we demonstrate that our system is able to navigate in previously unknown environments at absolute scale without requiring artificial markers or external sensors. Furthermore, we show (1) its robustness to temporary loss of visual tracking and significant delays in the communication process, (2) the elimination of odometry drift as a result of the visual SLAM system and (3) accurate, scale-aware pose estimation and navigation.

This is a video of the AR.Drone 1.0 flying autonomously, using this package:

The code works for both the AR.Drone 1.0 and 2.0, the default-parameters however are optimized for the AR.Drone 2.0 by now. You can find more details on my research on my website.

This Package builds on the well known monocular SLAM framework PTAM presented by Klein & Murray in their paper at ISMAR07. Please study the original PTAM website and the corresponding paper for more information on this part of the software. Also, be aware of the license that comes with it.




1. Install the ardrone_autonomy package: At the moment there are some minor changes to this package required, the easiest way is to check it out from this repository, which contains a slightly older, but well-tested and already modified version. To do this, run:

# cd into ros root dir

# clone repository
git clone git://github.com/tum-vision/ardrone_autonomy.git ardrone_autonomy

# add to ros path (if required)
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:`pwd`/ardrone_autonomy

# build SDK (might require your confirmation to install some system libraries)
cd ardrone_autonomy

# build package

2. Install tum_ardrone package:

# cd into ros root dir

# clone repository
git clone git://github.com/tum-vision/tum_ardrone.git tum_ardrone

# add to ros path (if required)
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:`pwd`/tum_ardrone

# build package (may take up to 10 minutes)
rosmake tum_ardrone

Make shure, you have the correct branch of tum_ardrone for your ROS version (fuerte / hydro/groovy)


# run driver
rosrun ardrone_autonomy ardrone_driver

# run stateestimation node
rosrun tum_ardrone drone_stateestimation

# run autopilot node
rosrun tum_ardrone drone_autopilot

# run gui node
rosrun tum_ardrone drone_gui


Manual Keyboard control

Manual Joystick control

assuming a plugged-in PS3 six-axis controller, with set rights.



Drone does not start

Cannot control drone

Drone flies unstable using the autopilot

drone_stateestimation: PTAM initialization fails: "IMU Baseline smaller than 5cm, try again: XXX"

drone_stateestimation: XXXs between two consecutive navinfos. This system requires Navinfo at 200Hz...

Drone broken


Known Bugs & Issues


The major part of this software package - that is everything except PTAM - is licensed under the GNU General Public License Version 3 (GPLv3), see http://www.gnu.org/licenses/gpl.html. PTAM (comprised of all files in /src/stateestimation/PTAM) has it's own licence, see http://www.robots.ox.ac.uk/~gk/PTAM/download.html. This licence in particular prohibits commercial use of the software.

2024-07-13 14:39