@@ -1,10 +1,13 @@
# LiDAR worker: product value, evidence boundary and implementation roadmap
Date: 2026-07-25
Status: accepted architecture plan; L0/L1 implemented; L2 diagnostic A/B complete;
Dataset Gateway first-frame Current/Patchwork++ A/B complete
Scope: real scanner records, replay and future live shadow processing
Explicitly out of scope: Unreal U0/U1, Gaussian assets and simulator rendering
Status: accepted architecture plan; L0/L1 implemented; L2 diagnostic A/B
complete; full GOOSE and RELLIS qualification complete; K1 local-world-model
gate next
Scope: passively received real-time K1 point/pose evidence, immutable replay and
future live shadow processing
Explicitly out of scope: K1 firmware modification, a new onboard exporter, new
K1 application commands, Unreal U0/U1, Gaussian assets and simulator rendering
## 1. Decision
@@ -25,6 +28,27 @@ the control and review surface. Mission Core owns immutable inputs, exact
profiles, result identities, acceptance gates and diagnostic-only authority.
Models do not gain scanner, navigation, command or safety authority.
The current physical scanner is the accepted hardware starting point. Mission
Core does not require another LiDAR before it can qualify useful perception.
It treats the passively received K1 `lio_pcl` plus `lio_pose` pair as one
real-time source with two product uses:
1. a temporally bounded local world model for perception and later shadow
planning;
2. a persistent reconstruction of the territory traversed by the rig.
Those uses share immutable source evidence but apply different retention,
freshness and dynamic-object policies. Perception processing must not alter the
scanner output or overwrite the reconstruction source.
No operational algorithm hard-codes the distance from the LiDAR to terrain.
For a surface-bound vehicle, Mission Core estimates a time-varying local
surface from pose-relative geometry and derives height, slope, roughness and
steps from that surface. A future fixed installation adds only the rigid
`T_body_from_lidar` transform; it does not make ground height a constant. A
free-flying platform uses full 3D occupancy and clearance and may leave ground
unavailable when no local surface is observed.
## 2. What the current K1 source actually contains
The firmware-3 `lio_pcl` stream currently exposes:
@@ -40,6 +64,13 @@ distance diagnostics. What is not proven by that inverse transform is that the
result is the original unregistered sweep with preserved beam origin,
acquisition order and motion timing.
The stream was nevertheless received while the K1 and its operator were
moving. `Real-time` describes when Mission Core received the product; `raw`
describes where that product sits in the scanner pipeline. These properties
are independent. Mission Core losslessly recorded the real-time MQTT product,
while K1 had already registered and sampled the points onboard before
publishing them.
Static, read-only analysis of the K1 3.0.2 deployment artifacts additionally
shows that the appliance internally:
@@ -55,6 +86,11 @@ current external MQTT contract preserves those fields, and private firmware
artifacts remain outside Git. The redacted evidence is recorded in
`docs/lab/005_K1_FW302_LIDAR_PIPELINE_20260725.redacted.md` .
The static evidence is explanatory only. The current roadmap does not authorize
changing the K1 firmware, installing an exporter, invoking an internal raw
topic or sending a new device command. All K1 perception experiments consume
only already admitted report streams or immutable recordings made from them.
The external contract does not currently expose an admitted:
- raw sensor-frame sweep;
@@ -71,14 +107,18 @@ be silently mutated because E10– E26 results are content-bound to that schema.
These facts have architectural consequences:
- current K1 points can support display, calibrated projection, persistent
support and bounded geometric analysis;
- the live stream c an be converted back to a pose-relative sensor XYZI tensor ;
- current K1 points are the primary real-sensor input and can support display,
reconstruction, calibrated projection, persistent support, pose-relative
distances and bounded geometric analysis ;
- `T_map_from_lidar` permits a current pose-relative XYZI view, but that view
does not recreate the firing pose and time of every point;
- the same immutable stream must produce separate short-TTL perception and
persistent reconstruction derivatives;
- the v1 replay pack cannot feed the admitted NVIDIA PointPillars baseline;
- KISS-ICP, KISS-SLAM, FAST-LIO2, LIO-SAM or GLIM cannot honestly rebuild K1
odometry from points that are already vendor-mapped;
- deskew and LiDAR-inertial SLAM are blocked until the scanner or a future
vehicle LiDAR driver supplies raw scans, timing and IMU evidence .
- raw-scan-only algorithms remain deferred rather than becoming a reason to
reject or replace the current scanner .
The executable truth is
`missioncore.lidar-evidence-profile/v1` in
@@ -109,10 +149,12 @@ camera parallax, but it is not planner-ready: most camera observations remain
unknown, camera-only velocity is not metric, 374 conflicts remain, and the
benchmark is not independent ground truth.
The next work must therefore improve the LiDAR -native input and evaluation
surface , not add another visual smoothing pass. Mission Core will use
independently labeled public datasets before requesting any new manual K1
annotation. The current K1 evidence stays an unlabeled out-of-domain smoke test.
The next work must therefore improve the map -native interpretation of the
actual K1 stream , not add another visual smoothing pass and not wait for a
different scanner. `RAVNOVES00` is an immutable private field dataset for
replay experiments over the accepted real-time contract. GOOSE and RELLIS
remain independent algorithm-qualification sources; they are not visual
quality references and are not mixed into K1 device evidence.
## 4. Market and stack assessment
@@ -157,8 +199,9 @@ The worker exposes provider-neutral jobs rather than one growing camera script:
| --- | --- | --- | --- |
| `lidar-quality/v1` | immutable LiDAR evidence | field/timing/density/intensity report | diagnostic |
| `lidar-ground/v1` | sensor-frame XYZI + pose | ground/non-ground points and metrics | diagnostic |
| `lidar-local-surface/v1` | mapped increments + pose | local surface, height, slope, roughness, step and confidence | shadow |
| `lidar-3d-detection/v1` | sensor-frame XYZI | classified 3D observations + uncertainty | shadow |
| `lidar-local-map/v1` | scans + synchronized pose | occupancy/TSDF/ESDF artifacts | shadow |
| `lidar-local-map/v1` | mapped increments + pose | short-TTL occupied/unknown, persistence and dynamic evidence | shadow |
| `lidar-mapping-benchmark/v1` | raw scans + optional IMU | trajectory/map comparison | offline diagnostic |
Every result is content-addressed and binds:
@@ -238,9 +281,9 @@ quality line. It is not repaired or hidden by replay.
distributions in `missioncore.lidar-ground-benchmark/v1` .
- [x] Create an immutable eight-frame annotation template in which every point
starts as `ignore-unreviewed` ; it is explicitly not ground truth.
- [ ] Keep the K1 annotation template frozen as an optional later
- [x ] Keep the K1 annotation template frozen as an optional later
domain-adaptation asset; do not make manual review the current critical path.
- [ ] Measure accepted ground IoU and obstacle recall first against an admitted
- [x ] Measure accepted ground IoU and obstacle recall first against an admitted
GOOSE native scan and its published point-wise labels.
The real diagnostic run is
@@ -259,6 +302,12 @@ latency remains 0.42 ms. Algorithm IoU is 4.07% p50 and disagreement is 19.13%
p50. The run is useful for visual review, but its evidence class is
`operator-estimated` , so input acceptance and production promotion stay false.
The `1.27 m` value is retained only because it explains this historical
experiment. It is not a K1 profile default, a vehicle mounting parameter or an
operational ground reference. A moving or flying rig requires a time-varying
surface estimate; if the geometry does not support one, the result is
`unknown` , not a substituted constant.
The operator-facing field generation is
`lidar-field-review-57f359dae336f06962e3a29e69e2da1bb8365f9af46d5d3173609f92d43db1ef` .
It uses the immutable RAVNOVES00 E10 derivative
@@ -293,7 +342,7 @@ path. K1 manual review or a new real vehicle dataset is reserved for later
domain adaptation after a public baseline proves that the pipeline and metric
harness work.
### L2.5 — Dataset Gateway — GOOSE qualification and RELLIS S0 complete
### L2.5 — Dataset Gateway — GOOSE and full RELLIS qualification complete
- [x] Define separate `native-scan` , `normalized-scan` and
`rolling-local-map` representations.
@@ -323,17 +372,45 @@ harness work.
`131,072` point/label alignment and publish a bounded semantic viewer.
- [x] Version the RELLIS `ground / non-ground / ignore` mapping and expose
licensing as research-only evidence.
- [ ] Admit the full RELLIS Ouster SemanticKITTI scans, labels and poses on
worker D, then run the same Current/Patchwork++ harness.
- [x ] Admit the full RELLIS Ouster SemanticKITTI scans, labels and poses on
worker D and run the same Current/Patchwork++ harness over all `2,413`
validation frames.
The architectural contract and run sequence are fixed in
`docs/14_LIDAR_DATASET_GATEWAY.md` and ADR 0021. GOOSE is first because its
published 3D format is one LiDAR revolution with point-wise semantic and
instance labels in off-road environments. The RELLIS-3D compatibility smoke is
now complete against official frame `000104` ; the full second-source algorithm
cross-check remains the next ga te.
instance labels in off-road environments. Full RELLIS qualification then
showed that Patchwork++ slightly improved Ground IoU while reducing obstacle
non-ground recall from `80.46%` to `69.70%` ; the candidate was rejec ted .
Dataset expansion is no longer the next gate.
### L3 — LiDAR-native 3D detection
### L2.6 — K1 local world model — next
- [ ] Bind the immutable `RAVNOVES00` source and replay-pack-v2 evidence without
rewriting either generation.
- [ ] Transform each admitted map increment through the nearest compatible
`T_map_from_lidar` and publish pose-binding age explicitly.
- [ ] Estimate a time-varying local surface for ground-vehicle profiles using
robust spatial cells and temporal support; do not use the historical
`1.27 m` value.
- [ ] Publish surface height, slope, roughness, step/curb candidates and
confidence separately from semantic classes.
- [ ] Produce short-TTL `occupied` and `unknown` layers from current evidence.
Do not infer `free` merely because a mapped point is absent.
- [ ] Keep persistent reconstruction, recent collision evidence and dynamic
observations as separate derivatives of the same source.
- [ ] Reuse the accepted camera-to-LiDAR projection as an optional semantic
layer with source, confidence, freshness and conflict fields.
- [ ] Measure latency, point age, pose-binding age, temporal stability, obstacle
preservation and memory growth over the complete recording.
- [ ] Replay the same profiles through a bounded latest-wins live-shadow queue;
no K1 command, navigation or safety authority is added.
Exit: one immutable K1 session yields both a persistent reconstruction and a
bounded local world state without hard-coded terrain height or scanner-side
changes.
### L3 — LiDAR-native 3D detection — deferred behind L2.6
- [ ] Establish the public-dataset baseline first; freeze K1-specific 3D
annotations only when a measured domain gap justifies them.
@@ -351,8 +428,9 @@ independent gate without increasing unsafe false-free or false-dynamic output.
### L4 — live shadow integration
- [ ] Add a bounded LiDAR queue independent of camera cadence.
- [ ] Run the accepted detector profile on the NVIDIA worker.
- [ ] Fuse LiDAR-native objects with E26 camera evidence as independent sources.
- [ ] Run the accepted K1 local-surface/local-map profile on the NVIDIA worker.
- [ ] Fuse K1 geometric evidence with E26 camera evidence as independent
sources; a LiDAR-native detector remains optional.
- [ ] Publish `agree` , `single-source` , `conflict` and `unknown` ; unknown remains
occupied.
- [ ] Measure sensor-to-result latency, deadline misses, drops, memory and GPU
@@ -363,13 +441,14 @@ false.
### L5 — local occupancy and Nav2
- [ ] Obtain and validate the K1/future vehicle LiDAR scan model, or use a
different admitted source that supplies i t.
- [ ] Prove pose and time behavior required by nvblox.
- [ ] Benchmark static occupancy/TSDF and ESDF output on real replay.
- [ ] Qualify conservative hit-based occupied/unknown output from the existing
K1 mapped stream firs t.
- [ ] Keep dynamic observations in a separate decaying layer.
- [ ] Connect the accepted 2D slice to Nav2 through the existing world-state
boundary.
- [ ] Keep ray-cleared free space, TSDF and ESDF unavailable unless a future
admitted source contract actually supplies the required beam origin/timing
evidence. Do not modify K1 firmware to close this optional gate.
Exit: local collision-space quality and deadline gates pass in replay and
shadow. This still does not authorize control.
@@ -388,6 +467,8 @@ The current K1 `lio_pcl` stream cannot satisfy this gate.
The near-term value is not a prettier point cloud:
- one physical K1 stream supports both real-time local-world interpretation
and persistent territory reconstruction;
- a trustworthy observation tells the operator whether the scanner, transport,
pose, calibration or model failed;
- lossless replay makes model and worker upgrades repeatable;
@@ -397,16 +478,16 @@ The near-term value is not a prettier point cloud:
to route validation and later collision checking;
- the same job/result contracts accept real, replayed or simulated sources
without moving heavy compute into React;
- hardware selection becomes evidence-driven: a future vehicle LiDAR i s
accepted by its timing/fields/profile, not by vendor marketing .
- the current scanner is improved through replaceable software derivative s
without changing its acquisition behavior or firmware .
The GOOSE validation-split and deterministic degradation gates are complete:
pinned Patchwork++ improves micro Ground IoU from `47.42%` to `66.40%` , raises
natural-ground recall from `51.76%` to `76.22%` and stays below `23.41 ms` p95
across 961 frames. RELLIS S0 pr oves that the shared reader, axes, ontology and
ground-target mapping work on a different Ouster off-road domain; it does not
yet score an algorithm. The decision remains shadow-only. The highest-valu e
immediate work is full RELLIS ground qualification, followed by the real
sensor input contract and LiDAR-native detection on the same gateway . Nvblox
and alternative SLAM remain later because their timing, pose and scan-geometry
gates are not yet satisfied .
across 961 frames. Full RELLIS qualification c over s `2,413` validation frames
and rejects Patchwork++ because the small Ground-IoU gain came with unacceptable
obstacle loss. Public-dataset ground qualification is therefore complet e
enough for the current decision. The highest-value immediate work is the K1
local world model over `RAVNOVES00` , followed by bounded live shadow . Nvblox,
raw-scan detectors and alternative SLAM remain optional later gates because the
current report contract does not carry their required ray/timing semantics .