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


  • Developer

    You have not set your Arduino Sketchbook location correctly. If you are using the Sketchbook checked out, or from the zipfile, you must tell Arduino where it is.

    We ship a complete Sketchbook because we want you to have all the libraries together and up to date, and it's hard to be sure of this if you have to manually copy them around by yourself.
  • By the way, I am using "Verify/Compile" under "Sketch" instead of attempting to compile and load the code to the hardware using the upload button. I would guess that this doesn't make any difference, but perhaps I am wrong.

    It looks to me like the compiler can't find any of the files that are in the seperate library folder. The Libraries folder is in the same folder as the ArduPilotMega folder, but it is not obvious to me how the IDE would know to associate these libraries.
  • Chris and Michael. Thanks for trying to help me out, you guys are great. As for Chris' suggestion, I double checkend and made sure that I did only remove the first two slashes. It looks like the code is not finding all the libraries. I am getting a huge list of "No such file or directory" for files such as FastSerial.h and AP_Common.h. The last time I had a similar problem, I discovered that my Arduino IDE was out of date. So, just to be sure, I upraded v 19 to v 21 today. Of course, files such as AP_Common.h are part of of the Ardupilot code, not the IDE, so I didn't think that the IDE was the problem this time. Perhaps I need to dump the contents from the Library folder into the Ardupilot folder?
  • Developer
    Dean, what line number? i.e. where is this error being reported?
  • 3D Robotics
    Dean, you were only supposed to remove the slashes before the #, not before the comments at the end.

    We're trying to make this clear to non-programmers, but maybe it's still a little confusing? Maybe I'll spell it out a bit more, like this:

    //#define GPS_PROTOCOL GPS_PROTOCOL_MTK // You must uncommment this line by removing the slashes in front of the # and select either the default (GPS_PROTOCOL_MTK) or one of the following other supported GPS modules if you're using one of them instead
  • I just tried to compile the new public beta release of the code and I am getting an "expected constructor, destructor or type conversion before '(' token" compile error. It appears that it might have someting to do with the GPS receiver selection, despite the fact that I uncommented the necessary line in APM_Config.h
  • Pretty sure it wasn't soldering errors as everything was working for quite some time. As I got thinking about it, my servo output died about the same time, and I found I had fried my MUX. Might have something to do with it. When I get a new MUX in I'll see if I can take the jumper out.
  • If you have one proportional channel on your transmitter left, you can use it as flight mode selector. I just modified a 6-pos rotary switch with some resistors and replaced one of the slider.

  • James, did you make errors in soldering? See the Sparkfun website with the soldering tutorials.
  • Figured it out. I’ll explain in case anybody else has these problems. Somehow the servo connector pins were no longer connected to the main ground plane. So I just added in a jumper from one of the servo ground pins to the input power pin ground (since it was close by).
This reply was deleted.