working commit with nees for gal3imuekf and navstateimuekf with proof and visualizations to support #5
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This pull request introduces a new NEES (Normalized Estimation Error Squared) evaluation module for comparing Extended Kalman Filter (EKF) variants, refactors the IMU parameter configuration to allow custom parameters, and improves documentation and code clarity throughout the NEES evaluation classes. The main focus is on enabling detailed NEES analysis for both
Gal3ImuEKFandNavStateImuEKFfilters, including trajectory export and statistics computation.Key changes include:
New EKF NEES Evaluation Module:
EKFNEESEvaluatorclass (withEKFNEESEvaluator.handEKFNEESEvaluator.cpp) that supports running NEES analysis for both Gal3 and NavState EKFs, exporting results, and handling trajectory data. This enables more flexible and comprehensive filter evaluation workflows. [1] [2]Improvements to IMU Parameter Configuration:
Dataset::configureImuParamsmethod to accept an optional custom parameter object, allowing external control over IMU preintegration parameters. The method signature and documentation were updated accordingly. [1] [2]Refinements to NEES Evaluation Logic:
NEESEvaluator::computeErrorto use thelogmapmethod instead oflocalCoordinatesfor consistency with Lie group operations.Documentation and Code Clarity:
These changes collectively enhance the flexibility, extensibility, and clarity of the NEES evaluation framework for EKF-based navigation algorithms.
Many of the 'test' files in here are for validation of results; NEES calculation per filter, integration time, and dataset; and expected values with theory. They will be removed in a future commit.
Slight differences from the table in Table 1 of https://arxiv.org/pdf/2411.05548 due to unknown initial uncertainty, i.e. initial covariance (leaving at 0 per @dellaert 's request), as well as 9 DOF filters rather than 15 since bias is not tracked/accounted for in GTSAM's NavStateIMUEKF and Gal3IMUEKF implementations.