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

  • Developer
    The libraries zipfile is out of date. For easiest building, check out the Sketchbook.
  • 3D Robotics
    Libraries are all here.
  • Another quick question... In the latest code available for checkout, there is an include for FastSerial.h, but I cannot find it anywhere in the libraries.zip or on the svn trunk. It is causing a compilation error because it is missing.

    Is there another place that I can get that file from?
  • I am attempting to use my APM on an aircraft powered by an IC engine instead of electric. The vibration from the engine seems to be affecting the sensors on the APM. For example, when the engine is throttled up while the aircraft is stationary and the APM is in stabilize mode, the control surfaces will begin to respond as if they are counteracting roll or pitch that is not actually taking place.

    Does anyone have any suggestions such as additional filters (software or hardware) or something else that will help the APM not to be affected by the engine vibration?
  • Developer
    No, I think you're right. I had naïvely assumed that all of the SPI devices were sharing a single bus, and the schematic makes it hard to follow this sort of thing.
  • Thanks Michael,

    I thought that port 2 was being used by the oilpan in SPI mode. Is this incorrect (I'm pretty new to embedded harware/software so I could definitely be wrong)? It looks like it is just being used to send the IMU data as well as the differential pressure, so if this is the case I guess I could still use port 2 since I don't need the IMU data and just read the differential pressure on an analog input on the mega?
  • Developer
    You should be able to use port 2; IIRC it's on the oilpan headers but not connected to anything.
  • 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?
This reply was deleted.