Posts Tagged ‘Chris Anderson’

ArduPilot by Chris Anderson

Thursday, February 19th, 2009

 

ArduPilot is an inexpensive navigation-only autopilot based on the open-source Arduino platform. It is available for $24.95 atSparkfun. (You will also need a GPS module and FMA Co-Pilot if you don’t already have them.) The software and hardware are all open source.

[UPDATE 2/5/09: There were two problems with ArduPilot boards shipped prior to this date. Those prior to 1/26 had the wrong firmware in the Attiny (MUX) chip and the CKDIV8 fuse in that chip was not cleared at the factory as it should have been. Those between 1/26 and 2/5 had the right firmware but the fuse was still not set. If you have an affected board, here are the solutions:

1) The fastest way, if you have an AVR programmer, is just to fix it yourself. If you just need to clear that fuse, follow the relevant part of the instruction here. If you also need to update the firmware (board shipped before 1/26) reflash the chip with the updated code (hex file is here), using the same instructions as above. If you don't have an AVR programmer, but have always wanted one, this is your chance! The AVRISP2 is excellent, comes with the terrific AVR Studio software, and is cheap ($34)

2) If you don't have an AVR programmer, the solution is to return the boards to Sparkfun and they will reflash or replace them at no charge, testing to ensure that you have a working board. Just send an email to techsupport@sparkfun.com, who have been alerted and will help you with the process.

All board shipped from today on will have the correct firmware and fuse settings, so this should be the end of the problem. Again, our apologies for the inconvenience and confusion. Our aim is to ensure that everyone has a working board as soon as possible, and Sparkfun has been great about responding quickly and making sure this doesn't happen again. Thanks for your support and understanding.]

ArduPilot features include:

  • Can be used for an autonomous aircraft, car or boat. Stabilization unit only required for a plane.
  • 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 throttle.
  • Comes with a 6-pin GPS connector for the 1hz EM406 GPS module. Faster 5hz GPS modules, such as the Locosys 200031, are supported via an optional 3.3v daughterboard.
  • Has six spare analog inputs (with ADC on each) and six spare digital input/outputs to add additional sensors
  • Supports addition of wireless downlink module for telemetry [code not currently provided]
  • Based on a 16MhZ Atmega168 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
  • High-speed ASCII NMEA parser for compatibility with standard GPS modules at any baud rate.
  • Hardware-driven servo control (using the Arduino Servo Timer library), which means less processor overhead, tighter response and no jitters.
  • Four RC-in channels (plus the autopilot on/off channel) can be processed by the autopilot. This allows the autopilot to read the initial throttle and rudder position when you switch to autonomous mode, so it can maintain speed and heading. The other two channels can be used for whatever you want, such as triggering a camera sequence or dropping an object. (Remember that the aileron and elevator channels are separately controlled by the FMA Co-Pilot)
  • Status LEDs for power, failsafe (on/off) and GPS (satellite lock).

Instructions:

Open source essentials:

  • Latest autopilot code (for the board’s main processor, an Atmega168) is here.
  • Latest multiplexer code (for the board’s second processor, an Attiny, which runs the failsafe system) ishere. (If all you want is to load our code, rather than modify it, just use AVR Studio to burn this hex file). For people not familiar with AVR Studio, instructions for loading this code are here.
  • If you want to build your own board from scratch, the necessary files and component lists are here.

ArduPilot just controls the rudder (for navigation to GPS waypoints) and the throttle (for altitude hold). It requires a third-party stabilization unit (we recommend the FMA CPD4 CoPilot) to control the ailerons and elevator of the aircraft. If you want a more sophisticated autopilot that has the stabilization function built-in, you’ll need to wait for ArduPilot Pro, which is not as far along on the development path.

Recommended UAV setup:

 

  • Airframe: Hobbico SuperStar (49″ wingspan, $95, shown). 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 motorspeed 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.
  • FMA Co-Pilot for wing-leveling and stabilization
  • EM406 GPS module
  • A six or seven channel RC transmitter and receiver, with at least one proportional aux control, such as the Futaba 7C (digital, more expensive) or Tower 6XM (FM, cheaper). Both work fine. You’ll also needthree servos.

Cool optional extras for your UAV:

The entire electronics setup for a typical electric aircraft with an ArduPilot and FMA CoPilot looks like this:


The following is a chronological list of posts describing the development of the project, mostly for historical purposes. If you’re interested in autopilot development and want to know more about ArduPilot features, they will give you some insight into the evolution of this project. But please be aware that these posts contain outdated code and PCB files, so do not use them.