docs(perception): reject direct TRAVEL AOS compatibility
This commit is contained in:
@@ -0,0 +1,148 @@
|
||||
# M4.9 T3 TRAVEL compatibility on RAVNOVES00 — 2026-08-26
|
||||
|
||||
Status: **direct TRAVEL TGS+AOS profile rejected**; TGS retained for a bounded
|
||||
ground/non-ground adapter probe; visual quality, realtime integration,
|
||||
navigation and actuation remain disabled
|
||||
|
||||
## Decision
|
||||
|
||||
The unmodified TRAVEL KITTI profile cannot consume the RAVNOVES00 `lio_pcl`
|
||||
representation as a complete ground-and-instance provider. Ground segmentation
|
||||
is deterministic and fast on the tested inputs, but the above-ground object
|
||||
segmentation changes materially when the exact same points are presented in
|
||||
reverse order. The fixed KITTI vertical-angle profile also does not describe
|
||||
the K1 registered-map increments.
|
||||
|
||||
Mission Core therefore rejects direct admission of TRAVEL AOS. It retains the
|
||||
unmodified TGS stage for the next bounded adapter test because its ground and
|
||||
non-ground partitions were bit-set invariant across all order comparisons. The
|
||||
adapter must preserve TGS-rejected points as explicit unknown evidence rather
|
||||
than silently dropping them. No AOS cluster, camera box, free cell or command
|
||||
receives authority from this run.
|
||||
|
||||
## Frozen identity
|
||||
|
||||
| Item | Identity |
|
||||
| --- | --- |
|
||||
| TRAVEL source | `95dc2fbd66a343efd9060c45a5711b6307a950a4` |
|
||||
| Mission Core probe source | `28d52972370097d3f3e376e17c9fdb388b0e7ebf` |
|
||||
| Deterministic Worker artifact | `c726018a62f602ff1f51432fbdf4bba67aa969735f9798a55472b079eff8a0fb` |
|
||||
| TRAVEL image | `sha256:7b412020f4d8392d1d1ed1b33beadc44140f0ea8f781e62dd69796042334300f` |
|
||||
| CPU preparation/analysis image | `sha256:ceb13548617e4bd3f619766bfdff00af3fa5160946b367828da6d2233dcdcba0` |
|
||||
| RAVNOVES00 LiDAR pack | `0685d24219d8236caf8b7f1685e93f6d6b59e7fd015a768d88a92bbe8b154944` |
|
||||
| Compatibility profile | [`config/perception/m49-travel-ravnoves-compatibility-v1.json`](../../config/perception/m49-travel-ravnoves-compatibility-v1.json) |
|
||||
|
||||
The release artifact was built from a clean committed revision, copied into a
|
||||
new Worker release root and verified before extraction. The run used the two
|
||||
already-qualified images by exact image ID. It performed no image build,
|
||||
network access, CUDA/Vulkan request or GPU lease.
|
||||
|
||||
## Input contract
|
||||
|
||||
The probe used the ten operator-reviewed anchors `171`, `306`, `368`, `402`,
|
||||
`450`, `509`, `525`, `744`, `1122` and `1856` with two causal representations:
|
||||
|
||||
1. `current_increment`: the exact registered map increment transformed into
|
||||
the current LiDAR frame;
|
||||
2. `causal_rolling_1s`: current and past increments from the preceding one
|
||||
second, bounded to the accepted `12 m` local-map radius and transformed into
|
||||
the current LiDAR frame.
|
||||
|
||||
No future frame was used. Missing republication was not interpreted as free
|
||||
space. The source pack has no retained intensity, ring/channel, per-point time
|
||||
or native ray model; intensity was zero-filled only to satisfy the XYZI input
|
||||
ABI.
|
||||
|
||||
Each representation was run in source order and exact reverse order. This
|
||||
produced `10 × 2 × 2 = 40` isolated CPU invocations.
|
||||
|
||||
## Result
|
||||
|
||||
### TGS ground/non-ground stage
|
||||
|
||||
| Measurement | Current increment | Causal rolling 1 s |
|
||||
| --- | ---: | ---: |
|
||||
| Eligible points over ten source-order anchors | `20,468` | `144,872` |
|
||||
| Ground + non-ground points returned | `20,337` | `144,871` |
|
||||
| Unreturned eligible points | `131` | `1` |
|
||||
| Anchors with complete accounting | `7/10` | `9/10` |
|
||||
| Ground multiset order Jaccard, minimum | `1.000` | `1.000` |
|
||||
| Non-ground multiset order Jaccard, minimum | `1.000` | `1.000` |
|
||||
| TGS stage p50 | `0.269 ms` | `1.775 ms` |
|
||||
| TGS stage p95 | `0.329 ms` | `4.379 ms` |
|
||||
| TGS stage maximum | `0.583 ms` | `4.807 ms` |
|
||||
|
||||
TGS classification is order-invariant on all twenty source/reverse
|
||||
comparisons. The missing points are not random process loss. TRAVEL internally
|
||||
routes below-plane or filtered points into its outlier cloud, while the public
|
||||
example and ROS wrapper publish only `ground`, `nonground` and AOS `labeled`.
|
||||
Frame `171` accounts for `129` of the `131` missing current-increment points;
|
||||
they lie approximately `2.59–5.09 m` from the sensor. A safety adapter must
|
||||
retain the exact input complement as `UNKNOWN_REJECTED`, never as free.
|
||||
|
||||
### AOS above-ground object stage
|
||||
|
||||
| Measurement | Result |
|
||||
| --- | ---: |
|
||||
| Accepted source/reverse comparisons | `0/20` |
|
||||
| Labeled-point multiset Jaccard, minimum | `0.469` |
|
||||
| Labeled-point multiset Jaccard, median | `0.663` |
|
||||
| Labeled-point multiset Jaccard, maximum | `0.963` |
|
||||
| Current-increment non-ground points retained as labeled, median | `20.6%` |
|
||||
| Causal-rolling non-ground points retained as labeled, median | `38.4%` |
|
||||
|
||||
This is a representation incompatibility, not a threshold-quality judgment.
|
||||
AOS projects points into a `64 × 4,500` spherical range matrix and keeps the
|
||||
first point that reaches an occupied angular bin. A registered-map increment
|
||||
does not carry an upstream ring order, so reversing an otherwise identical
|
||||
array changes which points survive projection and changes cluster membership.
|
||||
|
||||
The pinned KITTI profile declares a vertical range of `-24.8°…+2.0°`. Only
|
||||
`26.7%` of current-increment non-ground points and `34.4%` of causal-rolling
|
||||
non-ground points lie inside that declared range. The pinned implementation's
|
||||
row lookup also has no valid end-of-range branch for an angle above the maximum.
|
||||
Changing the angle table and inventing a pseudo-ring layout would create a new
|
||||
K1-specific algorithm profile; it is not accepted as the ready upstream system
|
||||
tested here.
|
||||
|
||||
### Wrapper and resource envelope
|
||||
|
||||
- Forty isolated invocations completed in `6.654335 s`, including container
|
||||
startup, input preparation and analysis.
|
||||
- Per-invocation wall p50 was `50 ms`; p95 was `70.5 ms`. These include
|
||||
process startup and are not the candidate-stage realtime measurement.
|
||||
- Maximum measured process RSS was `18,140 KiB`.
|
||||
- Canonical `ndc-mission-core-triton` retained the same container ID and stayed
|
||||
`running/healthy`.
|
||||
- The one-shot scheduled task and all three exact candidate container names
|
||||
were removed. Worker free memory after cleanup was approximately `52.82 GiB`.
|
||||
- Frigate, GAUSS/PlayCanvas, the GPU allocation and the canonical port `8000`
|
||||
were not modified.
|
||||
|
||||
## Sealed evidence
|
||||
|
||||
Worker root:
|
||||
|
||||
`D:\NDC_MISSIONCORE\runtime\results\m49-t3-travel-ravnoves\ravnoves-compat-001`
|
||||
|
||||
| File | Bytes | SHA-256 |
|
||||
| --- | ---: | --- |
|
||||
| `result.json` | `26,810` | `ff0b27f469cccad258c53ae07cb04ad00e696d82b32021c4f1f38ba7fa39d66a` |
|
||||
| `worker-summary.json` | `1,007` | `007eb400f6a12c950e81a631dc1c7824bc10c0024327fb9965f5689d3b4c6a22` |
|
||||
| `inputs/input-manifest.json` | `22,967` | `1239f2517c5dfcb46827cfd8f370e642a70eac3a83e39d6b769564321e2ff930` |
|
||||
| `travel-timing.tsv` | `1,606` | `959b82372dbb197525071f030a4be1d6f3ff848e32b62b4b47b4f2bf2fa9d3d7` |
|
||||
|
||||
## Next gate
|
||||
|
||||
Build a TGS-only recorded adapter with four explicit outputs:
|
||||
|
||||
1. positive `GROUND_SUPPORT` from TGS ground;
|
||||
2. `NONGROUND_OCCUPIED` from every TGS non-ground point, without AOS;
|
||||
3. `UNKNOWN_REJECTED` from the exact eligible-input complement;
|
||||
4. `UNOBSERVED` for cells with no positive support, never free by omission.
|
||||
|
||||
The first review remains the ten anchors in a 3D occupancy/costmap view. Camera
|
||||
projection is diagnostic only and follows after the metric output is sealed.
|
||||
The adapter is admitted only if compact obstacles and the passages between them
|
||||
remain explicit without large vegetation/curb walls. GPL distribution and
|
||||
full-source realtime remain separate gates.
|
||||
Reference in New Issue
Block a user