Skip to content

Commit 433e0b5

Browse files
Document Koide acceptance reconfirm and Boreas baseline smoke.
Record run-to-run variance on Koide 120s/180s after recovery_retry tuning and capture the Boreas 120s local_map_crop throughput bottleneck. Co-authored-by: Cursor <cursoragent@cursor.com>
1 parent 4dd6b4c commit 433e0b5

3 files changed

Lines changed: 99 additions & 4 deletions

File tree

CHANGELOG.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,9 @@
1919
- document Istanbul public demo RMSE run variance; identical seed/map can yield ~`1.2 m` or late-run drift outliers
2020
- tune public Istanbul 60 s preset with `local_map_crop` and `recovery_retry_from_last_pose` (`r3`, `gap<=1 s`, `seed<=15 m`)
2121
- reconfirm public regression suite after drift tuning; Istanbul gate `1.00 m` and HDL IMU checks pass (2026-06-10)
22-
- enable `recovery_retry_from_last_pose` on Koide outdoor manifests; `180 s` acceptance rises from `71` to `473` ok rows
22+
- enable `recovery_retry_from_last_pose` on Koide outdoor manifests; `180 s` acceptance rises from `71` to `473+` ok rows
23+
- reconfirm Koide outdoor manifests after recovery tuning; acceptance holds on `180 s` reconfirm (`486/753 ok_rows`) with run-to-run RMSE variance
24+
- fix `boreas_localization_120s.yaml` dataset paths; baseline smoke shows `37/961 ok_rows` with `local_map_crop_too_small` bottleneck
2325
- guard `use_odom` integration until initial pose is valid and keep pose finite for NDT init guess
2426
- ignore non-finite `/initialpose` payloads and stop eager scan replay during pose reset
2527
- v1.1 relocalization is documented as a validated dry-run `/initialpose` command artifact only

docs/benchmarking.md

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -113,10 +113,12 @@ ros2 run lidar_localization_ros2 benchmark_from_manifest \
113113

114114
Latest local Koide snapshot:
115115

116-
- `2026-06-10`, `outdoor_hard_01a_smoke60` (baseline): `translation_rmse_m=0.230`, `rotation_rmse_deg=2.607`, `ok_rows=228/229`
117-
- `2026-06-10`, `outdoor_hard_01a_120` (baseline): `translation_rmse_m=0.192`, `rotation_rmse_deg=1.923`, `ok_rows=441/461`
116+
- `2026-06-10`, `outdoor_hard_01a_smoke60` + `recovery_retry r3_gap1_seed15`: `translation_rmse_m=0.228`, `rotation_rmse_deg=2.696`, `ok_rows=244/246`
117+
- `2026-06-10`, `outdoor_hard_01a_120` + `recovery_retry r3_gap1_seed15` (tuning run): `translation_rmse_m=0.192`, `rotation_rmse_deg=1.923`, `ok_rows=441/461`
118+
- `2026-06-10`, `outdoor_hard_01a_120` + `recovery_retry r3_gap1_seed15` (reconfirm run): `translation_rmse_m=0.315`, `ok_rows=221/447``fitness_exploded` outlier ~`104 s`
118119
- `2026-06-10`, `outdoor_hard_01a_180` (baseline): `translation_rmse_m=0.210`, `ok_rows=71/523` — pose output stops ~`126 s`
119-
- `2026-06-10`, `outdoor_hard_01a_180` + `recovery_retry r3_gap1_seed15`: `translation_rmse_m=0.255`, `rotation_rmse_deg=2.273`, `ok_rows=473/474`
120+
- `2026-06-10`, `outdoor_hard_01a_180` + `recovery_retry r3_gap1_seed15` (tuning run): `translation_rmse_m=0.255`, `rotation_rmse_deg=2.273`, `ok_rows=473/474`
121+
- `2026-06-10`, `outdoor_hard_01a_180` + `recovery_retry r3_gap1_seed15` (reconfirm run): `translation_rmse_m=1.549`, `rotation_rmse_deg=4.373`, `ok_rows=486/753` — acceptance holds, late-run drift outlier
120122
- `2026-06-10`, `outdoor_hard_01 window_15_120` recovery compare:
121123
- baseline: `translation_rmse_m=5.477`, `matched=138`
122124
- `recovery_retry r3_gap1_seed15`: `translation_rmse_m=0.266`, `matched=443`
@@ -333,6 +335,20 @@ Start from:
333335
The generated bundle contains mapping, reference extraction, localization benchmark, and Nav2 map
334336
generation scripts. See [mapless_public_dataset_workflow.md](mapless_public_dataset_workflow.md).
335337

338+
### Boreas baseline snapshot
339+
340+
Latest local Boreas snapshot (`boreas_localization_120s.yaml`, `boreas-2021-09-02-11-42` vs GT-aligned map):
341+
342+
- `2026-06-10`, `120 s` localizer-only: `translation_rmse_m=43.515`, `rotation_rmse_deg=8.581`, `ok_rows=37/961`
343+
- dominant failure modes: `fitness_score_over_threshold_rejected` (`744`), `local_map_crop_too_small` (`179`), `accepted_gap_reinit_requested` from ~`43 s`
344+
- pose throughput: only `38` published poses in `120 s` — treat as map/crop/throughput bottleneck, not a passing benchmark
345+
346+
Next engineering targets:
347+
348+
1. verify map split / GT alignment for localization sequence vs mapping sequence
349+
2. disable or widen `local_map_crop` for large outdoor maps until crop policy is dataset-aware
350+
3. stage IMU/twist prediction only after localizer-only acceptance is stable
351+
336352
### Boreas starter
337353

338354
Convert a Boreas raw sequence to rosbag2, then scaffold the split mapping/localization bundle.

docs/public_validation_log.md

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,83 @@
33
This file records reproducible public-data validation snapshots. It is not a
44
hardware field-test log.
55

6+
## 2026-06-10 Boreas Baseline Smoke
7+
8+
- commit: `4dd6b4c` (manifest path fix uncommitted)
9+
- source branch: `main`
10+
- validation command:
11+
12+
```bash
13+
source scripts/setup_local_env.sh
14+
ros2 run lidar_localization_ros2 benchmark_from_manifest \
15+
--manifest param/benchmark/boreas_localization_120s.yaml
16+
```
17+
18+
Result:
19+
20+
- `boreas-2021-09-02-11-42` `120 s` localizer-only: diagnostic failure
21+
- translation RMSE: `43.515 m`
22+
- rotation RMSE: `8.581 deg`
23+
- matched samples: `37`
24+
- ok rows: `37 / 961`
25+
- dominant diagnostics: `local_map_crop_too_small`, `fitness_score_over_threshold_rejected`, `accepted_gap_reinit_requested`
26+
27+
Artifacts:
28+
29+
- `/tmp/lidarloc_boreas_localization_120s_throttle/`
30+
31+
Interpretation:
32+
33+
- Boreas is not ready for outward claims; current bottleneck is map/crop acceptance and very low pose throughput.
34+
- Next step is map-split validation and crop-policy tuning before IMU prediction work.
35+
36+
## 2026-06-10 Main After Koide Outdoor Acceptance Tuning
37+
38+
- commit: `4dd6b4c`
39+
- source branch: `main`
40+
- validation commands:
41+
42+
```bash
43+
source scripts/setup_local_env.sh
44+
ros2 run lidar_localization_ros2 benchmark_from_manifest \
45+
--manifest param/benchmark/koide_hard_localization_outdoor_hard_01a_smoke60.yaml
46+
ros2 run lidar_localization_ros2 benchmark_from_manifest \
47+
--manifest param/benchmark/koide_hard_localization_outdoor_hard_01a_120.yaml
48+
ros2 run lidar_localization_ros2 benchmark_from_manifest \
49+
--manifest param/benchmark/koide_hard_localization_outdoor_hard_01a_180.yaml
50+
```
51+
52+
Result:
53+
54+
- `outdoor_hard_01a_smoke60` + `recovery_retry r3_gap1_seed15`: `pass` acceptance
55+
- translation RMSE: `0.228 m`
56+
- rotation RMSE: `2.696 deg`
57+
- matched samples: `244`
58+
- ok rows: `244 / 246`
59+
- `outdoor_hard_01a_120` + `recovery_retry r3_gap1_seed15`: outlier on reconfirm
60+
- translation RMSE: `0.315 m`
61+
- matched samples: `221`
62+
- ok rows: `221 / 447`
63+
- failure mode: `fitness_exploded_reinit_requested` ~`104 s`, unrecovered
64+
- `outdoor_hard_01a_180` + `recovery_retry r3_gap1_seed15`: acceptance improved, accuracy outlier
65+
- translation RMSE: `1.549 m` (tuning run was `0.255 m`)
66+
- rotation RMSE: `4.373 deg`
67+
- matched samples: `486`
68+
- ok rows: `486 / 753` (baseline without recovery was `71 / 523`)
69+
70+
Artifacts:
71+
72+
- `/tmp/lidarloc_koide_outdoor_hard_01a_smoke60/`
73+
- `/tmp/lidarloc_koide_outdoor_hard_01a_120/`
74+
- `/tmp/lidarloc_koide_outdoor_hard_01a_180/`
75+
76+
Interpretation:
77+
78+
- `recovery_retry_from_last_pose` fixes the `180 s` acceptance collapse (`71 -> 473+ ok_rows`).
79+
- Koide outdoor replay shows run-to-run variance on `120 s` / `180 s` similar to Istanbul;
80+
treat acceptance gains as the validated improvement and prefer repeat runs for release checks.
81+
- Full-route robust tracking on Koide `Outdoor01` remains an open engineering target.
82+
683
## 2026-06-10 Main After Istanbul Drift Tuning
784

885
- commit: `f6503d3`

0 commit comments

Comments
 (0)