Skip to content

EKF Reset#2373

Merged
dellaert merged 4 commits intodevelopfrom
feature/reset
Jan 26, 2026
Merged

EKF Reset#2373
dellaert merged 4 commits intodevelopfrom
feature/reset

Conversation

@dellaert
Copy link
Copy Markdown
Member

@dellaert dellaert commented Jan 25, 2026

Implemented "reset" covariance transport in the EKF filter hierarchy also added a notebook showing how the NEES value is better when reset is being used. This is now the default setting for all update methods in the manifold EKF.

image

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This pull request implements "reset" covariance transport in the EKF filter hierarchy to improve filter consistency. The reset step transports the covariance from one tangent space to another after state retraction, which theoretically improves the Normalized Estimation Error Squared (NEES) metric. The feature is demonstrated through a Python notebook showing improved NEES values when reset is enabled.

Changes:

  • Added reset() method to ManifoldEKF class that retracts state and transports covariance using the retract Jacobian
  • Modified update() methods to accept optional performReset parameter (default true)
  • Added type trait HasRetractJacobian to detect manifolds supporting Jacobian computation
  • Added comprehensive tests including Monte Carlo validation

Reviewed changes

Copilot reviewed 5 out of 7 changed files in this pull request and generated 8 comments.

Show a summary per file
File Description
gtsam/navigation/ManifoldEKF.h Core implementation of reset() method, HasRetractJacobian trait, and updated update() methods
gtsam/navigation/tests/testManifoldEKF.cpp New tests for reset functionality including ResetUsesRetractJacobian and Monte Carlo validation
gtsam/geometry/tests/testPose2.cpp Test for Pose2 retract Jacobian computation
gtsam/geometry/tests/testGal3.cpp Test for Gal3 retract Jacobians computation
gtsam/navigation/navigation.i Updated wrapper interface to expose performReset parameter
python/gtsam/examples/Gal3ImuNEESReset.ipynb Example notebook demonstrating NEES improvement with reset enabled
.gitignore Added gtsam_unstable/timing/data/ entry

Copy link
Copy Markdown
Contributor

@scottiyio scottiyio left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Interesting, never thought about resetting covariance. I don't see any issues

@dellaert
Copy link
Copy Markdown
Member Author

Thanks. it’s the key step in the that makes the left and right invariant filter equivalent, in that ANU/Klagenfurt paper.

@dellaert
Copy link
Copy Markdown
Member Author

@giuliodelama FYI

@dellaert dellaert merged commit e155fe6 into develop Jan 26, 2026
34 checks passed
@dellaert dellaert deleted the feature/reset branch January 26, 2026 13:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants