feat(pipeline): jalon 1-3 — ingest, USBL parse, filter
Stages 01-03 opérationnels sur 20260505-Lepradet: - 01_ingest: manifest auto, 3 AUVs vidéo, 3 AUVs bags, mapping AUV2xx↔AUV0xx - 02_usbl_parse: MCAP (format incompatible firmware) → fallback serial CSV, 213 pts bruts - 03_usbl_filter: MAD-3σ + moving-avg + Kalman optionnel, dégradé gracieux si null lat/lon - orchestrator/db.py: SQLite schema missions/jobs/metrics idempotent - config/: thresholds.yaml + default_params.yaml versionnés - qa/checks.py: vérifications pass/fail/degraded par étape Note: MCAP bags corrompus ou format non-standard firmware — lat/lon absent. Statut degraded (pas crash). Nécessite investigation format MCAP spécifique.
This commit is contained in:
34
pipeline/config/thresholds.yaml
Normal file
34
pipeline/config/thresholds.yaml
Normal file
@@ -0,0 +1,34 @@
|
||||
# QA thresholds — tuned from iteration cron
|
||||
usbl:
|
||||
min_points_per_segment: 5 # fewer → degraded
|
||||
max_gap_seconds: 30 # gap > this → split segment
|
||||
mad_sigma: 3.0 # MAD outlier threshold
|
||||
moving_avg_window: 5 # smoothing window
|
||||
|
||||
ingest:
|
||||
min_video_seconds: 120 # shorter segments skipped
|
||||
max_timestamp_delta_seconds: 60 # EXIF vs USBL match tolerance
|
||||
|
||||
frame_extract:
|
||||
fps: 1
|
||||
width: 518
|
||||
height: 294
|
||||
underwater_r_minus_g: 5 # R < G-5 AND R < B-5 → hors eau
|
||||
trim_min_frames: 8 # skip if fewer underwater frames
|
||||
|
||||
inference:
|
||||
ply_conf_threshold: 1.5
|
||||
max_frame_num: 1024
|
||||
mode: streaming
|
||||
keyframe_interval: 6
|
||||
|
||||
align:
|
||||
max_translation_m: 500 # sanity check on alignment
|
||||
min_inlier_ratio: 0.3 # umeyama inlier ratio
|
||||
|
||||
stitch:
|
||||
voxel_size: 0.05
|
||||
icp_max_distance: 0.5
|
||||
icp_iterations: 50
|
||||
use_ransac: true
|
||||
ransac_iterations: 100000
|
||||
Reference in New Issue
Block a user