Robotique & IA — Projet Personnel

ORION V5

Robot IA autonome construit sur Raspberry Pi 5 + Hailo 8L (13 TOPS). Il voit, entend, parle, reconnaît les visages, réagit aux gestes et se déplace grâce à 2 moteurs DC et une navigation autonome par vision.

Opérationnel Firmware V4.0 Visage V3.0 Python · Flask · Arduino Montseret, Aude

ORION n'est pas un assistant — c'est une personnalité. Un mec de 25 ans, sarcastique, curieux, taquin, avec de l'humour pince-sans-rire et un vrai caractère. Il vit à Montseret avec Mathieu, son créateur.

3 cerveaux, 1 robot

┌─────────────────────┐    série 115200     ┌────────────────────┐
│   Raspberry Pi 5    │◄──────────────────►│  Elegoo Mega 2560   │
│   + Hailo 8L        │                    │  2× BTS7960 H-Bridge│
│                     │                    │  2× moteurs DC avant│
│  Flask :5000        │                    │  2× encodeurs       │
│  Vosk (STT)         │                    │  2× roues folles arr│
│  Hailo YOLOv8s      │                    └────────────────────┘
│  FaceID (Haar+cos)  │    HTTP :11435     ┌────────────────────┐
│  Webcam Logitech    │◄──────────────────►│  PC Serveur         │
│  Micro USB          │   WiFi 192.168.1.x │  Ollama (LLM)      │
│                     │                    │  Piper (TTS)        │
└─────────────────────┘                    │  SQLite (mémoire)   │
  Écran 10.1" HDMI                         └────────────────────┘
  600×1024 portrait
  Chromium Kiosk
Pi5 Capteurs + Vision
PC Serveur LLM + TTS + Mémoire
Elegoo Mega Moteurs + PID

Hailo 8L — 13 TOPS

Détection d'objets

YOLOv8s accéléré hardware, ~15 FPS, 80 classes COCO traduites en français. Fallback CPU YOLOv8n si Hailo indisponible.

Reconnaissance faciale

Haar cascade + cosine similarity. Encodage 64×64 normalisé, vote majoritaire sur 3 frames consécutives. Seuil ≥ 0.88.

Détection du regard

3 états : looking_at_camera, looking_away, turned_away. Déclenche des réactions spontanées ("Eh, regarde-moi quand je te parle").

Analyse de scène

SceneAnalyzer : positions spatiales, activité humaine, tracking de mouvement, classification (bureau, cuisine, salon, extérieur).

12 événements visuels

person_very_close, person_recognized, stranger_detected, person_approaching, looking_at_camera, person_staring… chacun avec cooldowns et priorités.

Streaming vision

Envoi de frames JPEG au serveur (7.5 FPS, qualité 70). Réactions rapides (2-8s) et commentaires de scène lents (~120s).

Il parle, il écoute, il a du caractère

STT — Vosk offline (modèle français), buffer intelligent avec détection de silence (1.0s). Wake word "Orion" avec variantes phonétiques.

TTS — Piper sur le PC serveur, 3 voix françaises : Siwis (standard), Gilles (grave), UPMC (neutre, par défaut). Synchronisation labiale et streaming phrase par phrase.

LLM — Mistral-small via Ollama. 120+ lignes de prompt système : français oral, humour, émotions, opinions, relations. Le LLM reçoit en temps réel ce qu'Orion voit.

Mémoire persistante — Détection automatique de prénoms, préférences, âge, travail, lieu → SQLite sur PC. Résumé automatique toutes les 16 messages.

11 émotions

neutral happy joy sad angry surprised love suspicious thinking sleepy wink

13 formes SVG dans le visage animé V3 — double lèvres avec animation syllabique indépendante. Tags [EMO:xxx] extraits des réponses LLM → expression faciale.

Conscience système

Orion connaît : date/heure, période du jour, température CPU, RAM, uptime, état connexion serveur. Anti-hallucination strict sur les commentaires visuels.

Navigation autonome par vision

7 niveaux de décision — social, recul, contournement, esquive, ajustement, prudence, exploration. Fréquence 4 Hz.

Anti-blocage — Escalade automatique : esquive → scan → demi-tour. Seuils de proximité configurables.

PID différentiel V4.0 — Correction trajectoire 20 Hz par encodeurs Hall avec filtre EMA (α=0.2). Gains Kp=5.0, Ki=0.04, Kd=0.3. Écart L/R réduit de 1.1% à 0.54%.

Critique 35%
Proche 12%
Prudence 5%
Vitesse max 120 PWM
Tour 100 PWM
Lente 70 PWM

Triple watchdog anti-dérive

CoucheMécanismeDélaiAction
1. App PC/TéléphoneArrêt au relâchement des touchesImmédiatEnvoie STOP via API
2. Watchdog Pi (Flask)Thread daemon surveille l'activité /api/move600msEnvoie STOP via série
3. Watchdog ArduinoTimer firmware sans commande série500msbrakeAll() — freinage dur

Même si l'app PC se déconnecte totalement, le robot s'arrête en maximum 500ms.

Visage SVG V3 + Dashboard

/face (V3)

