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.


Views: 298760

Reply to This

Replies to This Discussion


I am pretty new to the "adrucode" have been using it since 2.7.3 (If I remember correctly) and had a heck of a time tuning loiter but finally got it perfect or darn close on 2.8.1, however since 2.9 I found on 2 different quads the defaults are pretty close.  How I did it for 2.9.1, do an erase in terminal to set defaults, cal your radio, level and set modes and hardware options, etc..., then tune your RATE, and STAB (Pit and roll) and try things like that, then if you need, start adjusting your loiter term's.

I am still learning, I find what is best for me is get the rate and stab where I like it, then I will play with other settings one at a time by trying really high and low terms to learn what they do.


If your throttle is at 30% then you will need to set your THR_MID to 300. The best way to do this is find the throttle out parameter in the log files. You can then see exactly what to set it to. I am sure you will be able to tune this parameter soon too.

THR_MIN is also limited to 300 to 700. If you are outside of this range you should consider changing your props.
Thanks - tried it and the transition from alt hold/ loiter to stab is very smooth now. No more jumping a few feet. Awesome job!
Thanks Gary. This is what I figured. Good to see the doco is going the have a refresh too.

Leonard, couldn't you make Thr_mid track Thr_cruise automatically?  Wouldn't that do the same thing?

Thought I'd add the Accel graph for my newly O-ring suspension mounted APM 2 on my Flamewheel F330.

Less tension and shorter O-rings mounted straight out from each corner.

Yes it was actually flying in a hover!


     I've had trouble uploading if the usb cable has come loose.  It displays some kind of nasty message.  I guess that's not what's happened?  Of course the com port selected at the top-right of the planner is also correct?

     The other two cases I've seen of people have problems were:

             1. I had left one of the jumpers in place - J2, J3 or J4 - i can't remember which.  These jumpers are right beside the APM's inputs.  I removed them and it worked fine afterwards.

             2. some other eeprom related issue that was fixed by holding down the reset button for 30seconds.  I'm really not sure about this solution because I've just tried it on one of my boards and it doesn't seem to do anything.


     Looking good.  At least the Z axis is amongst the best I've seen.


     Thanks for the report.  I imagine if you had tried with the lipo and usb you would have seen the same results as you did with just the lipo attached.  Here are some thing you might want to try

  • try swapping the radio receivers around to see if the problem moves with the dragon link rx (I expect it will).
  • test with a volt meter what the voltage is on the APM board when you're connected using USB and then again with Lipo.  You can connect your voltmeter probes to the ground and VCC pins on the radio input (bottom and middle row respectively).  My guess is that you'll find the voltage is lower when connected only through the USB.
  • Try disconnecting your ESCs and see if the radio calibration works.  If "yes" then it means that your ESCs were sucking power from the system and the USB connection couldn't provide enough power and some part of the system was browning out.  It could be the APM's ppm decoder or the radio itself. 

     Note that there is a display issue in the mission planner where the radio calibration screen is sometimes initially all grey but if you click the calibration button the green bars appear.  This doesn't sound like your issue though at all.

Thanks, that is great news!


     I've just tried the live calibration and it worked ok for me.  Maybe you didn't rotate the APM around in all 3 dimensions enough?  Try and point the front of the board in all 6 directions (n,s,e,w up and down).

    By the way, normally we recommend that people just leave the compass calibration method to the default which is to learn while in flight.  The reason is that the motors can have a significant impact on the compass readings and it's nearly impossible for you to recreate this by doing the calibration on your bench.  So you can end up with very nice offsets without motor interference but once you fire up your motors they become inaccurate by 15deg or more.  set the COMPASS_LEARN parameter to 1 to get it back to auto-learning.

Reply to Discussion


© 2020   Created by Chris Anderson.   Powered by

Badges  |  Report an Issue  |  Terms of Service