Fix GNSS validation and add 1x compressed-map GICP pipeline - #16
Fix GNSS validation and add 1x compressed-map GICP pipeline#16FieldDiTian wants to merge 4 commits into
Conversation
Laguna 500 s strict three-LiDAR
|
| Metric | P50 | P95 | P99 | Max |
|---|---|---|---|---|
| GICP time (ms) | 23.20 | 50.72 | 62.87 | 84.05 |
| Total scan time (ms) | 55.23 | 82.75 | 95.37 | 114.14 |
| Shared-Atlas position delta (m) | 0.424 | 1.641 | 1.712 | 2.060 |
| Shared-Atlas rotation delta (deg) | 0.760 | 2.380 | 3.340 | 4.650 |
The retained debug bag has 4,999 messages on every per-frame debug topic
over 499.887 s; the reference bag has 49,949 odometry messages over
499.985 s.
Latency conclusion
The measured three-LiDAR processing latency satisfies 150 ms:
- GICP P50 / P95 / P99 / max:
23.20 / 50.72 / 62.87 / 84.05 ms - Total scan-processing P50 / P95 / P99 / max:
55.23 / 82.75 / 95.37 / 114.14 ms
Both maxima are below 150 ms. Therefore the accurate result is:
500-second strict three-LiDAR localization PASS at 1.0x, including the
150 ms scan-processing target.
For completeness, the run used a 2.0 s offline auxiliary wait ceiling and
retained a separate ROS replay/executor queue-wait diagnostic:
- P50 / P95 / P99 / max:
34.74 / 1192.64 / 1637.99 / 1945.22 ms - Above 150 ms:
1,630 / 4,999(32.61%) - Above 1 s:
435 / 4,999(8.70%) - Primary queue depth P95 / max:
13 / 19of32; overload drops:0
That diagnostic is time waiting for rosbag/DDS auxiliary callbacks before
scan processing starts. It is not GICP latency or total scan-processing time,
and it is not used as the scan-processing latency gate.
Retained manual report:
Laguna/gicp_result/intermediate/pr16_commit4c86bee_3lidar_audit500_enu_20260729_v4/MANUAL_AUDIT.md
This is an intermediate 500-second audit and does not replace the separate
1,803-second full-run requirement.
Summary
Follow-up to merged PR #15. This branch addresses Allen's GLIM/adapter review findings and adds the complete dataset-scoped Laguna mapping, consistency-compression, and audited 1.0x GICP pipeline.
Review fixes
Root cause and GICP fix
The compressed map's frame, scale, bounds, and ENU datum were correct. The low acceptance came from initializing the optimizer outside the compressed map's local convergence basin, followed by unbounded long-tail solves; most candidates were then correctly rejected by the unchanged 5 m Atlas wrong-basin gate.
The final
front_quality_replay.yamlprofile and localizer changes:basePose, observer state, or published localization;nan/inftimeout rows in the scorecard instead of dropping them from the denominator.Mapping and compression pipeline
f24a99c94db61e4e4252a0ac481182516e54e90b6306d135c3abb7cf34e26b4e.Latest 500 s strict three-LiDAR
1.0xauditThe latest retained audit uses commit
4c86beea3c63c25d2396e97425d3882eace138d5, the Laguna local-ENU consistency map, and the same 500-second source interval for front, right, and left LiDAR.5,000, right5,000, left5,000.lidar_concat=true,require_all_aux=true; incomplete clouds are skipped, never degraded.4,999; all4,999 / 4,999reportconcat=2/2.4,995 / 4,999(99.92%).195,392points; median right/left contributions:65,130 / 65,130.15 / 24 ms; merged sweep span P50/P99:123 / 123 ms.Validation
colcon test-result --all --verbose: 38 tests, 0 errors, 0 failures, 0 skipped.git diff --check: pass.