Robot conversationnel embarqué avec architecture logicielle multimodale
AiBot est une plateforme robotique conversationnelle qui combine reconnaissance vocale, perception visuelle,
IA générative et animation servo-moteur. Le runtime est conçu pour une exécution continue avec modules parallèles
coordonnés via un état partagé.
Objectif
Déployer un robot expressif capable d'interagir naturellement avec un public, de gérer des commandes vocales, de
suivre la présence humaine et d'adapter ses réponses et comportements en conditions réelles d'usage.
Architecture
L'orchestration est assurée par main.py, qui lance les threads audio, vision, moteurs, OLED et régulation
de seuil. Les modules partagent l'état via robot_state et timers comportementaux.
Pipeline audio/IA
audio_utils.py capture la voix (PyAudio), transcrit (Vosk/Google), passe les commandes à
voice_command.py, puis route les requêtes vers AI_utils.py (GPT/Mistral/local).
Pipeline vision/moteurs
video_utils.py détecte visage/yeux (dlib), alimente les coordonnées oculaires, et
motor_controller.py pilote les servos via PCA9685 pour expressions et mouvements.
Synthèse et expressivité
La réponse IA est vocalisée via Edge TTS et synchronisée avec des animations faciales
(clignements, sourcils, orientation tête) pendant la lecture audio.
Robustesse runtime
pca_bus.py intègre des mécanismes de retry/reinit I2C pour limiter l'impact des défauts transitoires
sur les commandes moteur.
IA : OpenAI API, Vosk, Mistral API, sentence-transformers
Audio : PyAudio, Google SpeechRecognition, Edge TTS
Vision : OpenCV, dlib
Matériel : Raspberry Pi 5, PCA9685, servos MG90S/MG995, OLED 128x64, LED RGB, caméra USB
Modélisation 3D : Fusion 360
Outils : PyCharm, Geany, Cura, ROS 2
Choix techniques et solutions retenues
Reconnaissance vocale : Vosk est retenu pour l'usage hors-ligne, avec Google SpeechRecognition en complément pour améliorer la précision en ligne.
Synthèse vocale : Edge TTS offre un compromis efficace entre qualité de voix, latence et flexibilité de personnalités.
Commande moteurs : le PCA9685 permet de piloter un nombre élevé de servos sans saturer les GPIO de la Raspberry Pi.
Alimentation : architecture BMS + conversion Step-Up/Step-Down pour gérer autonomie batterie, passage secteur et recharge.
Simulation / démonstration logicielle
La vidéo montre la boucle complète: interaction vocale, génération de réponse, synthèse audio et animation faciale couplée.
Elle illustre aussi la robustesse de l'orchestration multi-threads sur plateforme embarquée.
Conception mécanique
La modélisation 3D a été réalisée principalement à l'aide de Fusion 360. Chaque pièce a été
pensée pour être facilement imprimable en 3D et assemblable sans outil spécifique. Les tolérances ont été
ajustées manuellement selon les comportements observés après impression.
Le robot est composé de plusieurs modules distincts :
Un socle intégrant le circuit électronique et l’alimentation (batterie ou secteur), permettant un changement rapide entre les deux.
Une colonne creuse servant à guider les câbles et à supporter la tête tout en limitant la torsion mécanique.
Une rotule renforcée permettant la rotation de la tête. Cette pièce a fait l’objet de plusieurs itérations pour améliorer sa solidité, notamment en y ajoutant une vis de renfort.
Une tête creuse, conçue pour accueillir la caméra, les LEDs, les servos moteurs, et les supports d’yeux mobiles.
Conception électronique
Le circuit intègre une logique d'alimentation hybride (batterie 3S et secteur), recharge via BMS, adaptation de tension
et distribution de puissance vers Raspberry Pi, contrôleur PCA9685 et périphériques.
Comportement autonome et supervision
Gestion de présence : passage en veille après absence prolongée, relance proactive si présence détectée sans interaction.
Commandes vocales : mot-clé d'activation, changement de personnalité/voix, lancement de démonstrations.
Mode IA hybride : bascule GPT/Mistral/local suivant contexte et disponibilité réseau.
Régulation audio : recalcul périodique du seuil de bruit ambiant (seuil_regulator.py).
Contributions
Conception de l'architecture logicielle multi-threads et de l'orchestration runtime autour de main.py.
Implémentation et intégration du pipeline audio complet (capture, STT, commandes vocales, TTS, playback synchronisé).
Intégration vision/moteurs pour le suivi regard-présence et l'animation expressive en situation réelle.
Conception mécanique modulaire sous Fusion 360 (socle, colonne, rotule, tête) avec itérations après essais physiques.
Conception électronique d'alimentation hybride (batterie/secteur) avec BMS et conversion de tension.
Métriques clés
Modules concurrents
5 threads principaux lancés depuis main.py (audio, vision, moteurs, OLED, régulation de seuil).
Modes IA supportés
3 modes disponibles : GPT, Mistral, et fallback sémantique local.
Capacité d’actionnement
Configuration de type 11 DoF (famille MG90S/MG995) pilotée via PCA9685.