ArduCopter 2.9 / 2.9.1 released

ACRO bug (fixed in 2.9.1b): while doing flips in ACRO mode, if you switch to Stabilize while inverted your throttle will go to minimum.  To regain throttle control you need to switch back to ACRO then back to Stabilize again (i.e. switch to stabilize twice).  You never lose control of roll/pitch/yaw.

Loiter/AltHold/Auto/RTL bug: if you switch into these modes with throttle at zero motors will go to minimum until you raise the throttle.

Auto mode altitude bug (fixed in 2.9.1b): setting a waypoint altitude greater than 320m over home altitude may wrap around and instead be interpreted as a low altitude.

ArduCopter 2.9 is now in the mission planner and the downloads area!

The major improvement is we use inertial navigation to improve altitude hold.  This increased reliance on the accelerometers means you must do some additional set-up before flying:

1. Perform the new accelerometer calibration in the mission planner (video).  The auto-trim metho has also changed (video).


2. Add vibration dampening foam between your frame and the APM.  Some suggested materials: DuBrogelhk foam.


 3. If upgrading from 2.8.1, modify the throttle and altitude PID values:

  • Increase your Throttle Rate P, reduce I to zero, increase D
  • Increase Altitude Hold P, reduce I to zero
  • Tune Throttle Accel P and I terms but try to keep P about 1/2 the size of I



Here is the list of major changes (a more detailed list can be found in the release notes):  

  • Alt hold using inertial navigation (Leonard, Randy, Jonathan)
    • AUTO_VELZ_MIN, AUTO_VELZ_MAX parameters control the max climb/descent rate for the autopilot (cm/s)
    • PILOT_VELZ_MAX controls max climb/descent rate for the pilot (in cm/s)
  • Landing improvements (Leonard/Randy).  Copter will descend to 10m or until an object is sensed with the sonar.  Then slows to 50cm/s descent (speed can be adjusted with LAND_SPEED parameter). (video).
  • Surface tracking with sonar (Randy/Leonard).  Copter will attempt to maintain current distance from objects in front of sonar regardless of altitude.  Only used in alt-hold and loiter, not used for missions.  Sonar can be enabled/disabled with CH7 switch. (video)
  • Failsafe improvements (Randy/Craig/John Arne Birkeland) including bug fixes, additional check for PPM encoder failure and implementation of battery failsafe.  Set-up instructions are here.
  • Mediatek gps driver accuracy improvements and use of SBAS [Craig].  Instructions on upgrading your mediatek to firmware 1.9 are here.
  • Traditional Heli improvements (Rob) including (a) bringing heli code back into the fold, (b) enabled rate controller (previously only used angle controllers). (c) fix to rotor speed controllers - now operates by switching off channel 8.  (d) allow wider collective pitch range in acro and alt hold modes vs stabilize mode  (e) bug fix to allow collective pitch to use the entire range of servos
  • Acro trainer (Leonard). Copter will return to be generally upright if you release the sticks in acro mode.
    • ACRO_TRAINER : set to 1 to enable the auto-bring-upright feature
    • ACRO_BAL_ROLL, ACRO_BAL_PITCH : controls rate at which roll returns to level
  • Camera control improvements (Randy/Sandro Benigno):  (a) AP_Relay enabled for APM2  (b) Trigger camera with CH7 or DO_DIGICAM_CONTROL command  (c) Allow pilot override of yaw during missions and fixed CONDITIONAL_YAW command.
  • PPM sum support for transmitters with as few as 5 channels (Randy/Tridge/John Arne Birkeland).
  • Performance and memory useage improvements (Tridge).


As per usual PIDs are optimised for the 3DR/jDrones quad with 850 motors and 10" props. If you're using more powerful motors/props and are seeing bad flight behaviour in stabilize, start by turning down Rate Roll P in 25% steps.

Special thanks to our testing team lead Marco and the dedicated bunch on the 2.8.1 release thread who put their copters at risk while testing the pre-release version.  Some of their videos are here: 1 2 3 4 5 6 7 8

Please feel free to report issues you find in the discussion below and/or add them to the issues list.


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

Join diydrones

Email me when people reply –


  • It would be pretty cool if for 2.9.2 a linear throttle transition was applied every time the APM took control or gave control of the throttle. 

  • Have been trying to get my head around the new release and the use of the X & Y accelerometers.

    I wouldn’t mind a brief dummies guide to wet the appetite.


    Surely the motors can only act directly in the Z plane? Even a tilt, in the short term, would produce no side forces until there was some speed and drag effects.

    So I suppose a level copter in the hover ‘feels’ a side gust and works out how far its got blown. Id imagine the brief tilt to re-position would see very little X or Y accelerations.

    Im just imagining a sprit level on the copter and expect it would only be non-central during a gust or motion induced wind.


  • Is there any way I can read the accelerometers real time through mission planner?

    As expected, the tuning screen seems to be only sampling the outputs!

  • T3

    I'm guessing this has been asked, but this thread is huge to wade through: regarding altitude hold on this new release:

    It works AMAZING but: When I move the throttle out of the deadband (wish to command a gentle climb) the thing ROCKETS up. Moving back to the middle it stops on a dime, impressive.

    What should I adjust to make it so that when I move the throttle just out of the %20 dead band that it climbs or descends much more gently?


    Thanks for the help!


  • More Tuning questions.

    Previously I have followed Dave C’s tuning guide on a jig, using acro (the old one) and setting stab terms to zero. As the guide says, a high rate D will give a ‘buzz’ type vibration. (does this still happen with 2.9.x?).

    I am now pushing up the rates while flying in stab mode. Rate D is currently .016 – quite high, no sign of the buzz vibration, just a ‘flying in treacle’ as the name ‘dampening’ would suggest. Rate P now up to .26 – also very high. Still flying very nice.

    Am I likely to see this classic D buzz while flying in stab mode?

    Is it possible that I may get no warning before the tuning goes unstable?

    Is anything to be gained from pushing up the tuning further (apart from satisfying my curiosity)?



  • This platform's a s***ton of work, but oh my lord is it worth it :)

    RTL sorted out, RX failsafes confirmed working. RTL initially set to 1m/s because I terrified I might lose it.  ALT hold and Loiter all checked out.

    No more tuning - time to FLY

    I had a weird event towards the end where my home position changed.  I have to check my magnetometer offsets because my flight controller is literally an inch away from a 4-1 ESC...but otherwise - everything worked 100%

  • Need a quick gut check,   I'm following the tuning guide procedure (flying not jigged) that Chris put together a bit back on a 3DR hexa with 880 motors and 12" props on 7400mah worth of 3 cell lipo.  I'm tuning rates and I'm up to .19 on rateP and .009 on rateD with rate I still at 0.  These seem way higher than the stock settings and I'm running a heavier machine but with more punch.  It seems to hover in the garage ok (given the self induced turbulence) and I can't induce any shakes with jiggling the sticks.  I did very carefully balance my props (blades and centers) as well as using the gel for vibration damping on the APM 1.


    Should I keep pushing up?  Is  it reasonable to have tuned values this high or am I missing something that's going to bite me later?



  • Dear developers,

    Today I flew on windy conditions, everything worked just fine, according to Randys recommendations Compass_Offs are ok now, maybe upper limit. I am a bit confused with those values in Accel XYZ, seems that there is still some noise, APM is on foam, might it be caused by cables? Nothing touches APM, except cover, where GPS module has been installed, and adapter cable is plugged into APM, for usb connection. Here is also and .log, a huge one, so additional recommandationas are pretty valuable to me.

    One thing was interesting: on camera gimbal, through the Ch6 tilt is controled, so when I try to put Cam down, quad is trying to climb, when in loiter/gps position mode. Again, very windy conditions, 3-5m/s, but a couple of days ago, I tested it on 7-10m/s, and I was the only, who proudly took-off that day :)

    2013-02-26 17-13 1.log
  • In reading my logs, my z values for acc,gyros and mag always seem to be very different than the x  and y values. Is this normal?

    2013-02-25 11-07-08.tlog
  • Hmm, bit of an oddity with accel calibration. I'm setting up a new 2.5+ unit which arrived this morning, but when I finish running through the accel calibration routine, I end up with the APM showing a 10 degree forward pitch when sat level on the same calibration surface (coffee table) I just used as my reference.

    Any ideas why this might be? The raw graphs show x very close to zero, ranging from -1000 to +1000 as I vary pitch through it's full range. The negative value seem slightly less than the positive one, so could it be a non linearity in the accelerometer that is throwing the zero value off. If so, should I bodge the offsets to give me a correct level at the expense of linearity with deflection?

This reply was deleted.


DIY Robocars via Twitter
RT @a1k0n: @DanielChiaJH @diyrobocars @circuitlaunch Here's my car's view of that race. About 8.4 second lap times for laps 2 and 3... both…
2 hours ago
DIY Robocars via Twitter
RT @DanielChiaJH: Great racing against @a1k0n today at @diyrobocars! Pretty cool to both break sun-9s at the track today I think I got very…
DIY Robocars via Twitter
Broadcasting the @circuitlaunch race live now at Races begin around 2:00pm PT
DIY Robocars via Twitter
RT @a1k0n: ran a huge number of hyperparameter tuning experiments yesterday; now I can train a new policy, far with better quality, in 15 m…
DIY Robocars via Twitter
RT @a1k0n: Did I get rid of hand-tuned parameters? Yes. Am I still hand-tuning more parameters? Also yes. I have a few knobs to address the…
Sep 26
DIY Robocars via Twitter
RT @a1k0n: I'm not going to spoil it, but (after charging the battery) this works way better than it has any right to. The car is now faste…
Sep 26
DIY Robocars via Twitter
RT @a1k0n: Decided to just see what happens if I run the sim-trained neural net on the car, with some safety rails around max throttle slew…
Sep 26
DIY Robocars via Twitter
Sep 24
DIY Robocars via Twitter
RT @SmallpixelCar: @a1k0n @diyrobocars I learned from this. This is my speed profile. Looks like I am too conservative on the right side of…
Sep 24
DIY Robocars via Twitter
RT @a1k0n: @SmallpixelCar @diyrobocars Dot color is speed; brighter is faster. Yeah, it has less room to explore in the tighter part, and t…
Sep 24
DIY Robocars via Twitter
RT @a1k0n: I'm gonna try to do proper offline reinforcement learning for @diyrobocars and throw away all my manual parameter tuning for the…
Sep 23
DIY Robocars via Twitter
RT @circuitlaunch: DIY Robocars & Brazilian BBQ - Sat 10/1. Our track combines hairpin curves with an intersection for max danger. Take tha…
Sep 22
DIY Robocars via Twitter
RT @SmallpixelCar: Had an great test today on @RAMS_RC_Club track. However the car starts to drift at 40mph. Some experts recommended to ch…
Sep 11
DIY Robocars via Twitter
RT @gclue_akira: 世界最速 チームtamiyaのaiカー
Sep 10
DIY Robocars via Twitter
RT @DanielChiaJH: Always a good time working on my @diyrobocars car at @circuitlaunch. Still got some work to do if I’m to beat @a1k0n howe…
Sep 10
DIY Robocars via Twitter
RT @SmallpixelCar: My new speed profile for @RAMS_RC_Club track
Sep 10