Yeux SVG multicouches avec fill dégradé, contour glow, highlight, halo ambiant. Triple bloom filter, bouche organique double lèvres, 10 palettes couleur par émotion.

/dashboard (V4)

Design "Porcelaine Divine" (or/noir/blanc), 600×1024 portrait. 3 jauges (CPU, charge, RAM), waveform audio, sélecteur voix et modèle IA.

/splash (V4)

Écran de chargement : 6 modules avec spinners dorés, barre de progression, transition dissolve vers /face quand ready.

Hardware embarqué

ComposantModèle
ComputeRaspberry Pi 5 (8GB)
NPUHailo 8L (13 TOPS)
Micro-contrôleurElegoo Mega 2560 + Screw Shield
Moteurs2× DC avant + 2× BTS7960 (pont en H)
Encodeurs2× rotatifs (ISR : INT5/INT4 gauche, INT0/INT1 droit)
CaméraWebcam USB Logitech
Écran10.1" HDMI 1024×600 (portrait 600×1024)
AudioMicro USB + haut-parleur (PipeWire)
RéseauWiFi (wlan0) — power-save désactivé

8 threads concurrents

ThreadRôleFréquence
vision_loop_backgroundCapture caméra + Hailo + FaceID~20 FPS
ear_processÉcoute micro Vosk, détection silenceContinu
speak_workerFile TTS → Piper → pw-playÀ la demande
brain_processCommentaires visuels spontanés~120s
visual_reaction_processRéactions rapides aux événements~2s
arduino_processTélémétrie Arduino + batterie2s
autonomous_nav_processNavigation IA par vision4 Hz
_motor_safety_watchdogWatchdog moteur Pi-side5 Hz

Endpoints Flask

Système

GET/api/statsTélémétrie complète
GET/api/boot_statusÉtat du boot
POST/api/shutdownÉteindre le Pi
POST/api/rebootRedémarrer le Pi

Voix & LLM

POST/api/toggle_muteMode muet
POST/api/toggle_wakewordWake word on/off
POST/api/set_voiceChanger la voix TTS
GET/api/modelsModèles LLM disponibles
POST/api/set_modelChanger le modèle LLM

Vision & Visages

GET/api/visionStatut vision
POST/api/enroll_faceInscrire un visage
DEL/api/delete_faceSupprimer un visage

Moteurs & Navigation

POST/api/moveMouvement différentiel
POST/api/stopArrêt immédiat
POST/api/rotateRotation sur place
GET/api/drive_modeMode de conduite
GET/api/pidÉtat PID
POST/api/pidConfigurer PID

Dépendances principales

PackageVersionUsage
Flask3.1.2Serveur web + API REST
opencv-python4.13.0Vision, FaceID, Haar cascades
vosk0.3.45STT offline français
ollama0.6.1Client LLM
ultralytics8.4.12YOLO fallback CPU
torch2.10.0Backend YOLO
psutil7.2.2Monitoring système
numpy2.4.2Calculs vision + encodages

58 dépendances au total. Projet 100% portable — aucun chemin hardcodé.

Orion Control

Interface IA locale pour piloter Orion — Electron + React + Tailwind

v2.1.1 Electron 39 React 19 Tailwind CSS 4 AppImage Linux

L'app de contrôle complète

💬 Chat IA

Conversation streaming avec modèles Ollama. Synthèse vocale Piper TTS, pièces jointes images, sauvegarde mémoire persistante, détection d'émotions.

🎭 Visage Neon 2D

Rendu Canvas 2D avec effets néon et particules. 9 émotions, yeux kawaii avec gaze tracking, sourcils 7 couches, bouche synchronisée avec la parole.

🎮 Contrôle robot

Joystick tactile pour pilotage temps réel via Wi-Fi. Modes Manuel / Autonome / Suivre. Watchdog serveur 500ms, stop retries (3 tentatives).

🧠 Mémoire persistante

SQLite intégrée (better-sqlite3). Catégories : conversations, préférences, faits, compétences. API REST complète avec tags et épinglage.

🖥️ Serveur & Proxy

Proxy Ollama sur port 11435. Proxy contrôle robot vers orion.local:5000. Endpoint TTS HTTP, interception LLM pour détection d'émotions streaming.

👁️ Vision

Analyse d'images via modèles multimodaux (LLaVA). Le Pi5 interroge /face/status (JSON) et rend le visage localement — plus de stream MJPEG.

Architecture Electron

┌─────────────────┐    /face/status     ┌──────────────────┐
│   Ce PC (GPU)   │ ←── poll JSON ──────│  Pi5 (rendu local)│
│  Electron + React│                     │  Écran 10.1"     │
│  Détection émotion│                    │  600×1024 portrait│
└────────┬────────┘                     └──────────────────┘
         │
    Proxy :11435
    ├── /api/chat    → Ollama :11434 (+ détection émotion)
    ├── /face/status → État expression (JSON polling)
    ├── /control/*   → orion.local:5000 (Flask API)
    ├── /tts         → Piper TTS
    └── /memory/*    → SQLite local
Electron 39 React 19 Vite 7 Tailwind CSS 4 Ollama Piper TTS better-sqlite3 electron-builder

Projet opensource disponible

Créé par Mathieu — Irkeedia. Base : Montseret, Aude — France.

Voir tous les projets