🛠 Vision stéréo : deux caméras CSI sur un CM3

Raspberry Pi Compute Module 3 (CM3 / CM3L) · avance · Schéma : deux caméras Raspberry Pi reliées aux deux connecteurs CSI du CM3 sur carte CMIO3 — CSI 4 voies (caméra gauche) et CSI 2 voies (caméra droite) — avec la note « pas de genlock : dérive de quelques millisecondes ».

Objectifs

Exploiter l'un des atouts du format Compute Module : deux interfaces CSI simultanées (une 4 voies + une 2 voies) pour une vision stéréo ou multi-caméras sur un seul module. Le CM3 gère les deux caméras via le firmware Pi 3, avec la commande raspistill -n <numéro>. Point critique documenté par l'ingénieur firmware de Raspberry Pi sur le blog de lancement : les modules caméra n'exposent aucun signal de genlock — la synchronisation matérielle est impossible et la dérive entre les deux flux se compte en millisecondes, non corrigeable en matériel.

Matériel

Code complet

# config.txt : activer le support multi-caméras (firmware Pi 3)
sudo tee -a /boot/firmware/config.txt <<'EOF'
start_x=1
camera_auto_detect=1
EOF
sudo reboot

vcgencmd get_camera        # attendu : supported=2 detected=2

# Capture sur les deux caméras (capteur 0 = CSI 4 voies, 1 = CSI 2 voies)
raspistill -n 0 -o gauche.jpg -t 500 -w 1280 -h 720 &
raspistill -n 1 -o droite.jpg -t 500 -w 1280 -h 720
wait

# Horodater chaque trame pour mesurer la dérive de synchronisation
python3 - <<'EOF'
import subprocess, time
for n in (0, 1):
    t0 = time.time
    subprocess.run(['raspistill', '-n', str(n), '-o', 'cam%d.jpg' % n, '-t', '1'])
    print('cam%d capture finie a +%.0f ms' % (n, (time.time-t0)*1000))
EOF

Vérification attendue

vcgencmd get_camera renvoie supported=2 detected=2 ; deux JPEG sont produits. Le petit script d'horodatage révèle des écarts de quelques millisecondes entre les deux prises de vue : c'est la dérive attendue, sans genlock. Pour de la stéréo correcte, prévoir une scène statique ou un algorithme de recalage logiciel par corrélation d'images.

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels