[This original ArduPilot board, now called the "Legacy ArduPilot" is no longer produced or officially supported by the DIY Drones dev team, and this page is maintained just for historic reasons. However, there are still many users of it out there and it still works fine. The user group for Legacy ArduPilot users, for both thermopile and IMU use, is here.]


ArduPilot is a full-featured autopilot based on the Arduino open-source hardware platform. It uses infrared (thermopile) sensors or an IMU for stabilization and GPS for navigation. It is the autopilot used to win the 2009 Sparkfun Autonomous Vehicle Competition.

The hardware is available from Sparkfun for $24.95. An expansion board ("Shield") kits that includes an airspeed sensor, a 3.3v power regulator for 3.3v GPS modules and other sensors and cables and connectors for easy attachment of the XY and Z sensors, is available from our own store for $57.20.


User f

ArduPilot features include:

  • Can be used for an autonomous aircraft, car or boat.
  • Built-in hardware failsafe that uses a separate circuit (multiplexer chip and ATTiny processor) to transfer control from the RC system to the autopilot and back again. Includes ability to reboot the main processor in mid-flight.
  • Multiple 3D waypoints (limited only by memory)
  • Altitude controlled with the elevator and throttle
  • Comes with a 6-pin GPS connector for the 4Hz uBlox5 or 1hz EM406 GPS modules.
  • Has six spare analog inputs (with ADC on each) and six spare digital input/outputs to add additional sensors
  • Supports addition of wireless modules for real-time telemetry
  • Based on a 16MhZ Atmega328 processor. Total onboard processing power aprox 24 MIPS.
  • Very small: 30mm x 47mm
  • Can be powered by either the RC receiver or a separate battery
  • Four RC-in channels (plus the autopilot on/off channel) can be processed by the autopilot. Autopilot can also control four channels out.
  • LEDs for power, failsafe (on/off), status and GPS (satellite lock).


ArduPilot requires the free Arduino IDE to edit and upload the code to the ArduPilot board.

The code is currently optimized for the Mutiplex EasyStar three-channel powered glider and FMA sensors, but can be modified for other aircraft and sensors. It uses the rudder/ailerons and elevator to maintain level flight and navigate to GPS waypoints. It supports a desktop setup utility and ground station software. It also includes a "fly-by-wire" mode that simply stabilizes RC flight. The main code is ArduPilot2.x.zip in the download section of our Google Code repository, where x is the latest version.

What you need to make a fully-functional autopilot:

Open source extras:

  • If you want to build your own board from scratch, the necessary files and component lists are here.
  • [Note: you shouldn't need this, since this code is loaded on the ArduPilot board at the factory] Latest multiplexer code (for the board's second processor, an Attiny, which runs the failsafe system) is here.
    Instructions for loading this code are here.

Recommended UAV setup:

