mirror of
https://github.com/firestar5683/StarPilot.git
synced 2026-11-10 06:23:43 +08:00
c532223fa0
Bundle the verified VASM model, enable it at startup, and split VASM and vision speed-sign inference across little cores when both are active. Restore VASM warnings in PiP activation, red outlines, and onroad blind-spot borders, including expanded Android Auto views. Improve cabin snapshots with longer warm-up, adjusted capture timeouts, a fresh preview frame, and clearer capture buttons and save prompts. Polish Galaxy settings with dimmed gated controls and icons, clearer vehicle fingerprinting and steering availability descriptions, rounded speed-offset ranges, and immediate refresh after saving. Improve updater startup messages and preserve update/reconnect screens across service interruptions and restarts. Add regression tests for the updated behavior.
69 lines
4.2 KiB
Markdown
69 lines
4.2 KiB
Markdown
# Visual adjacent-spot warnings
|
||
|
||
This package reconstructs V-ASM's image preparation, warning policy and optional
|
||
onroad producer. Its observations can select the existing native side-camera
|
||
PiP view. They never change OEM blindspot signals, lane-change eligibility or
|
||
vehicle controls, and do not qualify an adjacent lane as clear.
|
||
|
||
Version-1 polygon annotations use bounded source-frame pixel coordinates. The
|
||
decoder rejects malformed, empty, degenerate and self-intersecting contours.
|
||
There is no automatic adoption of an older annotation. Source pixels are
|
||
retained for a single float32 projection shared by the crop and mask; a lossy
|
||
normalized-coordinate round trip can otherwise shift an NV12 crop by two pixels.
|
||
The crop remains even-aligned and letterboxed to RGB NCHW `1×3×352×352`.
|
||
|
||
The CPU inference wrapper uses the bundled model by default, accepts an
|
||
explicit absolute override, and verifies its exact size and SHA-256 before constructing OpenCV's network from those
|
||
bytes. The loaded network keeps that identity until explicit reload; inference
|
||
does not reread the model file. Missing or changed assets, unavailable OpenCV,
|
||
invalid frames, and nonfinite or incorrectly shaped outputs return unavailable.
|
||
|
||
The reference artifact is 6,166,229 bytes with SHA-256
|
||
`5d20cdbb457ba18db51a537ee2e305bbe442264b1613956068d473e35d15900d`.
|
||
Its embedded metadata identifies Ultralytics and AGPL-3.0, with classes
|
||
`0_nocar`, `1_car`, and `2_distant_or_rear`. Class 1 drives the visual-warning
|
||
score. Default smoothing is 0.2 seconds, with 0.94/0.79
|
||
activation/release thresholds. Camera left maps to displayed right, preserving
|
||
the reference's orientation. Invalid or reversed timestamps reset warning
|
||
history, and each side expires after three seconds.
|
||
|
||
The manager requires device hardware, onroad state, a model file, and a valid
|
||
enabled `VASMPreferences` document. `STARPILOT_VASM_MODEL_PATH` can override
|
||
the bundled model with an absolute path. That strict version-1 document contains an explicitly configured annotation,
|
||
`enabled`, `confidence` (0.8–1.0) and `smoothSeconds` (0.01–0.5). Absent or
|
||
invalid settings leave the producer disabled without replacing saved bytes.
|
||
|
||
The producer consumes the existing cabin VisionIPC stream without starting a
|
||
camera. Fresh device state, valid CAN state and Drive gear are required. NV12
|
||
planes are copied with their actual stride and UV offset. A frame is admitted
|
||
only within 500 ms of its BOOTTIME end-of-frame timestamp; paired clocks detect
|
||
resume. Each side retains its original source and three-second warning expiry.
|
||
Settings and vehicle state are checked again after inference. Reconnect,
|
||
disablement, stale authority and resume clear the policy. Model-load failures
|
||
use a bounded retry interval. OpenCV runs one inference thread; the normal
|
||
one-second interval and 0.3-second follow-up slow down under CPU load.
|
||
On device, V-ASM uses little cores 0–2 alone or core 2 when vision speed signs
|
||
are selected; speed-sign vision then uses cores 0–1. Android Auto renders on
|
||
core 6 under idle scheduling.
|
||
|
||
The custom `spotMonitorState` event uses an upstream reserved type ID and Event
|
||
ordinal. Its historical `desiredCurvature @0` field keeps its original meaning
|
||
and is never written by this producer. The appended, versioned observation
|
||
contains model/settings identity, source times and per-side expiry. Old
|
||
curvature-only logs have observation version zero and cannot become warnings.
|
||
The service is sparse: consumers must check payload freshness, not rely on a
|
||
nominal publication frequency.
|
||
|
||
The native PiP camera requires its existing saved enablement. Its visual-warning
|
||
consumer uses the full event and validates source identity, sessions, paired
|
||
clocks and the current saved-settings fingerprint. Missing,
|
||
invalid or expired evidence clears the optional visual warning. Leaving onroad
|
||
or losing camera/vehicle state closes the subscription. Neither layout nor OEM
|
||
blindspot behavior changes.
|
||
|
||
Host checks cover geometry, input preparation, output handling, serialized
|
||
observation lifecycle and PiP selection. Synthetic classifier execution does
|
||
not establish real-scene accuracy, simultaneous device performance, calibration
|
||
or full feature parity. Device activation and real-scene accuracy still require
|
||
on-device verification.
|