Intelligent Boats — Macroplastique Challenge (v3)Architecture Raspberry Pi 4B + ESP32 + C++ camera_workerNouveauté v3 — Délégation caméra au C++Toute la partie caméra (capture, traitement vidéo, détection et classification
des balles) est gérée par un programme C++ externe ( Python communique avec lui via stdin/stdout (JSON Lines) — le même
protocole que celui décrit dans
Structure des fichiers Python
Contrat attendu du programme C++Commande
|
type |
Description | Score |
|---|---|---|
pingpong_orange |
Ping-pong orange Ø 4 cm | −5 pts |
piscine_rouge |
Piscine rouge Ø 7 cm | +10 pts |
piscine_autre |
Piscine autre couleur | −10 pts |
Autres commandes supportées
{"cmd":"ping"} → {"ok":true,"reply":"pong"}
{"cmd":"get_frame_info"} → {"ok":true,"width":640,"height":480,"fps":30}
{"cmd":"set_params",...} → {"ok":true}
{"cmd":"quit"} → {"ok":true,"stop":true}
Configuration (config.py)
CPP_CAMERA_BINARY = './camera_worker' # Chemin du binaire C++
CPP_CAMERA_ARGS = ['--pipe'] # Arguments de lancement
CPP_CAMERA_TIMEOUT_S = 2.0 # Timeout réponse (s)
CPP_CAMERA_REFRESH_S = 0.10 # Cadence refresh (s)
Installation
pip3 install pyserial rplidar-roboticia
# OpenCV n'est plus nécessaire côté Python
Lancement
cd robot_v3/
python3 main.py
Si camera_worker est introuvable → mode simulation automatique
(détections fictives générées pour tester la logique Python).
Filtres appliqués côté Python (traitement_balles.py)
| Filtre | Valeur par défaut |
|---|---|
| Confidence minimale | 0.50 |
| Distance minimale | 0.10 m |
| Distance maximale | 6.00 m |
| Anti-rebond collecte | 1.50 s |