ArduCopter 3.0.1 has been released and is now available in the Mission Planner,, GitHub and the new Downloads Area.

Warning #1: Compass calibration and reducing interference is far more important than with 2.9.1b

Warning #2: GPS glitches can cause sudden and aggressive position changes while in loiter mode.  You may wish to reduce the Loiter PID P to 0.5 (from 1.0) to reduce aggressiveness (see image below of where this gain can be found in mission planner).

Warning #3: optical flow is not supported but will be back in the next release (AC-3.0.2 or AC-3.1.0).

Warning #4: loiter turns does not maintain altitude.  This bug will be fixed in AC-3.0.2.

Warning #5: This release has only been lightly tested on Traditional Helicopters.

Improvements over 2.9.1b include:

  • Inertial Navigation for Loiter and Auto meaning much more accurate control (Randy,Leonard,JonathanC)
  • 3D navigation controller follows straight lines in all dimensions between waypoints (Leonard,Randy)

         WPNAV_SPEED, WPNAV_SPEED_UP, WPNAV_SPEED_DN, WPNAV_ACCEL allows configuring speeds and acceleration during missions

  • "compassmot" to compensate for interference on compass from the pdb, motors, ESCs and battery.  (Randy,JonathanC) (Set-up video here)
  • Safety improvements:
    • simple Tin Can shaped Geo Fence
    • pre-arm checks to ensure all calibration has been performed before arming (can be disabled by setting ARMING_CHECK to zero).  (video description here)
    • GPS failsafe - switches to LAND if GPS is lost for 5 seconds
    • stability patch improvements to stop rapid climbs in very overpowered or overtuned copters
  • Circle mode improvements including "panorama" when CIRCLE_RADIUS set to zero (Randy,Leonard)
  • SONAR_GAIN parameter added to allow better tuning of sonar surface tracking
  • CH8 auxiliary switch (same features as CH7)
  • works on PX4 (some minor features still not available) (Tridge,PatH)

How to upgrade:

1. Make sure you are using Mission Planner 1.2.59 or newer (get it here)

2. Click on the MissionPlanner's Hardware, Install Firmware screen.  The version numbers should appear as "ArduCopter-3.0.1", then click the appropriate frame icon and it should upgrade as per usual.

3. Reduce the Loiter and Alt Hold PIDs if you have modified them from the defaults.  The modified PID values for the 3DR frame can be seen in the image below.

Note: Nav parameters have been combined with Loiter so do not be concerned if you can't find them.

4. Although not directly related to this release, if you purchased an APM prior to March of 2013, update your PPM encoder to the latest firmware (instructions here).

5. Try out the new version in stabilize mode first, then alt-hold, then loiter and finally RTL and Auto.

Numerous How-To videos are available:

Special Thanks to MarcoDaveC and the large number of testers on the pre-release thread who put their copters at risk during the extended testing period.  Some of their videos can be found hereherehereherehere and here.  Thanks also to MichaelO for the MP changes required for this release.

All feedback welcome.  Please put your questions, comments (good and bad!) below.

Views: 384889

Reply to This

Replies to This Discussion

Hi Randy, I need to upload modified arduino code on Apm, i need to change sonar analog imput 0 to analog imput 7 because an hardware issue.

I try to modify config.h and compile/verify with arduino but it's a little too big:

Binary sketch size: 260,882 bytes (of a 258,048 byte maximum).

How i can try to reduce size? arduino troubleshooting guide says "Delete any #include statements at the top of your sketch for libraries that you're not using."

or May I use Mission planner features to modify sonar analog imput from 0 to 7?

or what i could try to compile and upload modified arducopter code?



Thanks Randy and I definitely will try it no matter what. I would like to try and reproduce that to help find this bug, if it is a bug! Weather is looking pretty good today but I want to get a few more flights in today to make sure it doesn't appear in 3.1rc5. So far it hasn't showed up even once. Does that make since to you? Do you have some idea what could be causing this that might have been changed from 3.0 to 3.1?

Hi Leonard,

