The main focus of this release is increased stability in the AHRS system. Using simulations and flight logs the dev team found a number of ways to improve the DCM code at the core of ArduPlane to make it much more resistant to sensor noise and to improve its accuracy during tight turns. The most important result is the noise resistance, with simulations showing that the new AHRS code can resist noise levels several times higher than the previous code.
The new code also copes better with linear acceleration. Several ArduPlane users had noted the tendency of ArduPlane to pitch its nose down immediately after a hand launch. While there are several possible reasons why this can happen, one common one was that the linear acceleration of the launch was being interpreted by the attitude code as an upward pitch, which led to ArduPlane compensating incorrectly by pitching down the nose. The same thing would happen in any manoeuvre which involved significant linear acceleration. Simulations show that the new system produces much better pitch accuracy as a result.
The new DCM code is also a lot faster, which means we now have more CPU free for additional features in future releases.
EEPROM Config update
This release is the first to include the new 'AP_Param' configuration system, which replaces AP_Var for saving parameters to EEPROM. The new system uses a lot less memory than the old one (saving about 2.2k of RAM out of a total of 8k on the board). That extra memory will give us the opportunity to expand the feature set of ArduPlane in future releases.
The new system also makes it easier to expose some previously hidden internal parameters to users setting parameters via MAVLink. In particular, it is now possible to set the compass offsets over MAVLink, a feature which is discussed more below.
This release includes a lot more control on how the compass is used in flight. It is now possible to use the APM Mission Planner to find good compass offsets based on a telemetry flight log and then to lock in those offsets for future flights, disabling the automatic offset updating system by setting COMPASS_LEARN to 0. The planner will update the new COMPASS_OFS_X, COMPASS_OFS_Y and COMPASS_OFS_Z parameters to ones chosen based on optimising the offsets against a flight log.
By using the new COMPASS_USE parameter it is also possible to setup ArduPlane to log compass data while not using the compass for yaw control (instead using the GPS). This is useful for gathering good initial data for compass calibration. You can also use COMPASS_USE to enable/disable the use of the compass for heading correction while in a flight, which allows much easier testing of GPS vs compass based navigation.
Hold course on landing
The auto landing code has been updated to avoid a problem where the course hold in the final stages of the landing could produce a significant roll due to cross-track errors. The previous code locked the heading onto the cross-track heading, whereas the new code locks the heading onto the current heading in the final meters of the landing. The two headings are usually close, but in a cross wind there can be enough discrepancy for the old code to tip a wing into the runway.
Rudder in elevon mode
Thanks to a patch from Phil Cole, ArduPlane now supports use of a rudder on an elevon based plane. All the usual rudder controls are possible, which will allow elevon planes with rudders to improve their flight considerably.
Saving airspeed in mission
A minor change was made in the handling of airspeed/groundspeed changes during missions. Previously if you used a mission command to change the target airspeed then this would be saved to EEPROM and would be used for all flight modes, necessitating a reset of that parameter before the next flight if the changed airspeed target was only appropriate for that mission. The value is now only set in memory and not to EEPROM.
compass enable/disable in flight
It is now possible to disable the compass while in flight. Previously if you disabled the compass while flying the DCM code would continue to use the compass heading as a yaw reference, but that heading would not be updated, so navigation would be impossible. ArduPlane can now change to using the GPS. This is useful for longer flights if the operator suspects a problem with the compass.
logging of DCM and HWSTATUS
The MAVLink telemetry logs have been updated with additional messages giving a lot more information about the internal behaviour of the DCM AHRS system and the hardware. The DCM messages make it much easier to diagnose tricky problems such as gyro drift, while the HMSTATUS messages allow the operator to monitor I2C bus errors and the board voltage.
CLI on a 1280
The command line configuration and testing interface is now available again on older 1280 based APM1 boards. This had been previously disabled due to flash space issues but has been re-enabled due to space savings that resulted from the new AP_Param code. This means the only feature disabled by default on older 1280 based boards for this release is the on-board dataflash logging.
Thanks to all the contributors!
Many thanks to everyone who has contributed to this release! This release encompasses over 700 patches to our git repository from 25 developers. I hope everyone enjoys flying it as much as the dev team enjoyed developing it!