jgoppert edited this page Jun 18, 2012 · 34 revisions

This in an arduino based autopilot system that can pilot airplanes, quad rotors, boats, and ground vehicles.

It is being developed at the Purdue Flight Dynamics & Control / Hybrid Systems Lab: hsl.dynalias.com

ArduPilotOne is the underlying library employed for all the vehicles. Preconfigured gain files are provided for common vehicles in each category. The main sketch can be easily modified to allow a variety of sensor choices. Based on these sensors, advanced control and navigation modules can be developed that can be shared between vehicles or be unique to a given vehicle. The object-oriented design makes swapping control/ sensor/ navigation modules simple.


It started as an object oriented (C++) branch of ArduPilotMega. It provides an abstraction layer between the different modules of the autopilot so that they can be shared among different vehicle types. After several discussions, we on the development team choose not to use it as a base for ArduPlane and ArduCopter. Think of it more as ArduPilotMega++ if you like. It still uses all the core ArduPilotMega libraries.


Currently ArduPilotOne supports: rover(full autopilot), quad (manual flight), boat(full autopilot, not yet tested), plane(full autopilot, not yet tested)

This isn't meant to compete with ArduCopter, ArduPlane, it is simply a different option if you want something that you can have the same code base and is object oriented. The quad/plane code doesn't have nearly as many options as ArduCopter/ ArduPilotMega, but for research with multiple vehicle cooperation a platform where all vehicles run the same c++ code (using different modules for unique vehicle differences) is useful.


  1. There is no command line mode.

  2. You must run it with a ground station talking mavlink (unless you set heartbeat_timeout = 0). If a mavlink packet is not received by the vehicle from the ground station within the heartbeat_timeout period, it will go into a failsafe mode.

  3. The main ardupilotone.pde sketch is meant as a template. You can easily copy it and modify it to your liking in a different sketch.

  4. In ardupilotone.pde the vehicle configuration file is included. Make sure you include CarStampede.h if you want to test the ArduRover functionality. PlaneEasystar.h if you want to test the plane, BoatGeneric.h if you want to test the boat, QuadArducopter.h for the quad etc.

  5. Feel free to make your own vehicle config file for your specific vehicle, you can use the others as a template.


  1. APO Introduction: https://github.com/downloads/arktools/ardupilotone/APO-jgoppert-10-31-11.pptx