Here are the logs attached. The first log I flew with PID parameters found with autotune on 3.1rc5, then flashed the firmware to SplineNav 0.3, which is based on 3.0.1 (latest SplineNav code here:

The second log is those same parameters, flying the same spline curve, except averaged so that pitch and roll have symmetric PIDs. 

Now that I look at them, actually both these logs show sections of severe oscillation in pitch, each lasting many seconds. But with the autotune parameters, there are nasty roll oscillations at the same time as well, whereas with the averaged parameters the roll is well-behaved most of the time.

For good quality video I need to find a way to get rid of both the pitch and roll oscillations, although for a good smooth SplineNav track it's probably mainly important just to have smooth roll.

Please let me know if you have any advice for tuning these PIDs to get my copter flying smoothly, because I'd been working on tuning it for weeks and have yet to find really good PID settings; I finally gave up with the manual PID adjustment and decided to try autotune, but it doesn't seem to have helped much.

Although I did find that I can get a lot of improvement by tripling autotune's rate I terms, and halving the stab P terms. Still I can never get rid of the bad oscillations entirely though. They usually appear during a sharp curve, or on a descending slope.

Maybe it was just a bad autotune and I should do it over and see if I can get some improvement the second time?

Notes: SplineNav is mode 14 in the logs. Also, this is a 3DR Quad frame, with two-axis brushless gimbal, and GoPro. APM 2.6 with external compass in the GPS module.



You can't do it using Mission Planner. What you want to disable is the code (hex file) size that gets burnt into your flash memory. This can only be done by avoiding certain part of code being compiled and thus make a small code (smaller hex file) which will get uploaded using Arduino tool.

Download the RC5 beta version from git and open this in Arduino sketchbook. What you need to do is go to APMconfig.h file and DISABLE some of the statements like (or write the following there)



you can define disable anything else that you think might reduce the code size. Just compile and upload to bring it lower than 258,048 bytes max.

Hope it helps!

In the new firmware I have noticed a strange behavior.
The old was this: Everything worked as a stabilize mode, but the difference was only in the corners of the deviation. In the steady state deviation of up to 45 degrees, in ACRO to 60 degrees. In sticks reaction was the same as in a stabilize mode . When I drop sticks, then after 1-2 seconds copter leveled into the horizon .

With new firmware ACRO and begin do sticks. If i move stick separately only by Roll or Pitch, then copter flies right. If you fly on a diagonal, then the copter starts to rotate Yaw. When I release sticks, the copter continues to fly without alignment.

I try change presets and not see any good result.

In ACRO mode copter use compass? Need compassmot?

What is the flash memory we have in APM 2.5?

And isn't there any way to increase that?

Do you have the log where you did your tune?

I would like to have a look at the Auto Tune tests. It gives me a much better idea about how the frame handles the various rate and position commands.

I am not an authority, but the main problem is the cpu on the board most likely cannot address an increased or larger flash memory.To keep costs down the manuf purposely set these limits to minimize parts and complexity and ultimately costs. the cpu prolly only has so many address lines and most likely cant read any more anyway.

Unfortunately what appeared like lots of memory has become little. Its the 640k should be enough for everyone problem, originally it was but time caught up with that. 

Which loggings are to be enabled when we do the autotune?  Is it best to do it with only the minimal defaults or with IMU and INAV enabled?

Just have the minimum enabled, Autotune has it's own logs that are enabled with Autotune. Those logs have everything I need to examine the quality of the tune you get.


I'm ready and willing to test the patch.  


Hi David,

I don't believe this is being caused by the PID gains. it is just that the new gains are significantly better than the originals and mean the angular reaction is faster than before.

I think the underlying cause of this problem is that your desired position is not being moved smoothly along your curve. This is causing small oscillations in your position error and therefore your velocity request. The small oscillations in your velocity request are differentiated, and therefore amplified, in the feed forward component of the desired acceleration calculation and are then directly converted to angular oscillations.

I can see all this pretty clearly in the NTUN logs. I thought that it might be some sort of feedback from the roll pitch angle via the acceleration back into the position and causing an oscillation that way. But looking closely at the logs the disturbances happen even when there are no roll pitch changes.

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