Skip to content

Fix EKF measurement shape mismatch during manual step-by-step updates - #141

Open
leorouxx wants to merge 1 commit into
Mayitzin:masterfrom
leorouxx:fix/ekf-magnetometer-crash
Open

Fix EKF measurement shape mismatch during manual step-by-step updates#141
leorouxx wants to merge 1 commit into
Mayitzin:masterfrom
leorouxx:fix/ekf-magnetometer-crash

Conversation

@leorouxx

Copy link
Copy Markdown

Description

Summary

This pull request resolves issue #135, addressing a measurement shape mismatch that occurs during manual step-by-step updates in the Extended Kalman Filter (EKF) implementation when an EKF object is initialized empty, and magnetometer data is provided in the update function.

Changes Made

update() Method: Introduced a local use_mag = mag is not None boolean flag to guarantee consistent evaluation of magnetometer presence throughout the update step, replacing redundant inline conditional checks.

Expected Measurement Function (h): Updated the function signature and header to accept the use_mag flag, ensuring the correct measurement vector shape is constructed.

Linearized Measurement Matrix (dhdq): Added the use_mag flag to the header to align with the revised measurement formulation.

Documentation: Updated the docstrings for both h and dhdq to accurately document the new parameter usage and behavior.

Tests: Added a unit test in TestEKF class named test_step_by_step_with_mag. This test simulates the behavior pointed out in #135 and now passes.

Explanation

I choose a solution with a boolean flag, that may be considered inelegant at first glance, but h and dhdq are stateless functions that are called only inside update.

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