Vous allez élaborer des programmes pour effectuer :
des mouvements simples (pointer, pierre, feuille, ciseaux)
des mouvements automatisés (compter, chifoumi)
des mouvements automatisés utilisant un ou des capteurs (chifoumi IA, pilotage par gant)
La main sera pilotée par une carte Arduino MEGA.
Elle se programme avec mBlock (lancer pour cela mLink d'abord)
Pas d'extension particulière nécessaires pour le servo-moteur
Vous aurez besoin de connectique "Dupont" pour connecter le servo-moteur à la carte :
Le fil rouge correspond au 5V
Le fil marron correspond au GND
Le fil jaune correspond aux données : une des broches entre D2 à D8.
Paramétrage à utiliser :
Pouce = broche 2
Index = broche 3
Majeur = broche 4
Annulaire = broche 5
Auriculaire = broche 6
Poignet = broche 7
Angles :
Main fermée ✊ : 0°
Main ouverte ✋: 90° à 110°
Poignet : 0° = à plat; 20° = légère rotation
Cette partie vous permet d'avoir un premier programme pour faire des mouvements simples :
Fermer le poing (✊)
Ouvrir le poing (🖐)
Pointer du doigt (☝️)
Faire le signe "ciseau" (✌️)
Le programme comprendra une partie IHM (Interface Homme Machine), c'est à dire que l'utilisateur.rice doit pouvoir interagir avec la main par l'intermédiaire du programme. Vous allez donc programmer :
Des sprites qui permettront d'interagir avec l'utilisateur
Un programme principal qui s'exécutera sur l'objet "Arduino Méga 2560"
Le lien entre sprite et programme se fera SOIT par l'envoi de "message", SOIT par une variable (comme dans la partie A).
Utilisez le modèle de programme mis à votre disposition ci-contre pour démarrer ==> ==>
💡 L'utilisation du mode "LIVE" vous permettra d'avoir une IHM interactive.
⚠️ Pour avoir tous les blocs nécessaires, il faudra que la carte programmable soit connectée.
Créer 4 blocs personnalisés :
OuvrirMain
FermerMain
PointerDoigt
FaireCiseaux
Créer 2 variables :
ANGLE_FERMETURE (définir la variable à 0 en début de programme)
ANGLE_OUVERTURE (définir la variable à 110)
A programmer : Chaque bloc doit contenir le code nécessaire pour que les 5 servo-moteurs de la main fassent le mouvement correspondant. ⚠ Utilisez les 2 variables créés et non les angles directement.
Un appui sur une touche du clavier permet à la main de faire le mouvement correspondant.
Dans le programme, associer l'appui sur une touche à ces différents actions (une touche pour chaque mouvement simple) :
0 pour fermer le poing
5 pour ouvrir le poing
1 pour pointer du doigt
2 pour faire "ciseau"
Un appui sur un sprite permet à la main de faire le mouvement correspondant.
Dans le programme, associer le clic sur un sprite à ces différents actions (un sprite pour chaque mouvement simple):
✊ pour fermer le poing
🖐 pour ouvrir le poing
☝️ pour pointer du doigt
✌️ pour faire "ciseau"
Un appui sur la touche "espace" permet à la main de faire l'un des mouvements choisi aléatoirement.
Dans le programme, associer l'appui sur la touche au choix aléatoire de l'une des actions.
Un appui sur le joystick permet à la main de faire l'un des mouvements choisi aléatoirement.
-- EN TRAVAUX --
Vous allez programmer un jeu de Chifoumi. Dans cette première version, le programme choisira aléatoirement le signe à effectuer.
A l'appui sur la touche espace, le programme choisit aléatoirement l'une des positions :
pierre (poing fermé)
feuille (main ouverte)
ciseau
Éventuellement, un léger mouvement du poignet peut être ajouté.e avant le choix du mouvement. Par exemple, en faisant varier l'angle du poignet (broche 7) entre 0° à 20°.
Vous pouvez aussi ajouter un bouton "Play" pour lancer le jeu par un clic de souris.
🥔🍃✂️ N'oubliez pas de créer une IHM afin que le jeu soit plus fun !!
Voici un exemple ci-contre avec des images générées par IA (ChatGPT Images) ▶
NB : Le bouton Play a été généré séparément de l'arrière plan
💡 L'utilisation de blocs personnalisés vous permettra de bien structurer votre code. C'est donc vivement recommandé ! 🔽
Cette fois, le programme ne doit pas choisir aléatoirement le symbole à faire mais à la place il va utiliser la détection faite par Webcam pour décider quoi faire. En l'occurrence, il faudra écrire un programme permettant d'avoir une main robotisée imbattable !
Vous devrez utiliser le mode "Live" avec un sprite et l'extension "Teachable machine" pour communiquer des messages ou des variables avec la carte.
⚙️ A faire :
Bien lire les informations disponibles sur la page d'aide des "Teachable Machines" et faites un essai d'entrainement pour comprendre le fonctionnement
Entrainer votre modèle d'IA our reconnaitre pierre, feuille, ciseaux . ATTENTION : Utiliser un fond neutre pour faire les différents mouvements
Vérifier que le programme arrive à détecter les mouvements. Pour cela, faire des tests sur le résultat de la reconnaissance IA en utilisant le bloc "Confiance de ... ".
Coder le programme permettant à la main de faire le mouvement pour gagner selon ce que le joueur a joué
Ajouter une IHM avec des images, textes et sons pour pouvoir informer l'utilisateur, lui permettre de rejouer, arrêter le jeu, ... Les éléments de l'IHM peuvent aussi être générés par IA.
Vous allez d'abord entraîner un bloc d'IA de mBlock à reconnaître les chiffres 1 à 9 effectués dans une caméra.
Une fois le modèle entraîné, vous utiliserez ce bloc pour que la main exécute les signes des différents nombres lorsqu'ils sont faits devant la caméra.
🚧⬇️ EN TRAVAUX⬇️ 🚧
Nous attendons de recevoir du matériel et nous devons faire des tests pour savoir si cette partie sera réalisable cette année.
Programmer la main robotisée pour reproduire les mouvements de main d'un utilisateur muni d'un gant équipé de capteurs de flexion.
Identifier les valeurs renvoyées par les capteurs de flexion selon les mouvements
Effectuer une correspondance entre ces valeurs et les angles des servo-moteurs
Programmer la main pour reproduire le plus fidèlement possible le mouvement de l'utilisateur