robot bipède low cost DIY
Ce tutoriel va vous permettre de réaliser un robot bipède capable de marche, s accroupir, tourner….
En bref un robot bipède capable de se déplacer.
J ai souhaité me lancer dans ce projet car la plupart des kits sont assez cher et c est bien plus marrant de faire son propre robot que de monter un kit.
Faire marcher un robot bipède n est pas simple, et je n y connaissais pas grand chose que je me suis lancé dans cette aventure. Mais voila, il marche, il est open source et est très abordable comparé aux autres robots bipède.
Mon objectif n était pas de me ruiner, je voulais juste faire un bipède à partir de servo moteurs vraiment pas cher, une carte arduino (arduino mini) et c est tout!
Il porte sa source d énergie, une batterie 2 cellules, un module Bluetooth (HC06) pour lui envoyer des commandes et embarque une petite centrale inertielle (MPU6050).
La première version utilisait des servomoteurs SG90, très dépendus et simples d utilisation. J ai récemment remplacé ces servos par des MG90, ils ont le meme encombrement mais juste une pignonerie en métal pour un réducteur un peu plus robuste.
Il n y a pas de théorie compliquée derrière ce robot. Il marche et c est tout! Il est très difficile de faire marcher un robot bipède. La première étape consiste souvent à modéliser son robot. Souvent cette étape est tres compliquée et on s arrète à ca. Ce petit robot marche, je me suis inspiré de plein de robots vus sur internet, des articles des thèses… Il marche, juste à partir de commande très simples. C est un premier pas…
Etape 1 : Mécanique
Le robot a été dessiné sous 123D design, cest un logiciel de CAO gratuit et assez simple à utiliser. Il gère bien pour les pièces uniques mais est un peu moins bien adapté pour les assemblages. Les étudiants peuvent avoir accès a fusion 360 qui marche très bien pour les assemblages. Il ressemble beaucoup à 123D design, vous ne serez pas perdus. Si vous souhaitez les fichiers bruts, contactez moi.
Les fichiers sont en IGES (si vous voulez les modifier) et en STL si vous souhaitez juste les imprimer.
Il ny a qu une seule jambe de dessinée, il faut faire une symétrie pour avoir la gauche en fonction de la droite au moment de l impression
Etape 2 : Electronique
Les composants utilisés sont assez standards, vous trouverez sur internet plein d exemples pour connecter arduino avec
– le module HC06 http://tiptopboards.free.fr/arduino_forum/viewtopic.php?f=2&t=57
– la centrale MPU6050 https://openclassrooms.com/forum/sujet/arduino-connaitre-l-inclinaison-avec-un-mpu-6050
Rien de spécial pour ces deux composants.
Par contre, le point important (simple) mais a faire c est de bien séparer les alimentations de puissance de l alimentation de la carte arduino (voir shéma) sinon quand les servos vont tirer de la puissance, la tension de la batterie peux chuter et la carte arduino va redemarrer
Etape 3 : Programmation
Avant de pouvoir marcher, il faut déjà réussir a soulever les pieds droit et gauche successivement.
Ce robot n a qu un seul degré de liberté au niveau des hanches. Le mouvement dans le plan frontal (de face) n est obtenu qu a partir des chevilles.
Ce mouvement est réalisé à partir d un sinus autour de la position moyenne des chevilles.
Il a deux paramètres : l amplitude du mouvement (KML) et le temps d un cycle ou le temps entre chaque % de cycle
myservo7.write(FG-KML*sin(2*3.14*t/100)); // left foot
FG est la position neutre de la cheville dans le plan frontal.
C est la courbe noire sur la figure. Ce sinus définit un cycle. On parle du cycle de marche, ca correspond au temps entre deux posé successif du meme talon.
On joue avec un paramètre T, qui est le temps en miliseconde entre chaque pourcent du cycle. En jouant sur l amplitude et le temps, le robot se met a osciller sur son pied droit puis son pied gauche. Attention, si l amplitude est trop forte, rien ne va empécher votre robot de tomber sur le coté!
Si le temps T est mal réglé, la commande ne sera pas en phase avec la dynamique du robot, vous verrez, ce n est pas joli. Il faut donc bien régler expérimentalement ces paramètres.
Une fois que le robot sait bien passé du pied droit au pied gauche, on peut commencer à avancer les jambes correctement en fonction du pourcentage de cycle.
Les mouvements de la hanche sont calculés à chaque instant en fonction du pourcentage du cycle de marche à partir des équations (simples) qui sont programmées dans la fonction setkin() et qui snt représentées sur l image en bleu sur l’image.
Le genou est en extension complète pendant toute la phase d appui et fléchit pendant la phase d oscillation avec une amplitude déterminée avec le paramètre KSW (K swing) en rouge sur l’image.
La hanche fléchit en phase d appui et en phase oscillante à partir d un paramètre KST (K stance) qui va définir la longueur de pas. Plus les pas seront grand, plus il faudra donner de l énergie a votre robot et donc ajuster T et KML.
Enfin, la flexion de la cheville est juste l’inverse de la hanche plus le genou. Ce qui permet de conserver le pied paralelle au sol quelque soit le mouvement de la hanche et du genou. (le tibia et le femur ont une longueur voisine)
Finalement, le robot marchera (sans tomber) s’il respecte le critère du ZMP (Zero Moment Point). C’est dire qu’il existe un points quelque part entre ses pied ou le moment dynamique du robot s’annule. Ce critère n’est pas vérifé dans ce robot en temps réel. C’est en ajustant les paramètres KML, T, KST et KSW que l’on arrive a maintenir une marche dynamique stable. Ce qu’il est important de comprendre c’est que le temps compte…. Vous n’arriveriez jamais a marcher infiniement lentement. Un robot non plus, il faut que l’amplitude de ses oscillations (notement dans le plan frontal) soit en accord avec sa vitesse. Plus vous marchez vite, et moins vous avez a balancer votre centre de gravite au dessus de vos pied. Pour ce robot, ben c’est pareil!
"1200" height="675" src="https://www.youtube.com/embed/HQ7iegQSN9E?feature=oembed&wmode=opaque&showinfo=0" style="border: none" allowfullscreen>