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

  • 3D Robotics
    Tim, I don't think elevon mode has been tested yet. Just to reiterate, this is pre-alpha software, so there is a lot that doesn't work yet. But we appreciate the bug reports!
  • Also, adjusting the reverse_ch1_elevon and reverse_channel_2_elevon values between 1 and -1 cause things to stay the same or they make it even worse.
  • Has anyone noticed bugs or problems with the elevon mixing mode, or is there a configuration we should be aware of?

    When I run stabilize mode with elevon mixing turned off, the servos respond correctly to stick inputs.

    But when I turn on elevon mixing, the servos do not respond with proper mixing at all. When moving the stick in one axis (i.e. left/right for roll), the channel 1 servo has extremely exaggerated movements, while the channel 2 servo barely twitches. If I move the stick in the other axis (i.e. forward/back for pitch), the channel 1 servo barely twitches while the channel 2 servo goes through the exaggerated movements.

    Any help or suggestions are greatly appreciated!
  • Moderator
    Quite a few of the members are from Australia, and I have'nt heard of any problems, although something rings a bell about some of the co-ords needing some tweaking maybe(?)
  • @Dave printout was from 38400 always.
    Are we sure uBlox works in southern hemisphere? I'm in Australia. I looked at spec but no mention of that.
  • @Brett,
    I will look closer at your printouts later - the B562 is correct. Are you at 9600 or at 38400 baud? In other words, is your configuration correct for ArduPilot Mega?
    Otherwise, I can say that I have waited for quite a while - make sure that you have the antenna at least on a window sill or even a little outside the house. I waited this morning until I moved it as close to the window as possible.
  • got connection to uBlox - green comms icon in U-centre flashing, yaa hoo!
    But no lock.
    upon sending a warm restart I get:
    ??:??:?? 0000 B5 62 06 04 04 00 01 00 02 00 11 6C µbl
    ??:??:?? 0000 78 80 78 80 78 F8 80 80 80 80 78 00 80 78 00 80 x€x€xø€€€€x€x€
    0010 80 F8 00 78 78 F8 00 78 80 78 78 78 78 78 78 78 €øxxøx€xxxxxxx
    0020 F8 80 80 00 78 80 80 80 F8 80 80 00 78 78 80 F8 ø€€x€€€ø€€xx€ø
    and these repeated for many lines.

    Is this output OK? seems different to Chris's screen grab (in post url above) and values seem too constant and repetitive.
    not seeing UTC time in bottom right corner either (shouldn't i receive at least that?)
    no messages in message window.
    not much in text window. just short commands
    I have tried cold, warm restarts and waiting 20mins.
  • Wow, thanks for all the info Dave. I understand now why I got no wiggle - no GPS lock.
    I shall have to try out the suggestions soon.
    Thanks
  • One more fix - something is stripping the left and right brackets from the first include statement from the passthru.pde above which is
    #include "avr/io.h" (replace quotes with the brackets)
  • @Brett and others,
    Here is TCIII's passthrough code so you can connect your UBLOX to the APM normally and checkout the UBLOX with the u-center app without having to build a cable.

    #include

    void setup() {
    // Sirf
    //Serial.begin(57600);
    // uBlox
    Serial.begin(38400); // FTDI on APMega Beta RX0-TX0
    Serial1.begin(38400); // UBLOX on APMega Beta RX1-TX1

    pinMode(7,OUTPUT); // PD7 - AIN0 - Remove Before Fly input pin -
    setGPSMux();
    Serial.print("Begin GPS Test");
    }

    void loop()
    {
    // system Timers
    // Incoming from UBLOX to U-Center
    if(Serial1.available()>0)//Ok, let me see, the buffer is empty?
    {

    delay(30);
    while(Serial1.available()>0){
    byte incoming = Serial1.read();
    //Serial.print(incoming,DEC);
    Serial.print(incoming,BYTE); // will output Byte values
    //Serial.print(",");
    }
    //Serial.println(" ");
    }
    // and back again... U-Center to UBLOX
    if(Serial.available()>0)//Ok, let me see, the buffer is empty?
    {

    delay(30);
    while(Serial.available()>0){
    byte incoming = Serial.read();
    //Serial.print(incoming,DEC);
    Serial1.print(incoming,BYTE); // will output Byte values
    //Serial.print(",");
    }
    //Serial.println(" ");
    }

    }


    void setGPSMux(void)
    {
    digitalWrite(7, HIGH); //Remove Before Fly Pull Up resistor
    }
This reply was deleted.