CHANGELOG

Changelog for package mola_state_estimation_simple

2.4.0 (2026-05-11)

  • Merge pull request #30 from MOLAorg/bump-cmake-version bump min req cmake version to 3.22

  • bump min req cmake version to 3.22

  • Merge pull request #29 from MOLAorg/fix/odometry-fuse-pose-twist-corruption fix(state_estimation_simple): correct twist and initial-guess corruption when wheel odometry is active

  • Add more unit test cases

  • fix: odom twist does not overwrite IMU wx/wy

  • fix(state_estimation_simple): correct twist and initial-guess corruption when wheel odometry is active Three inter-related bugs caused the LiDAR adaptive threshold sigma to grow toward maximum_sigma whenever wheel odometry was fused: 1. Wrong twist from fuse_pose() when odometry is active. fuse_pose() computed incrPose = new_ICP - last_pose, but last_pose had been modified by fuse_odometry() / fuse_odometry_3d_pose() between scans. The result was the odometry residual / dt instead of the true robot velocity, corrupting de-skewing and the rot_error term in the adaptive threshold. Fix: per-source SourceState in State tracks each source’s own last absolute pose and timestamp. fuse_pose() now computes incrPose = new_ICP - src.last_pose, which is always the true ICP-to-ICP motion regardless of intervening odom updates. 2. CObservationRobotPose (3D odom path) overwrote last_pose_obs_tim. When BridgeROS2 forwards wheel odometry as CObservationRobotPose (odometry_as_robot_pose_observation=true), onNewObservation() routed it to fuse_pose(), which updated last_pose_obs_tim to the odom timestamp. If the next LiDAR ICP fuse_pose() arrived with a slightly earlier timestamp, dt < 0 and the call was silently rejected. last_pose was then the absolute wheel odometry pose (in the odom frame), producing ~90-degree initial-guess errors for ICP (confirmed by debug traces showing motionModelError with yaw ~ -1.56 rad and pitch ~ 0.51 rad on a stationary ground robot). Fix: route CObservationRobotPose matching do_process_odometry_labels_re to a new fuse_odometry_3d_pose() method that applies an incremental delta to last_pose (keeping it in the SLAM frame) and never touches last_pose_obs_tim. 3. fuse_odometry() ignored the velocity carried in CObservationOdometry. BridgeROS2 always populates hasVelocities / velocityLocal from the ROS /odom twist. Those values were discarded, leaving last_twist stale. Fix: when hasVelocities is true, update last_twist from velocityLocal. IMU angular rates (fuse_imu) still override wx/wy/wz when available. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

  • chore: reduce fuse_pose() backwards in time warning rate

  • Contributors: Jose Luis Blanco-Claraco

2.3.1 (2026-05-04)

  • Merge pull request #28 from Zeal-Robotics/fix/simple-fuse-imu-preserve-linear-twist fix(state_estimation_simple): preserve linear twist across fuse_imu() Regression introduced in 15a1fce (“Add tests for simple estimator”).

  • Merge pull request #26 from MOLAorg/fix/smoother-issues Fix misc smoother issues

  • Remove copies of RegexCache.h and use the shared version in mola_kernel

  • Merge pull request #25 from MOLAorg/feat/simple-also-process-robot-pose-obs feat: Simple estimator now also processes CObservationsRobotPose

  • add regex filtering

  • feat: Simple estimator now also processes CObservationsRobotPose

  • Contributors: Jose Luis Blanco-Claraco, Robin Van Cauwenbergh

2.3.0 (2026-04-29)

  • Merge pull request #24 from MOLAorg/fix/bugs-in-simple-estimator-cov Fix: Avoid double covariance increment

  • fix: don’t use twist cov in propagating pose uncertainty in this simple mode

  • Fix: Avoid double covariance increment

  • Contributors: Jose Luis Blanco-Claraco

2.2.0 (2026-03-03)

2.1.0 (2026-02-14)

  • Merge pull request #13 from MOLAorg/feat/publish-georef-on-converge Publish geo-ref on convergence

  • Include the RDC API in the tests

  • Refactor publish georef and sensor label regex fix filtering observations by sensor label regex refactor to publish georef on converged automatically fix build against older mola_kernel Fix wrong logic in GNSS fuse

  • remove old mola version guards

  • Contributors: Jose Luis Blanco-Claraco

2.0.1 (2026-01-15)

