Top AI Repos — open-source AI, indexed and scored
Top AI Repos tracks AI repositories on GitHub and answers two different questions about each one: is it moving right now, and would you bet a product on it.
Top AI Repos tracks AI repositories on GitHub and answers two different questions about each one: is it moving right now, and would you bet a product on it.
3D LIDAR Localization using pointcloud map in ROS 2 (Not SLAM)
| Date | Stars |
|---|---|
| 2026-07-24 | 536 |
| 2026-07-25 | 536 |
| 2026-07-28 | 536 |
| 2026-07-30 | 536 |
| 2026-08-09 | 542 |
| 2026-08-17 | 544 |
| 2026-08-18 | 545 |
| 2026-08-20 | 545 |
| 2026-08-21 | 547 |
| 2026-08-23 | 548 |
| 2026-08-25 | 548 |
| 2026-08-26 | 549 |
| 2026-08-27 | 548 |
| 2026-08-28 | 551 |
| 2026-09-03 | 552 |
| 2026-09-08 | 553 |
| 2026-09-13 | 552 |
| 2026-09-18 | 553 |
| 2026-09-19 | 552 |
| 2026-09-20 | 555 |
Today
+3 stars today
This week
+3 stars this week
This month
+8 stars this month
Momentum
30.0
growth rate 0.54%/day
<div align="center">
<h1>lidar_localization_ros2</h1>
<p><strong>Map-based 3D LiDAR localization for ROS 2 and Nav2.</strong></p>
<p>
<a href="https://github.com/rsasaki0109/lidar_localization_ros2/actions/workflows/main.yml">
<img alt="build" src="https://github.com/rsasaki0109/lidar_localization_ros2/actions/workflows/main.yml/badge.svg">
</a>
<img alt="ROS 2 Jazzy" src="https://img.shields.io/badge/ROS%202-Jazzy-2563eb">
<img alt="ROS 2 Humble" src="https://img.shields.io/badge/ROS%202-Humble-compatible-1f5b99">
<img alt="License BSD 2 Clause" src="https://img.shields.io/badge/license-BSD--2--Clause-6b46c1">
</p>
<img src="./images/path.png" alt="LiDAR localization path over pointcloud map" width="720">
<p><a href="./docs/koide_gif_gallery.md">Explore the complete Koide indoor/outdoor GIF gallery →</a></p>
</div>
## Features
- NDT/GICP localization against `.pcd` and `.ply` maps
- standalone, Nav2, and Livox MID-360 launch configurations
- odometry/IMU prediction, scan deskew, diagnostics, and guarded recovery
- rosbag demo and regression tools
ROS 2 Jazzy with NDT_OMP is the recommended starting point. Continuous-time deskew is
enabled by default and safely leaves scans unchanged until point timing and motion data
are ready. Guarded global initialization is enabled automatically when quickstart is
given a matching occupancy map. See [v1 status](docs/v1_status.md) for validated scope
and limitations.
## Install
```bash
mkdir -p ~/lidarloc_ws/src
cd ~/lidarloc_ws/src
git clone https://github.com/rsasaki0109/lidar_localization_ros2.git
cd lidar_localization_ros2
scripts/bootstrap_colcon_workspace.sh --build
source ~/lidarloc_ws/install/setup.bash
```
For manual builds and no-sudo setup, see [local build](docs/local_build.md).
## Quick Start
Start localization and RViz with one command:
```bash
ros2 run lidar_localization_ros2 quickstart.py \
--profile standalone \
--map /absolute/path/to/map.pcd
```
Quickstart detects unambiguous sensor topics, generates a reusable configuration,
restores only a pose saved against the same map, and verifies tracking. Add the matching
occupancy map or a mapping-run reference CSV for guarded global initialization with
3D NDT scoring:
```bash
ros2 run lidar_localization_ros2 quickstart.py \
--profile mid360 \
--map /absolute/path/to/map.pcd \
--occupancy-map /absolute/path/to/map.yaml
```
Known routes (avoids map-wide BBS corridor aliases):
```bash
ros2 run lidar_localization_ros2 quickstart.py \
--profile mid360 \
--map /absolute/path/to/map.pcd \
--reference-csv /absolute/path/to/mapping_run/reference.csv
```
If no safe candidate is available, it asks for **2D Pose Estimate** in RViz; it never
guesses the origin. See [quickstart and automatic initialization](docs/quickstart.md)
and the [repeat-route site setup](docs/site_setup.md) guide.
Use `--no-auto-initialize` to disable saved-pose restoration and global initialization,
or launch with `use_continuous_time_deskew:=false` to disable deskew.
Common launches:
```bash
# Standalone localization
ros2 launch lidar_localization_ros2 nav2_lidar_localization.launch.py
# Nav2
ros2 launch lidar_localization_ros2 nav2_navigation.launch.py \
map_yaml:=/absolute/path/to/map.yaml
# Livox MID-360
ros2 launch lidar_localization_ros2 mid360_legged_localization.launch.py \
map_path:=/absolute/path/to/map.pcd \
cloud_topic:=/livox/points imu_topic:=/livox/imu
```
Check topics, TF, pose output, and diagnostics with:
```bash
ros2 run lidar_localization_ros2 check_lidar_localization_bringup.py \
--profile standalone
```
## Runtime Contract
The default frames are `map`, `odom`, and `base_link`.
- `/initialpose` is expressed in `map`.
- Standalone mode publishes `map -> base_link`.
- Nav2 mode publishes `map -> odom` and requires an external `odom -> base_link`.
- `use_odom: true` consumes `/odom`; it does not publish odometry TF.
- Static LiDAR and IMU transforms must have only one publisher.
Main Excerpt of 5,482 characters
Read on GitHubRyohei Sasaki · MAP IV · Japan
233
Would you bet a product on this? Bounded 0–100 and slow moving.
matched fp:d46e8f650361812d, topic:ros2, desc:slam