feat(perception): add full camera-first shadow
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
# ADR 0035: Camera-first shadow and physical rig-geometry boundary
|
||||
|
||||
Date: 2026-07-30
|
||||
Status: accepted and implemented
|
||||
|
||||
## Decision
|
||||
|
||||
Mission Core preserves one perception ownership rule:
|
||||
|
||||
```text
|
||||
camera owns semantic class and object proposal
|
||||
LiDAR owns metric support and range
|
||||
```
|
||||
|
||||
The canonical E29 association is exposed as one reusable frame evaluator and
|
||||
is reused by E29 and full-source candidate shadows. A camera proposal remains
|
||||
an object when LiDAR support is unavailable; its range remains unavailable.
|
||||
Unassociated LiDAR geometry remains geometry without a semantic class.
|
||||
|
||||
E53 runs a candidate camera detector over every RAVNOVES00 frame through that
|
||||
unchanged association. It is a diagnostic shadow and cannot mutate E29,
|
||||
persistent reconstruction or runtime detector selection.
|
||||
|
||||
## Rig geometry
|
||||
|
||||
Vehicle-body and LiDAR mount/extrinsic use
|
||||
`missioncore.rig-geometry/v1`. The contract has three states:
|
||||
|
||||
- `unbound`: no physical body or mount values may be present;
|
||||
- `measured`: body and rigid transform require immutable measurement evidence
|
||||
and uncertainty, but collision remains unavailable;
|
||||
- `qualified`: geometry passed its named qualification method, while
|
||||
collision still requires a separate algorithm and safety gate.
|
||||
|
||||
RAVNOVES00 binds `ravnoves00-portable-k1/unbound-v1`. It is portable K1
|
||||
evidence and supplies no vehicle body or measured LiDAR→body transform.
|
||||
Invented dimensions, sensor height or identity transforms are rejected.
|
||||
|
||||
## Resource correction
|
||||
|
||||
The first E53 full pass exposed repeated decompression of
|
||||
`cloud_points_map` inside the frame loop. That immutable result failed its
|
||||
50 ms p95 gate at 210.7093 ms.
|
||||
|
||||
The accepted implementation materializes compressed source members once
|
||||
before sequential frame processing. The corrected run processed all 4 489
|
||||
frames at 1.7993 ms p95 and 36.8594 MiB peak-RSS growth. No Docker, worker,
|
||||
network service or second Mission Core backend participates in the path.
|
||||
|
||||
## Authority
|
||||
|
||||
E53 proves technical full-source execution, not detector accuracy:
|
||||
|
||||
- E29 overlap is comparison, not ground truth;
|
||||
- adjacent image-space IoU is continuity diagnostics, not tracking truth;
|
||||
- the candidate detector is not operationally promoted;
|
||||
- collision, navigation, safety and commands remain false.
|
||||
Reference in New Issue
Block a user