FabBOT 1.0

Le « Super Robot D’accueil » devient le FabBOT 1.0. Suivez ici l’avancée du projet, nos idées, leurs réalisations !

Présentation du projet

cartoon-ai-robot-scene.jpg

Et oui, on y est, l'ère où les robots remplacent les hommes. Les médiateurs du Fablab n'y coupent pas. Une petite télévision, venue tout droit de l'espace, débarque au Fablab et entend bien faire régner l'ordre. De l'espace ? L'allure de cosmonaute qu'elle affiche ne dupe personne et son look rétro a bien vite fait de nous renseigner sur sa véritable identité : ce n'est qu'un vieux téléviseur des années 70.  Du moins, en apparence...

Objectif du projet : 

L'objectif du projet est de réaliser un petit robot pour l'accueil des visiteurs du Fablab.  

Il assurerait différentes fonctions : 

Cahier des charges : 
Fonctions



FP1 Détecter l'arrivée de nouveaux visiteurs Reconnaissance faciale/forme humaine

FP2 Interagir oralement avec un utilisateur sur la base de questions fermées => demander de répondre par oui ou non !
Reconnaissance vocale/micro

Oui/Non

Yes/No

FP3 Effectuer des mouvements de rotation autour de sa base ( tête indépendante )
Motorisation de la base

Axe Z : 360°

FP4 Avoir différents modes de fonctionnement 
Logiciel

Actif

Pause

Gentil/méchant

FP5 Emettre un signal sonore caractéristique audible dans tout le FabLab pour prévenir les médiateurs  Système de haut-parleur Combien de DB ? 
FC1 Tenir sur le comptoir à l'accueil du FabLab Dimensionnement

Longueur : 30 cm

Largueur : 30 cm

Hauteur :  50 cm

Taille de la télé ( 20x20x35)

FC2 Être nomade, facilement déplaçable et  transportable  Dimensionnement, 


FC3 Être alimentée électriquement Branchement secteur ou batterie rechargeable ou charge induction

Volt, Ampère ?

FC4 Ne pas être trop énergivore Consommation électrique/flux de données et Optimisation


FC5 Pouvoir être mis à jour et fonctionner de façon autonome Connecteur USB / Logiciel 


Une idée : servir de moniteur "design" = mode de fonctionnement

En mode moniteur : un mode veille = il ferme les yeux et dors, ouvre parfois un œil, baille ... : si mouvement de souris détecté, sortie du mode veille.

Oui mais l'idée n'est pas vraiment de créer un Périphérique. C'est plutôt de créer un système embarqué AUTONOME qui pourra être facilement déployé dans les quatre coins du Fablab pour pouvoir servir, par exemple, de bornes d'information pour les utilisateurs. 

Alors dans ce cas =>affichage de l'écran stream ? Trop énergivore ... 

Ou bien ! => modem ? 

Modem-routeur : wifi ?

Mode robot activé 

Si bornes d'information : connexion à un serveur et envoie de requêtes

=> Base de données / ChatBot

Prototype 0

Scénario :

Les médiateurs Fablab ne sont pas présents à l’accueil, le mode "Actif" est activé.

Un visiteur entre au FabLab. 

Le Robot :

-Bonjour, bienvenu(e) au FabLab, êtes-vous enregistré(e) ? 

-Oui/Non

Si oui : demandera dans une version ultérieure si l'utilisateur a besoin d'information. 

Si non : siffle pour appeler un médiateur FabLab

Comment mettre à jour un système embarqué 

Plan d'action : 

Matériel et pré-requis : 

- Hardware/Software ?

- optimisation => Justification des choix !!!

- Python ou C++ ?

langage assembleur ?

- écran LCD couleur pour visage

- motorisation : Arduino/raspberry ( latence ? ) 

- intégration du wifi ? communication via le réseau ? 

- écran tactile => configuration/personnalité

- système de chargement batterie ? secteur ? 

- système embarqué : raspberry pi

- Le design : celui de la télé mais pas la télé !!!

GNU/linux  ou Raspberry Pi OS ( ex-raspbian )

Inventaire et estimation des coûts
Matériel
Fonction
Disponibilité
Coût
Autres infos
Arduino UNO
Motorisation
OUI? - Magasin Fablab
/
Rupture de stock ?
Raspberry Pi (Linux?)
Système embarqué
OUI
/

Quel modèle pour notre utilisation ? 

Raspberry Pi 4 modèle B ?

Caméra Module 2 8MP
Reconnaissance facial
OUI - Magasin Fablab
/
Fonctionne avec Raspberry Pi 
Écran LCD Couleur Tactile
Visage, configuration/personnalité
NON

Moteur Pas à Pas Motorisation OUI / Fonctionne avec Arduino
Batterie Energie électrique
 
Budget prévisionnel 

Schéma de fonctionnement

IMG_0002.jpeg

Important ! Système de ventilation => éviter la surchauffe 

-> raspberry ! 

Le DESIGN :

Inspiration 

image.png

Soit le design de la Télé mais comment faire ? 

Soit, inventer un design : demander des idées 

-> Faire ce qui est possible au fabLab et qui rentre dans le budget 

-> Inclure tous les systèmes à l'intérieur

Schématiser les différents design et les assembler comme un puzzle

Possibilité de cacher des systèmes dans la base : attention aux dimensions ! 

Pour la base de données : 

est-ce que j'ai répondu à vos atteintes ? Non -> appel des médiateurs

Carnet de bord :

Vers l'infini et au-delà

Spécificité plus techniques liées à l'optimisation :

- temps d'exécution des tâches 

Choix d'un nom ? 

Comments Alex:

Il faudrait  commencer à réaliser des essais et tenter d'avoir un Minimum Viable Product afin d'avoir une 'base' sur laquelle itérée (il y aura d'autres problématiques que nous allons découvrir). Commencer avec quelque chose de très basique et ensuite itérer et améliorer, pas essayer d'avoir le produit final parfait au premier coup. Laisser l'esthétique et optimisation pour la fin, pas pour le début;

Il serait intéressant de commencer par exemple par tester YOLO, qui peut être utilisé localement (Python) et qui est utile pour la détection visuelle.

Ensuite il est possible d'interfacer avec une carte ESP32 via le port serial et on pourrait connecter des moteurs à une caméra et faire du tracking en temps réel. Cela peut être intéressant également pour la partie de reconnaissance vocal (on peut directionner le micro par exemple...).

L'ESP32 peut créer voir se connecter à un réseau wifi, donc pas besoin de LoRA. Les ESP-XIAO sont très petit, peut coûteux et peuvent être un choix sensé.

-> les ESP peuvent être des clients dans le serveur et recevoir les fameux pings quand quelqu'un est à l’accueil par exemple.

Ensuite le code Python peut interfacer, une fois il détecte quelqu'un, avec un modèle entraîné pour la partie de reco. vocal, et l'activer...

Une fois ceci réalisé, il serait désormais, et pas avant (à mon avis), une bonne idée de s'interroger sur la partie esthétique du projet/ produit final...

Premier essais:

tracking avec YOLO et sortie avec serial connecté à un arduino uno.

code:  https://github.com/alexcrrera/fablabBot/blob/main/fabu.py

 

image.png

Le centre relatif de la détéction (le point rouge) est envoyé à l'arduino pour centrer la caméra. Il faudrait trouver une webcam et faire un support avec les servomoteurs du fablab (ceux qui sont labellés "servo ++",  les "bleus" ne sont pas du tout suffisament puissant.

 


Bibliographie 

Notion : informatique, électronique, système embarqué, système interactif, PSoC

Système de motorisation

https://arduino-france.site/moteur-pas-a-pas/

https://www.aranacorp.com/fr/pilotez-un-moteur-cc-avec-arduino/amp/

Système embarqué

https://perso.univ-lyon1.fr/jean-patrick.gelas/doc/sle/embarque-support_de_cours-2020-a-distance.pdf

https://test-logiciel.fr/article/logiciel-embarque-definition-exemples-avantages-et-inconvenients/

https://fr.wikipedia.org/wiki/Modem

https://f2school.com/wp-content/uploads/2020/03/Syst%C3%A8mes-embarqu%C3%A9s-cours-01.pdf

https://www.mcours.net/cours/pdf/leilclic3/leilclic667.pdf

https://objets.ccdmd.qc.ca/manuel/1-5-presentation-darduino-et-de-son-environnement-de-developpement/

Les Fondamentaux des Systèmes Embarqués : Un Guide pour les Débutants

Différence entre Arduino et Raspberry pi

Cours Systèmes Embarqués : Introduction

ROS - Robot Operatin System

ROS tutorial

Rosserial

ROS and Arduino

ROS and Raspberry pi

What is ROS2 ?

Building a ROS Robot for Mapping and Navigation

The ROS Transform System

How to start making AUTONOMOUS ROBOT with the ATTLER

Logiciel embarqué

https://www.lifewire.com/hardware-vs-software-vs-firmware-whats-the-difference-2624567

https://rtone.fr/blog/logiciel-embarque-firmware/

Linux

https://openest.io/linux-embarque/developpement-linux-embarque-5-etapes-pour-commencer/

Mise à jour du système embarqué 

https://openest.io/linux-embarque/comment-mettre-a-jour-un-systeme-embarque/

https://github.com/sbabic/swupdate

Rasberry pi

https://blog.webnet.fr/comment-creer-un-assistant-daccueil-avec-raspberry-pi-reconnaissance-faciale-avec-opencv/

https://blog.webnet.fr/comment-creer-un-assistant-daccueil-avec-raspberry-pi/

https://www.youtube.com/watch?v=gU6gmrPHb1s

https://www.raspberrypi-france.fr/10-projets-fascinants-a-realiser-avec-un-raspberry-pi/

https://fastercapital.com/fr/contenu/Domotique---Transformez-votre-maison-avec-RPi.html

https://arduiblog.com/category/robots/

Rasberry Pi OS

https://www.raspberrypi.com/software/

Choix du système d'exploitation

https://monraspberry.com/quel-systeme-dexploitation-pour-raspberry-pi/

Caméra et reconnaissance de forme humaine

ESP32 et Caméra + algorithme python ( voir wiki Akli & Wang )

https://fr.amen-technologies.com/real-time-face-recognition-with-raspberry-pi

Reconnaissance vocale

https://peerdh.com/fr/blogs/programming-insights/implementing-real-time-speech-recognition-on-raspberry-pi-using-tensorflow-lite

https://www.raspberry-pi.ovh/blog/index.php?creer-une-interface-vocale-et-commander-votre-raspberry-pi

Affichage et écran LCD tactile

https://testeurjoe.fr/test-du-moniteur-raspberry-pi-moniteur-portable-bien-construit-qui-fonctionne-avec-nimporte-quel-appareil-compatible-hdmi/

Système serveur/Wifi ?

https://www.raspberry-lab.fr/Debuter-sur-Raspberry-Francais/Connecter-le-Raspberry-Pi-au-Wifi/

https://raspberrytips.fr/configurer-wifi-raspberry-pi/

https://monraspberry.com/connexion-a-distance-sur-un-raspberry-pi/

https://raspberrytips.fr/raspberry-pi-connect-tutoriel/

https://raspberry-pi.fr/connecter-ssh-raspberry-pi/

Le système embarqué

Prise en main de Raspberri Pi

Aujourd'hui, nous nous concentrons sur la découverte et la familiarisation avec les cartes Raspberri Pi plus précisément, la Raspberry Pi 4 Computer Model B avec 8Go de RAM. Le choix de ce modèle c'est fait sur la base de la disponibilité au Fablab.

Présentation de la carte : 

IMG_6498.jpeg

Composants de la carte : 

IMG_6503.jpeg

Le codage de la carte nécessite l'utilisation d'une carte microSD à insérer dans le port prévu à cet effet. La carte microSD va contenir le système d'exploitation sur lequel va tourner notre logiciel. Le Raspberry Pi peut fonctionner sous diverses systèmes d'exploitation (Linux etc) dont le choix va dépendre de l'utilisation que l'on veut en faire. Nous nous pencherons plus tard sur le sujet. Pour l'heure, afin de faciliter au mieux notre familiarisation, nous utiliserons le système d'exploitation officiel, recommandé, soit le Raspberry Pi OS ( anciennement Raspbian ). Ce système existe lui même en deux versions, le Raspberry OS Desktop pour un usage très générale, et le Raspberry OS lite dépourvu d'interface graphique. Nous utiliserons le premier. 

Installation de Raspberry Pi OS sur la carte microSD : 

Pour ce faire, vous aurez besoin de 3 choses : une carte microSD de 32Go à 2To, un ordinateur capable de lire une carte microSD ( sinon, d'un adaptateur ), l'image du système d'exploitation Raspberry Pi OS et le petit logiciel Raspberry Pi Imager qui permet de graver l'image du système d'exploitation sur la carte. 

Voici pour commencer le lien de téléchargement de l'image du système d'exploitation Raspberry Pi OS et de Raspberry Pi Imager: https://www.raspberrypi.com/software/

https://www.raspberrypi.com/documentation/computers/getting-started.html#setting-up-your-raspberry-pi

 

 

Quel système d'exploitation choisir ? 

 

Heureusement pour nous, le Fablab est un trésor qui regorge de ressources. Regardez la trouvaille ! 

Page pouvant nous intéresser pour le projet :

Page 26 : Visiophone intelligent avec écran pour le visiteur

Page 30 : Robot pianiste avec une caméra pour lire les partitions => reconnaissance visuelle

Page 34 : Pi Commander, vieux jouet électronique transformé en borne d'Arcade

Page 36 : OpenEars, détection de véhicules de braconniers dans des réserves naturelles. => capteur acoustique

Page 42 : Miroir magique à reconnaissance faciale

Caméra RPI, logiciel de décodage : OpenCV (pyimagesearch.com)

sudo apt -y update && sudo apt -y upgrade 

sudo apt install libopencv-dev python3-opencv

IMG_6499.jpeg

IMG_6500.jpeg

IMG_6501.jpeg

Le système de reconnaissance faciale

Pour commencer, on se propose de suivre le tutoriel de PJ Evans page 42 du MagPi : Le miroir magique à reconnaissance faciale ! Bien sûr, il ne s'agit pas dans notre cas de créer un miroir et l'on se contentera de suivre les instructions concernant la mise en place de la caméra et du logiciel de reconnaissance faciale