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

Reply to This

Replies to This Discussion

I'm setting up a new crab frame, similar to a TBS Discovery,

In the ArduCopter-2.9.1 APM_Config.h file I set :




and in the AP_MotorsQuad.cpp file I set :

}else if( _frame_orientation == AP_MOTORS_V_FRAME ) {
add_motor(AP_MOTORS_MOT_2, -137.7, AP_MOTORS_MATRIX_MOTOR_CCW, 3);
add_motor(AP_MOTORS_MOT_3, -54.7, AP_MOTORS_MATRIX_MOTOR_CW, 4);
add_motor(AP_MOTORS_MOT_4, 137.7, AP_MOTORS_MATRIX_MOTOR_CW, 2);

No errors on compile, just a few warnings about unused variables from other libraries.

After loading this into my APM 2.5, the Advanced Param List showed FRAME=1.  I changed it to V in Standard Params.

When I go into ArduCopter Level, I only have a choice of + or X for the Frame Setup.

Where does the FRAME value get read from?  Why didn't it get set correctly, did I miss a configuration step somewhere?

Will my FRAME=2 affect the Accelerometer Calibration when I calibrate it?



Randy ,

Thanks, we was making only live calibration. So stick with it. If we will entering declination manually also, for how much large radius this will be without problem ? Or this is better automatically ?

Regarding Relay, i write two cases for better understanding. ( my english isnt good probably :-)  )

Setting same as yet: CH7 - Cammera Triger, Sutter - relay (maybe this can be for servo also )

Case 1.

Duration - setting : 10 - this is one sec i think

"Period" - new parrameter - is 0

CH7 (TX switch UP and DOWN ) 

same function as now - only one sample of camera

Case 2.

Duration - setting : 10 - this is one sec i think

"Period" - new parameter - is 11 - 1,1 sec ( range can be 11  - 150 , 1,1s - 15s )

now when i  will flying i can "activate" with input CH7( TX switch)  relay with cycling switching.

Relay state: 1 sec UP, 0.1 sec DOWN , 1 sec UP , 0.1 sec DOWN , .......

(maybe 0,1 sec is too small for relay, for transistor can be OK, Or can be increased in range) does not matter if UP is relay control coil powering or in DOWN state. Cause relay have both contact (NO, NC) . Also can be reversed on TX.

When i make switch on TX back , relay going to initial position without other actions.

If it stays possibility georeference images taken with, it will be an excellent.

This function can be useful with cable trigger to camera for other user also. We can fly only (better for concentration)  and later just choose precious photos. Cause some cameras are not focusing when button is continuously manually closed. (with rubber or tie )

The second thing, we can reduce number of WP´s when shooting ortophoto. Also reduces the frequency of recalculating the target WP (and DO_DIGICAM_CONTROL) in every area loiter radius and thus perhaps to better maintain line maybe. Please correct me if I'm wrong.

Distance between photos we can calculate from speed (nav WP) and period.

Can you add this to issue list  ? I think this will be better cause my english . 

Thanks again for the great work !


Randy, Leonard,

Any update on the 2.9.2 ???

I believe most of the issues in 2.9.1 will get ironed out with 2.9.2


     I was hoping to get a release candidate ready by the end of this week but we're going to miss that.  Should be next week.  Of course it'll need to go through testing (which takes a couple of weeks) before it ends up in the mission planner but it'll be available as a release candidate before then.

I decided to test how  increase of  LOITER_I affects wind resistance

used two quadcopter with firmware 2.9 rc1 and latest 2.9.1
Both devices are excellent fly (rtl and auto too).

I usually use the following parameters:



its are usually all right if there is no strong wind.

then i try to increase LOITER_I to 0.5 and more

at the 2-5 second after going in loiter mode quaid starts rapidly accelerated aside from the the wind. I made many attempts on both machines

Finally, I tried to lift higher and wait longer.
quaid began to pick up speed in the direction perpendicular to the wind, and the speeding up to 40 km/h overflew the arc radius 20m, then i turn it to alt_hold mode

both quaids had different settings one using simple mode, another without it


     Thanks for testing.  It's interesting that it would do that.  I would have expected it to go into slow oscillations.  So the I term would overpower the P term and so I would expect large circles or ovals.  If it were alt-hold I would expect it to bob up and down forever but because this is 2 dimension, I'd expect large circles.


what should be the values ​​of I and IMAX to the cumulative error for 5-10 seconds does not extend beyond the control of the P? for compensane wind and soften GPS drift

If, for example, the I and P terms are equal, then if the error persists for 1 second then the I contribution will climb to be as high as the P contribution.

So if you want it to take 5 seconds for I to match P then I should be 5x lower than P.  So in your case with P = 2.5 it should be 0.5.


     It's a bit odd that the frame type setting (x, + or V) appear on the same page in the mission planner as the accelerometer calibration because they have absolutely nothing to do with each other.  I think it's on that page just because there was space there.  it should probably be moved to the hardware screen...

    Does a V frame quad fly ok?  I've heard that if the back arms are too close together you get bad coupling between yaw and pitch or roll.  I've heard to handle this shape properly we really need to have a throttle_factor for each motor ... or was it that we need yaw_factors that are not simply 1 or -1...

    Anyway, cool that you're getting your hands dirty in the code!



    When you say "Runaway" was it the altitude that you thought went crazy?  It looks like the waypoints were set to 150m so that's quite high and I can imagine it was very small.  Was that intentional?

     Otherwise it looks like it did reach the waypoints and there was an RTL in there as well and it looks like it was returning home (immediately below is a graph of the distance to it's target location).

    By the way, I see you're on 2.9-rc2.  There were numerous improvements between 2.9-rc2 and 2.9.1 including memory and performance improvements, limits on the max angle that loiter can go to.  ..if you use the throttle failsafe there's a critical fix in 2.9.1.


     I think ... you should switch to the "Live Calibration" of your compass.  It's in the mission planner's hardware screen.  You Z axis compass offset is a bit large (-260) and you can also see the y and z axis offsets changing quite a bit during the flight.  This likely explains why it was ok in some parts of the flight and not others.  If possible you might want to move your APM up further above your power distribution wires.


The altitude was set at 150m with purpose, and yes its quite high,

Copter goes strait up when this error occur. When i hear the motors goes 100% , i grab my RC and flicks the switch to RTL in panic, after few seconds i put it back in Stab and recover my hexacopter,


Im sure it would have continue to ascend if it had continued in Auto mode.


I have uploaded a video of this event.



I will try to update firmware and do a full reset.




Reply to Discussion


© 2020   Created by Chris Anderson.   Powered by

Badges  |  Report an Issue  |  Terms of Service