🛠 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 ».

Objetivos

Aprovechar una de las ventajas del formato Compute Module: dos interfaces CSI simultáneas (una de 4 vías + una de 2 vías) para visión estereoscópica o multicámara en un solo módulo. El CM3 gestiona las dos cámaras mediante el firmware del Pi 3, con el comando raspistill -n <número>. Punto crítico documentado por el ingeniero de firmware de Raspberry Pi en el blog de lanzamiento: los módulos de cámara no exponen ninguna señal de genlock — la sincronización por hardware es imposible y la deriva entre los dos flujos se mide en milisegundos, no corregible por hardware.

Hardware

Código completo

# 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

Verificación esperada

vcgencmd get_camera devuelve supported=2 detected=2; se generan dos JPEG. El pequeño script de marca de tiempo revela desviaciones de unos pocos milisegundos entre las dos capturas: es la deriva esperada, sin genlock. Para una estereoscopia correcta, prever una escena estática o un algoritmo de recalibración por software mediante correlación de imágenes.

Errores frecuentes

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales