APM:Plane 3.1.0 released

3689591584?profile=originalThe ardupilot development team is proud to announce the release of version 3.1.0 of APM:Plane. This is a major release with a lot of new features and bug fixes.

The biggest change in this release is the addition of automatic terrain following. Terrain following allows the autopilot to guide the aircraft over varying terrain at a constant height above the ground using an on-board terrain database. Uses include safer RTL, more accurate and easier photo mapping and much easier mission planning in hilly areas.

There have also been a lot of updates to auto takeoff, especially for tail dragger aircraft. It is now much easier to get the steering right for a tail dragger on takeoff.

Another big change is the support of Linux based autopilots, starting with the PXF cape for the BeagleBoneBlack and the Erle robotics autopilot.

Full list of changes in this release

  • added terrain following support. See ... following/
  • added support for higher baudrates on telemetry ports, to make it easier to use high rate telemetry to companion boards. Rates of up to 1.5MBit are now supported to companion boards.
  • added new takeoff code, including new parameters TKOFF_TDRAG_ELEV, TKOFF_TDRAG_SPD1, TKOFF_ROTATE_SPD, TKOFF_THR_SLEW and TKOFF_THR_MAX. This gives fine grained control of auto takeoff for tail dragger aircraft.
  • overhauled glide slope code to fix glide slope handling in many situations. This makes transitions between different altitudes much smoother.
  • prevent early waypoint completion for straight ahead waypoints. This makes for more accurate servo release at specific locations, for applications such as dropping water bottles.
  • added MAV_CMD_DO_INVERTED_FLIGHT command in missions, to change from normal to inverted flight in AUTO (thanks to Philip Rowse for testing of this feature).
  • new Rangefinder code with support for a wider range of rangefinder types including a range of Lidars (thanks to Allyson Kreft)
  • added support for FrSky telemetry via SERIAL2_PROTOCOL parameter (thanks to Matthias Badaire)
    added new STAB_PITCH_DOWN parameter to improve low throttle behaviour in FBWA mode, making a stall less likely in FBWA mode (thanks to Jack Pittar for the idea).
  • added GLIDE_SLOPE_MIN parameter for better handling of small altitude deviations in AUTO. This makes for more accurate altitude tracking in AUTO.
  • added support for Linux based autopilots, initially with the PXF BeagleBoneBlack cape and the Erle robotics board. Support for more boards is expected in future releases. Thanks to Victor, Sid and Anuj for their great work on the Linux port. See ... t-on-linux for details.
  • prevent cross-tracking on some waypoint types, such as when initially entering AUTO or when the user commands a change of target waypoint.
  • fixed servo demo on startup (thanks to Klrill-ka)
  • added AFS (Advanced Failsafe) support on 32 bit boards by default. See ... iguration/
  • added support for monitoring voltage of a 2nd battery via BATTERY2 MAVLink message
  • added airspeed sensor support in HIL
  • fixed HIL on APM2. HIL should now work again on all boards.
  • added StorageManager library, which expands available FRAM storage on Pixhawk to 16 kByte. This allows for 724 waypoints, 50 rally points and 84 fence points on Pixhawk.
  • improved steering on landing, so the plane is actively steered right through the landing.
  • improved reporting of magnetometer and barometer errors to the GCS
  • added FBWA_TDRAG_CHAN parameter, for easier FBWA takeoffs of tail draggers, and better testing of steering tuning for auto takeoff.
  • fixed failsafe pass through with no RC input (thanks to Klrill-ka)
  • fixed a bug in automatic flow control detection for serial ports in Pixhawk
  • fixed use of FMU servo pins as digital inputs on Pixhawk
  • imported latest updates for VRBrain boards (thanks to Emile Castelnuovo and Luca Micheletti)
  • updates to the Piksi GPS support (thanks to Niels Joubert)
  • improved gyro estimate in DCM (thanks to Jon Challinger)
  • improved position projection in DCM in wind (thanks to Przemek Lekston)
  • several updates to AP_NavEKF for more robust handling of errors (thanks to Paul Riseborough)
  • improved simulation of rangefinders in SITL
  • lots of small code cleanups thanks to Daniel Frenzel
  • initial support for NavIO board from Mikhail Avkhimenia
  • fixed logging of RCOU for up to 12 channels (thanks to Emile Castelnuovo)
  • code cleanups from Silvia Nunezrivero
  • improved parameter download speed on radio links with no flow control

Many thanks to everyone who contributed to this release, especially our beta testers Marco, Paul, Philip and Iam.

Happy flying!

E-mail me when people leave their comments –

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

Join diydrones


  • can someone suggest the optimum modem baud rate for getting long range telemetry from 3DR modem. right now i use 19200. below this i am not able to read/write waypoints on pixhawk.

  • Please, could anyone give a opinion if the new Intel Edison could be a good platform to make a linux autopilot board like the newsly development of BeaglePilot by diydrones and others?

  • The easiest option if more data fields are wanted might be to reduce the frequency from 5 times/sec to say 2 times/sec for the non-GPS data.

    Is there a list of all the data possible anywhere?

  • 1/ amount of metrics

    I could not find a definite answer but the max amount of data seems to be 1200 bps = 150 Bytes/s 

    currently each metric cost 4 bytes. we send 7 of them (mode,sats,baro meters, baro centimeter, batt voltage,current consumption) every 200ms and 10 gps info (lat,lon,course,..) every seconds.

    So in total we have already 180 Bytes/s 

    Now, I realize that we are already above the maximum and it might be dropping stuff as there is no CRC.

    I might be able to remove some precision that are not used but we are essentially limited.

    2/ S-port is coming . I have something working on my bench and my git repo.

    However S-port is inverted serial and half duplex (1 line for TX and RX) so you will need an extra diode after the inverter. 

  • I guess the starting point if there is going to be discussion would be with interested parties having a list of all of the Mavlink telemetry data items that are available to select from. Is this readily accessible anywhere in a concise form?

    How many D series telemetry data fields are available to take whatever is chosen, is it limited to the 9 shown above or a greater number?

    Is it planned to extend this arrangement to support the SPORT telemetry protocol?

  • I am sure different people will want different metrics : hdop, failsafe mode, pre arm checks ,... but I would like some consensus on this . is there any way to do a poll on diydrones / ardupilot forum /... ?

    diydrones forum interface is very .. difficult . I might move the discussion for ardupilot forum if there is too much "feedback" 

  • Quick answer, thanks

  • it is already done by Randy

    see pull request for the metrics currently working

    Currently it implements
    Barometer altitude (Alt)
    Battery percentage remaining (Fuel)
    Battery Voltage (VFAS)
    APM Mode : T1
    Nb of satellites and 3d lock : T2
    GPS Alt : Galt
    Heading : Hdg
    GPS Coord 
    GPS Speed

  • Automatic Terrain Following... wow! I'm looking forward to seeing this in action. Very cool. Very impressive.

This reply was deleted.