Conversation
There was a problem hiding this comment.
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 optionalperformResetparameter (default true) - Added type trait
HasRetractJacobianto 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 |
scottiyio
left a comment
There was a problem hiding this comment.
Interesting, never thought about resetting covariance. I don't see any issues
|
Thanks. it’s the key step in the that makes the left and right invariant filter equivalent, in that ANU/Klagenfurt paper. |
|
@giuliodelama FYI |
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.