Perception 3D
Un capteur Time-of-Flight VL53L5CX transforme une grille de profondeur en neuf directions spatiales.
- • Mesure 4 × 4 à 4 Hz
- • Interruption avec repli à 100 ms

Création d'un compagnon robotique autonome autour de l'ESP32-S3
Dum-E est mon projet personnel à long terme en robotique : un petit quadrupède conçu pour percevoir son environnement, réagir avec un visage expressif, se déplacer de façon organique, écouter, parler et recevoir des mises à jour OTA. Cette page en est le hub et évoluera à chaque phase de développement.
Aperçu du comportement
Cette vidéo montre le comportement implémenté : la grille de profondeur sélectionne une direction, Brain la transforme en consigne de regard et LVGL interpole les pupilles vers la cible.
L'article de la phase 1 détaille la classification du capteur, l'animation LVGL et les files de messages FreeRTOS.Un capteur Time-of-Flight VL53L5CX transforme une grille de profondeur en neuf directions spatiales.
Un écran rond GC9A01 de 240 × 240 pixels affiche des expressions vectorielles et un regard animé.
Quatre servos MG90S, interpolation non bloquante et séquences de mouvements organiques.
Des voies microphone et haut-parleur I2S pour le wake-word et le retour audio.
Deux partitions applicatives préparent des mises à jour OTA sûres.
Les capteurs périphériques transmettent leurs données via des files de messages FreeRTOS. Le thread Brain réceptionne ces informations afin d'émettre les commandes correspondantes.
Perception
VL53L5CX - zone de détection via I2C
Centrale inertielle
LSM6DSOX - Tilt et mouvement via I2C
Microphone
INMP441 - Acquisition audio via I2S
Brain
Thread centrale de contrôle
Afficheur LCD
GC9A01 - Avec LVGL via SPI (DMA)
Servomoteurs
MG90 - Mouvements via PWM
Sortie audio
I2S - Haut-parleur
Réseau et OTA
Wi-Fi - Deux slots firmware
Le firmware sépare la perception, le comportement et le rendu. Brain_thread est l'unique propriétaire de l'état comportemental, et seule la tâche LVGL manipule l'écran.
Pilote VL53L5CX, mesures sur interruption et classification spatiale.
Un contrôleur événementiel déterministe sélectionne le regard et des séquences faciales.
Les poses vectorielles sont interpolées puis transférées au GC9A01 en six bandes via DMA.
Le même modèle de files de messages est prévu pour intégrer les commandes des moteurs, l'audio, le réseau et l'OTA, sans que les contraintes temporelles des périphériques ne contaminent la logique comportementale.
Un thread dédié aux consignes des servomoteurs.
Un thread pour le wake-word et un autre pour la sortie audio, reliés par des interruptions.
Une machine à états finale pour coordonner les systèmes de perception, d'expression, de mouvement, audio et de maintenance sans fil.
Phase 1 — Août 2026
Coupler un capteur Time-of-Flight à un visage vectoriel représenté sur un écran LCD.
Ouvrir cette phasePhase 2 — planifiée
Alimenter quatre servos sans brownout et produire des mouvements quadrupèdes fluides et non bloquants.
Phase 3 — planifiée
Acquisition par microphone, gestion du haut-parleur, de la charge processeur et de la mémoire PSRAM.
Phase 4 — planifiée
Réunir tous les sous-systèmes et mettre à jour le robot sans figer son comportement.