docs(perception): record gravity-aligned TGS evidence
This commit is contained in:
@@ -320,6 +320,14 @@ ground/non-ground adapter that retains the exact unreturned complement as
|
||||
unknown evidence. GPL runtime, visual quality and full-source realtime remain
|
||||
open gates.
|
||||
|
||||
The gravity-aligned TGS-only adapter completed on the same ten anchors with all
|
||||
eligible input points accounted as ground, non-ground or rejected and no AOS
|
||||
invocation. It emits a deterministic `0.45 m`, `12 m` local evidence grid while
|
||||
preserving unobserved cells. See
|
||||
[`experiments/perception/M49_TGS_FAIL_CLOSED_EVIDENCE_2026-08-26.md`](../experiments/perception/M49_TGS_FAIL_CLOSED_EVIDENCE_2026-08-26.md).
|
||||
Representation/accounting is accepted for the visual gate; obstacle and
|
||||
traversability quality are not yet accepted.
|
||||
|
||||
### T4 — Candidate C occupancy/ESDF probe
|
||||
|
||||
- Run nvblox separately with RF-DETR disabled for the isolated probe.
|
||||
@@ -337,11 +345,12 @@ open gates.
|
||||
|
||||
## Immediate next action
|
||||
|
||||
Build the TGS-only recorded adapter over the bounded causal RAVNOVES00
|
||||
representation. Preserve `GROUND_SUPPORT`, `NONGROUND_OCCUPIED`, the exact
|
||||
`UNKNOWN_REJECTED` complement and `UNOBSERVED` as separate products; do not use
|
||||
AOS or infer free cells from absent republication. Review the ten anchors in
|
||||
metric 3D/costmap space before adding diagnostic camera projection. Candidate A
|
||||
T2 replay remains blocked by the failed unmodified T1 gate. No LOW-STEP tuning,
|
||||
new object model, camera resize, fisheye rectification, manual dataset or
|
||||
parallel heavy Worker job is authorized by this decision.
|
||||
Import the sealed gravity-aligned TGS evidence pack into one laboratory review
|
||||
surface and review the ten anchors in metric 3D/costmap space. Preserve
|
||||
`GROUND_SUPPORT`, `NONGROUND_OCCUPIED`, `UNKNOWN_REJECTED` and `UNOBSERVED` as
|
||||
separate products; do not use AOS or infer free cells from absent
|
||||
republication. Add diagnostic camera projection only after the metric evidence
|
||||
is accepted. Candidate A T2 replay remains blocked by the failed unmodified T1
|
||||
gate. No LOW-STEP tuning, new object model, camera resize, fisheye
|
||||
rectification, manual dataset or parallel heavy Worker job is authorized by
|
||||
this decision.
|
||||
|
||||
@@ -0,0 +1,139 @@
|
||||
# M4.9 gravity-aligned TGS fail-closed evidence — 2026-08-26
|
||||
|
||||
Status: **evidence adapter completed**; visual obstacle/traversability quality,
|
||||
full-source realtime, navigation and actuation remain disabled
|
||||
|
||||
## Decision
|
||||
|
||||
The TGS-only adapter now produces a complete, fail-closed metric evidence pack
|
||||
for the ten RAVNOVES00 review anchors. It preserves the SLAM map gravity axis,
|
||||
applies only a translation into the current local origin, never invokes AOS and
|
||||
accounts for every point inside TRAVEL's declared `1–80 m` processing range.
|
||||
|
||||
This closes the representation and accounting gate. It does not accept visual
|
||||
quality. Several anchors still contain a high non-ground share, so the next
|
||||
gate is a 3D/costmap review of the sealed output rather than threshold tuning or
|
||||
camera boxes.
|
||||
|
||||
## Frozen identity
|
||||
|
||||
| Item | Identity |
|
||||
| --- | --- |
|
||||
| TRAVEL source | `95dc2fbd66a343efd9060c45a5711b6307a950a4` |
|
||||
| Mission Core source | `941fb8961693c7e1e122921842d547d9fe9bb94f` |
|
||||
| Deterministic Worker artifact | `f52ea1995e973872ef4050de03fcef1aafa58a278d16506b05b8378102fd5781` |
|
||||
| TRAVEL image | `sha256:7b412020f4d8392d1d1ed1b33beadc44140f0ea8f781e62dd69796042334300f` |
|
||||
| CPU preparation/analysis image | `sha256:ceb13548617e4bd3f619766bfdff00af3fa5160946b367828da6d2233dcdcba0` |
|
||||
| RAVNOVES00 LiDAR pack | `0685d24219d8236caf8b7f1685e93f6d6b59e7fd015a768d88a92bbe8b154944` |
|
||||
| Executable profile | [`config/perception/m49-tgs-fail-closed-evidence-v1.json`](../../config/perception/m49-tgs-fail-closed-evidence-v1.json) |
|
||||
|
||||
The artifact used a new Worker release root and exact image IDs. The Worker
|
||||
compiled a bounded TGS-only entrypoint against the pinned upstream headers; no
|
||||
TRAVEL source file was changed. The entrypoint calls `TravelGroundSeg` and does
|
||||
not construct or invoke `ObjectCluster`.
|
||||
|
||||
## Representation
|
||||
|
||||
Two source profiles were prepared for anchors `171`, `306`, `368`, `402`,
|
||||
`450`, `509`, `525`, `744`, `1122` and `1856`:
|
||||
|
||||
- `current_increment`: exact current registered map increment;
|
||||
- `causal_rolling_1s`: current and preceding one second of positive map
|
||||
support, bounded to `12 m`, with no future frame.
|
||||
|
||||
For both profiles the current map position is subtracted, but the map axes are
|
||||
not rotated into the handheld LiDAR orientation. This preserves the verified
|
||||
SLAM gravity axis required by a terrain model. The previous sensor-frame probe
|
||||
remains valid only for rejecting AOS's scan/ring assumptions; it is not used as
|
||||
the TGS quality result.
|
||||
|
||||
The evidence pack has four explicit cell states:
|
||||
|
||||
| State | Meaning |
|
||||
| --- | --- |
|
||||
| `GROUND_SUPPORT` | positive TGS ground evidence |
|
||||
| `NONGROUND_OCCUPIED` | every TGS non-ground point; no instance filter |
|
||||
| `UNKNOWN_REJECTED` | exact in-range input complement not returned by TGS |
|
||||
| `UNOBSERVED` | no positive evidence in the bounded local cell; never free by omission |
|
||||
|
||||
The local review grid is `0.45 m` with a `12 m` radius. State priority is
|
||||
non-ground, rejected, ground, then unobserved. This is evidence precedence, not
|
||||
a robot-footprint collision policy.
|
||||
|
||||
## Anchor result
|
||||
|
||||
Primary profile: `causal_rolling_1s`.
|
||||
|
||||
| Anchor | Ground points | Non-ground points | Rejected points | Ground cells | Non-ground cells | Unobserved cells |
|
||||
| ---: | ---: | ---: | ---: | ---: | ---: | ---: |
|
||||
| `171` | `8,304` | `18,479` | `0` | `495` | `413` | `1,336` |
|
||||
| `306` | `5,646` | `13,821` | `0` | `694` | `265` | `1,285` |
|
||||
| `368` | `4,323` | `2,482` | `0` | `600` | `196` | `1,448` |
|
||||
| `402` | `5,782` | `3,190` | `0` | `641` | `260` | `1,343` |
|
||||
| `450` | `6,933` | `5,058` | `0` | `451` | `304` | `1,489` |
|
||||
| `509` | `5,941` | `11,460` | `0` | `481` | `287` | `1,476` |
|
||||
| `525` | `5,797` | `14,441` | `0` | `473` | `270` | `1,501` |
|
||||
| `744` | `2,900` | `16,754` | `3` | `388` | `324` | `1,532` |
|
||||
| `1122` | `2,422` | `3,403` | `0` | `599` | `228` | `1,417` |
|
||||
| `1856` | `4,967` | `2,759` | `0` | `693` | `181` | `1,370` |
|
||||
|
||||
All eligible points across both profiles and all twenty anchor/profile records
|
||||
are represented as ground, non-ground or rejected. A rejected point can share
|
||||
a cell with higher-priority non-ground evidence; therefore the point count may
|
||||
be non-zero while the final rejected-cell count is zero.
|
||||
|
||||
The gravity-aligned result is materially different from the diagnostic
|
||||
sensor-frame run. At anchor `171`, rolling ground evidence increases from `626`
|
||||
to `8,304` points. This confirms that TGS quality must not be judged in the
|
||||
handheld sensor orientation.
|
||||
|
||||
The result is still not visually accepted. Anchors `171`, `509`, `525` and
|
||||
especially `744` retain large non-ground populations. The 3D review must decide
|
||||
whether these are correct buildings/vegetation/curbs outside the passage,
|
||||
terrain-model overclassification inside the passage, or both.
|
||||
|
||||
## Timing and resources
|
||||
|
||||
| Measurement | Current increment | Causal rolling 1 s |
|
||||
| --- | ---: | ---: |
|
||||
| TGS p50 | `0.275 ms` | `1.378 ms` |
|
||||
| TGS maximum | `0.327 ms` | `3.807 ms` |
|
||||
|
||||
- End-to-end Worker wrapper: `12.085689 s`, including source verification,
|
||||
preparation, one C++ compile, twenty process starts, evidence packing and
|
||||
analysis.
|
||||
- Per-process wall p50: `20 ms`; p95: `40 ms`.
|
||||
- Maximum process RSS: `9,292 KiB`.
|
||||
- No GPU flag, CUDA/Vulkan context, image build or network access was used.
|
||||
- Canonical Triton retained the same container ID and stayed
|
||||
`running/healthy`.
|
||||
- All exact candidate containers and the one-shot scheduled task were removed;
|
||||
Worker free memory after cleanup was approximately `52.945 GiB`.
|
||||
- Frigate, GAUSS/PlayCanvas and port `8000` were not modified.
|
||||
|
||||
## Sealed evidence
|
||||
|
||||
Worker root:
|
||||
|
||||
`D:\NDC_MISSIONCORE\runtime\results\m49-tgs-fail-closed\gravity-anchors-001`
|
||||
|
||||
| File | Bytes | SHA-256 |
|
||||
| --- | ---: | --- |
|
||||
| `evidence/result.json` | `9,137` | `0cfefcfa7e5e5ba015442446a830c7d0c0c93ac40b0b1e8888686590184c666a` |
|
||||
| `evidence/evidence.npz` | `1,599,830` | `eaf1cd94cf7d3956e6bfebe4038ea18e6824fb6df5806e4c3b2d5b1c838f3b7b` |
|
||||
| `worker-summary.json` | `975` | `ad8b2a23a46dd0c8039b07136fdb6e6cfe579fe6d4bbf3696ea2a16089174fbe` |
|
||||
| `inputs/input-manifest.json` | `13,357` | `7a22e61606e1fa9ab61d47417f941b590a68b29e4529d4c290992ce7eb89a642` |
|
||||
| `tgs-timing.tsv` | `638` | `a8f439996205286335ac392b37f51b54056d04e9cb07e03648c52c1e8f2f6ae8` |
|
||||
|
||||
## Next gate
|
||||
|
||||
Import the sealed `evidence.npz` into one laboratory review surface with:
|
||||
|
||||
1. 3D points colored by the four evidence states;
|
||||
2. top-down `0.45 m` costmap cells in the same local coordinate frame;
|
||||
3. anchor selection and exact counts from `result.json`;
|
||||
4. no AOS clusters, camera boxes, future frames or physical authority.
|
||||
|
||||
The operator review must focus on the mandatory obstacle/gap cases and on the
|
||||
large non-ground populations listed above. Camera projection follows only if
|
||||
the metric evidence is accepted.
|
||||
Reference in New Issue
Block a user