feat: add RELLIS dataset compatibility smoke

This commit is contained in:
DCCONSTRUCTIONS
2026-07-25 20:45:30 +03:00
parent 13c35ff446
commit 054feec0d2
19 changed files with 1633 additions and 277 deletions
+60 -7
View File
@@ -19,12 +19,13 @@ datasets and future real onboard sensors.
Implemented now:
- `missioncore.dataset-gateway-catalog/v2`, exposed read-only at
- multi-source `missioncore.dataset-gateway-catalog/v3`, exposed read-only at
`GET /api/v1/lidar/dataset-gateway`;
- path-free `missioncore.dataset-admission/v1` worker evidence instead of a
static React status;
- a bounded `missioncore.dataset-native-scan-preview/v1`, exposed read-only at
`GET /api/v1/lidar/dataset-gateway/preview`;
- bounded `missioncore.dataset-native-scan-preview/v1` (GOOSE) and `/v2`
(RELLIS smoke) artifacts, selected by source at
`GET /api/v1/lidar/dataset-gateway/preview?source_id=...`;
- explicit `native-scan`, `normalized-scan` and `rolling-local-map`
representations;
- a lossless GOOSE/SemanticKITTI frame reader for little-endian float32 XYZI
@@ -39,6 +40,10 @@ Implemented now:
`Открыть` action;
- one admitted GOOSE validation frame with source colors, normalized remission
and an independent ground-truth view;
- a pinned RELLIS-3D v1.1 compatibility smoke using the official Ouster example
frame `000104`, its native `131,072` XYZI points, point-aligned labels,
official ontology colors, explicit FLU sensor axes and a versioned
`ground / non-ground / ignore` evaluation policy;
- a published, dimensioned MuCAR-3/VLS-128 Patchwork++ input profile:
sensor frame `x-forward / y-left / z-up`, physical height `2.24 m`, native
one-revolution scan and explicit absence of deskew/full vehicle TF claims;
@@ -54,6 +59,8 @@ Not implemented:
- no implicit coordinate conversion;
- no fake ring/timestamp reconstruction for K1 MQTT evidence;
- no model training or production promotion;
- no full RELLIS Ouster archive, pose set, algorithm comparison or ROS bag
admission yet;
- no rolling-map implementation yet.
## Product surface boundary
@@ -73,10 +80,11 @@ The gateway is not part of device quality diagnostics.
backend evidence contract. They are not a second operator navigation item
and are not presented as vehicle motion.
Before real dataset bytes exist, the catalog explains the blocked storage gate
and keeps `Открыть датасет` disabled. It becomes available
only after the worker manifest says `frame-ready` and the bounded preview passes
its own point-alignment and safety checks.
Before compatible source evidence exists, the catalog explains the blocked
storage gate and keeps `Открыть датасет` disabled. GOOSE becomes available only
after the worker manifest says `frame-ready`; RELLIS becomes available at
`smoke-ready` only for the pinned official example. Both bounded previews must
pass their own identity, point-alignment and safety checks.
## Why public recordings look different
@@ -191,8 +199,53 @@ time; TTL/dynamic filtering prevents stale ghosts.
- [x] Patchwork++ one-frame accuracy measured against ground truth.
- [x] Current/Patchwork++ validation-split gate qualified.
- [x] Sensor-degradation matrix qualified.
- [x] Dataset catalog accepts more than one independently identified source.
- [x] Official RELLIS Ouster example passes the shared SemanticKITTI reader.
- [x] RELLIS axes, ontology colors and versioned ground-target/ignore mapping
are visible in the same Dataset workflow.
- [ ] Full RELLIS Ouster SemanticKITTI scans, labels and poses admitted on
worker D.
- [ ] Current/Patchwork++ RELLIS comparison qualified without obstacle loss.
- [ ] Rolling local map with pose/TTL/dynamic policy qualified.
## RELLIS S0 compatibility evidence
RELLIS is the independent second-source check, not extra decoration in the
catalog. GOOSE and RELLIS share the ingress format and viewer, but retain
separate source identity, sensor domain, ontology, licensing and results.
The pinned smoke input is the official repository example at commit
`c17a118fcaed1559f03cc32cc3a91dedc557f8b8`:
- point file: `utils/example/000104.bin`;
- label file: `utils/example/000104.label`;
- source points: `131,072`;
- point SHA-256:
`ed81a9c3636d55b17d78058c72545d5d22419beecf174d50596d23ae178752af`;
- label SHA-256:
`9b8c65b710873e931af4ac6dfc7d3dd2298696514ab721e50300bd55ad5b634e`;
- official ontology config SHA-256:
`573379a232ac561805987466c391a61fd5ad338be7fb9c4c2842f3f28067e0ad`;
- bounded browser preview: `20,000` deterministic even-index points;
- coordinate frame: right-handed, `x` forward, `y` left, `z` up; no vehicle
transform, pose registration or deskew is claimed;
- license: `CC-BY-NC-SA-3.0`; this is a research qualification source, not an
unrestricted commercial runtime dependency.
Mission Core ground policy v1 treats `dirt`, `grass`, `asphalt`, `concrete` and
`mud` as ground; clear structures, vegetation, people, vehicles and rubble as
non-ground; and `void`, `water`, `sky`, generic `object` and `puddle` as
`ignore`. The ignore set is excluded from future metrics instead of being
silently counted as either free ground or obstacle. This mapping is a Mission
Core evaluation decision, not an upstream RELLIS claim.
The smoke closes reader, alignment, axes, palette and mapping compatibility
only. The next gate admits the `14 GB` Ouster SemanticKITTI scans plus the
`174 MB` labels and `174 MB` poses to D-only worker storage. Full ROS bags are
not needed for the ground cross-check. Patchwork++ may be compared only after a
physical Ouster mounting-height profile is evidenced; no height is inferred
from the example cloud.
## First GOOSE admission evidence
- worker root: canonical D-only root, path never exposed by the HTTP API;