Parrot AR.Drone Quadcopter

Company Website
Company Dev Website

Getting Started

The Drone is designed to be flown using the AR.FreeFlight application for iPhone or Android. This app allows the user to fly the Drone using virtual joy sticks and displays the video feed from the camera that is mounted on the front of the Drone.

Interfacing with the Drone

The official ARDrone SDK - Includes example code to run under Windows, Linux, iOS, and Android. Also includes complete API which can be used with other methods of interface below. Developed by Parrot.

C# .NET ARDrone API - Uses the official ARDrone SDK. Allows the Drone to be controlled with a DirectX supported joystick, the keyboard, or a Wiimote. Developed by Stephen Hobley, Thomas Endres, and Julien Vinel.

ARDrone AutoPylot - Uses the official ARDrone SDK. Implements auto pilot control through source code written in Python. Uses the OpenCV library to track objects and obstacles as seen in these . Requires Linux. Developed at the Science Center at Washington & Lee University by Professors Joshua Stough and Simon D. Levy.

Urbi 4 ARDrone - Urbiis an open source robotics platform. This method erases the factory firmware of the Drone and replaces it with the Urbi API. Developed by Jean Charles Mamman (French).

ARDrone Library for Processing - Uses an unofficial Java based SDK. Allows the Drone to be controlled through source code written in Processing. Features flying controls, sensor data (altitude, pitch, roll, yaw, battery percentage and velocity), video streaming, primitive object detection, and control through the Xbox Kinect (with additional library). The Processing IDE and syntax is very similar to that of the Arduino and it is extremely easy to integrate serial com between the two. This interface is the easiest to implement and can run on Windows, OS X, or Linux. Developed by Shigeo Yoshida.

Connecting to the Drone to a Computer

The Drone has onboard WiFi in order to connect to a computer. For OSX the Drone should appear under WiFi devices while in Windows it should appear as an unsecured network.

Using the Processing Libraries

This library only supports ARDrone firmware 1.6.6 or lower. In order to downgrade your Drone you can use the following instructions from the ARDrone website. All previous firmware versions of the Drone can be downloaded from the ARDrone Flyers Wiki. If you are using OS X to downgrade the Drone, you will also need a FTP client application such as FileZilla in order to send the firmware to the Drone. Once you have downgraded, you will not be able to fly the Drone with the iPhone or Android application unless you upgrade to the current firmware again.

Once you download the library and sample sketchs for Processing, you must follow the instructions below in order to run the sample or your own code.
  1. From Processing go to Sketch --> Add File...
  2. Navigate to the downloaded folder --> ARDroneForP5 --> library --> ARDroneForP5.jar
  3. This .jar file will be added to a folder named "code" in the folder that your Processing sketch is saved in
  4. Now you can run your code

Detecting markers

Using the NyAR4psg(Japanese) library for Processing, a unique marker can be tracked through either camera on the Drone ("belly" or front facing). With this library, a virtual cube can be overlaid on the unique marker that is displayed through the video feed. The x-y coordinates of the cube can be obtained and therefore the location of the marker within the video feed can be approximated. Example code using this method can be found here. This code finds the marker and uses the ARDrone library for Processing to send the flying commands to the Drone until the marker is centered on the video feed.
Video coming soon.

Video Demonstration


Autopilot Landing - Drone takes off from a platform on an R/C car, uses its "belly" camera to track and hover above the platform, and then lands back onto the platform.

Ball tracking- Uses the AutoPylot python library described above. Drone follows a green ball using its front facing camera. Similar approach is used in this
obstacle avoiding example.

Advanced ball tracking - Uses the Urbi 4 ARDrone described above. Drone follows a red ball and a GUI is written using Gostai Lab to display the ball location, set the velocity of the Drone as well as take off and landing.

Autonomous avoiding- Drone avoids another Drone that is placed near it using Vicon motion capture system. Developed at NASA Langley Research Center.