3D Robotics

ArduPlane home page




Convert any RC airplane into a fully-autonomous UAV!
Just add the APM 2 autopilot to any RC aircraft and it becomes a fully-programmable flying robot with a powerful ground station and Mission Planner.  


Features include:

  • Return to Launch with a flick of your RC toggle switch or a mouse click in the graphical Ground Station
  • Unlimited 3D GPS waypoints
  • Built-in camera control
  • Fully-scriptable missions
  • One-click software load, and easy point-and-click configuration in the powerful Mission Planner. NO programming required!
  • Replay recorded missions and analyze all the data with a graphing interface
  • Supports two-way telemetry with Xbee wireless modules. 
  • Point-and-click waypoint entry or real-time mission commands while the UAV is in the air
  • Fly with a joystick or gamepad via your PC--no need for RC control!
  • Built-in failsafe will bring your aircraft home in the case of radio loss


All instructions and software are here.






APM 2 is an open source, Arduino-compatible, pro-quality autopilot. It is the most advanced IMU-based open source autopilot available today, and provides an entire UAV control system with scriptable missions with 3D waypoints, in-flight uploading of commands and powerful ground station software. 


APM 2 supports any kind of of vehicle with a one-click change of code. Available code include ArduPlane (fixed wing), ArduCopter (rotary wing), ArduRover (ground vehicles) and more.


Everything you need to create an ArduPlane UAV:


APM 2.5 autopilot with GPS ($179)

[Optional] Telemetry kit ($75).



You'll also need a at least a five-channel RC radio setup, a soldering iron, a mini USB cable and of course something that flies!3689354440?profile=original (We're partial to the SkyFun delta wing (right) and
Bixlee 2   powered glider (left) or its equivalents ourselves).






Source code/firmware

Note: ArduPilot Mega requires no programming, but it's open source and you're welcome to modify it if you'd like. If you are going to play with the code, you can use the free Arduino IDE to edit and upload the code to the ArduPilot board.



E-mail me when people leave their comments –

You need to be a member of diydrones to add comments!

Join diydrones


  • Uh oh,
    I was just reprogramming and doing some basic testing when I noticed if I unplugged the usb cable, nothing would work. I got digging and discovered that my oil pan was only getting about 1.0 V! I pulled off the oil pan and noticed that the pwr led is off! The mux led is the only one that is on.
    Did I magically fry my board? Any ideas?

    I wasn’t poking any wires around or anything that could have shorted it as far as I remember. Just reprogramming and doing some tests.
  • Developer
    Please file issues on the GoogleCode page for any problems you run into with the setup CLI, or if you have more suggestions for what it should be able to do.
  • Thanks for your help Michael. I created my own APM_config.h using the example as a guide, but I was concerned that the control limits were no longer specified in this file. Now I know why.
  • Developer
    @dean - note that APM_config.h is not actually supplied. There's an example version but you need to supply your own.

    Stick wiggling is now handled by the new interactive setup mode. After you have compiled and uploaded the code, slide the switch on the IMU to the 0 position and start the Arduino console. Make sure you have the console line endings set to "Carriage Return". Use the 'setup' command to visit the setup menu, and be sure to use the 'factoryreset' command at least once to get your EEPROM updated.
  • I updated the two week old code that I have been using from the svn today and noticed that APM_config.h is now supplied as an example file and has been cleaned up substantially (nice!). However, the example file does not seem to contain the commands for setting control limits. Is this an oversight, or will users be required to wiggle sticks on startup to define the limits? Thanks!
  • 3D Robotics
    Please use the latest code from the svn and report issues in the google code issue tracker.or wait for the public beta in a week
  • I am installing my hardware in a SkyFun Jet and I can't seem to get the mixing to work in stabilize mode. I can set the switches on the board so that my control inputs move the surfaces correctly, but then the autopilot inputs to the control surfaces are incorrect. Or, I can set the switches so that the autopilot moves the surfaces correctly in response to an upset, but then my inputs from the transmitter are incorrect. In manual mode everything is fine. Any suggestions?
  • I'm really embarrassed. I forgot all about the switches.. Sorry for the wasted bits.

  • Developer
    APM can't tell which way your servos are connected. This is explained in the manual here:

  • I seem to be having an issue with the elevator. It seems like the elevator is reversed, when I point the model down, the elevator goes down, and when I point the model up the elevator goes up. This is opposite of what I would expect. Does anyone have any thoughts on this?
This reply was deleted.