v0.3.2
FusionCore 0.3.2
Robustness release: the outlier gate no longer has a hole under sustained
spikes, the filter survives clock rewinds instead of crashing, and the
outdoor Gazebo demo runs end to end.
Fixed
- Sustained GPS spikes can no longer defeat the outlier gate. After
repeated rejections, coast mode used to inflate process noise until the
gate reopened and admitted a persistent multipath spike. Coast is now
gated on a preceding GPS gap, so a continuously-present outlier stays
rejected (deterministic repro: 62 m -> 1.9 m peak error; Gazebo demo
RMSE 18.15 m -> 2.76 m, below robot_localization's 18.6 m). - Backward time-jumps no longer crash the filter. A non-monotonic
timestamp (clock rewind, replayed bag, WSL2 glitch) drove the covariance
non-positive-definite and aborted. Fixed with a clock re-sync and
eigenvalue flooring; survives an NCLT run that used to SIGABRT in ~2 min. - Gazebo outdoor demo works end to end (correct robot tracking + sim time).
Added
gnss.max_speed: physical-plausibility gate rejecting impossible GPS jumps.- Adaptive magnetic-disturbance rejection (
magnetometer.field_strength). gnss.coast_min_gap_s,headless/start_delaylaunch args, WSL2 DDS profile.- Benchmark regression tracking (
check_benchmark_regression.py).
Changed
- Documentation accuracy pass across the benchmark and comparison pages.
Full details in CHANGELOG.md.