91 lines
3.4 KiB
Markdown
91 lines
3.4 KiB
Markdown
# 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 :
|
|
1. `open3d` pré-décimation sur ml-stack → PLY ~7 MB
|
|
2. `rsync` PLY décimé + poses.npz → cosma-vm:/data/cosma/
|
|
3. `rsync` frames JPG + PLY brut → NAS .156:/cosma-archive/ (async, non-bloquant)
|
|
4. 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
|
|
|
|
1. Monter NAS .156 sur ml-stack et cosma-vm (CIFS)
|
|
2. Cloner cosma-nav sur cosma-vm
|
|
3. Installer deps (Flask, open3d, h5py) dans venv
|
|
4. Adapter server.py : servir depuis /data/cosma/, ajouter routes map + nav
|
|
5. Caddy config sur cosma-vm
|
|
6. Modifier dispatcher cosma-qc : ajouter step post-job (décimation + sync)
|
|
7. Ajouter bouton "QC →" dans _jobs_table.html cosma-qc
|