The ArduPilot development team is proud to announce the release of version 3.0.0 of APM:Rover. This is a major release with a lot of changes so please read the notes carefully!
A huge thanks to ALL the ArduPilot developers. The Rover code benefits tremendously from all the hard work that goes into the Copter and Plane vehicle code. Most of the code changes in this release were not specifically for Rover however because of the fantastic architecture of the ArduPilot code Rover automatically get's those enhancements anyway.
Note that the documentation hasn't yet caught up with all the changes in this release. We are still working on that, but meanwhile if you see a feature that interests you and it isn't documented yet then please ask.
The 3.x.x releases and above DON'T support APM1/APM2
This release DOES NOT SUPPORT the old APM1/APM2 AVR based boards. The issue is the amount of effort required to keep the new code ported to the old platforms. We are very sorry this has to occur and if there is someone who is willing and technically capable of doing this work then please let us know.
There will be a discussion created on ArduPilot forums where people can request features in the new code be backported to the APM code to run on the AVR boards and if it is reasonably easy and they are willing to do the beta testing we will do our best to make it happen.
EKF2 - New Kalman Filter
Paul Riseborough has been working hard recently on the new EKF2 variant which fixes many issues seen with the old estimator. The key improvements are:
After extensive testing of the new EKF code we decided to make it the default for this release. You can still use the old EKF if you want to by setting AHRS_EKF_TYPE to 1, although it is recommended that the new EKF be used for all vehicles.
In order to use the EKF we need to be a bit more careful about the setup of the vehicle. That is why we enabled arming and pre-arm checks by default. Please don't disable the arming checks, they are there for very good reasons.
UAVCAN new protocol
The uavcan change to the new protocol has been a long time coming, and we'd like to thank Holger for both his great work on this and his patience given how long it has taken to be in a release. This adds support for automatic canbus node assignment which makes setup much easier, and also supports the latest versions of the Zubax canbus GPS.
Support for 4 new Boards
The porting of ArduPilot to more boards continues, with support for 3 new boards in this release. They are:
More information about the list of supported boards is available here:
Startup on a moving platform
One of the benefits of the new EKF2 estimator is that it allows for rapid estimation of gyro offset without doing a gyro calibration on startup. This makes it possible to startup and arm on a moving platform by setting the INS_GYR_CAL parameter to zero (to disable gyro calibration on boot). This should be a big help for boats.
Improved Camera Trigger Logging
This release adds new CAM_FEEDBACK_PIN and CAM_FEEDBACK_POL parameters. These add support for separate CAM and TRIG log messages, where TRIG is logged when the camera is triggered and the CAM message is logged when an external pin indicates the camera has actually fired. This pin is typically based on the flash hot shoe of a camera
and provides a way to log the exact time of camera triggering more accurately. Many thanks to Dario Andres and Jaime Machuca for their work on this feature.
You can now see the individual contributions of the P, I and D components for the Steering PID in the logs (PIDY), allowing you to get a much better picture of the performance.
This release includes a lot more options for diagnosing vibration issues. You will notice new VIBRATION messages in MAVLink and VIBE messages in the dataflash logs. Those give you a good idea of your (unfiltered) vibration levels. For really detailed analysis you can setup your LOG_BITMASK to include raw logging, which gives you every accel and gyro sample on your Pixhawk. You can then do a FFT on the result and plot the distribution of vibration level with frequency. That is great for finding the cause of vibration issues. Note that you need a very fast microSD card for that to work!
This is the first release that allows you to disarm using steering if you want to. It isn't enabled by default. You can enable it
with the ARMING_RUDDER parameter by setting it to 2. It will only allow you to disarm if the autopilot thinks you are not moving at the time.
This release includes support for a bunch more sensors. It now supports 3 different interfaces for the LightWare range of Lidars (serial, I2C and analog), and also supports the very nice Septentrio RTK dual-frequency GPS (the first dual-frequency GPS we have support for). It also supports the new "blue label" Lidar from Pulsed Light (both on I2C and PWM).
For the uBlox GPS, we now have a lot more configurability of the driver, with the ability to set the GNSS mode for different constellations. Also in the uBlox driver we support logging of the raw carrier phase and pseudo range data, which allows for post RTK analysis with raw-capable receivers for really accurate photo missions.
Better Linux support
This release includes a lot of improvements to the Linux based autopilot boards, including the NavIO+, the PXF and ERLE boards and the BBBMini and the new RasPilot board.
On-board compass calibrator
We also have a new on-board compass calibrator, which also adds calibration for soft iron effects, allowing for much more accurate compass calibration.
Lots of other changes!
The above list is just a taste of the changes that have gone into this release. Thousands of small changes have gone into this release with dozens of people contributing. Many thanks to everyone who helped!
Other key changes