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

Reply to This

Replies to This Discussion


     You know the baro drifts, I wonder if that's what you're seeing.  Does it drift forever if you just leave it there or does it eventually settle...or rather hover around a given value?  Here's a video of the inertial nav + barometer.

Does anyone know how to alter the radio input code so I can switch channel 1 for channel 2 as im using a jr tx with ppm.

Im updating from 2.9.0 to 3.0.1. With 2.9.0 I altered the code in the radio.pde as Randy (see below) suggested to switch channel 1 and 2 around for use with jr tx with frsky ppm. This worked fine in 2.9 but doesnt seem to work in 3. I assume its something to do with RC HAL something or other but I dont really know. And Ideas on what I can alter to make it work this time?



Hi there.  I didn't see this thread and really wasn't aware of the issue.

The hacky solution is to modify radio.pde's read_radio() function.  This is where it copies the input from the APM_RC object to the internal "servo" objects that we use from then on.  So it looks like you could set your transmitter to mode 2 and then only roll and pitch are reversed.  You could then change the read_radio() fuction to be this.  In fact it's just the two lines in bold that have been modified slightly (CH1 and CH2 have been switched around).  If someone knows how to upload the code with Arduino perhaps they could try to make these small changes and see if it works?  Then we can make a more permanent fix for 2.9.2.

#define RADIO_FS_TIMEOUT_MS 2000       // 2 seconds static void read_radio() {     if (APM_RC.GetState() == 1) {         ap_system.new_radio_frame = true;

  g.rc_1.set_pwm(APM_RC.InputCh(CH_2));          // reversed for JR transmitter                      g.rc_2.set_pwm(APM_RC.InputCh(CH_1));          // reversed for JR transmitter







#if FRAME_CONFIG != HELI_FRAME         // limit our input to 800 so we can still pitch and roll         g.rc_3.control_in = min(g.rc_3.control_in, MAXIMUM_THROTTLE); #endif     }else{         // turn on throttle failsafe if no update from ppm encoder for 2 seconds         uint32_t last_rc_update = APM_RC.get_last_update();         if ((millis() - last_rc_update >= RADIO_FS_TIMEOUT_MS) && g.failsafe_throttle && motors.armed() && !ap.failsafe) {             Log_Write_Error(ERROR_SUBSYSTEM_RADIO, ERROR_CODE_RADIO_LATE_FRAME);             set_failsafe(true);         }     } }

Remember if you're uploading using arduino to an APM 2.x you will need to remove the two "//" from the front of line 5 of APM_Config.h so that it looks like this:



     Theoretically I think it's probably better to do the calibration with the electrical equipment on and outdoors but I don't think it matters all that much.  If the final offsets are all between -150 ~ +150 then it should be fine.  If it's over that then you should check for metal screw and the like near the APM.


     So I think in radio.pde you will just need to change these two lines which are originally:

    to be instead...
    Instructions for building with arduino are here.   The thing that's changed since 2.9.1b is the need to set the ArduPilot > HAL Board > ArduPilot Mega 2.x.  ..and of course you need to build with the special version of Arduino 1.0.3.

From a quick look at the baro library and the datasheet, it looks like the MS5611 has both an I2C and an SPI interface and we use the SPI interface.  So instead of the I2C address, you'll need to worry about the chip select pin.  I believe the SPI port is accessible (there are two of them actually).

This is the problem I have (the same as Randy in an early version):

Randy's answer: "It's an aerodynamic effect on the barometer so I think more foam may help. Another option is the increase the INAV_TC_Z as high as 7.0. Please note though that making this TC higher also increases the possibility that vibrations will cause the altitude estimate to be incorrect for longer which can lead to your copter flying up when bad vibrations occur."

I Raise INAV_TC_Z from 5 to 7 and now is a little better but the problem is still there... Y also try to isolete baro from external winds with a lot of internal foam, but with no luck.

This is how I mount my APM:

May I try to use the APM with out the case with the baro covered to avoid turbulence?


Thanks Randy for this information!

And by the way great job on the new release!

Cheers Randy Ill give it a go.

Hello all! I have problem with my copter. Today very strange fly. I think what problem with my RX (Turnigy 9x).

Of all the changes were significant only soldering wire receiver antenna. Before that was visually damaged shell wires near the box of the receiver, but the management was good. I cut about 1.5 centimeters and resolder the wire to the receiver. Soldering is good. But I think the problem is that the impact reducing the length of the wire and the reception was worse.

Or even suspect malfunction Fence. When the switch is turned off sometimes works RTL, when fly off to a radius.
And today, tried a different radius and position of the switch, but the result was the same.

Please see my logs and say what you think.


Changing the length of a receiver antenna is never a good thing.  I would get a new antenna with exactely the same length os the old one.

Here are a few examples

Y6 in-flight motor failure tests

Y6 Motor out test, onboard view

X8 motor out test

Do the motor numbers in in Log MOT ..correspond with the APM outputs ?  I am just trying to understand why my copter fell to the right hand side when it shows in log left hand motor issue ?

Reply to Discussion


© 2019   Created by Chris Anderson.   Powered by

Badges  |  Report an Issue  |  Terms of Service