2.0.0 (2026-01-14)

  • Merge pull request #7 from MOLAorg/feature/tricycle-kinematic Add tricycle kinematics

  • lint clean ups

  • Copyright year bump

  • Merge pull request #8 from MOLAorg/fix/add-simple-estimator-unit-tests Add tests for simple estimator

  • Add tests for simple estimator

  • Merge pull request #5 from MOLAorg/feature/fuse-gnss-imu-odom Refactor: new packages mola_georeferencing, mola_gtsam_factors, functional smoother state estimator

  • One further fix for cmake

  • integrate code coverage in cmake

  • Refactor to expose all gtsam factors into a new library ‘mola_gtsam_factors’

  • Contributors: Jose Luis Blanco-Claraco

1.11.1 (2025-10-20)

  • Update to build against MOLA>=2.1.0 with ConstPtr API

  • Contributors: Jose Luis Blanco-Claraco

1.11.0 (2025-10-05)

  • Move mola_imu_preintegration out of this repo The new repository is: https://github.com/MOLAorg/mola_imu_preintegration

  • Merge pull request #4 from MOLAorg/feature/imu Refactor IMU library

  • Fix using new IMU integration API

  • Move LocalVelocityBuffer class here from mp2p_icp repository

  • Contributors: Jose Luis Blanco-Claraco

1.10.0 (2025-09-07)

  • Update copyright notice

  • Make unhandled sensor input topic message less verbose

  • Contributors: Jose Luis Blanco-Claraco

1.9.0 (2025-06-06)

  • State estimation interface is now raw data consumer too

  • FIX: Error if sensor labels were provided in config yaml file

  • Contributors: Jose Luis Blanco-Claraco

1.8.1 (2025-05-25)

  • Feature: Implement basic twist covariance handling in the SimpleEstimator

  • fixes for clang-tidy

  • Contributors: Jose Luis Blanco-Claraco

1.8.0 (2025-03-15)

  • const correctness

  • State estimation modules now are proper MOLA raw inputs, so they automatically subscribe and consume input sensors (IMU, GPS, wheels odometry)

  • Contributors: Jose Luis Blanco-Claraco

1.7.0 (2025-02-22)

  • Add parameter enforce_planar_motion

  • Contributors: Jose Luis Blanco-Claraco

1.6.1 (2025-01-10)

  • Merge pull request #1 from MOLAorg/9-need-help-on-integrating-imu-for-lidar-odometry More stable integration of IMU twist information

  • Shorter logger name

  • Fix package.xml URLs

  • tolerate unsorted sensor inputs without throwing

  • Contributors: Jose Luis Blanco-Claraco

1.6.0 (2025-01-03)

  • Simple estimator: Integrate IMU angular velocity readings

  • Contributors: Jose Luis Blanco-Claraco

1.5.0 (2024-12-26)

1.4.1 (2024-12-20)

1.4.0 (2024-12-18)

  • Allow zero variances for some pose components

  • Contributors: Jose Luis Blanco-Claraco

1.3.0 (2024-12-11)

  • Start integrating GNSS observation. Added a new CLI program mola-navstate-cli for testing state fusion

  • Contributors: Jose Luis Blanco-Claraco

1.2.1 (2024-09-29)

1.2.0 (2024-09-16)

1.1.3 (2024-08-28)

  • Depend on new mrpt_lib packages (deprecate mrpt2)

  • Contributors: Jose Luis Blanco-Claraco

1.1.2 (2024-08-26)

1.1.1 (2024-08-23)

1.1.0 (2024-08-18)

  • Merge pull request #62 from MOLAorg/docs-fixes Docs fixes

  • Fix ament_xmllint warnings in package.xml

  • Contributors: Jose Luis Blanco-Claraco

1.0.8 (2024-07-29)

  • ament_lint_cmake: clean warnings

  • Contributors: Jose Luis Blanco-Claraco

1.0.7 (2024-07-24)

1.0.6 (2024-06-21)

  • Create new NavStateFilter interface and separate the simple fuser and the factor-graph approach in two packages

  • Twist in local frame

  • Contributors: Jose Luis Blanco-Claraco

1.0.5 (2024-05-28)

1.0.4 (2024-05-14)

  • bump cmake_minimum_required to 3.5

  • Contributors: Jose Luis Blanco-Claraco

1.0.3 (2024-04-22)

  • Fix package.xml website URL

  • Contributors: Jose Luis Blanco-Claraco

1.0.2 (2024-04-04)

1.0.1 (2024-03-28)

1.0.0 (2024-03-19)

  • use odometry

  • add new package mola_state_estimation_simple

  • Contributors: Jose Luis Blanco-Claraco

0.2.2 (2023-09-08)