Le robot MR25 est équipé d’une carte Raspberry Pi 5 disposant de deux connecteurs dédiés aux caméras. Il est donc possible d’utiliser simultanément deux caméras sur le robot.

Ce tutoriel présente les étapes nécessaires pour configurer et utiliser deux caméras avec le robot MR25, ainsi que la réalisation de captures d’images avec chacune d’elles.
Détecter les 2 cameras
Listez les cameras avec cette commande :
$ rpicam-hello --list-cameras
Vous devez voir la détection des 2 cameras :

Prendre une photo avec les 2 cameras
Voici un exemple de la prise d’une photo sur chaque cameras :
#!/usr/bin/env python3
# Import de la bibliothèque Picamera2 pour contrôler les caméras Raspberry Pi
from picamera2 import Picamera2
# Fonction permettant de mettre le programme en pause
from time import sleep
# Permet de récupérer la date et l'heure actuelles
from datetime import datetime
# Permet de gérer facilement les chemins et dossiers
from pathlib import Path
# ============================================================
# DOSSIER DE SAUVEGARDE
# ============================================================
# Création du dossier "photos" s'il n'existe pas déjà
output_dir = Path("photos")
output_dir.mkdir(exist_ok=True)
# ============================================================
# HORODATAGE
# ============================================================
# Création d'un horodatage commun aux deux photos
# Format : AAAAMMJJ_HHMMSS
# Exemple : 20260918_112530
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
# ============================================================
# CAMÉRA 0
# ============================================================
# Création de l'objet correspondant à la caméra 0
cam0 = Picamera2(0)
# Création de la configuration pour une photo fixe
#
# Résolution utilisée :
# 4608 x 2592 pixels
#
# Cette résolution correspond à la résolution souhaitée
# pour la caméra 0.
config0 = cam0.create_still_configuration(
main={"size": (4608, 2592)}
)
# Application de la configuration à la caméra
cam0.configure(config0)
# Démarrage de la caméra
cam0.start()
# Petite attente afin de laisser la caméra s'initialiser
# et stabiliser l'image avant la capture.
sleep(2)
# Création du nom du fichier de sortie
#
# Exemple :
# photos/camera0_20260918_112530.jpg
file0 = output_dir / f"camera0_{timestamp}.jpg"
# Affichage dans le terminal du fichier qui va être créé
print(f"Capture caméra 0 : {file0}")
# Capture d'une photo et sauvegarde directement au format JPEG
cam0.capture_file(str(file0))
# Arrêt de la caméra 0
cam0.stop()
# Libération complète des ressources utilisées par la caméra 0
#
# Cette étape est particulièrement importante ici :
# elle permet de libérer les buffers mémoire DMA avant
# de configurer la deuxième caméra.
cam0.close()
# ============================================================
# CAMÉRA 1
# ============================================================
# Création de l'objet correspondant à la caméra 1
cam1 = Picamera2(1)
# Création de la configuration pour une photo fixe
#
# Résolution utilisée :
# 3280 x 2464 pixels
#
# Cette résolution correspond à la résolution souhaitée
# pour la caméra 1.
config1 = cam1.create_still_configuration(
main={"size": (3280, 2464)}
)
# Application de la configuration à la caméra
cam1.configure(config1)
# Démarrage de la caméra
cam1.start()
# Petite attente afin de laisser la caméra s'initialiser
# et stabiliser l'image avant la capture.
sleep(2)
# Création du nom du fichier de sortie
#
# Exemple :
# photos/camera1_20260918_112530.jpg
file1 = output_dir / f"camera1_{timestamp}.jpg"
# Affichage dans le terminal du fichier qui va être créé
print(f"Capture caméra 1 : {file1}")
# Capture d'une photo et sauvegarde directement au format JPEG
cam1.capture_file(str(file1))
# Arrêt de la caméra 1
cam1.stop()
# Libération complète des ressources utilisées par la caméra 1
cam1.close()
# ============================================================
# FIN DU PROGRAMME
# ============================================================
# Message indiquant que les deux captures sont terminées
print("Captures terminées.")