3D Robotics

ArduCopter 2.3 released

Jason is travelling this week, so I'll take the helm for the next software release post. 

UPDATE: the motor remapping thing was confusing everyone, so we took that out and returned to the regular motor mapping. That means that APM 2 users with Hexas and Octos should wait for the next version. APM 1 users should be fine with any frame.  

NOTE: Hexa and Octo users: there have been motor mapping changes that may affect you. Please don't upgrade until we can update the documentation to reflect the changes. This should happen by the end of the day today (Feb 1).

ArduCopter 2.3 is now available in the Mission Planner.  This is the next revision of the ArduCopter 2.2B6 code, which is perhaps the most tested code we've ever released (1288 comments in the thread!)  and certainly in my experience the best code, too. 

The default PIDs are optimized for a 3DR/Jdrones quad with 850 motors and 10" props. If you're using more powerful motors/props, start by turning down Rate Roll P (default is 0.14, so start by turning it down to 0.1. In general tune PIDs in 25% steps).

Now that we've got solid code out there, we can turn to collecting suggested gains for standard frames, and a better guide to how to tune PIDs for your unique setups. 

Here are Jason's note on the latest changes (mostly from 2.2B6)

A dampening term called STAB_D has been refined. A D term for all of the Rate based control loops has been added based on Igor's work. Landing for Baro and Sonar has been refined based on JLN's work. A slightly new approach to Loiter and Navigation is being used to try and linearize the pitch and roll for rate control. It tends to use lower gains, yet has a more assertive response in the air.

STAB_D : This is the gyro accretion dampener. This can remove small wobbles during sharp changes in angle commands. Making this too high can have a negative effect in performance and add a memory effect that can cause temporary loss in control. The in flight tuning is ranged so you are just below that effect.

If you haven't noticed before the control loops are in two stages. The first is a PI stage that converts some sort of position or angle error into a desired rate. These generally do not need to be tuned. They are more of a user preference on how fast you want the copter to perform a motion. 

The second stage is the actual PID loop that needs to be tuned for the copter. This converts the desired rate into a motor command of some sort. I added a D term based on Igor's recommendation to the PI's for each rate controller. These should show up soon in the mission planner for the release. I cannot give you a concrete answer for how to tune the D terms, because they each depend on their function such as alt hold or loiter, etc.

Still, the absolute most important term is always the Rate_P term for each loop. Start tuning here.

The default PIDs are in the what flies great for a stock jDrones/3DR Quad with the purple motors in X mode.

Note the Mission Planner does not yet highlight these D terms on the main tuning page (it will soon), but you can find them and modify them on in the Parameters list.

Autolanding should now work well (see video above) and the Tri servo issue is now resolved. 

The code should now compile with Arduino 1.0 (thank, Randy!), but remember that you need to use the "relaxpatch" version of Arduino in our downloads section

