ros-jazzy-mola-lidar-odometry (2.1.0-1noble) noble; urgency=high

  * FIX: show_localmap was not loaded from YAML file; expose more pipeline env vars
  * Merge pull request #70 <https://github.com/MOLAorg/mola_erathos_slam/issues/70> from MOLAorg/feat/multiple-scans-per-volume
    simple estimator params file: expose all hardcoded values as env vars
  * simple estimator params file: expose all hardcoded values as env vars
  * Merge pull request #69 <https://github.com/MOLAorg/mola_erathos_slam/issues/69> from MOLAorg/feat/multiple-scans-per-volume
    feat: new option to include multiple scans per space volume
  * feat: new option to include multiple scans per space volume
  * feat: Add IMU & LiDAR configurable QoS (requires latest mola_bridge_ros2)
  * Merge pull request #67 <https://github.com/MOLAorg/mola_erathos_slam/issues/67> from Zeal-Robotics/fix/pose-timestamp-after-deskew
    fix: stamp published pose with deskew reference time, not raw obs stamp
  * fix: stamp published pose with deskew reference time, not raw obs stamp
    The ICP-derived pose corresponds to the vehicle at t=0 of the deskewed
    cloud. With the default FilterAdjustTimestamps: MiddleIsZero, t=0 is
    the *middle* of the scan, while obs->timestamp (taken from the LiDAR
    driver header) is the *start* of the scan. The published
    LocalizationUpdate.timestamp and the timestamp fed back into
    navstate_fuse->fuse_pose() were both using obs->timestamp, so
    downstream consumers (and the internal fuser) saw a pose tagged with
    a time roughly half a scan period (~50 ms at 10 Hz) before the moment
    the pose actually holds.
    The absolute reference time is already tracked inside
    ParameterSource::localVelocityBuffer.get_reference_zero_time():
    - Generator seeds it with obs->timestamp
    - FilterAdjustTimestamps shifts it by the same offset it applies to
    per-point timestamps
    - FilterAbsoluteTimestamp already uses it as the absolute reference
    for per-point timestamps
    This commit reads it back after the observation pipeline runs and
    threads it through every pose-time use site:
    - ICP initial-guess query (estimated_navstate)
    - ICP result fusion (fuse_pose)
    - estimated_trajectory insertion
    - past_simplemaps_observations keyframe key
    - Published LocalizationUpdate, map, deskewed-scan, debug-trace
    timestamps
    Sensor-cadence uses (rate stats, drop-too-close logic, debug log
    context, last_obs_timestamp, per-label staleness tracking) keep the
    raw obs->timestamp since they are about *when the observation
    arrived*, not *when the pose holds*.
    If FilterAdjustTimestamps is not configured the buffer's reference
    equals obs->timestamp and behavior is unchanged. There is a fallback
    to obs->timestamp for safety if the buffer was never seeded.
  * Merge pull request #66 <https://github.com/MOLAorg/mola_erathos_slam/issues/66> from MOLAorg/better-grav-aligner-tests
    review: address gravity-aligner / rebaker review comments
  * review: address gravity-aligner / rebaker review comments
    - Fix stale Doxygen on onNewKeyframe (window param) and computePublishResidual
    (drop tail_kf_id reference, document unconditional residual contract).
    - TrajectoryRebaker::rebake: slide anchor forward to lower_bound when no KF
    >= anchor_id exists, so corrected_poses and reported anchor_id stay
    consistent.
    - Remove redundant empty-input guard in two-arg rebake overload.
    - Replace composePoint+subtraction delta computation with rotateVector in
    TrajectoryRebaker and the test helper.
    - Extract kDefaultAxisEps single source of truth used by Params and
    rotationFromGravity.
    - Fix sign in test bodyGravity comment (a_body.z = +g*cos), clarify
    accelerometer convention.
    - Wire maxGravityErrorDeg into KnownPitchTilt_converges as a sanity check.
    - Clarify LinearDrift_recoversHorizontalPath comment that R_grav per-KF
    exactly cancels T_odom.R (scenario justifying the 5cm Z tolerance).
  * Merge pull request #65 <https://github.com/MOLAorg/mola_erathos_slam/issues/65> from MOLAorg/feat/better-gravity-align
    feat: add GravityMapAligner with per-KF IMU pool and robust gravity estimation
  * fix minimum accelerometer noise
  * feat: add TrajectoryRebaker for per-KF gravity-aware pose chain re-integration
  * feat: add GravityMapAligner with per-KF IMU pool and robust gravity estimation
    New class GravityMapAligner stores one time-averaged body-frame
    accelerometer sample per keyframe and provides:
    - estimateGravityVector / estimatePerKFCorrection: IRLS/Huber-robust
    weighted mean of R_i·a_body_i to estimate gravity direction in the
    odom frame, with per-window support for the per-KF rebake path.
    - rotationFromGravity: pitch/roll-only correction (zero yaw by
    construction) that sends the estimated gravity vector to +Z.
    - onNewKeyframe / onKeyframeDropped for pool lifecycle management.
    Unit tests cover: nullopt below threshold, zero-tilt identity correction,
    2° pitch convergence (<0.1°), Huber robustness with 20% outlier KFs,
    pool eviction, yaw-free output, and per-KF windowed estimation.
    Co-Authored-By: Claude Sonnet 4.6 <mailto:noreply@anthropic.com>
  * Merge pull request #64 <https://github.com/MOLAorg/mola_erathos_slam/issues/64> from MOLAorg/fix/more-rational-use-mutexes
    FIX: More rational use of mutexes and shared opengl objects
  * FIX: More rational use of mutexes and shared opengl objects
  * Merge pull request #63 <https://github.com/MOLAorg/mola_erathos_slam/issues/63> from MOLAorg/fix/deadlock-load-map
    FIX: potential dead locks/long waits requesting relocalization
  * FIX: potential dead locks/long waits requesting relocalization
  * Merge pull request #60 <https://github.com/MOLAorg/mola_erathos_slam/issues/60> from Zeal-Robotics/fix/sensor-frame-max-range-and-filter-anchors
    fix(mola_lidar_odometry): anchor ESTIMATED_SENSOR_MAX_RANGE and FilterByRange at the sensor
  * Rename pipeline *_sensor_* names to *_observation_radius_*, document base_link-anchored deadzone
    The pipeline variables and YAML param keys historically called
    *_SENSOR_MAX_RANGE / *_sensor_range_* are actually the bounding-radius
    of the latest observation cloud measured from base_link, not anything
    sensor-anchored. This caused real-world confusion: users reading the
    name expected sensor-frame semantics and were puzzled when the
    canonical FilterByRange deadzone removed points around base_link
    instead of around the sensor.
    Rename to make the semantics self-documenting:
    - Dynamic vars (parameter source):
    ESTIMATED_SENSOR_MAX_RANGE     -> ESTIMATED_OBSERVATION_RADIUS
    INSTANTANEOUS_SENSOR_MAX_RANGE -> INSTANTANEOUS_OBSERVATION_RADIUS
    - YAML param keys:
    max_sensor_range_filter_coefficient -> observation_radius_filter_coefficient
    absolute_minimum_sensor_range       -> absolute_minimum_observation_radius
    - Mirroring C++ symbol renames in state_, params_, and methods
    (doInitializeEstimatedObservationRadius etc.). GUI label tweaked.
    All legacy names remain working as deprecated aliases (dynamic vars are
    double-published; YAML keys fall back via cfg.getOrDefault). A one-shot
    warning is emitted at init when the loaded YAML still references any
    legacy name; aliases can be removed in a future release.
    The user-facing env var MOLA_ABS_MIN_SENSOR_RANGE is intentionally kept
    unchanged: the YAML ${VAR|default} substitution is single-pass, so the
    elegant chained-default pattern doesn't aliasing it cleanly, and a
    setenv shim has caveats for callers that load pipelines outside of the
    canonical entry points. The misnomer survives at the env-var name only;
    docs already point to the renamed concept.
    Also clarify in lidar3d-gicp.yaml that the Lu221E cube deadzone is
    intentionally vehicle-anchored (centered at base_link, not at the
    sensor) so it covers the vehicle body and a person standing next to the
    robot regardless of where the sensor is mounted. Users who additionally
    want a sensor-anchored cut can layer one on via observations_prefilter_file.
    No behavioral change.
  * Merge branch 'Zeal-Robotics-perf/prewarm-icp-search-on-startup' into develop
  * perf(initialize): pre-warm ICP search structures for preloaded local maps
    When the local map is loaded from disk via load_existing_local_map (the
    multi-session SLAM / localization-only path), each layer that implements
    mp2p_icp::IcpPrepareCapable defers building its ICP search structures
    (per-keyframe global-frame cloud materialization, merged submap
    construction, KD-tree build, ...) until the first call to
    mp2p_icp::ICP::align(). For a non-trivial preloaded map this is
    seconds of work that blocks the lidar worker on the very first scan,
    backs the bag-feed up, and freezes the GUI.
    Move that cost to startup by walking state_.local_map->layers right
    after load_from_file and calling icp_get_prepared_as_global() on
    every IcpPrepareCapable layer, using the configured initial pose as the
    reference point. The total amount of work is unchanged; it just happens
    alongside load_from_file (where the user already expects a delay)
    instead of during real-time playback.
    If the actual first ICP estimate ends up far from the initial pose, the
    selected sub-keyframe set may be rebuilt then, but the per-keyframe
    point-cloud and cache data is already materialized so that rebuild is
    cheap.
  * Merge pull request #59 <https://github.com/MOLAorg/mola_erathos_slam/issues/59> from Zeal-Robotics/feat/expose-transform-tolerance-env-vars
    feat(launch): expose transform_tolerance and transform_publish_period
  * feat(launch): expose transform_tolerance and transform_publish_period
    Plumbs the two new BridgeROS2 params through the standard
    MOLA_ROS2_* env-var convention so they can be overridden from
    ros2 launch without editing YAML:
    MOLA_ROS2_TRANSFORM_TOLERANCE       default 0.1
    MOLA_ROS2_TRANSFORM_PUBLISH_PERIOD  default 0.05 (20 Hz; 0 disables)
    Defaults match BridgeROS2 and the AMCL / slam_toolbox / RTAB-Map
    convention, so consumers can lookupTransform(map, base_link, now())
    without tf2 ExtrapolationException.
  * Add MOLA_DESKEW_IGNORE_ACCELEROMETER env var
  * consistent ros2 topic name var MOLA_ODOMETRY_TOPIC for both offline/online
  * Merge pull request #58 <https://github.com/MOLAorg/mola_erathos_slam/issues/58> from MOLAorg/feat/ros2-diagnostics
    Implement new mola_kernel diagnostics API
  * clang format
  * diagnostics: use wall-clock reception time for input-data staleness check
    last_obs_timestamp stores the sensor hardware timestamp which may not be
    synchronized to system time (GPS-disciplined lidars, unsync'd clocks, etc.).
    Introduce last_obs_reception_time (set via mrpt::Clock::now() when each scan
    arrives) and use it for the Input Data stale/error age computation so the check
    reflects actual data flow rather than sensor-vs-host clock drift.
    Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
  * docs/launch: alphabetical ordering for use_* args; drop spurious tf remap from aggregator
    - mola_lo_ros_node.rst: move use_diagnostic_aggregator before use_imu_for_lio
    - launch.py: remove remappings=tf_remaps from diagnostic_aggregator node (it
    only needs diagnostics topics, not tf)
    Co-Authored-By: Claude Sonnet 4.6 <mailto:noreply@anthropic.com>
  * diagnostics: fix ICP quality startup false-ERROR, timing period source, and overall scope
    - ICP Quality: treat as STALE (not ERROR) until state_.last_icp_timestamp is set
    - Timing: derive sensorPeriod from observed scan interval (last_observed_scan_period_sec)
    rather than params_.min_time_between_scans throttle threshold
    - Overall Status: iterate only over entries added by this provider (startIndex..end)
    so unrelated providers' diagnostics do not influence the overall level
    Co-Authored-By: Claude Sonnet 4.6 <mailto:noreply@anthropic.com>
  * diagnostics: validate threshold ordering in Parameters::Diagnostics::initialize
    Assert that warn < error for icp_quality, input_stale_sec, and dropped_ratio,
    and that all values are in their valid ranges, so misconfiguration cannot
    silently invert severities at runtime.
    Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
  * Add optional diagnostic_aggregator launch + sample config
    Off by default (use_diagnostic_aggregator:=True to enable). Intended for
    isolated bring-up/demos; in a larger stack a central aggregator should
    group LidarOdometry statuses instead.
    Co-Authored-By: Claude Opus 4.7 <mailto:noreply@anthropic.com>
  * docs: add REP-107 diagnostics page for MOLA-LO
    Co-Authored-By: Claude Opus 4.7 <mailto:noreply@anthropic.com>
  * Implement new mola_kernel diagnostics API (exported to ROS2 via BridgeROS2)
  * ros2 launch: improved configuration validator
  * ros2 launch: Add missing mola_bridge_odometry_frame argument; fix broken behavior
  * Merge pull request #57 <https://github.com/MOLAorg/mola_erathos_slam/issues/57> from MOLAorg/feat/clarify-usage-modes
    docs: clarify usage modes; cli: add /tf selection args
  * ros2 launch: safe guard against importing duplicated odometry
  * ros2 launch: add wheels odometry arguments; fix opaque function must come last
  * docs: clarify usage modes; cli: add /tf selection args
  * Auto-transition to active mode after state estimator convergence
  * GUI: Add message when lidar stream starts
  * Merge pull request #55 <https://github.com/MOLAorg/mola_erathos_slam/issues/55> from MOLAorg/feat/add-odom-frame-env-var
    ros2 launch: export MOLA_TF_ESTIMATED_ODOMETRY
  * ros2 launch: export MOLA_TF_ESTIMATED_ODOMETRY from mola_lo_reference_frame for consistency
  * Merge pull request #54 <https://github.com/MOLAorg/mola_erathos_slam/issues/54> from MOLAorg/fix-missing-ros2-launch-base-link
    BUGFIX: Changing base_link in ros2 launch didn't propagate to LO
  * BUGFIX: Changing base_link in ros2 launch didn't propagate to LO
  * Merge pull request #45 <https://github.com/MOLAorg/mola_erathos_slam/issues/45> from MOLAorg/fix/init-from-gps-imu
    Support initialization from state estimator
  * Support initialization from state estimator
  * Contributors: Jose Luis Blanco-Claraco, Robin Van Cauwenbergh
  * Rename the family of *_sensor_* pipeline names that actually meant
    observation-from-``base_link`` to *_observation_radius_* /
    ``*_OBSERVATION_RADIUS`` to clarify semantics. The legacy names remain as
    deprecated aliases so existing pipelines keep working unchanged; a
    one-shot warning is emitted at init when the loaded YAML still references
    any legacy name. The aliases will be removed in a future release.
    
      * Dynamic variables: ``ESTIMATED_SENSOR_MAX_RANGE`` →
        ``ESTIMATED_OBSERVATION_RADIUS``, ``INSTANTANEOUS_SENSOR_MAX_RANGE`` →
        ``INSTANTANEOUS_OBSERVATION_RADIUS``.
      * YAML param keys: ``max_sensor_range_filter_coefficient`` →
        ``observation_radius_filter_coefficient``, ``absolute_minimum_sensor_range``
        → ``absolute_minimum_observation_radius``.
    

 -- Jose-Luis Blanco-Claraco <joseluisblancoc@gmail.com>  Tue, 28 Apr 2026 22:00:00 -0000

ros-jazzy-mola-lidar-odometry (2.0.0-1noble) noble; urgency=high

  * Merge pull request #53 <https://github.com/MOLAorg/mola_lidar_odometry/issues/53> from MOLAorg/feat/use-imu-grav-align
    Use IMU readings to estimate gravity up vector as ICP prior constraint
  * Add formal CLA
  * mola-cli-launch files: apply yaml format
  * FIX: mola-lidar-odometry-cli now can handle the two types of GPS messages too
  * gui stats: more robust sensor rate estimation (include gnss now too)
  * docs: add layer name to pipeline table
  * gicp pipeline: expose new KF-metric map parameters as optional env vars
  * ros2 launch: add new argument 'gpsfix_topic_name' for GPSFix messages
  * Merge pull request #50 <https://github.com/MOLAorg/mola_lidar_odometry/issues/50> from MOLAorg/feat/refactor-gui
    Port to the new backend agnostic GUI API
  * Port to the new backend agnostic GUI API
  * ROS2 node and ros2bags: support gps_msgs/GpsFix messages too
  * On bad ICP, do neither publish or show deskewed scans
  * gicp pipeline: expose more env vars for KF map params
  * Merge pull request #48 <https://github.com/MOLAorg/mola_lidar_odometry/issues/48> from MOLAorg/feat/selective-icp-log
    New env var to debug bad ICP cases: MOLA_WRITE_DEBUG_ICP_LOG_IF_QUALITY_UNDER
  * New env var to debug bad ICP cases: MOLA_WRITE_DEBUG_ICP_LOG_IF_QUALITY_UNDER
  * CSV stats: include icp_quality too
  * Merge pull request #47 <https://github.com/MOLAorg/mola_lidar_odometry/issues/47> from MOLAorg/better-deskew-performance
    More efficient deskew and visualization
  * refactor deskew and viz updates
  * Ensure no detached threads (#46 <https://github.com/MOLAorg/mola_lidar_odometry/issues/46>)
    * Fix: potential miss error report saving mm files
    * Ensure no detached threads for disk io
    * minor fixes
  * fix obsolete usage of ament_target_dependencies()
  * Remove no longer needed param period_publish_new_localization (Removed in BridgeROS2)
  * Fix: provide a mechanism to read 2D lidar from ROS (#43 <https://github.com/MOLAorg/mola_lidar_odometry/issues/43>)
    * Fix: provide a mechanism to read 2D lidar from ROS
    * docs: add new ros launch argument lidar_topic_type
    * doc: better roslaunch arg description
  * Fix building against older versions of mrpt & mp2p_icp
  * Saving simplemap with lazy-load is done in its own detaled thread
  * Merge pull request #40 <https://github.com/MOLAorg/mola_lidar_odometry/issues/40> from MOLAorg/feat/more-clang-tidy-checks
    Add many more clang-tidy checks
  * Remove thread_local aux variable for viz camera rotation
  * Increase level of clang-tidy warnings, and fix them
  * Copyright year bump
  * Merge pull request #39 <https://github.com/MOLAorg/mola_lidar_odometry/issues/39> from MOLAorg/feat/optional-prefilter-pipeline
    Add optional prefilter pipeline for all ICP methods
  * Add many more clang-tidy checks
  * Add optional prefilter pipeline for all ICP methods
  * Contributors: Jose Luis Blanco-Claraco

 -- Jose-Luis Blanco-Claraco <joseluisblancoc@gmail.com>  Wed, 01 Apr 2026 22:00:00 -0000

ros-jazzy-mola-lidar-odometry (1.3.1-1noble) noble; urgency=high

  * Merge pull request #36 from MOLAorg/feat/use-generic-map-fields
    Use CGenericPointsMap to propagate all sensor per-point fields thru mapping pipelines
  * Support to visualize clouds in MOLA Viz recolorized by any cloud point field
  * Use CGenericPointsMap to propagate all sensor per-point fields thru mapping pipelines
  * Contributors: Jose Luis Blanco-Claraco

 -- Jose-Luis Blanco-Claraco <joseluisblancoc@gmail.com>  Sun, 28 Dec 2025 23:00:00 -0000

ros-jazzy-mola-lidar-odometry (1.3.0-1noble) noble; urgency=high

  * Add CI and documentation badges to README
    Added badges for CI build, clang-format, documentation, and code coverage.
  * Add option 'use_imu_orientation' to disable using IMU orientation for initialization
  * docs: add table clarifying localmap types
  * Make it compatible with observations w/o cov
  * Discard GPS readings with invalid cov matrix
  * Add warning if sensor stamps go backwards in time
  * Update usage instructions for mola_lo_apps.rst
    Added usage instructions for LIO with Ouster in mola_lo_apps.rst.
  * Contributors: Jose Luis Blanco-Claraco

 -- Jose-Luis Blanco-Claraco <joseluisblancoc@gmail.com>  Sun, 14 Dec 2025 23:00:00 -0000

ros-jazzy-mola-lidar-odometry (1.2.2-1noble) noble; urgency=high

  * Add quick instructions to launch mola-lo-gui on an Ouster dataset
  * Add option to store persistent settings and check version
  * Fix: missing publication of LocalMap if BridgeROS2 loads after this module.
  * Contributors: Jose Luis Blanco-Claraco

 -- Jose-Luis Blanco-Claraco <joseluisblancoc@gmail.com>  Fri, 07 Nov 2025 23:00:00 -0000

ros-jazzy-mola-lidar-odometry (1.2.1-1noble) noble; urgency=high

  * Fix build against upcoming mrpt v2.15.0
  * Reduce the limit of published points to avoid FoxGlove WS overflow
  * docs: show first usage with rosbags & rawlogs
  * Contributors: Jose Luis Blanco-Claraco

 -- Jose-Luis Blanco-Claraco <joseluisblancoc@gmail.com>  Mon, 27 Oct 2025 23:00:00 -0000

ros-jazzy-mola-lidar-odometry (1.2.0-1noble) noble; urgency=high

  * Tune ROS2 publication rates for reduced viz load
  * New option 'publish_deskewed_scans'
  * Fix unit tests
  * ros2 launch: sort arguments
  * Contributors: Jose Luis Blanco-Claraco

 -- Jose-Luis Blanco-Claraco <joseluisblancoc@gmail.com>  Mon, 20 Oct 2025 22:00:00 -0000

ros-jazzy-mola-lidar-odometry (1.1.0-1noble) noble; urgency=high

  * Docs: describe the new GICP and LIO pipelines
  * Update rviz settings
  * Prefer to publish deskewed clouds in 'map' frame
  * FIX: ROS2 interface must use correct cloud and pose timestamps
  * Update and fix LIO ROS2 launch demo and docs
  * ROS: support rendering deskewed clouds
  * Replace deprecated ament_target_dependencies() with pure cmake
  * Publish deskewed scans for ROS visualization
  * Make use of ConstPtr for processing incoming observations
  * Code clean up: remove macros for building against very old mola_kernel versions
  * ros2 launch: add argument 'mola_tf_base_link'
  * Contributors: Jose Luis Blanco-Claraco

 -- Jose-Luis Blanco-Claraco <joseluisblancoc@gmail.com>  Sun, 19 Oct 2025 22:00:00 -0000

ros-jazzy-mola-lidar-odometry (1.0.0-1noble) noble; urgency=high

  * Merge pull request #26 from MOLAorg/feature/better-lio
    Better LIO & new GICP pipeline
  * CI: Run on ROS testing only
  * Add custom 'name' to pipeline stages for profiler
  * Update docs: Show example of use for MOLA_TF_BASE_LINK=os_sensor
  * Feature: add option to save deskewed clouds
  * refactor part of processScan() for code clarity
  * fix clang-tidy warnings
  * New config flag MOLA_SAVE_MM to save final metric map at session end
  * add option to re-colorize clouds by intensity (local map)
  * Add a clear message at initialization showing the name of the used pipeline
  * Fix macro to detect newer mp2p_icp version
  * cli app: show LO pose
  * Refactor the way Lidar scans are enqueued depending on LO/LIO usage
  * ICP pipelines: renamed old 'default' as 'icp', and add new 'default' symlink pointing to 'gicp'
  * cli: use MOLA YAML parser for state estimation files
  * Fix kitti eval scripts
  * cli: fix expected contents of state estimation param files
  * Debug traces: more covariance data
  * GUI: Show keyframe stats
  * configurable icp quality setpoint
  * Fix lidar rate for multiple lidars
  * New param to change the color of trajectory in the GUI
  * reset local viz clouds when re-localizing
  * gicp pipeline: use 2 resolutions (icp / map)
  * Auto-scale intensity for visualization
  * Less aggressive P controller for adaptive sigma
  * Use adaptive sampler
  * Update to latest mp2p_icp library API
  * Progress optimizing new gicp pipeline
  * New GICP pipeline file
  * Fix for latest mola imu API changes
  * Send velocity and orientations to the local velocity buffer
  * Better visualization of current / past clouds, with configurable colormaps from the yaml file
  * Move to the new deskew_method flag in mp2p_icp
  * README.md: update bibtex reference
  * Move IMU initialization to package mola_imu_preintegration
  * IMU initializer moved out to the mola_imu_preintegration package for better reusability
  * PitchRoll init: Add to-do note on IMU bias
  * GUI: show lidar & imu rates
  * remove obsolete pipeline
  * Fix typos in YAML comments
  * Configurable GUI background color
  * Implement display dense local map (decaying deskewed clouds)
  * Implement visualization of past clouds as transparent, decaying clouds
  * Add missing header for latest mola_kernel
  * option to show mulran dataset clouds with their real intensity channel
  * Visualization: show the deskewed current observation instead of raw
  * Contributors: Jose Luis Blanco-Claraco

 -- Jose-Luis Blanco-Claraco <joseluisblancoc@gmail.com>  Sun, 12 Oct 2025 22:00:00 -0000

ros-jazzy-mola-lidar-odometry (0.9.0-1noble) noble; urgency=high

  * FIX: bug in formula for pitch-roll initialization from IMU
  * Store local IMU velocity buffer in key-frame simplemaps
  * mola-lidar-odometry-cli: New CLI arguments to support datasets with IMUs
  * Implement precise IMU-based deskew (requires latest mp2p_icp library)
  * fix clang-format
  * Modernize copyright notices
  * rosbag2 mola-cli launch file: add MOLA_ROS2BAG_EXPORT_TO_RAWLOG_FILE optional env var
  * Contributors: Jose Luis Blanco-Claraco

 -- Jose-Luis Blanco-Claraco <joseluisblancoc@gmail.com>  Mon, 25 Aug 2025 22:00:00 -0000

ros-jazzy-mola-lidar-odometry (0.8.0-1noble) noble; urgency=high

  * Publish mp2p_icp metric map metadata, if existing in loaded maps.
  * state estimation config yaml file: expose IMU sensor name env var
  * Update mola_lo_pipelines.rst: explicitly show an example of using the NDT pipeline
  * ros2 launch: add new argument to control the scan validity filter based on minimum point count (now, enabled by default)
  * Update broken link to ROS Index
  * mola-lidar-odometry-cli: now also forward raw sensor data to state estimator
  * Fix build against mola <1.8.0
  * Docs: better explain existing variables to override sensor poses
  * gui option: implement show as orthographic camera
  * Contributors: Jose Luis Blanco-Claraco

 -- Jose-Luis Blanco-Claraco <joseluisblancoc@gmail.com>  Thu, 05 Jun 2025 22:00:00 -0000

ros-jazzy-mola-lidar-odometry (0.7.3-1noble) noble; urgency=high

  * feature: new threshold to discard state estimation as invalid if uncertainty is too high
  * Fixed unit tests in CI
  * Prepare GUI for ortho camera option
  * progress implementing init pitch/roll from IMU
  * pipelines YAML files reformated with RedHat YAML formatter
  * Update env var name to explicitly mention LO: MOLA_LO_INITIAL_LOCALIZATION_METHOD
  * docs: on initial localization methods
  * ROS2 launch: Add new mola_state_estimator_reference_frame argument.
    It should be used together with mola_lo_reference_frame to use an alternative reference map TF frame than the default map.
  * Fix wrong namespace in class name (it worked anyway because of a fall-back mechanism using unqualified names)
  * Expose env vars to change the reference frame_id for smoother (MOLA_TF_MAP)
  * fix: potential missing publication of updated poses if there is no map subscriber
  * lidar 3d pipeline: add rendering options for local map
  * Contributors: Jose Luis Blanco-Claraco

 -- Jose-Luis Blanco-Claraco <joseluisblancoc@gmail.com>  Sat, 24 May 2025 22:00:00 -0000

ros-jazzy-mola-lidar-odometry (0.7.2-1noble) noble; urgency=high

  * better integration of clang-tidy, colcon_defaults, and clangd with vscode
  * Expose two more env vars: MOLA_MAP_CLOUD_DECIMATION, MOLA_ICP_CLOUD_DECIMATION
  * FIX: also initial pose for localmap
  * BUGFIX: Initial twist was wrong for custom initial poses
  * Contributors: Jose Luis Blanco-Claraco

 -- Jose-Luis Blanco-Claraco <joseluisblancoc@gmail.com>  Tue, 22 Apr 2025 22:00:00 -0000

ros-jazzy-mola-lidar-odometry (0.7.1-1noble) noble; urgency=high

  * FIX: Handle correctly the case of input scans with non-normal numbers
  * docs: format of ros2 launch argument
  * FIX: reset map to start again might lead to divergence; Add new 'reset_state' command via MOLA dynamic variables
  * Force requiring valid poses for IMU and GNSS inputs
  * Refactor implementation source into several smaller files
  * FIX: mola-lo didn't exit due to waiting ICP queue if fed faster than ICP processing
  * FIX: mola-lo-gui apps may show duplicated UI controls in particular circumstances
  * Drop frames warning message now tells the exact drop ratio
  * Initial localization method is now loadable from yaml or ros2 launch file
  * MOLA-LO no longer subscribes to wheels odometry. That is now delegated directly to state estimation modules.
  * Add new ROS2 launch argument: forward_ros_tf_odom_to_mola
  * Contributors: Jose Luis Blanco-Claraco

 -- Jose-Luis Blanco-Claraco <joseluisblancoc@gmail.com>  Fri, 14 Mar 2025 23:00:00 -0000

ros-jazzy-mola-lidar-odometry (0.7.0-1noble) noble; urgency=high

  * Implement new mola_kernel diagnostics API
  * Ensure map is published after ROS2 bridge is already listening (FIXES: potential loss of map publication if MM map is given via env var)
  * FIX: Proper configurable dropped frames mechanism and stats
  * FIX: Update GUI, publish maps, correctly independently of whether MolaGUI is enabled
  * launch: fix localization source name
  * FIX: Do not ever reset the map when in localization mode
  * Fix: refresh GUI with initial map
  * Allow dropping LiDAR frames in too slow for real-time, but not any other observation type
  * FIX: ensure georef metadata is published when map_load service is called
  * rename kitti ros2 demo file to unclutter ros2 launch autocompletion
  * Add ros launch argument 'use_state_estimator'
  * FIX: publish georeferencing metadata at start up
  * Add ROS2 launch arguments to select an state_estimator method
  * update citation
  * Add more params to smoother state estimation default YAML file
  * Add env variable MOLA_STATE_ESTIMATOR_PUBLISH_RATE to control filtered pose update rate
  * Add new env var MOLA_NAVSTATE_ENFORCE_PLANAR_MOTION and ros2 launch argument for it
  * Add new ros launch argument mola_footprint_to_base_link_tf
  * Fix expected pose format in yaml
  * ROS2 launch: shutdown if mvsim crashes
  * Fix parse error with default .mm and .simplemap launch arguments
  * Contributors: Jose Luis Blanco Claraco, Jose Luis Blanco-Claraco

 -- Jose-Luis Blanco-Claraco <joseluisblancoc@gmail.com>  Fri, 21 Feb 2025 23:00:00 -0000

ros-jazzy-mola-lidar-odometry (0.6.2-1noble) noble; urgency=high

  * ros2 launch: add .mm and .simplemap optional initial map arguments
  * All exhaustive docs on ros2-related mola launch YAML files with the meaning of all BridgeROS2 parameter
  * Delegate publishing georeference info to BridgeROS2
  * Contributors: Jose Luis Blanco-Claraco

 -- Jose-Luis Blanco-Claraco <joseluisblancoc@gmail.com>  Wed, 12 Feb 2025 23:00:00 -0000

ros-jazzy-mola-lidar-odometry (0.6.1-1noble) noble; urgency=high

  * Do not re-publish the map if it does not change, e.g. in localization-only mode
  * ros2 launch file: two new arguments 'mola_lo_pipeline' and 'generate_simplemap'
  * Default 3D-LO pipeline: Add new env var 'MOLA_LOCALMAP_LAYER_NAME', useful when localizing with prebuilt maps
  * Merge pull request #12 from r-aguilera/develop
    fix launch file params
  * fix launch file params
  * Contributors: Jose Luis Blanco-Claraco, Raúl Aguilera

 -- Jose-Luis Blanco-Claraco <joseluisblancoc@gmail.com>  Sat, 25 Jan 2025 23:00:00 -0000

ros-jazzy-mola-lidar-odometry (0.6.0-1noble) noble; urgency=high

  * Fix: publish map on first iteration
  * Publish georeferencing frames (utm, enu) when loading a metric map with georef. info
  * ros2 lidar odometry launch: add ros argument for /tf reference_frame
  * ROS2 kitti Lidar-Odometry demo: fixed to publish correct /tf's
  * Add new frame parameters to pipeline YAML files
  * Two new parameters (publish_reference_frame, publish_vehicle_frame), to have explicit control on frame names published to both, ROS, and the MOLA state_estimator
  * ROS2 service call for load_map(): more concise error messages
  * Contributors: Jose Luis Blanco-Claraco

 -- Jose-Luis Blanco-Claraco <joseluisblancoc@gmail.com>  Mon, 20 Jan 2025 23:00:00 -0000

ros-jazzy-mola-lidar-odometry (0.5.4-1noble) noble; urgency=high

  * Add a debug helper env var MOLA_BRIDGE_ROS2_EXPORT_TO_RAWLOG_FILE
  * Do not reset the state estimator on a bad ICP, allowing merging from other sensors or extrapolating.
  * Docs: add missing ros2 launch args
  * More ROS2 launch arguments
  * Contributors: Jose Luis Blanco-Claraco

 -- Jose-Luis Blanco-Claraco <joseluisblancoc@gmail.com>  Wed, 15 Jan 2025 23:00:00 -0000

ros-jazzy-mola-lidar-odometry (0.5.3-1noble) noble; urgency=high

  * FIX: mola_state_estimator_simple must be available as a build dep too for easier usage of mola-lo-cli
  * Contributors: Jose Luis Blanco-Claraco

 -- Jose-Luis Blanco-Claraco <joseluisblancoc@gmail.com>  Tue, 14 Jan 2025 23:00:00 -0000

ros-jazzy-mola-lidar-odometry (0.5.2-1noble) noble; urgency=high

  * Merge pull request #11 from MOLAorg/10-bad-first-icp-re-starting-from-scratch-with-a-new-local-map
    Fix NaN pointcloud radius in doInitializeEstimatedMaxSensorRange()
  * Unit tests: add test run against MulRan dataset fragment (Lidar+IMU)
  * cli: fix name of example pipeline file when --help invoked
  * unit tests: fix wrong usage of state estimator yaml file
  * mola-lo-gui-mulran: show IMU & GPS data in GUI
  * Define a sensible value for maxRange
  * Fix cmake warning when built w/o mola_state_estimation_simple sourced in the env
  * Contributors: Jose Luis Blanco-Claraco

 -- Jose-Luis Blanco-Claraco <joseluisblancoc@gmail.com>  Fri, 10 Jan 2025 23:00:00 -0000

ros-jazzy-mola-lidar-odometry (0.5.1-1noble) noble; urgency=high

  * mola-lidar-odometry-cli: add flags to select the state estimation method
  * Contributors: Jose Luis Blanco-Claraco

 -- Jose-Luis Blanco-Claraco <joseluisblancoc@gmail.com>  Mon, 06 Jan 2025 23:00:00 -0000

ros-jazzy-mola-lidar-odometry (0.5.0-1noble) noble; urgency=high

  * cmake test logic: add find_package() for state_estimation_simple
  * Merge pull request #7 from MOLAorg/wip/new-state-estimators
    New state estimators (Merge after MOLA 1.5.0 is installable via apt)
  * Split state estimation params so each implementation has its own yaml file
  * CI: build against both, ROS testing and stable
  * Add new state estimator module in all MOLA-CLI yaml files
  * Update to new state estimation packages
  * Reorganization such as state estimator is now an independent external module
  * docs: add new ros-arg publish_localization_following_rep105
  * FIX: publish local map even when not active
  * Contributors: Jose Luis Blanco-Claraco

 -- Jose-Luis Blanco-Claraco <joseluisblancoc@gmail.com>  Sat, 28 Dec 2024 23:00:00 -0000

ros-jazzy-mola-lidar-odometry (0.4.1-1noble) noble; urgency=high

  * ROS2 launch: add ros argument for new option publish_localization_following_rep105
  * rviz2 demo file: better orbit view
  * ROS2 config file: define env vars for all tf frames (odom, map, base_link)
  * Contributors: Jose Luis Blanco-Claraco

 -- Jose-Luis Blanco-Claraco <joseluisblancoc@gmail.com>  Thu, 19 Dec 2024 23:00:00 -0000

ros-jazzy-mola-lidar-odometry (0.4.0-1noble) noble; urgency=high

  * demo rviz file: fix lidar topic name
  * Include /tf remaps too in ros2 launch
  * mola launch for ROS 2: Add placeholder for ros args parsing
  * mola launch for ROS 2: add env variables to quickly control verbosity of each module.
    Env. vars. are:  MOLA_VERBOSITY_MOLA_VIZ, MOLA_VERBOSITY_MOLA_LO,MOLA_VERBOSITY_BRIDGE_ROS2 (Default: INFO)
  * Support for ROS2 namespaces in launch file
  * docs; and fix launch var typo
  * ROS 2 launch: add more ros args
  * move MOLA-LO ROS2 docs to the main MOLA repo
  * Expose one more runtime param: generate_simplemap
  * clarify docs on sensor input topic names
  * runtime parameters: update in GUI too
  * publish ICP quality as part of localization updates
  * mola module name changed: 'icp_odom' -> 'lidar_odom'
  * Do not publish localization if ICP is not good
  * Expose runtime parameters using MOLA v1.4.0 configurable parameters: active, mapping_enabled
  * docs clarifications
  * map_load service: allow not having a .simplemap file and don't report it as an error
  * FIX: motion model handling during re-localization
  * Implement map_save
  * reset adaptive sigma upon relocalization
  * Implement map_load; Implement relocalize around pose
  * Forward IMU readings to the navstate fusion module
  * CI and readme: remove ROS2 iron
  * Merge branch 'wip/map_load_save' into develop
  * docs: add ref to yaml extensions
  * Add docs on 3D-NDT pipeline and demo usage with Mulran
  * parameterize maximum_sigma
  * CLI: add flag to retrieve all twists in a file; avoid use of "static" variables
  * LO: Add a getter for the latest pose and twist
  * doc: explain "no tf" error message
  * tune 3D-NDT defaults
  * Kitti and Mulran evaluation scripts: extend so they can be run with other pipelines
  * ros2 launch: Add 'use_rviz' argument
  * NDT pipeline: expose max sigma as parameter too
  * Avoid anoying warning message when not really needed
  * Extend options for GNSS initialization
  * Add docs on mola-lo-gui-rawlog
  * Default pipeline: reduce density of keyframes in simplemap
  * Docs: mola_lo_apps.rst fix PIPELINE_YAML var name
  * Update mola_lo_pipelines.rst: fix format
  * recover passing var args to mola-lo-gui-rosbag2 script
  * UI: show instantaneous max. sensor range too
  * FIX: formula for the estimated max. sensor range fixed for asymmetric cases
  * add new visualization param ground_grid_spacing
  * viz: grow ground grid as the local map grows
  * FIX: disabling visualization of raw observations left last raw observation rendered
  * fix: separate GPS topic and sensorLabel variables
  * Consistent GPS topic name
  * Add another env variable: MOLA_LOCAL_VOXELMAP_RESOLUTION
  * Expose new param for local map max size
  * enable the relocalize API
  * Expose fixed sensor pose coords as optional env variables
  * Readme: add ROS badges for arm64 badges
  * GitHub actions: use ROS2-testing packages
  * Contributors: Jose Luis Blanco-Claraco

 -- Jose-Luis Blanco-Claraco <joseluisblancoc@gmail.com>  Tue, 17 Dec 2024 23:00:00 -0000

ros-jazzy-mola-lidar-odometry (0.3.3-1noble) noble; urgency=high

  * default 3D pipeline: Expose a couple more parameters as env variables
  * Depend on new mrpt_lib packages (deprecate mrpt2)
  * Contributors: Jose Luis Blanco-Claraco

 -- Jose-Luis Blanco-Claraco <joseluisblancoc@gmail.com>  Sat, 31 Aug 2024 22:00:00 -0000

ros-jazzy-mola-lidar-odometry (0.3.2-1noble) noble; urgency=high

  * Support input dataset directories for split bags
  * Contributors: Jose Luis Blanco-Claraco

 -- Jose-Luis Blanco-Claraco <joseluisblancoc@gmail.com>  Sun, 25 Aug 2024 22:00:00 -0000

ros-jazzy-mola-lidar-odometry (0.3.1-1noble) noble; urgency=high

  * add missing exec dependencies to package.xml for mola-lo-* commands.
  * Contributors: Jose Luis Blanco-Claraco

 -- Jose-Luis Blanco-Claraco <joseluisblancoc@gmail.com>  Wed, 21 Aug 2024 22:00:00 -0000

ros-jazzy-mola-lidar-odometry (0.3.0-1noble) noble; urgency=high

  * First public release
  * Contributors: Jose Luis Blanco-Claraco

 -- Jose-Luis Blanco-Claraco <joseluisblancoc@gmail.com>  Tue, 13 Aug 2024 22:00:00 -0000


