55<p ><strong >Map-based 3D LiDAR localization for ROS 2, Nav2, and repeatable rosbag evaluation.</strong ></p >
66
77<p >
8- <img alt =" ROS 2 Humble " src =" https://img.shields.io/badge/ROS%202-Humble-1f5b99 " >
8+ <a href =" https://github.com/rsasaki0109/lidar_localization_ros2/actions/workflows/main.yml " >
9+ <img alt="build" src="https://github.com/rsasaki0109/lidar_localization_ros2/actions/workflows/main.yml/badge.svg">
10+ </a >
11+ <img alt =" ROS 2 Jazzy " src =" https://img.shields.io/badge/ROS%202-Jazzy-2563eb " >
12+ <img alt =" ROS 2 Humble compatible " src =" https://img.shields.io/badge/ROS%202-Humble-compatible-1f5b99 " >
913 <img alt =" Release v1.0.0 " src =" https://img.shields.io/badge/release-v1.0.0-2f855a " >
1014 <img alt =" Backend NDT OMP " src =" https://img.shields.io/badge/default-NDT__OMP-4a5568 " >
1115 <img alt =" License BSD 2 Clause " src =" https://img.shields.io/badge/license-BSD--2--Clause-6b46c1 " >
@@ -33,6 +37,46 @@ Current boundary: short public replay, smoke, and controlled regression paths ar
3337Long-horizon robustness on stronger public ` LiDAR + IMU + GT ` data and real robot deployment still
3438need dataset or hardware-specific validation.
3539
40+ v1.1 relocalization stops at a validated dry-run ` /initialpose ` command artifact.
41+ It does not claim automatic runtime recovery or production-grade global relocalization.
42+ See [ docs/v1_1_relocalization.md] ( docs/v1_1_relocalization.md ) .
43+
44+ ## 30-Minute Public Demo
45+
46+ Reproduce map-based localization on the official ** Autoware Istanbul** public dataset:
47+
48+ ``` bash
49+ cd /path/to/lidarloc_ws/repo
50+ source scripts/setup_local_env.sh
51+ scripts/run_public_demo.sh
52+ ```
53+
54+ What it does:
55+
56+ - downloads the Istanbul map + bag when missing
57+ - builds ` lidar_localization_ros2 ` when the overlay is missing
58+ - replays ` 60 s ` of urban localization
59+ - writes ` demo_report.md ` , ` demo_report.json ` , and ` trajectory_xy.png `
60+
61+ Typical first-run time: about ** 15–30 minutes** (network download dominates).
62+ Re-runs with ` --resume ` are much faster.
63+
64+ Latest local smoke on Autoware Istanbul ` 60 s ` (dataset already present, 2026-06-10):
65+
66+ - translation RMSE: ` 1.63 m `
67+ - rotation RMSE: ` 0.19 deg `
68+ - matched samples: ` 102 `
69+ - wall time: about ` 70 s `
70+
71+ Example report output directory:
72+
73+ ``` text
74+ lidarloc_ws/artifacts/public/demo/latest/
75+ demo_report.md
76+ demo_report.json
77+ trajectory_xy.png
78+ ```
79+
3680## Quick Start
3781
3882Expected workspace layout:
@@ -66,6 +110,7 @@ For the full no-sudo local-prefix workflow, see [docs/local_build.md](docs/local
66110| Jetson + 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 ` |
67111| Self-contained Nav2 smoke | ` ros2 run lidar_localization_ros2 run_nav2_demo_smoke --map-yaml /absolute/path/to/map.yaml --initial-pose-x 0.0 --initial-pose-y 0.0 --goal-x 1.0 --goal-y 0.0 ` |
68112| Real-localizer replay smoke | ` ros2 run lidar_localization_ros2 run_nav2_replay_smoke --map-yaml /absolute/path/to/map.yaml --pcd-map-path /absolute/path/to/map.pcd --bag-path /absolute/path/to/bag ` |
113+ | ** 30-minute public demo** | ` source scripts/setup_local_env.sh && scripts/run_public_demo.sh ` |
69114| Public regression | ` source scripts/setup_local_env.sh && scripts/run_public_regression_suite.sh ` |
70115
71116## Nav2 Requirements
@@ -112,6 +157,34 @@ Main outputs:
112157- Public benchmark runs should prefer binary little-endian float32 ` .ply ` maps.
113158- Generated ` .pcd ` maps are useful for inspection, but are not the preferred benchmark path.
114159
160+ ## Latest Public Validation
161+
162+ Regenerate the dashboard from local demo / regression artifacts:
163+
164+ ``` bash
165+ source scripts/setup_local_env.sh
166+ scripts/run_public_validation_dashboard.sh
167+ ```
168+
169+ Outputs:
170+
171+ ``` text
172+ lidarloc_ws/artifacts/public/dashboard/
173+ index.md
174+ index.html
175+ dashboard.json
176+ ```
177+
178+ | Suite | Dataset | What it checks |
179+ | ---| ---| ---|
180+ | Public demo | Autoware Istanbul ` 60 s ` | Star-friendly replay + trajectory report |
181+ | Public regression | Istanbul ` 60 s ` | No-IMU safety gate on public urban replay |
182+ | Public regression | HDL ` hdl_400 ` ` 60 s ` | IMU safety / throughput smoke |
183+ | Release regression | Nav2 reinit supervisor ` 150 s ` | Controlled recovery wrapper behavior |
184+
185+ Historical snapshots and interpretation notes live in
186+ [ docs/public_validation_log.md] ( docs/public_validation_log.md ) .
187+
115188## Validation
116189
117190Fast build check:
@@ -134,15 +207,7 @@ Release-style regression:
134207ros2 run lidar_localization_ros2 run_release_regression_suite.sh
135208```
136209
137- Latest recorded public validation snapshot:
138-
139- - [ docs/public_validation_log.md] ( docs/public_validation_log.md )
140- - ` 2026-05-22 ` , commit ` 2a5f11f ` , release regression ` overall_pass=true `
141- - Istanbul ` 60 s ` no-IMU safety check: ` 1.176 m ` translation RMSE, ` 0.393 deg ` rotation RMSE
142- - HDL ` 60 s ` IMU safety check, two-repeat median: pose rows ` 558.5 -> 553.5 `
143- - Nav2 reinitialization supervisor ` 150 s ` : requested rows ` 944 -> 7 `
144-
145- This snapshot is public replay validation, not Jetson + MID-360 hardware validation.
210+ This validation path is public replay regression, not Jetson + MID-360 hardware validation.
146211
147212## Branch Workflow
148213
@@ -184,11 +249,22 @@ git branch -D <branch>
184249| v1.1 relocalization work | [ docs/v1_1_relocalization.md] ( docs/v1_1_relocalization.md ) |
185250| Experiment interfaces and decisions | [ docs/interfaces.md] ( docs/interfaces.md ) , [ docs/experiments.md] ( docs/experiments.md ) , [ docs/decisions.md] ( docs/decisions.md ) |
186251| Roadmap | [ docs/competitive_roadmap.md] ( docs/competitive_roadmap.md ) |
252+ | Reliability / open issues | [ docs/reliability_roadmap.md] ( docs/reliability_roadmap.md ) |
253+
254+ ## ROS 2 Support
255+
256+ | Distro | Status | CI |
257+ | ---| ---| ---|
258+ | Jazzy | primary target for new users (2026) | ` jazzy_build ` in [ ` .github/workflows/main.yml ` ] ( .github/workflows/main.yml ) |
259+ | Humble | supported for existing deployments | ` humble_build ` in [ ` .github/workflows/main.yml ` ] ( .github/workflows/main.yml ) |
260+
261+ Local development in this workspace still uses the Humble-based ` scripts/setup_local_env.sh `
262+ overlay workflow documented in [ docs/local_build.md] ( docs/local_build.md ) .
187263
188264## Dependencies
189265
190- - ROS 2 Humble
191- - [ ndt_omp_ros2] ( https://github.com/rsasaki0109/ndt_omp_ros2.git )
266+ - ROS 2 Jazzy or Humble
267+ - [ ndt_omp_ros2] ( https://github.com/rsasaki0109/ndt_omp_ros2.git ) ( ` humble ` branch; used for both distro CI builds today)
192268- [ small_gicp] ( https://github.com/koide3/small_gicp ) , optional for ` SMALL_GICP ` and ` SMALL_VGICP `
193269
194- See [ CHANGELOG.md] ( CHANGELOG.md ) for release notes.
270+ See [ CHANGELOG.md] ( CHANGELOG.md ) for release notes and distro support notes .
0 commit comments