Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

EKF2: Robustness Improvements #7265

Merged
merged 6 commits into from May 20, 2017

Conversation

Projects
None yet
4 participants
@priseborough
Copy link
Contributor

priseborough commented May 17, 2017

Partially replaces #7252

  1. Removes un-used state indexes from the estimator status message and adds a time slip variable that enables dropping of ekf2 updates to be detected. The time slip is the difference between the system time and the time obtained by integrating the IMU delta time messages received by the EKF. Time slips have been a likely cause of previous estimation problems, but were hard to determine with previous logging.

  2. Adds pre-flight checking of velocity and height innovations to prevent takeoff if velocity errors are large enough to prevent the vehicle being able to descend. This is necessary until the vulnerability of the height controller to small vertical velocity offsets is fixed.

  3. Fixes a vulnerability to heading drift during extended periods of extremely stable hover. This updates EKF2 version to one with improved selection criteria for in-flight selection of the magnetometer fusion method, adds parameters required to tune the selection criteria and modifies the checking of learned magnetometer biases for compatibility with the new selection method. See PX4/ecl#275 for details .

Test reports added below.

priseborough added some commits May 16, 2017

msg: update estimator_status
Reduce unnecessary length of state and covariance arrays
Add time slip monitor
ekf2: monitor estimator time slip
Used to check if the ekf2 module is failing to keep up with the IMU data
ekf2: Add preflight checking of velocity and height innovations
Filters the vertical position and 3-axis velocity innovations and sets the local and global position as invalid if they exceed limits during ARMING_STATE_STANDBY.
ekf2: Improve control of magnetometer bias learning
Adds parameters so that the motion checks used to switch between magnetic yaw and 3-axis fusion can be adjusted.
Modifies the check used to determine if learned mag biases  can be saved. A cumulated calibration time is used rather than continuous calibration time to allow for for switching in and out of 3-axis fusion mode that is required to do calibration.

@priseborough priseborough referenced this pull request May 17, 2017

Closed

Release v1.6 sign-off #7258

8 of 21 tasks complete
@priseborough

This comment has been minimized.

Copy link
Contributor Author

priseborough commented May 18, 2017

log_4_2017-5-18-11-00-02.ulg.pdf

Estimator report from flight test. Note in flight switching from 3-axis to heading fusion for the magnetometer when the vehicle is static. This can be seen in the innovation plots on pages 5 and 6 and the magnetic yaw aiding status plot on page 10. The learned magnetometer biases plotted on page 20 are stable.

@priseborough

This comment has been minimized.

Copy link
Contributor Author

priseborough commented May 18, 2017

Time slip log from flight test - note over 0.5 second interruption in ekf2 when the vehicle disarms and saves the learned bias parameters and closes the log file:

screen shot 2017-05-18 at 11 29 52 am

@priseborough

This comment has been minimized.

Copy link
Contributor Author

priseborough commented May 18, 2017

Here is a test where the vehicle was dropped onto the ground to cause a saturation in the IMU and temporary large innovations. All local position validity flags go to false within 3 seconds of the first drop and recover when the ekf stabilises. Note the small period of reported invalidity at 98 seconds which is caused by the velocity innovations recovering.

screen shot 2017-05-18 at 11 51 03 am

@LorenzMeier

This comment has been minimized.

Copy link
Member

LorenzMeier commented May 19, 2017

@PX4TestFlights Can you please test this?

@Avysuarez

This comment has been minimized.

@Avysuarez

This comment has been minimized.

@LorenzMeier

This comment has been minimized.

Copy link
Member

LorenzMeier commented May 20, 2017

Thanks for the test flights!

@LorenzMeier LorenzMeier merged commit ec3fe09 into PX4:master May 20, 2017

4 checks passed

ci/circleci Your tests passed on CircleCI!
Details
continuous-integration/sitl/pr Build finished.
Details
continuous-integration/travis-ci/pr The Travis CI build passed
Details
semaphoreci The build passed on Semaphore.
Details

@priseborough priseborough deleted the priseborough:pr-ekf2Robustness branch Oct 9, 2017

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.