[Update: we've reverted the below. See update at the top of the post]

Important for Octo users:

We've changed some of the motor orders for some more exotic airframes. We'll be updating the docs on the Wiki in a day or two to reflect this. Pat Hickey explains:

As before, the hexa plus APM2 motor setup has changed from the ordering [1, 2, 3, 4, 5, 6] to [ 5, 6, 1, 2, 3, 4 ].

The Octa V layout for APM2 is:
6            4
  2        5
    8    1
      3 7
Motors 1 through 4 spin clockwise, and 5 through 8 spin counterclockwise.
Support for roll/tilt camera control on APM 2 should be coming in the next version. Traditional Heli will also be updating to this latest code as well once we track down a memory issue. 
As always, you can see a complete list of changes in the changelogs.

You need to be a member of diydrones to add comments!

Join diydrones

Email me when people reply –


  • My colleague just purchased a Wookong M. He told me that it has a feature called "Tail To Me" that will be useful for aerial cinematography. Are there plans to implement such in a later version of the code? Looking forward to 2.31 soon after I receive my APM2.

    I am trying to convince him that APM2 is as good or better as the Wookong M for much less money.

  • Hi everyone.  I'm trying to run a Hex-Plus with APM2 and 2.3 code.  I can't get the hexcopter in the air and I'm not sure what I am doing wrong.  Can someone please confirm the motor hookups?  Starting at the top of the plus and going clockwise I have hooked up motors 1 4 6 2 3 5.  That is:\

      12 o'clock to output 1

      2 o'clock to output 4

      4 o'clock to output 6

      6 o'clock to output 2

      8 o'clock to output 3

     10 o'clock to output 5.


    Is this correct?


    Thank you.


  • Pfff,

    I'm still having twitches with 2.3, even with rate D at 0.

    To check there is nothing wrong with HW I reloaded v49 and it flies good.

    Is someone using MT2814 with turnigy plush 25A ESC's??? Just to compare??

    Also changed TX and RX.


  • I've tried to ask this a couple times and don't seem to get a straight answer.  Is there anything Hex+ people can do to get up and running on APM2.0?  ie. Is there documentation that matches the current code?  I can see in the code comments that the motor changes were taken out... but, information seems to be disseminated in various forums and it's hard to get a solid status on things.  The 'update' in this thread indicates hexes and octos need to wait until the next version.  What exactly does this mean?  Is there a motor configuration we can go with now to get in the air?

    Thank you.

  • Hi,

    We flied with 2.3 firmware using jdrones default quad arducopter to try auto landing.

    In one of our trials we adjusted our three modes as 1-Stabilize, 2-Loiter and 3-Land. When we switched from stabilize to loiter and then immediately after loiter to land, the copter switched to RTL instead of land. 

    In a second trial our modes was 1-Stabilize, 2-Stabilize and 3-Land. In this case we switched to land after a manual take off and stabilizing the copter. But again the copter switched to RTL. 

    Is this normal? 

  • I get some strange wobbling in air in stable mode. The quad is simple to fly and i dont have to fight it to keep it quite still, but it has some oscillations every 1-3 seconds, like its trying to correct something. When it does this it wobbles but it still corrects itself and keeps pretty still. You can hear the motors "does something" when this happens.

    Has anyone seen anyting like this before? This is my 3rd test of firmware 2.3, apm1 and 3dr frame with stock motors and 10x4.5 props. Apm is not covered with anything, just stock 3dr mounting.. PID settings are stock except i sat roll p from the standard 0.0140 to 0.0120.

    Here is a video of the flight, when you see the copter oscillate and at the same time hear the motors run up, im not doing that with the tx..its doing it by itself im just flying it slowly around, almost just floating it around with small stick inputs.

    Also notice when i drive it up a couple meters the motors run fine without the twitching..


  • I cant get alt_hold to work on 2.3.

    Switch to 2.1 and works ok.

    Trying to understand the code I followed the altitude setpoint thorugh some variables until this:

    static void set_new_altitude(int32_t _new_alt)
        // just to be clear
        next_WP.alt = current_loc.alt;

        // for calculating the delta time
        alt_change_timer = millis();

        // save the target altitude
        target_altitude = _new_alt;

    I cant find _new_alt; in any other part of the program.

    Can some one help me on this one?

    Where is this variable set ot writen?


  • Today I made the first flight.

    I used the Firmware 2.3 plus all the changes from the link


    For the initial setup I used the file from the link 3DRquad.param

    http://code.google.com/p/arducopter/downloads/list, because I have a frame 3DR.

    The motors are the 850kv and the propellers the 10x45, the battery is a 5000 4C.

    The total weight is 1.650 gr

    It 's alright, I find it a bit "nervous", which is very reactive.

    I've only done take-offs and landings.

    The engine control, however, is not linear.

    The stability seems good.

    I have to make the adjustment autotrim?

    Unfortunately I had a problem with an engine, after Landing and disarmament, the engine emits a series of beeps.

    I'm checking the connections.



  • Bonjour tout le monde

    j'essaye désespérément de tester 2.3 en mode HIL chargé avec APMplaner avecX-plane9 mais "le throttle" ne varie que 0.111à 0.117,j'ai calibrer plusieurs fois la radio,sans succès;

    avez vous une idée?


  • Hi Andrea & Jean,

    thanks for the kind comment's... will be out again today trying the Loiter and RTL so wish me luck!

    I think this is the part when I will prob need some help tuning :-) video to follow I hope of today's flight.

This reply was deleted.