AiBot — Plateforme robotique conversationnelle embarquée

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 runtime AiBot

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.

Technologies et outils utilisés

  • Langages : Python (principal), JSON, G-code (impression 3D)
  • 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.
Photo du robot AiBot

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.

Schéma électronique AiBot

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.

Énergie

2 modes d’alimentation (batterie / secteur).

Limites actuelles et niveau de validation

Validé

  • Boucle interaction vocale (STT -> IA -> TTS)
  • Expressivité servo (yeux, sourcils, tête)
  • Suivi visage/yeux et logique de présence
  • Routage IA entre GPT/Mistral/local

En cours d’amélioration

  • Robustesse runtime longue durée
  • Fiabilité hardware en intégration complète
  • Robustesse au bruit en environnement non contrôlé