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

Reply to This

Replies to This Discussion

I have the 880 motors installed on my quad and for Rate Roll/Pitch P I use 0.12 (as Randy mentioned below) which seems to work well. I'm running 11" props so it may not be a direct comparison.

Has anybody tried to compile the 2.9.1 code from repository and find a problem with a call from GCS_Mavlink?  Something about MPU6000. 2.9 compiled fine. I am just new to this Arduino stuff...sorry for the interruption.

Arduino does not always switch directories as expected.

I always have to get my old working directory out of the way, change preferences in Arduino to the new directory, then restart Arduino, to make sure it switches to the new one.

Even then, check carefully.

Randy thank you for contacting Jani, I am sure they must have some good numbers for the PIds now on later code versions. I will bump up the Rate P to 0.12 and put the STab values back to defaults. You are correct Stab P default is 4.5. I also changed the Rate I from 0.090 to 0.06 for pitch and. roll. Do I need to change that back to the default since I am increasing the Rate P to 0.12?

I should get a chance to put some time in on 2.9.1 this week as the weather is nice and warm on my side of the world :-) I plan to check my zaxis with raw logs this afternoon to make sure I am am not geting too much vibration. I am testing a new idea for the mounting as the O ring method does not work with the 3DR APM2 case. I dont have this case yet but always thinking ahead. I have made a mounting plate that has a dual layer with gel in between the plates and the actual board mounts to the upper plate via rubber cushions and I have tiny gromets which just touch the underside of the board to cancel out harmonic vribrations. Radical design :-) Actually what happens when its. a rainy afternnon. Also Doh! about the radians.

Are you suggesting Arduino is "idiosyncratic"? :) I am used to pro SW dev tools and that is the politest word I can think of, even if it's a free item. Anyway, I'm pretty sure I cleaned stuff up, I'm used to dealing with MUCH worse, because I had to do that to go back and check out if 2.9 still compiled OK after the 2.9.1 failed, and 2.9 did. I was a bit suspicious because the 2.9.1 GCS_Mavlink library was apparently a tad smaller than the 2.9 one, and it was a call to it that was failing (something accidentally erased?) I asked. I did not touch any of the 2.9.1 files, just used what was in the zip.

Tomorrow I'll try again then, I hear there might be a football game on... Thanks for the reply.

Hi Randy, 

I decided to upgrade my QuadX to 2.9.1, APM2.0, but I am not able to fly it, since I can not have a controlled airborn.

I did attach the last log fly with a test to fly on my backyard, not able to takeoff, the copter is very unstable.

I did check the latest PID config as highlited by you on red rectangles, I did recalibrate the accelerometers as in video (level, left, right, up, down, back),   I did recalibrate the ESC one by one, I did check the "motors" setup in CLI and each start on proper direction and order, I did rebind also the RX-TX.

I do have a foam under the APM2.0 (in case) and I did check on Log the Accel_Z and it looks good for me, between -5 and -15, see below.

My TX is a dx6i. For 2.9.1, I noticed there is a "Save Trim" with CH7 and "Auto Trim" during the flight. 
But I do not have a spare channel for Save Trim CH7 and Auto trim is not possible since I can not takeoff and hover. Somehow the HUD is not horizontal.

I did check if I have Error on my log, not errors, I did check spikes from TX/RX, not spikes.

Please let me know if you find something wrong on my log attached and give me please some hints.



I put in my declination values I've always done.

Is that sufficient...or does the auto method do something extra?

I had the same question a while back.

The key to having the MP display the modes is to first get a 3D GPS fix.


I guess Arduplane is different.

Compiles here ok...

The commands are riddled with <little problems> some problems come and go with different releases.
It's hard to keep up to date with what works and what don't:

WP will execute(of course), Height will be attempted until reaching capture radius, Yaw angle not working (might work if gimbal is activated)

Loiter_turns works! It's hard coded at a fixed radius of 3m, and fixed revolution of 5 deg per sec.
Yes it is a bit hap hazard, seems to start slow then speed up towards end of circle, even in no wind, not sure why that is!  I would say that the 3m radius is beyond the edge of GPS resolution.

All delays will fully execute.

Take off is fully functional.

Relay code can't work by default, MCU pin37 not connected.

Camera trigger working on v2.9X

Thanks Peter.

5 deg/sec for loiter turns! That may explain it, that’s over a minute per turn. It was also very windy, poor quad.

3 mts is a bit small for filming from 50mts up. Do you know where it is in the code?

I thought do-yaw worked last time I tried. At least it pointed to that compass bearing but then flew the rest of the flight sideways as I dont think you can cancel the new heading.

Haven’t tried take off or any camera mount instructions.


Would really like a ‘delay until height’ to make sure I don’t go smashing through trees.



Line 317 in commands_logic.pde
Looks like it has changed a bit since I played with it last!

The defines for ToDeg(x), ToRad(x) etc are found in defines.h

Here is a proving flight I did last year.

<Would really like a ‘delay until height’ to make sure I don’t go smashing through trees.>

A temporary work-a-round is to set next ordinary waypoint at required alt, with a delay, say 30, or 60 secs. The delay WILL execute which stops the code loading next wp, so the quad will loiter and climb at the wp until the delay times out.

Reply to Discussion


© 2019   Created by Chris Anderson.   Powered by

Badges  |  Report an Issue  |  Terms of Service