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: 298129

Reply to This

Replies to This Discussion

I gave that a try - the Mikrokopter FC had a similar acc reset command at "runtime". Didn't have any effect I could see in the planner flight data AH.

It would seem so. Unless I'm misunderstanding something it would appear that the calibration is done using the min and max values, assuming the range is linear between them.

I tried looking through the source code, but couldn't find the calibration routines, or where the offset and scale are applied to the raw values.

Should the compass_learn be on or off?

In general we recommend that it be left on.  So COMPASS_LEARN should be set to 1.  The only downside is the possibility that they'll get too big if you have a lot of motor interference.


     When you did the accelerometer calibration you were of course careful to keep it level during the first step?  Could you try it again?  Also please make sure that you've upgraded your mission planner to 1.2.35 and there's no need to push the "Done" button at the end of the procedure (I know it's very unclear whether you're suppose to push it or not).

     Autotrim (wiki page) or SaveTrim is another way to get the HUD level but the way it works is it uses the stick-input to move the HUD does not actual use the attitude of the copter which is why when you tried it it appeared to have no effect.

     The last and most brutally direct method is to update the AHRS_TRIM_X (roll) and AHRS_TRIM_Y (pitch) values directly through the Advanced Param List in the mission planner.  The values are in radians.  Like I said, this shouldn't be necessary though because the accel calibration routine should set those for you automatically based upon the copter's orientation at the first stage of the accel calibration routine.

     By the way, the accelerometer calibration code is here.  It uses the Gauss-Newton method which is described here but in short we use 6 points input to calculate the best fit to a sphere so it's a bit more sophisticated and produces better results than the min/max method.


     You should definitely give the AutoTrim a try in a location where you don't have much wind.

Txs for the report.  I've created an issue to capture this.  If you have any additional details, could you add them to that issue?


     Looking just at the RAW message I would have said that your accels are borderline acceptable.  The INAV's message Baro Alt vs INAV Alt are tracking very well though so I guess you're ok!

As you found, the accel offsets are looking much better now.  one of them is -170 but that's probably close enough to the -150 ~ 150 limit that you're fine.

If I didn't know it was windy I would have said that your Rate P values are a bit high but a windy day would explain why the copter's actual attitude diverges by up to 5 degrees from the desired attitude.  I think this is fine too.

Good to hear you're doing ok.

Same thing here Randy.

I use carpenter level at the first step to make sure copter strictly flat and still get same tilt left every time I calibrate.   I found tweaking TRIM_X and TRIM_Y is the way to go. 

What is it about "Done"  button?  We should not press it?

EDIT: found it ... do not press!  That was a problem.


I don't think I posted this question, but I did have that problem once and I believe it was because I hit the done button again and I think that initiates another setup which of course I didn't complete because I thought I was done. The next time I didn't hit the done button and the hud display was level.

OK, so looking at the calibration code and the Rolfe's description of the algorithm, it's not just the end points, but there is still a problem with assuming linearity with these sensors, when so much hinges on knowing when you're level during flight.

I hope that the trimming system can be used to cancel out my 10 degree pitch offset, otherwise I'm never going to get good flight behaviour with this board.

Reply to Discussion



Season Two of the Trust Time Trial (T3) Contest 
A list of all T3 contests is here. The current round, the Vertical Horizontal one, is here

© 2019   Created by Chris Anderson.   Powered by

Badges  |  Report an Issue  |  Terms of Service