Désolé, ça commence par beaucoup d’explications textuelles, mais des schémas plus éloquents sont à la fin 🙂
J’ai passé ces deux derniers mois à tester pas mal de choses : moteurs, capteurs, amplis audio, écrans, microcontrôleurs, matériaux, montages, mini-PC… C’était intéressant, mais le but est bien évidemment d’utiliser tout ça pour créer un robot 🙂
Dans ce billet, je vais essayer de formaliser toutes les idées qui me trottent dans la tête depuis quelques temps et décrire où je veux aller.
Jusqu’ici j’ai fabriqué quelques robots assez simples, avec des comportements limités à des tâches précises (et avec un petit microcontrôleur en guise de cerveau). Une fois le robot terminé, il l’était vraiment et je passais à autre chose. Cette fois, je veux réaliser une véritable plateforme robotique, très polyvalente pour explorer différents domaines de la robotique :
- Le SLAM pour Simultaneous Localization And Mapping (ou cartographie et localisation simultanées). C’est un ensemble de techniques qui permettent à un robot de connaître sa position et de découvrir son environnement.
- La synthèse vocale (TTS : Text To Speech), pour lui permettre de communiquer avec des êtres humains par la voix.
- La reconnaissance vocale (SR : Speech Recognition ou STT)
- Langage, conversation avec un humain
- Intelligence artificielle et apprentissage
- Utilisation d’internet (accès à des services, bases de connaissances…)
- Vision : reconnaissance de formes et de visages, tracking
- Algorithmes d’évitement d’obstacles (Virtual Force Field algorithm)
- Pilote de la domotique
- Télé-présence et surveillance
- « Humanisation » : permettre au robot d’exprimer des émotions (mouvements, yeux…), lui donner un comportement moins prévisible avec des micro gestes aléatoires (clignement des yeux…), des tics de langages etc.
- Extensibilités : possibilité de lui ajouter des modules pour lui donner de nouvelles capacités (module pour analyser la qualité de l’air, piloter la domotique, changer la fonction de ses bras/mains : poignée, pince, lasers…)
- Personnalité, comportements, humeurs, humour…
- …
La plateforme devra être suffisamment évoluée pour approfondir tous ces sujets sans devoir refaire un nouveau robot à chaque fois. En gros, il ne sera jamais vraiment terminé 🙂
Les applications qui en découlent sont illimitées :
- Accompagnement, stimulation et surveillance/assistance des personnes âgées ou en difficulté
- Télé-présence : pouvoir prendre le contrôle du robot à distance et se déplacer / communiquer grâce à lui, comme si on y était
- « Chef d’orchestre » domotique et sécurité (détection et signalisation d’intrus, pilote du chauffage, de la télé, de la musique, de l’humidité, simulation de présence…)
- Jukebox à la demande
- Occuper le chat (en le faisant jouer avec un laser etc.)
- Assistant personnel à domicile (domotique, lecture des e-mails et autres notifications, actualités, météo, discussions, gestion de l’agenda et rappel de rendez-vous, mémos, réveil…)
- Coach personnel
- Station d’analyse de l’air, détection de produits dangereux/toxiques
- Exploration de zones dangereuses/inaccessibles pour l’homme
- Conquérir le monde…
Pour créer cette plateforme voici les composants que je compte utiliser (dont la plupart ont été testés dans les articles précédents) :
- Le cerveau supérieur : un mini-PC sous forme de clé HDMI avec un processeur Intel Atom CherryTrail (4 coeurs), 4Go de RAM, 32 Go de mémoire eMMC. Ces « PC » consomment peu, sont très légers et compacts, offrent des possibilités intéressantes en terme d’IA, sans compter l’accès au Bluetooth et au Wifi (et donc à Internet). Pour une centaine d’euros !
- La moelle épinière : un Arduino MEGA (Pro Mini), qui aura la charge de transmettre les messages entre le cerveau (mini-PC) et le reste du corps du robot (capteurs, actuateurs : moteurs, écrans, HP…).
- Un anneau de sonars : 12 capteurs ultrasoniques SRF05 pilotés par un Arduino Nano, lui-même connecté à la moelle épinière par le bus I2C. Les capteurs détecteront les obstacles tout autour du robot.
- Capteurs d’environnements : boussole (référentiel directionnel), détecteur de luminosité (LDR), détecteur de distance IR (pour éviter les chutes)
- La tête : webcam USB avec microphone pour récupérer l’image et le son (et la voix) (Logitech c920), matrice de capteurs thermiques pour identifier les sources de chaleur (humains, animaux, feu…) (TPA81), Pixy CMUCam5 pour reconnaître et traquer des objets, 2 matrices de 8×8 LEDs pour émuler les yeux, un bargraphe de 5 LEDs pour animer la bouche, émetteur/récepteur IR pour piloter certains appareils, des LEDs puissantes pour éclairer dans l’obscurité. Le tout sera piloté par un autre Arduino Nano, lui-même connecté à la moelle épinière par le bus I2C.
- Le cou : une tourelle « pan-tilt » constituée de 2 servomoteurs pour bouger la tête de haut en bas et de gauche à droite.
- Un ampli et un haut-parleur pour émettre la voix du robot, de la musique ou des sons. Connecté sur la sortie son du mini-PC.
- Quelques périphériques pour interagir « manuellement » avec le robot (écran OLED, boutons, buzzer).
- HUB USB : pour connecter le mini-PC, la webcam, l’Arduino MEGA (+ de nouveaux périphériques)
- Bras : 3-4 servomoteurs et la possibilité d’y attacher un module (pince, laser…)
- Des cartes de contrôle des moteurs et servomoteurs (raccordés à la moelle épinière)
- Moteurs CC avec encodeurs et un châssis. J’ai opté pour un châssis à chenilles, type tank : facile à diriger et une meilleure adaptation au terrain que les roues.
- Alimentation : une première batterie Ni-MH de 7.2V / 5000mA pour les moteurs CC et servomoteurs (bras et cou). Une seconde batterie identique pour tout l’électronique (bas niveau, hub et PC). J’ai opté pour du Ni-Mh pour des raisons de sécurité (je veux pouvoir le laisser allumé même si personne n’est à la maison). La moelle épinière (MEGA) surveillera l’état des batteries. Le robot pourra aussi fonctionner sur une alimentation externe (12 V).
Pour concrétiser tout ça, voici une « maquette » de R.I.P.E.R., ce n’est pas très joli, mais ça a le mérite de clarifier un peu la cible 😉
Le schéma suivant décrit l’architecture du robot et recense toutes les interfaces nécessaires. Le détail de chaque carte n’est pas représenté pour faciliter la lecture. Cliquer sur le schéma pour le voir en taille réelle :
Et voilà, il y a plus qu’à…;)