Developer

ArduPlane 2.60 released

I've just released ArduPlane 2.60

The main new features in this release are:

  • wind estimation
  • long term dead reckoning support
  • wheeled takeoff and landing support
  • optional new roll/pitch/yaw controllers from Jon Challinger

For a description of the first 3 new features have a look at my previous post. All of these features have been test flown on my PulseXT 40 and have performed very well.

The new roll/pitch/yaw controllers from Jon can be enabled by building with

 #define APM_CONTROL ENABLED

in your APM_Config.h. If you enable the new controllers then I strongly suggest you read Jons blog post about the new controllers and how to tune them. These controllers are still experimental, but if we get good feedback on them from users we will quite likely adopt them as the standard controllers in a future release.

Other changes in 2.60 include:

  • a new RECEIVER_RSSI_PIN compile time option, to allow you to display receiver RSSI via MAVLink. This should be useful for FPV flying.
  • an important fix from Jason Short for an erase bug in the dataflash. If you use dataflash logs then please erase them after loading this release to ensure the pages are properly initialised.
  • support for the new features in the new MTK GPS firmware
  • updates to the configuration parameters for the Mount code. If you use the mount code, then please check your parameters carefully, as some things have changed.
  • a fix to the JUMP command in missions, which solved a problem where the wrong command could sometimes be run
  • a fix to the initial yaw from AHRS when using a compass
  • new FENCE_ACTION_REPORT value for FENCE_ACTION
  • new "OBC" failsafe code as a compile time option
  • new RST_MISSION_CH option
  • new STICK_MIXING option
  • support for dual stabilisation mounts (eg. one camera and one antenna)
  • removed old CLI switch and dip switch support
  • fixed a derivative filter bug that could have a small affect on AHRS attitude
  • fixed LOITER_TIME to match MAVLink spec (time is in seconds)
  • added FBWB_ELEV_REV option

Happy flying!

You need to be a member of diydrones to add comments!

Join diydrones

Email me when people reply –

Replies

  • Nice work John!  Glad to have a PID controller that works well.  How long before this gets set as the default control scheme?

    I'm also a little confused by your terminology.  I'm not exactly seeing how it is different from the PID terms.  If you're using a PI controller that works on the rate then isn't that the same as the derivative?

    Are you also working on making this an adaptive control scheme?  Eliminating tuning entirely sure would be nice, especially for moving the controller from airframe to airframe.

  • Thank you Tridge, great work

    test it next weekend ... 

  • Great work Andrew!

    About OBC new features, it is possible to set the number of attempts for GPS Loss as well for COMMS Hold if GPS signal returned as well GCS Heart Beats regained?

    If time out on GPS Loss it will trigger that Pin you created in the past for Geofence crossed?

    Kind regards

  • Great work!

    Iam using an APM2 on an Easyglider with a Futaba 7C 2.4.

    Please could someone explain how i would go about using the RST_MISSION_CH?

    Iam not really sure where to start.

    Thank you

  • Quick guide to tuning my controllers. Looks complex, but each step is individually easy:

    Gain names:

    • AP Angle P – default 1.0.
    • FF Feed-forward – default 0.4.
    • RP Rate P – default 0.0
    • RI Rate I – default 0.0
    • RMAX – Rate limit – default 0.0 (disabled) – separate up and down components for pitch
    • PTCHCTL_RLL_FF (pitch only) – feed-forward from roll angle. This helps with the pitch diverging during rolls.

    Instructions:

    1. Note that APFF and RMAX have defaults that are functionally equivalent to ArduPlane PID defaults (P of 0.4). If you know the P gain that you are using, you can just input it into FF, but don’t go too aggressive.
    2. Fly in FBW-A. Note that stabilize will not do.
    3. I would start with pitch.
    4. Set RP until the plane starts oscillating. Back it off a bit, and then test it in various attitudes and see if you can make it start oscillating again. If you can, keep reducing it until these go away. Then cut it in half or so.
    5. Do the same for RI.
    6. Set FF to zero. The plane should still fly.
    7. The next step is easiest to do with a rate limit set. This is the RMAX parameter. For roll, initially go for 5000 to 7000 (50 to 70 degrees per second). For pitch, initially go for 2500 to 4000.
    8. (For this step, ideally you would have telemetry and can watch a graph of your angle.) Input a large change in the axis you’re tuning, and watch for overshoot. Start setting FF up slowly until it goes away. On most airframes, pitch is a much less linear process so you may not be able to get it 100% perfect.
    9. Repeat for other axis.
    10. Roll hard. Watch your pitch. If it changes, start setting PTCHCTL_RLL_FF up.
    11. Set up the AP gain and RMAX gains to your preferences. AP gain can be set in a fairly wide range to get different behaviors. RMAX can be set to literally anything, it could be set to take the plane two or three minutes to roll 45 degrees, or you can set it to zero for no limit.
    12. Play with the gains until it works the way you want. I caution against setting the feedforward too high, as that will completely clobber the rate limit and cause overshoot or undershoot.

    Also note that my blog post is inaccurate regarding stabilize mode. Stabilize mode works now, and there is an additional "STAB_GAIN" on the controllers, which controls how strongly they stabilize when you switch to stabilize mode. It has no other function.

  • Developer

    A small errata ... the wheeled takeoff code doesn't work in 2.60 if you enable Jons controllers with APM_CONTROL=ENABLED. I've fixed that in master for the next release.

This reply was deleted.

Activity