Skip to content

Conversation

@akain0
Copy link
Contributor

@akain0 akain0 commented Oct 22, 2025

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 Gal3ImuEKF and NavStateImuEKF filters, including trajectory export and statistics computation.

Key changes include:

New EKF NEES Evaluation Module:

  • Added a new EKFNEESEvaluator class (with EKFNEESEvaluator.h and EKFNEESEvaluator.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:

  • Updated the Dataset::configureImuParams method 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:

  • Changed the error computation in NEESEvaluator::computeError to use the logmap method instead of localCoordinates for consistency with Lie group operations.

Documentation and Code Clarity:

  • Added or improved Doxygen-style comments and documentation for NEES evaluation classes and methods, clarifying their purpose and usage. [1] [2]

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.

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.

1 participant