feat: qualify K1 local surface over time
This commit is contained in:
@@ -2,8 +2,9 @@
|
||||
|
||||
Date: 2026-07-25
|
||||
Status: accepted architecture plan; L0/L1 implemented; L2 diagnostic A/B
|
||||
complete; full GOOSE and RELLIS qualification complete; L2.6a K1 replay
|
||||
local-surface slice implemented; operator review and live shadow next
|
||||
complete; full GOOSE and RELLIS qualification complete; L2.6b K1 replay
|
||||
local-surface temporal qualification implemented; operator review and live
|
||||
shadow 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
|
||||
@@ -398,7 +399,7 @@ Dataset expansion is no longer the next gate.
|
||||
`1.27 m` value.
|
||||
- [x] Publish surface-relative height, slope, roughness and confidence
|
||||
separately from semantic classes.
|
||||
- [ ] Add independently reviewable step/curb candidates; do not derive them
|
||||
- [x] Add independently reviewable step/curb candidates; do not derive them
|
||||
from a single global height threshold.
|
||||
- [x] Produce short-TTL observed-surface, `occupied` and `unknown` evidence.
|
||||
Do not infer `free` merely because a mapped point is absent.
|
||||
@@ -408,26 +409,47 @@ Dataset expansion is no longer the next gate.
|
||||
derivatives with independent decay and provenance.
|
||||
- [ ] Reuse the accepted camera-to-LiDAR projection as an optional semantic
|
||||
layer with source, confidence, freshness and conflict fields.
|
||||
- [ ] Complete the qualification report with per-frame latency, point age,
|
||||
temporal stability, obstacle preservation and memory growth.
|
||||
- [x] Qualify next-frame prediction and temporal stability with the evaluated
|
||||
frame excluded from prediction input.
|
||||
- [ ] Complete the remaining qualification report with per-frame latency,
|
||||
point age, obstacle preservation and memory growth.
|
||||
- [ ] Replay the same profiles through a bounded latest-wins live-shadow queue;
|
||||
no K1 command, navigation or safety authority is added.
|
||||
|
||||
The implemented `missioncore.k1-local-surface/v1` derivative is reproducible
|
||||
through `experiments/perception/run_k1_local_surface.py` and is exposed
|
||||
read-only through `GET /api/v1/lidar/local-surfaces` plus the bound frame
|
||||
endpoint. **Парк → Диагностика LiDAR** reuses the five RAVNOVES00 scene
|
||||
selectors and shows the selected source frame as observed surface, observed
|
||||
occupied-above-surface, negative outlier and unclassified evidence. The React
|
||||
contract is provider-neutral; K1 remains a bound backend source rather than UI
|
||||
implementation knowledge.
|
||||
and timeline endpoints. **Парк → Диагностика LiDAR** reuses the five
|
||||
RAVNOVES00 scene selectors and also exposes a clickable timeline over the
|
||||
complete recording. The selected source frame shows observed surface, observed
|
||||
occupied-above-surface, negative outlier, unclassified evidence and yellow
|
||||
local-discontinuity candidates. The candidates are not semantic curb
|
||||
recognition or ground truth. The React contract is provider-neutral; K1 remains
|
||||
a bound backend source rather than UI implementation knowledge.
|
||||
|
||||
The complete RAVNOVES00 run covered all `526/526` available LiDAR samples.
|
||||
There were zero stale-pose, insufficient-surface or failed-fit frames. Observed
|
||||
diagnostic distributions are: derived sensor-to-surface height `1.295 m` p50,
|
||||
roughness `0.054 m` p95, slope `3.172°` p95 and pose-binding age `19.113 ms`
|
||||
p95. These values describe this recording only; they are not calibration,
|
||||
ground truth or a navigation gate. Free space remains unavailable.
|
||||
ground truth or a navigation gate.
|
||||
|
||||
The L2.6b qualification scores each available frame against a local plane built
|
||||
only from the preceding TTL window; the frame being scored is excluded from
|
||||
the prediction input. It produced `525` independent next-frame samples. The
|
||||
distribution of per-frame median absolute residual has `0.038543 m` p50 and
|
||||
`0.050398 m` p95. Prediction inlier fraction has `0.96354` p50 and `0.95133`
|
||||
mean. The temporal comparison detected `12/525` strict-threshold jumps; height
|
||||
delta is `0.022887 m` p95, slope delta `0.09572°` p95 and roughness delta
|
||||
`0.003317 m` p95.
|
||||
|
||||
The central surface is therefore repeatable at roughly four-centimetre median
|
||||
error on this replay. The tail is not yet planner evidence: the distribution
|
||||
of per-frame p95 residual has `0.41496 m` p95 and reaches `1.083 m`. Step/curb
|
||||
candidates occur in every available frame (`68.5` cells and `83` points p50),
|
||||
which proves that the review layer is active but also that it is broad and
|
||||
still requires independent review. Free space remains unavailable; none of
|
||||
these metrics grants navigation, command or safety authority.
|
||||
|
||||
Exit: one immutable K1 session yields both a persistent reconstruction and a
|
||||
bounded local world state without hard-coded terrain height or scanner-side
|
||||
@@ -512,8 +534,10 @@ and rejects Patchwork++ because the small Ground-IoU gain came with unacceptable
|
||||
obstacle loss. Public-dataset ground qualification is therefore complete
|
||||
enough for the current decision. The first K1 local-surface replay slice now
|
||||
covers all available `RAVNOVES00` samples and is visible in the operator
|
||||
interface. The highest-value immediate work is operator review, explicit
|
||||
step/curb and temporal-stability qualification, 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.
|
||||
interface. Leave-current-frame-out temporal qualification now covers `525`
|
||||
samples: the median surface error is stable, while the p95 tail remains too
|
||||
large for a free-space claim. The highest-value immediate work is review of the
|
||||
`12` temporal jumps and worst prediction tails, then a bounded live-shadow
|
||||
queue and separate dynamic-observation layer. Nvblox, raw-scan detectors and
|
||||
alternative SLAM remain optional later gates because the current report
|
||||
contract does not carry their required ray/timing semantics.
|
||||
|
||||
@@ -49,9 +49,11 @@ Implemented now:
|
||||
- a content-addressed `missioncore.k1-local-surface/v1` replay derivative over
|
||||
immutable `RAVNOVES00`, with dynamic height/slope/roughness/confidence,
|
||||
explicit pose-binding age and conservative observed occupied/unknown policy;
|
||||
- leave-current-frame-out next-frame qualification over `525` samples,
|
||||
temporal jump evidence and unverified local-discontinuity candidates;
|
||||
- a provider-neutral read-only local-surface view in
|
||||
**Парк → Диагностика LiDAR**, synchronized to the five existing
|
||||
RAVNOVES00 scene selectors;
|
||||
RAVNOVES00 scene selectors and a clickable complete-recording timeline;
|
||||
- worker storage admission for `D:\NDC_MISSIONCORE\datasets` and
|
||||
`/mnt/d/NDC_MISSIONCORE/datasets`;
|
||||
- a dedicated, honest dataset catalog in **Полигон → Датасеты**;
|
||||
@@ -83,7 +85,7 @@ Not implemented:
|
||||
- no model training or production promotion;
|
||||
- no RELLIS ROS bag admission, continuous synchronized playback or production
|
||||
promotion;
|
||||
- no rolling-map implementation yet.
|
||||
- no ray-cleared free-space or planner-authoritative rolling occupancy map.
|
||||
|
||||
## Product surface boundary
|
||||
|
||||
|
||||
Reference in New Issue
Block a user