3D Robotics

ArduPlane home page

3689354430?profile=original

3689312509?profile=original

 

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.

 

 


3689354391?profile=original

3689354242?profile=original

 

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).

3689354459?profile=original

 

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).

 

 

 

 


Resources:

Manual
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

Comments

  • Hi,
    I have a Microstrain 3DM-GX-25 OEM IMU that I am hoping to integrate with the Ardupilot Mega. The IMU gives LVTTL (5V compliant) serial output and I have written a C++ library similar to the GPS libraries that uses a state machine to update the orientation, angular rates, and accelerations (I can make this available if anyone is interested). The issue that I am having now is that it looks like all the serial ports are spoken for. Does anyone know a good workaround for this? If I forgo wireless telemetry could I use Serial3()?

    Thanks,
    Josiah
  • 3D Robotics
    hoopty: You need to select "Arduino Mega" as your board in the IDE. This is in the manual.
  • OK I have tried this on several different computers just hoping I had a screwed up config. This is what I get with version

    Command: Update
    External: D:\ardupilotmega\sketchbook\libraries\APM_ADC
    Completed: D:\ardupilotmega\sketchbook\libraries\APM_ADC - at revision: 483
    External: D:\ardupilotmega\sketchbook\libraries\APM_BinComm
    Completed: D:\ardupilotmega\sketchbook\libraries\APM_BinComm - at revision: 483
    External: D:\ardupilotmega\sketchbook\libraries\APM_BMP085
    Completed: D:\ardupilotmega\sketchbook\libraries\APM_BMP085 - at revision: 483
    External: D:\ardupilotmega\sketchbook\libraries\APM_Compass
    Completed: D:\ardupilotmega\sketchbook\libraries\APM_Compass - at revision: 483
    External: D:\ardupilotmega\sketchbook\libraries\APM_FastSerial
    Completed: D:\ardupilotmega\sketchbook\libraries\APM_FastSerial - at revision: 483
    External: D:\ardupilotmega\sketchbook\libraries\APM_RC
    Completed: D:\ardupilotmega\sketchbook\libraries\APM_RC - at revision: 483
    External: D:\ardupilotmega\sketchbook\libraries\AP_Common
    Completed: D:\ardupilotmega\sketchbook\libraries\AP_Common - at revision: 483
    External: D:\ardupilotmega\sketchbook\libraries\AP_Compass
    Completed: D:\ardupilotmega\sketchbook\libraries\AP_Compass - at revision: 483
    External: D:\ardupilotmega\sketchbook\libraries\AP_GPS
    Completed: D:\ardupilotmega\sketchbook\libraries\AP_GPS - at revision: 483
    External: D:\ardupilotmega\sketchbook\libraries\AP_Math
    Completed: D:\ardupilotmega\sketchbook\libraries\AP_Math - at revision: 483
    External: D:\ardupilotmega\sketchbook\libraries\AP_Navigation
    Completed: D:\ardupilotmega\sketchbook\libraries\AP_Navigation - at revision: 483
    External: D:\ardupilotmega\sketchbook\libraries\DataFlash
    Completed: D:\ardupilotmega\sketchbook\libraries\DataFlash - at revision: 483
    External: D:\ardupilotmega\sketchbook\libraries\FastSerial
    Completed: D:\ardupilotmega\sketchbook\libraries\FastSerial - at revision: 483
    External: D:\ardupilotmega\sketchbook\libraries\GPS_IMU
    Completed: D:\ardupilotmega\sketchbook\libraries\GPS_IMU - at revision: 483
    External: D:\ardupilotmega\sketchbook\libraries\GPS_MTK
    Completed: D:\ardupilotmega\sketchbook\libraries\GPS_MTK - at revision: 483
    External: D:\ardupilotmega\sketchbook\libraries\GPS_NMEA
    Completed: D:\ardupilotmega\sketchbook\libraries\GPS_NMEA - at revision: 483
    External: D:\ardupilotmega\sketchbook\libraries\GPS_UBLOX
    Completed: D:\ardupilotmega\sketchbook\libraries\GPS_UBLOX - at revision: 484
    External: D:\ardupilotmega\sketchbook\libraries\RC
    Completed: D:\ardupilotmega\sketchbook\libraries\RC - at revision: 484
    External: D:\ardupilotmega\sketchbook\libraries\Waypoints
    Completed: D:\ardupilotmega\sketchbook\libraries\Waypoints - at revision: 484
    External: D:\ardupilotmega\sketchbook\ArduPilotMega
    Completed: D:\ardupilotmega\sketchbook\ArduPilotMega - at revision: 847
    External: D:\ardupilotmega\sketchbook\Tests\ArduPilotMega_demo
    Completed: D:\ardupilotmega\sketchbook\Tests\ArduPilotMega_demo - at revision: 847
    Completed: At revision: 847



    D:\ardupilotmega\sketchbook\libraries\APM_RC\APM_RC.cpp: In function 'void TIMER4_CAPT_vect()':
    D:\ardupilotmega\sketchbook\libraries\APM_RC\APM_RC.cpp:40: error: 'ICR4' was not declared in this scope
    D:\ardupilotmega\sketchbook\libraries\APM_RC\APM_RC.cpp: In member function 'void APM_RC_Class::Init()':
    D:\ardupilotmega\sketchbook\libraries\APM_RC\APM_RC.cpp:73: error: 'COM1C1' was not declared in this scope
    D:\ardupilotmega\sketchbook\libraries\APM_RC\APM_RC.cpp:77: error: 'OCR1C' was not declared in this scope
    D:\ardupilotmega\sketchbook\libraries\APM_RC\APM_RC.cpp:84: error: 'TCCR3A' was not declared in this scope
    D:\ardupilotmega\sketchbook\libraries\APM_RC\APM_RC.cpp:84: error: 'WGM31' was not declared in this scope
    D:\ardupilotmega\sketchbook\libraries\APM_RC\APM_RC.cpp:84: error: 'COM3A1' was not declared in this scope
    D:\ardupilotmega\sketchbook\libraries\APM_RC\APM_RC.cpp:84: error: 'COM3B1' was not declared in this scope
    D:\ardupilotmega\sketchbook\libraries\APM_RC\APM_RC.cpp:84: error: 'COM3C1' was not declared in this scope
    D:\ardupilotmega\sketchbook\libraries\APM_RC\APM_RC.cpp:85: error: 'TCCR3B' was not declared in this scope
    D:\ardupilotmega\sketchbook\libraries\APM_RC\APM_RC.cpp:85: error: 'WGM33' was not declared in this scope
    D:\ardupilotmega\sketchbook\libraries\APM_RC\APM_RC.cpp:85: error: 'WGM32' was not declared in this scope
    D:\ardupilotmega\sketchbook\libraries\APM_RC\APM_RC.cpp:85: error: 'CS31' was not declared in this scope
    D:\ardupilotmega\sketchbook\libraries\APM_RC\APM_RC.cpp:86: error: 'OCR3A' was not declared in this scope
    D:\ardupilotmega\sketchbook\libraries\APM_RC\APM_RC.cpp:87: error: 'OCR3B' was not declared in this scope
    D:\ardupilotmega\sketchbook\libraries\APM_RC\APM_RC.cpp:88: error: 'OCR3C' was not declared in this scope
    D:\ardupilotmega\sketchbook\libraries\APM_RC\APM_RC.cpp:89: error: 'ICR3' was not declared in this scope
    D:\ardupilotmega\sketchbook\libraries\APM_RC\APM_RC.cpp:96: error: 'TCCR5A' was not declared in this scope
    D:\ardupilotmega\sketchbook\libraries\APM_RC\APM_RC.cpp:96: error: 'WGM51' was not declared in this scope
    D:\ardupilotmega\sketchbook\libraries\APM_RC\APM_RC.cpp:96: error: 'COM5A1' was not declared in this scope
    D:\ardupilotmega\sketchbook\libraries\APM_RC\APM_RC.cpp:96: error: 'COM5B1' was not declared in this scope
    D:\ardupilotmega\sketchbook\libraries\APM_RC\APM_RC.cpp:96: error: 'COM5C1' was not declared in this scope
    D:\ardupilotmega\sketchbook\libraries\APM_RC\APM_RC.cpp:97: error: 'TCCR5B' was not declared in this scope
    D:\ardupilotmega\sketchbook\libraries\APM_RC\APM_RC.cpp:97: error: 'WGM53' was not declared in this scope
    D:\ardupilotmega\sketchbook\libraries\APM_RC\APM_RC.cpp:97: error: 'WGM52' was not declared in this scope
    D:\ardupilotmega\sketchbook\libraries\APM_RC\APM_RC.cpp:97: error: 'CS51' was not declared in this scope
    D:\ardupilotmega\sketchbook\libraries\APM_RC\APM_RC.cpp:98: error: 'OCR5A' was not declared in this scope
    D:\ardupilotmega\sketchbook\libraries\APM_RC\APM_RC.cpp:99: error: 'OCR5B' was not declared in this scope
    D:\ardupilotmega\sketchbook\libraries\APM_RC\APM_RC.cpp:100: error: 'OCR5C' was not declared in this scope
    D:\ardupilotmega\sketchbook\libraries\APM_RC\APM_RC.cpp:101: error: 'ICR5' was not declared in this scope
    D:\ardupilotmega\sketchbook\libraries\APM_RC\APM_RC.cpp:108: error: 'TCCR4A' was not declared in this scope
    D:\ardupilotmega\sketchbook\libraries\APM_RC\APM_RC.cpp:108: error: 'WGM40' was not declared in this scope
    D:\ardupilotmega\sketchbook\libraries\APM_RC\APM_RC.cpp:108: error: 'WGM41' was not declared in this scope
    D:\ardupilotmega\sketchbook\libraries\APM_RC\APM_RC.cpp:108: error: 'COM4C1' was not declared in this scope
    D:\ardupilotmega\sketchbook\libraries\APM_RC\APM_RC.cpp:108: error: 'COM4B1' was not declared in this scope
    D:\ardupilotmega\sketchbook\libraries\APM_RC\APM_RC.cpp:108: error: 'COM4A1' was not declared in this scope
    D:\ardupilotmega\sketchbook\libraries\APM_RC\APM_RC.cpp:111: error: 'TCCR4B' was not declared in this scope
    D:\ardupilotmega\sketchbook\libraries\APM_RC\APM_RC.cpp:111: error: 'WGM43' was not declared in this scope
    D:\ardupilotmega\sketchbook\libraries\APM_RC\APM_RC.cpp:111: error: 'WGM42' was not declared in this scope
    D:\ardupilotmega\sketchbook\libraries\APM_RC\APM_RC.cpp:111: error: 'CS41' was not declared in this scope
    D:\ardupilotmega\sketchbook\libraries\APM_RC\APM_RC.cpp:111: error: 'ICES4' was not declared in this scope
    D:\ardupilotmega\sketchbook\libraries\APM_RC\APM_RC.cpp:113: error: 'OCR4A' was not declared in this scope
    D:\ardupilotmega\sketchbook\libraries\APM_RC\APM_RC.cpp:114: error: 'OCR4B' was not declared in this scope
    D:\ardupilotmega\sketchbook\libraries\APM_RC\APM_RC.cpp:115: error: 'OCR4C' was not declared in this scope
    D:\ardupilotmega\sketchbook\libraries\APM_RC\APM_RC.cpp:119: error: 'TIMSK4' was not declared in this scope
    D:\ardupilotmega\sketchbook\libraries\APM_RC\APM_RC.cpp:119: error: 'ICIE4' was not declared in this scope
    D:\ardupilotmega\sketchbook\libraries\APM_RC\APM_RC.cpp: In member function 'void APM_RC_Class::OutputCh(unsigned char, int)':
    D:\ardupilotmega\sketchbook\libraries\APM_RC\APM_RC.cpp:129: error: 'OCR5B' was not declared in this scope
    D:\ardupilotmega\sketchbook\libraries\APM_RC\APM_RC.cpp:130: error: 'OCR5C' was not declared in this scope
    D:\ardupilotmega\sketchbook\libraries\APM_RC\APM_RC.cpp:132: error: 'OCR1C' was not declared in this scope
    D:\ardupilotmega\sketchbook\libraries\APM_RC\APM_RC.cpp:133: error: 'OCR4C' was not declared in this scope
    D:\ardupilotmega\sketchbook\libraries\APM_RC\APM_RC.cpp:134: error: 'OCR4B' was not declared in this scope
    D:\ardupilotmega\sketchbook\libraries\APM_RC\APM_RC.cpp:135: error: 'OCR3C' was not declared in this scope
    D:\ardupilotmega\sketchbook\libraries\APM_RC\APM_RC.cpp:136: error: 'OCR3B' was not declared in this scope
    D:\ardupilotmega\sketchbook\libraries\APM_RC\APM_RC.cpp:137: error: 'OCR5A' was not declared in this scope
    D:\ardupilotmega\sketchbook\libraries\APM_RC\APM_RC.cpp:139: error: 'OCR3A' was not declared in this scope
    D:\ardupilotmega\sketchbook\libraries\APM_RC\APM_RC.cpp: In member function 'void APM_RC_Class::Force_Out0_Out1()':
    D:\ardupilotmega\sketchbook\libraries\APM_RC\APM_RC.cpp:170: error: 'TCNT5' was not declared in this scope
    D:\ardupilotmega\sketchbook\libraries\APM_RC\APM_RC.cpp: In member function 'void APM_RC_Class::Force_Out6_Out7()':
    D:\ardupilotmega\sketchbook\libraries\APM_RC\APM_RC.cpp:182: error: 'TCNT3' was not declared in this scope

    Is it my config?
  • Is possible to use the LS20031 GPS receiver in binary or only in NMEA? Will it be supported in next revisions of APM? Thanks.
  • @Doug - Once again that caught me. Thanks.
    If I need more reaction to a gyro in stabilize mode would I increase the GAIN on the PID for that function.
    I am kind of confused on that and the instructions do not go into much detail.
    Also for a heli do I still need a head lock gyro or does magnetometer/gps/gyro eliminate that need?
  • Developer
    @hoopty - The latest rev (r780) compiles fine for me using the MediaTek gps library. Make sure you do not have GCS_PROTOCOL set to 3 (Xplane)
  • Sweet just need my rudder servo and shell be crashing in style in no time xD
  • @Ritchie
    Simple answer yes.The "power bus" is common to all servo/receiver connections.
  • Just a quick check before I start cutting and soldering.
    If I connect the battery to the ESC and the ESC control cable to the APM output does the "power" reach the receiver and servos connected?
    If not I'll have build a harness for it all
  • Anybody try compiling the latest version with the MTK GPS library. I run into many compiliation errors.
This reply was deleted.