3.4 KiB
3.4 KiB
COSMA QC Platform — Design Spec
Date: 2026-04-24
Statut: Approuvé
Objectif
Plateforme QC complète pour les missions COSMA AUV sur cosma-vm (.83), combinant gestion pipeline (cosma-qc) et visualisation QC (cosma-nav) : carte GPS/USBL, viewer 3D reconstruction, graphes nav.
Architecture — Option B : Microservices
Services
| Service | Port | Rôle |
|---|---|---|
| cosma-qc | :3849 | Pipeline jobs/stitches, dashboard extraction/reconstruction |
| cosma-nav | :5051 | QC viewer : carte, 3D, graphes nav |
| Caddy | :80 | Reverse proxy → / (cosma-qc) et /nav/ (cosma-nav) |
Machine cible
- cosma-vm (.83) — VM Proxmox
- Ressources actuelles : 4 vCPU / 3.8 GB RAM / 38 GB disk
- Expansion si nécessaire : +4 GB RAM si open3d décimatation locale
Stockage
ml-stack (.84) NAS .156 (1.34 TB libre)
/root/cosma-qc-frames/ ──► /cosma-archive/
job_N/frame_*.jpg (65 GB) job_N/frames/ (archivé)
job_N/reconstruction.ply job_N/ply_brut/ (archivé)
ml-stack post-job cosma-vm (.83)
pré-décimer PLY ──► /data/cosma/
185M pts → ~200k pts (~7 MB) job_N_decimated.ply
rsync poses.npz job_N_poses.npz
rsync sparse_fixes.h5 sparse_fixes.h5
- Frames JPG et PLY bruts → archivés sur NAS .156 (SMB, admin) après job done
- Données légères → copiées sur cosma-vm pour le viewer
- Rien n'est supprimé avant confirmation archivage NAS
cosma-nav — Fonctionnalités QC Viewer
1. Carte GPS/USBL (Leaflet + OpenStreetMap)
- Track AUV (trajectory_world.h5 → x_m/y_m converti en lat/lon)
- Fixes USBL/GPS plotés avec couleur RTK (fix=vert, float=jaune, 3D=rouge)
- Fixes USV (navire surface) en overlay
- Sélecteur de mission/job
2. Viewer 3D reconstruction (Three.js — existant)
- PLY décimé (~200k pts) chargé depuis /data/cosma/
- Frustums caméra orientés nadir
- Trajectoire lingbot locale
- Toggle layers (PLY, frustums, trajectory)
3. Graphes nav (Plotly.js ou Chart.js)
- Profondeur (depth_m depuis pression)
- Altitude fond (altitude_m Kogger)
- Qualité RTK (fix_type timeline)
- Vitesse USV
4. Intégration cosma-qc
- Bouton "QC →" dans la table jobs de cosma-qc → ouvre cosma-nav sur le job sélectionné
- API cosma-nav : GET /api/job/{id}/trajectory, /api/job/{id}/nav, /api/job/{id}/ply
Pipeline post-job (dispatcher cosma-qc)
Après chaque job done :
open3dpré-décimation sur ml-stack → PLY ~7 MBrsyncPLY décimé + poses.npz → cosma-vm:/data/cosma/rsyncframes JPG + PLY brut → NAS .156:/cosma-archive/ (async, non-bloquant)- Mise à jour DB cosma-qc :
decimated_ply_path,nav_ready=true
Vérification PLY/poses existants
Avant déploiement : valider les 11 jobs actuels (jobs 9-21) :
- PLY lisible par open3d ✓ (vérifié, 185M pts)
- poses.npz shape (N, 3, 4) ✓ (1217-1349 frames)
- PLY utile : early-save ≠ final-save → re-vérifier si demo.py a fini proprement
Déploiement
- Monter NAS .156 sur ml-stack et cosma-vm (CIFS)
- Cloner cosma-nav sur cosma-vm
- Installer deps (Flask, open3d, h5py) dans venv
- Adapter server.py : servir depuis /data/cosma/, ajouter routes map + nav
- Caddy config sur cosma-vm
- Modifier dispatcher cosma-qc : ajouter step post-job (décimation + sync)
- Ajouter bouton "QC →" dans _jobs_table.html cosma-qc