Airframe option one: Hobbico SuperStar (49" wingspan, $95, shown above). This is an inexpensive, good flying high-wing trainer with ailerons. It can be hand launched in a park or take off from a runway, and replacement parts are readily available in case of a crash. If you want much better performance with this aircraft, you can upgrade it to a brushless motor, speed controller and a LiPo battery. [If you don't already have one, you'll also need a balancing charger and power supply.] Note: any stable aircraft with both ailerons (for stabilization) and rudder (for navigation) can work, so feel free to experiment with what you've got.

Airframe option two (recommended for ArduPilot 2.x): EasyStar (shown above). Performance can be improved with the modifications described in this post.

You'll also need:

  • A six or seven channel RC transmitter and receiver, with at least one toggle switch (ideally three-position but two-position will work, too, although you will have to mix channels to have access to both autopilot modes in the air), such as the Futaba 7C.
  • Some servos (at least three for ArduPilot 1.0; at least two for ArduPilot 2.x) and at least three female-to-female servo cables to connect the RC receiver to ArduPilot.

Cool optional extras for your UAV:

Views: 312182

Comment by Riccardo Kuebler on July 27, 2009 at 10:49pm
Yes, I am using a EM406 in sirf mode. The hardware is as recommended, configured standard, with the obvious changes for right servo direction.
Comment by Brent West on July 29, 2009 at 9:56pm
Hi Jordi,
Is there something in the Ardupilot software that I need to change to tell it that I’m using throttle to control pitch instead of the elevator?
It seams that while I’m in the ground testing mode that the throttle should go full power trying to get up to altitude (using a servo, not an ESC), but it just hangs out about the middle. I am using the throttle output from the receiver. I do have the XY&Z sensors in place.
I also have the shield and the EM406 GPS.
I’ve looked around in the easystar hex file, but didn’t see what it is that I should change.
I would appreciate any suggestions.

Comment by Jordi Muñoz on July 30, 2009 at 5:17pm
Yes everything is in the easystar header file:

AIr speed is for throttle and the elevator is elevator.

//Another PID gains for altitude and speed. Not used in V15
#define ALTITUDE_ERROR_MIN -10 //
#define ALTITUDE_ERROR_PITCH_PROPORTIONAL 1.5 //Altitude error proportional, pitch setpoint
#define ALTITUDE_ERROR_PITCH_MAX 0 //Limits, EasyStar climb by itself, you don't need to up the elevator (you may stall)...
#define AIRSPEED_CENTRAL 22 //Airspeed central point in meters/second, normal flight... This value must the the airspeed that make your plane flight stedy.
Comment by Peter Meister on July 30, 2009 at 7:24pm
Ok, the move of that was weird Jordi. All the history is on the old pointer....It will be hard for anyone to track the progress if you archive the old one...

Comment by Jordi Muñoz on July 30, 2009 at 7:40pm
Sorry since the beginning the conversation was wrong. You don't suppose to post over there, Chris mention he created this to start from scratch for new versions and believe me nobody will read the whole comments over the other page, are a lot.
Comment by fefenin on July 31, 2009 at 2:53am

sorry i am very confused (maybe lost!) with this move... and sorry for your brain disorder :)

thank you Jordi anyway for the answer on the FLY BY WIRE thing i don't particulary like it but i'd like to make my version works with all functions that you made!

i really would like to find this ghost in the latest version ,and i'm sure it is nothing very important but...

and I did read all the posts over there!! and there are a lot but it is very informative (not everything i agree)

Comment by Bryan Cuervo on July 31, 2009 at 5:18am
Chris and Jordi,
We are your field testers/quality control guys and are a valuable resource to this great project. This fracture of information from the Home page just makes it more difficult to diagnose and solve the current issues with Ardupilot. Maybe we can compromise and you can transfer the last seven pages from the Home page to this page to maintain the continuity of information (including the code downloads).

Comment by Thomas J Coyle III on July 31, 2009 at 8:04am

I agree with Bryan that the disconnect you have created between the two pages will definitely hinder progress in developing a stable Ardupilot system with the installed user base. I like Bryan's suggestion of moving at least the last 7 pages to this page to help maintain the continuity of the troubleshooting process.

Just a thought.


3D Robotics
Comment by Chris Anderson on July 31, 2009 at 8:12am
There's no good way to transfer comments from one thread to another, but for future reference the old thread is here.

It was at 765 comments, almost all of which were out of date and misleading (referred to old versions and long-solved bugs). We need to start again with a thread that began with Version 2.2, which is what this one is. The old thread will still show up in search, but won't confuse newcomers so much anymore.
Comment by Riccardo Kuebler on July 31, 2009 at 9:37am
I don't understand how and where to set voltage divider right value.
I use 2lipo for engine and about 5,1V (I have to measure it more exactly) from esc to feed the electronics.
The ground station don't show any voltage.


You need to be a member of DIY Drones to add comments!

Join DIY Drones

Season Two of the Trust Time Trial (T3) Contest 
A list of all T3 contests is here. The current round, the Vertical Horizontal one, is here

© 2020   Created by Chris Anderson.   Powered by

Badges  |  Report an Issue  |  Terms of Service