Team: PoliTOcean — Politecnico di Torino Competizione: MATE ROV World Championship 2026 — Explorer Class
Questa repository raccoglie il codice e la documentazione per i task lato Control Station del campionato MATE ROV 2026. Entrambi i task si svolgono nel Flume Tank e richiedono l'uso del ROV combinato con elaborazione software a terra.
Obiettivo: misurare e creare un modello 3D del coral garden nel Flume Tank.
Il coral garden è una struttura in PVC (1–2,5 m × 36 cm, altezza ignota) con 8 target colorati 10 × 10 cm. Il task prevede due approcci alternativi:
| Approccio | Metodo | Max punti |
|---|---|---|
| CV automatico | Computer Vision (OpenCV) + CAD SolidWorks | 40 pt |
| Manuale | Misurazioni + modello CAD | 30 pt |
L'approccio del team è la misurazione automatica tramite computer vision: il ROV posiziona un righello arancione da 50 cm come riferimento metrico e acquisisce una foto della struttura. Lo script final.py calcola la scala pixel/cm dal righello, rileva i target colorati, misura lunghezza e altezza dei tubi PVC e scrive i valori in equations.txt, che SolidWorks legge automaticamente per scalare il modello CAD.
Obiettivo: contare automaticamente i granchi invasivi European Green Crab in un campione 50 × 50 cm tramite image recognition.
Il campione contiene immagini di tre specie (Green Crab, Rock Crab, Jonah Crab). Il team ha addestrato un modello YOLOv8 per rilevare e contare solo i granchi invasivi.
| Approccio | Metodo | Max punti |
|---|---|---|
| Automatico | YOLOv8 image recognition | 15 pt |
| Manuale | Conteggio visivo | 5 pt |
| Reporting form | Compilazione form online | +5 pt |
Obiettivo: valutare il livello di minaccia (verde / giallo / rosso) di un iceberg verso le 4 piattaforme petrolifere dei Grand Banks.
Dato un iceberg (posizione, rotta, profondità della chiglia), il modulo calcola la closest point of approach (CPA) verso ciascuna piattaforma a coordinate fisse e classifica la minaccia per la piattaforma di superficie e per gli asset subsea. Calcolo puro (niente CV / niente modello).
| Componente | Metodo | Max punti |
|---|---|---|
| Piattaforme di superficie | CPA + regola del 110% | 10 pt |
| Asset subsea | keel_ratio entro 25 NM | 5 pt |
Obiettivo: calcolare e mostrare la % di frequenza delle 10 specie rilevate dal sensore eDNA.
Ricevuti i conteggi delle 10 specie, il modulo calcola count / totale * 100 per ognuna e li mostra a schermo per il giudice. Puro calcolo aritmetico.
| Approccio | Metodo | Max punti |
|---|---|---|
| Automatico | Calcolo % per le 10 specie | 10 pt |
| Task | Descrizione | Max punti |
|---|---|---|
| 1.2 | Coral Garden Modelling (computer vision + CAD) | 40 pt |
| 2.1 | Invasive Species (image recognition + form) | 20 pt |
| 2.2 | Iceberg Threat Level (CPA + classificazione) | 15 pt |
| 2.5 | eDNA Frequency Calculator (calcolo %) | 10 pt |
| Totale CS | 85 pt |
| Componente | Tecnologia |
|---|---|
| Object detection | YOLOv8 (Ultralytics) |
| Computer vision | OpenCV + NumPy |
| CAD | SolidWorks (equazioni parametriche) |
| Training | Google Colab + PyTorch |
| Linguaggio | Python 3 |
Task CS/
├── README.md ← questo file
├── Task 1.2/
│ ├── README.md ← documentazione computer vision
│ ├── final.py ← script principale CV
│ ├── target.py ← versione precedente
│ ├── rilevatore_target.py ← prototipo iniziale
│ ├── equations.txt ← output misure → SolidWorks
│ ├── Coral garden (CAD).SLDPRT ← modello SolidWorks
│ ├── righello.jpg ← immagine di test
│ ├── nuova.jpg ← immagine di test
│ ├── Coral garden.zip
│ └── colar_garden.zip
├── Task 2.1/
│ ├── README.md ← documentazione crab detector
│ ├── best.pt ← modello YOLOv8 addestrato
│ ├── crab_counter.py ← script di inferenza
│ ├── train_yolo_colab.ipynb
│ ├── img_generator_colab.ipynb
│ ├── dataset.zip
│ ├── crabs/ ← immagini di riferimento specie
│ └── practice/ ← immagini di test
├── Task 2.2/
│ ├── README.md ← documentazione iceberg threat
│ ├── iceberg.py ← logica pura: evaluate()
│ └── test_iceberg.py ← test (CPA + classificazione)
└── Task 2.5/
├── README.md ← documentazione eDNA frequency
├── edna.py ← logica pura: frequency()
└── test_edna.py ← golden test (totale 84)
# Crea e attiva il virtual environment
python -m venv .venv
.venv\Scripts\activate # Windows
# source .venv/bin/activate # Linux/macOS
# Installa le dipendenze
pip install -r requirements.txtpython "Task 1.2/final.py"python "Task 2.1/crab_counter.py"python "Task 2.2/iceberg.py"python "Task 2.5/edna.py"