finds.dev← search

// the find

rsasaki0109/lidar_localization_ros2

★ 521 · Python · BSD-2-Clause · updated Jun 2026

3D LIDAR Localization using NDT/GICP and pointcloud map in ROS 2 (Not SLAM)

A ROS 2 package for map-based 3D LiDAR localization using NDT/GICP against a pre-built pointcloud map. It is not SLAM — you need the map already built. Aimed at roboticists running Nav2 stacks on Humble or Jazzy who want a drop-in localizer with IMU preintegration and a bringup diagnostic tool.

The bringup doctor (`check_lidar_localization_bringup.py`) is genuinely useful — it prints OK/WARN/FAIL for each dependency before you start chasing ghost TF problems. The IMU preintegration path shows real numbers: 0.082 m vs 0.163 m RMSE on the Koide outdoor bag, not just a claim. The config generator (`create_lidar_localization_config.py`) produces a matching launch line and doctor command, which cuts the parameter-file-hand-editing loop that wastes hours in any ROS project. The experiment framework in `experiments/` is structured enough to compare variants against fixture snapshots — that is more rigorous than most robotics repos at this star count.

The Istanbul benchmark numbers have uncomfortable variance — the README acknowledges outlier runs at 3.31 m RMSE on identical seeds, which means you cannot trust a single benchmark pass. The global localization path is explicitly experimental and stops at a dry-run artifact; if you need kidnapped-robot recovery in production, this is not it yet. The repo is labeled Python in GitHub's language stats but the core is C++ with Python tooling on top — the mismatch will confuse people expecting a pure Python package. There is no map-building path here; if you don't already have a PCD map from another tool, you are blocked before you start.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →