The ArduPilot development team is delighted to announce the release of ArduPlane 2.30. This release replaces the current stable release (version 2.28) and is a recommended upgrade for all ArduPlane users.
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!
Great work, Tridge! One this worth adding is that this is the first version of ArduPlane optimized for the APM 2. So you should see the power of its superior sensors now fully on display. (APM 1 performance is much improved, too)
indeed. I should have mentioned in the release notes that one of the key parameters in the DCM code is now scaled according to the maximum drift gyro rate reported by the gyro sensor driver. The APM2 gyros have much better drift properties, so we can set that value lower, which leads to improved attitude control over long flights.
Excellent ! Hats off to the entire team !
Thank you, Ardupilot Dev Team!!!
Congratulations and thank you all who contributed! I can't say enough how much I appreciate all of your hard work that makes it possible for some like me to enjoy this hobby!
Do I start from scratch with my parameters, or can I just save them to disk & reload them after the firmware upgrade?
In my case I'm using APM 1 w/2560.
Yes, a save and reload is needed. If you use a recent MP version to upgrade it should offer to save and reload your parameters for you.
Release 2.30 has a great amount of brilliant investigative debug work and system wide enhancements with lots of flight testing!
Maybe the best baseline release to date. With more community test flights and good feedback (with logs), and using various RC setups/aircraft, it will become very reliable, and less drones will fail from software issues.
DevTeam is taking a more methodical and consensus based approach to new enhancements, required bug fixes and public and test only releases. In an attempt to insure no unintentional simple typo errors or bugs are introduced by these fast and sometimes extensive code changes.
All changes have some potential for minor bugs, so community test flights are required to complete the software verification cycle and allow for safest DIY drone operations in the NAS.
Please contribute your ideas and flight test logs so release 2.4 is our most safe and reliable ever!
Congratulations to whole community for your ideas and efforts ... Lets keep innovating the DIYDrone hobby to the next level.
Congratulations to all..!
i'm in trouble. I have an ardupilot mega 1280 and IMU shield. I did the update in APM mission planner from 2.28 to this last 2.30. My Ardupilot stopped to wo
rk. Did I do some mistake? Sorry for my bad english, i'm writing from Roma Italy.
I'm not sure we support the old 1280 (which was retired more than a year ago) via the Mission Planner. I know you can turn off datalogging and it will fit when you load it with Arduino, but I don't know if there's a pre-compiled version for the MP. Maybe Tridge knows?
This may not be related to this version of the code, but when I compile the 2.30 code (unchanged) in Arduino 022-relaxed and upload it to APM 2.0, it stops about halfway every time at this line: got param RC3_Trim
What may be the issue?
Otherwise, if I let Mission Planner upload 2.30 it works every time.
Tom: I use the Arduino 1.0 relaxpatch, but it compiles fine. Make sure you've got Arduino pointing to the right libraries folder.