[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: 311268

Comment by Jordi Muñoz on August 1, 2009 at 2:27pm
Well i can leave NMEA but i will not support it any more. What i mean is if you have any problem with that particular protocol it will not have full costumer support.
Comment by fefenin on August 1, 2009 at 2:35pm
i'm ok with that Jordi!
you can even delete it if we can copy and past it from an other version

the current bug is in binarie mode as well as NMEA for me it might be a setup thing i don't understand but ... i doubt

used binary mode before i crashed and the plane was going north east again
the arrows are not overlapping the plane is going in the wrong direction but display the right distance and bearing on ground station
i'll rebuild it and do some more trial on that!

Comment by Jordi Muñoz on August 1, 2009 at 3:12pm

Ok i just want to know that, thanks... If the bearing is correct that aircraft should go to the bearing, that's weird. I'm really concerned about all this...
Comment by fefenin on August 1, 2009 at 3:44pm
i never doubt you were!!

thank's for you precious help!
again you don't have to take that in high priority, we will be patient and try to find the problem by ourselves if you are not on it right now


Comment by Jordi Muñoz on August 1, 2009 at 3:53pm
My priority is have a stable version of ardupilot and i can't continue if you have problems.
Any chances to try uBlox? Just to see if also is causing the same problem... So maybe is not the GPS protocol is something else. Because the GPS only reads and parse the data and put it in the same variables, after that the system read that variables and calculate the navigation data, but the navigation result is displayed in the ground station, so is correct too.. Maybe is something inside the stabilization function.. NOT navigation.
Comment by fefenin on August 1, 2009 at 3:59pm
i'm waiting to buy a uBlox but there is no stock at sparkfun,
if somone wants to sell me one !!

i'm pretty sur that the roll set point is wrong, i'll try to see by debuging when the variable is corrupted

going to bed... 1 "o" clock here!

Comment by Brent West on August 1, 2009 at 4:09pm
I lied sort of, for the very first time after I went back to 2.2.2, I got wonderful results.
Within a square acre, I was able to walk and see it hit my first waypoint and then guide me to the next and then to the next. I was so excided that it really can work. By walking, it can work!
But then, when I went and put other waypoints in, it was back to the same o’ thing.
There is no consistency on how you can reset the system, lock in on that “first” waypoint, and then go to the next.
I know that the hardware and the XYZ sensors are working or at least, I can move my test bed and see my guidance system is responding in the correct direction, it’s so cool!
When I begin that first cold start of the GPS, is when I experience the best results. After that, nothing works right. Most of the time it just tells me that it wants to go off to the South/East, How far???.
I think that there is something in the software that won’t allow us to reset it all back to the beginning, every time!! I don’t know? Is it just me???
As always, I get to read some of the post before I place my comment and then there is Fefenin
Sorry about that Fefenin, probably one of the funniest experiences I’ve read so fare.
Comment by Peter Meister on August 1, 2009 at 6:47pm

I am using EM406 in binary mode, running SIRF protocol. Per manual. Let me know...

The ground arrows on the compass are there, I have checked them before. They show different directions reflective of the waypoint vs. current flight path. Also remember, I have expanded the GCS in labview, so I can actually watch in realtime to serial data coming down, just like you. The telemetry actively reflects the proper information including proper distance and course to waypoint. But the plane goes opposite north-east and away from waypoint. Distance increases - plane is not navigating to waypoint at all. As I indicated in many many threads before, I have done extensive flight tests, over 30 flights in the past 2 weeks. This behavior is consistent over and over again. I will wait to see what others encounter, beyond the ones already posting similar problems. I will hold on future use until I see successful flights. Its a great project jordi, and I commend you. I look forward to seeing some successful flights and setups posted by people who have had success with 2.2.3....


Comment by David Low on August 1, 2009 at 8:18pm
I would like to show my test flight on ardupilot 2.2.3
but any idea how to record it to a .kmz (showing the flight path)?
right now, I am using the labview ground station, it is only showing the current position with altitude, speed and etc :(

Comment by Jordi Muñoz on August 1, 2009 at 8:20pm
David, what protocol are you using? Binary Protocol, NMEA or uBlox?



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

Join DIY Drones

© 2019   Created by Chris Anderson.   Powered by

Badges  |  Report an Issue  |  Terms of Service