Aller au contenu


Photo

Robot Quadrupède Arduino Uno

Quadrupède Arduino Uno Mini Maestro

  • Veuillez vous connecter pour répondre
108 réponses à ce sujet

#1 AlexBotMaker

AlexBotMaker

    Nouveau membre

  • Membres
  • 48 messages

Posté 17 mai 2015 - 07:52

Bonjour a tous, je vous présente mon tout premier robot. Je ne lui est pas vraiment trouvé de nom donc nous l’appellerons Léo.

Je travaille dessus depuis maintenant 1 ans.

 

Les différents composant du robot sont :

 

- Une Carte Arduino Uno.

- Un contrôleur de servomoteur Mini Maestro 12.

- 12 Servomoteurs Hitec HS-422 (Très peu puissant mais peu chère).

- Un shield Xbee de seedstudio

- 2 x Xbee S1

- Xbee usb explorer

- Accu 6V 2500mAh

 

Le corps et et les pattes ont été modélisé sous Solidworks, puis usinée grâce à une machine lasers.

 

- Corps x 2

- Femur x 8

- Tibia x 8

 

Programmé sous Visual studio 2010 avec le SDK visual micro arduino. Je n'utilise pas encore la cinématique inverse mais je travaille actuellement dessus.

 

J'espère que le robot vous plaira, vous pourrez suivre l'évolution du robot depuis sa création avec les photos.

Si vous avez des question par rapport aux cartes ou si vous voulez reproduire les pièces ou avoir des informations pour pouvoir refaire votre exemplaire n'hésiter pas je vous aiderai du mieux que je peux !

 

A+

 

Ps: La toute dernière version avec la coque thermoformé a été repensé mécaniquement de A à Z.

J'ai rajouté de nouvelle photo.

 

Merci à tous pour l'aide que vous m'avez déjà fourni !

 

Big things have small beginning.

Image(s) jointe(s)

  • IMG_2016.JPG
  • IMG_3191.JPG
  • IMG_3309.JPG
  • IMG_3356.JPG
  • IMG_3692.JPG
  • IMG_4090.JPG
  • Image1.jpg
  • Image1.png
  • Assemblage.Base.Basse.png

Modifié par Jan, 25 avril 2017 - 04:55 .


#2 ashira

ashira

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 1 333 messages
  • Gender:Male

Posté 17 mai 2015 - 08:15

Salut et félicitations pour ton travail!

Qu'entends tu par angles calculés?

#3 AlexBotMaker

AlexBotMaker

    Nouveau membre

  • Membres
  • 48 messages

Posté 17 mai 2015 - 08:44

Merci a toi !  :)

Je calcul les angle gamma, alpha et beta (j'utilise Al Kashi si je me trompe pas). Mais je me suis aider d'un tutorial anglais pour la cinématique inverse. J'envoie des coordonné en x, y et en z à des pattes pr l'insant j'essaye de comprendre comment sa fonctionne mais je patoge. Puis les gait (demarche) pareil j'ai du mal à visualer comment tout se relie et qu'est se que c'est censé faire réellement. Mon niveau en programmation n'est pas élevé je découvre à peine.

Mon programme d'avant c'était juste envoyé la position en degrée pour chaque servo donc des pages à rallonge de code et des mouvement totalement imprécis.

int gamma(double x, double y, double zoffset) 
{
    double g;
    g = atan(x/y);
    return int(g*(180/pi)); // radian ---> degré
}

double alpha(double x, double y, double zoffset)
{
    double L2=sqrt(pow(zoffset,2)+pow(y-coxa,2));
    double alp1 = acos(zoffset/L2);
    double alp2 = acos((pow(tibia,2)-pow(femur,2)-pow(L2,2))/(-2*femur*L2));
    double alp = alp1+alp2;
    return int(alp*(180/pi));
}

double beta(double x, double y, double zoffset)
{
    double bet = acos((pow(zoffset,2)+pow(y-coxa,2)-pow(tibia,2)-pow(femur,2))/(-2*femur*tibia));
    return int(bet*(180/pi));
}


#4 ashira

ashira

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 1 333 messages
  • Gender:Male

Posté 17 mai 2015 - 10:03

Je me suis pas encore penché assez sur la cinématique inverse pour t'aider. Par contre mesurer les angles plutôt que de les calculer ne serait pas plus fonctionnelle niveau asservissement?

#5 AlexBotMaker

AlexBotMaker

    Nouveau membre

  • Membres
  • 48 messages

Posté 17 mai 2015 - 10:52

Oui j'ai regardé rapidement ton blog, tu ma l'air de bien te débrouiller en programmation et sous solidworks ! beau travail pour la reconnaisance d'objet sa doit être très compliqué. 

 

Ce que j'ai compris c'est qu'on donne un x, un y et un z qui vienne s'appliquer sur chaque servomoteur d'une patte, il ya une relation parent-enfant donc les servomoteurs agisse les un sur les autres et grâçe à ces coordonné tu dit ou tu veux allé avec le bout de la patte dans l'espace à 3 dimensions. Après y'a ces angles calculer qui rentre en compte et que j'envoie directement au servomoteur. je pense.. j'en suis aucunement sur.

 

 

Big things have small beginning



#6 ashira

ashira

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 1 333 messages
  • Gender:Male

Posté 18 mai 2015 - 12:19

D'accord, quand tu parlais d'angles calculés j'ai pensé à autre chose. Oui c'est ça, ces angles sont calculés selon la configuration de ta patte. Mais je ne connais pas ces équations, j'en suis resté la.

#7 AlexBotMaker

AlexBotMaker

    Nouveau membre

  • Membres
  • 48 messages

Posté 18 mai 2015 - 12:49

Ok! c'est se que je pensais aussi.

J'vous tiendrai au courant si j'avance mais pour l'instant les pattes ne réagisse pas toutes pareil... jcontinue les tests.



#8 AlexBotMaker

AlexBotMaker

    Nouveau membre

  • Membres
  • 48 messages

Posté 29 mai 2015 - 09:09

J'ai rajouté quelque photo comme promis, si vous avez la moindre question n'hésiter pas.



#9 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 9 924 messages
  • Gender:Male
  • Location:Anglet
  • Interests:Robotique, Entrepreneuriat, Innovation, Programmation, Résolution de problème, Recherche de solutions, Mécanique, Electronique, Créer, Concevoir

Posté 29 mai 2015 - 09:14

Très beau boulot ;)

Bonne continuation pour la suite ! =)


Si mon commentaire vous a plus laissez nous un avis  !  :thank_you:

Nouveau sur Robot Maker ? 

Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope  aux articles,  à la boutique  et aux différents services disponible !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être ! 
Si vous souhaitez un robot pilotable par internet n'hésitez pas à visiter www.vigibot.com et à lire le sous forum dédié à vigibot!

 

Les réalisations de Mike118  

 

 

 


#10 AlexBotMaker

AlexBotMaker

    Nouveau membre

  • Membres
  • 48 messages

Posté 29 mai 2015 - 09:32

Merci beaucoup :) ,mais je tiens à préciser quand même que pour la dernière version avec la coque thermoformé, on a travaillé à plusieurs dessus car je ne maîtrise pas encore bien Solidworks.

Par contre j'avais réalisé tout les autres exemplaire seul puis maintenant j'ai encore la lourde tâche de comprendre comment fonctionne la cinématique inverse.

 

Je suis bloqué dans mon programme, j'ai du mal à comprendre comment gérer les servomoteurs avec les données cartésienne,  j'envoie ces donnée (x, y, z) à tout les servomoteurs d'une seule patte mais vu qu'il y a une liaison parent-enfant entre les servomoteurs je ne comprend pas comment leur faire faire se que je veux même si les calculs mathématiques sont censé être correcte (Pythagore, Al Kashi, et loi de cosinus).

 

3 equations -> 3 angles envoyé a chaque servo -> coax, femur, tibia ..Quelqu'un à une idée ?

 

Merci d'avance !



#11 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 9 924 messages
  • Gender:Male
  • Location:Anglet
  • Interests:Robotique, Entrepreneuriat, Innovation, Programmation, Résolution de problème, Recherche de solutions, Mécanique, Electronique, Créer, Concevoir

Posté 30 mai 2015 - 01:51

Salut, 

 

Il y a plusieurs façon de faire.

Soit tu étudies ton cas à toi de manière purement mathématique. Du coup tu trouve chacune des équation qui pour des angle donnés te donnent les positions du bout de chacune de tes pattes par rapport au centre de ton quadrupède, puis par combinaison tu  inverse" et donc exprime les angles en fonction  en fonction des position ... 

Dans ce cas je te suggère de passer par l'intermédiaire des coordonnées cylindriques r teta z avec une base centrée sur ton axe de rotation liée à "coax"  :  teta devenant l'angle que fait le "fémur " par rapport à "coax" et  r et z étant fonction de seulement les deux autres angles.

puis une fois ces calcule fais en coordonnées cylindrique tu peux tout remettre en coordonnées carthésienne et faire le changement de repère  genre au centre de ton quadrupède pour que toutes tes formules pour chacune de tes pattes soit dans la même base.  du coup tu te trouve avec tes 12 formules pour chacun des angles de tes pattes qui prennent chacun en paramettre leur x y et z souhaité respectifs.
 

 

Soit tu utilise une méthode plus général qu'on voit par exemple en cours de  de "Robotique " ( cours qui porte sur tout ce qui est bras et manipulateur, type scara et autre ) en école d'ingé. 

Tu identifies les types de mouvement entre tes différentes pièces définies les différentes matrices de passages entre chacune de tes pièces, obtient la matrice de passage complète du centre de ton robot à chacun des bouts de tes pattes, fait la matrice inverse, et là tu obtiens ce que tu veux : 4 matrice qui en multipliant par un vecteur composé de tes trois positions x y z souhaitées respectives te donne un vecteur composé de tes trois angles à envoyer à tes servo . 

Si ça intéresse quelqu'un je  met mon cours de robotique de 2012 en pj. 

Fichier(s) joint(s)


Si mon commentaire vous a plus laissez nous un avis  !  :thank_you:

Nouveau sur Robot Maker ? 

Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope  aux articles,  à la boutique  et aux différents services disponible !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être ! 
Si vous souhaitez un robot pilotable par internet n'hésitez pas à visiter www.vigibot.com et à lire le sous forum dédié à vigibot!

 

Les réalisations de Mike118  

 

 

 


#12 AlexBotMaker

AlexBotMaker

    Nouveau membre

  • Membres
  • 48 messages

Posté 31 mai 2015 - 08:37

Merci pour t'es éclaircissement ! 

Je vais me pencher sur les infos que tu m'a donnée et je vais regarder la quelle de ces deux méthodes est la plus simple à appliqué pour moi, le plus dure est de comprendre la relation entre les servomoteurs et comment ils agissent entre eux, je ne savais pas qu'il fallait se baser sur le centre du robot.

Donc j’imagine que le programme doit connaitre la distance entre mes pattes ? en x et en y ?

J'ai aussi placée les servomoteurs de tels sorte que lorsque je les mais tous à 90° le robot soit debout, est ce judicieux ? ou c'est pas du tout la bonne solution ?

Je n'ai jamais trouvé d'info par rapport à sa, j'ai énormément de question par rapport à sa. Enfin j'imagine que toutes ces choses la joue un rôle important pour la suite. Et je suis de loin pas ingénieurs ^^ donc je vais ramer encore quelque temps.

 

Merci encore pour ton aide !!!



#13 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 9 924 messages
  • Gender:Male
  • Location:Anglet
  • Interests:Robotique, Entrepreneuriat, Innovation, Programmation, Résolution de problème, Recherche de solutions, Mécanique, Electronique, Créer, Concevoir

Posté 01 juin 2015 - 01:15

Merci pour t'es éclaircissement ! 

Je vais me pencher sur les infos que tu m'a donnée et je vais regarder la quelle de ces deux méthodes est la plus simple à appliqué pour moi, le plus dure est de comprendre la relation entre les servomoteurs et comment ils agissent entre eux, je ne savais pas qu'il fallait se baser sur le centre du robot.

Donc j’imagine que le programme doit connaitre la distance entre mes pattes ? en x et en y ?

 

 

Oui le programme doit " connaître" les distances entre tes pattes , et les distances entre chacune de tes articulations etc... Ou du moins, ces données sont nécessaire pour définir les équations permettant de faire la cinématique inverse de ton système. 

 

 

 

 

J'ai aussi placée les servomoteurs de tels sorte que lorsque je les mais tous à 90° le robot soit debout, est ce judicieux ? ou c'est pas du tout la bonne solution ?

Je n'ai jamais trouvé d'info par rapport à sa, j'ai énormément de question par rapport à sa. Enfin j'imagine que toutes ces choses la joue un rôle important pour la suite. Et je suis de loin pas ingénieurs ^^ donc je vais ramer encore quelque temps.

 

Merci encore pour ton aide !!!

 

 

En fait ce qui est judicieux c'est de placer les servomoteurs de manière à ce que la course disponible corresponde au mieux à la course utile ...  si la course utile est centré autour de la position "debout" pour effectuer des déplacement correcte alors ton choix est judicieux. A toi de voir cela en fonction de la cinématique de ton robot. 
Met tous les servomoteurs en position " max"  pour chacune des configurations et regarde si plus de course  dans un sens et moins de course dans l'autre ne serait pas plus judicieux. 

Cependant sans même regarder la cinématique de ton robot, étant donné que tu réalise un quadrupède, si il est symétrique de symétrie centrale, => faire en sorte que chacune des courses soit aussi en symétrie centrale au niveau du lien " coax fémure " permet d'avoir un robot se déplaçant facilement dans les 4 directions : x y -x -y  

=> faire en sorte que le robot puisse fonctionner aussi bien "à l'envers qu'à l'endroit" peut aussi être intéressant  en cas de retournement et cela demande de jouer aussi sur les choix de courses... Cependant je ne suis pas sûr que ton robot soit développé avec cette idée là. 

 

Quoi qu'il en soit bon travail ;)
Bonne continuation ! 


Si mon commentaire vous a plus laissez nous un avis  !  :thank_you:

Nouveau sur Robot Maker ? 

Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope  aux articles,  à la boutique  et aux différents services disponible !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être ! 
Si vous souhaitez un robot pilotable par internet n'hésitez pas à visiter www.vigibot.com et à lire le sous forum dédié à vigibot!

 

Les réalisations de Mike118  

 

 

 


#14 AlexBotMaker

AlexBotMaker

    Nouveau membre

  • Membres
  • 48 messages

Posté 01 juin 2015 - 11:40

Je possède déjà les distances entre les différentes articulations du robot, puis je rajouterai les distances entres les pattes dans mon programme.

Merci pour ton aide ! par rapport au positionnement des servomoteurs, j’étais un peu dans le flou. ^^

Je vais me pencher un peu plus sur la théorie en utilisant le cercle trigonométrique sa peut m'aider j'imagine.

 

Dès que j'aurai avancer je posterai une vidéo.

Merci a tous ! :)



#15 Vaelan

Vaelan

    Nouveau membre

  • Membres
  • 45 messages

Posté 02 juillet 2015 - 07:41

Salut AlexBotMaker
Je suis tres interresse par ton post , car je travail au programme de mon hexapode 3ddl (arduino,ssc32,18servo 180º) nom de code CR6VA1 et je me suis basé sur le meme principe que toi , a savoir pythagore et Al-kashi.
Pour ma part je suis partis sur une posture d origine , hauteur=longueur tibia/servo femur 90º et l empatement=(femur+tibia)/2 cette position correspond sur ma radio a tout les manche et inter au centre et des mouvements les plus amples possibles a CR6VA1 une fois que tu as trouvé celle ton ton quadri ca va tout seul :

 

https://tube.geogebra.org/m/1373193

 

Je suis seul sur mon robot et je manque d avis critique donc si ca peux d'aider ou si tu vois des amelioration a apporter suis prenneur.

N ayant aucune notion en math ni en programmation je m eclate a le faire.
Bon courage



#16 AlexBotMaker

AlexBotMaker

    Nouveau membre

  • Membres
  • 48 messages

Posté 05 juillet 2015 - 10:39

Salut ! beau travail, tu m'a l'air d'avoir mieux compris le fonctionnement que moi !

CommandeH, commandeL ??  c'est quoi ? z, y ?

Tu as des photos de ton robot ? Je vais me pencher sur ton travaille et le comparer normalement on devrait pas être très loin du but, et aussi sur les coordonnées cylindrique mais j'ai pas trop eu le temps ces derniers temps ! Si tu as lu les post précédents.

 

bon courage a toi aussi ;)



#17 Vaelan

Vaelan

    Nouveau membre

  • Membres
  • 45 messages

Posté 05 juillet 2015 - 10:40

coucou,

je continue a travailler dessus mais je manque un peu de temps. les commandes corresponde "aux commandes de ma radio" je te mets un autre fichier avec toute les commandes que je compte utiliser avec l'IK: https://tube.geogebr...show/id/1392051si tu as des idées des critiques ou amélioration a apporter suis prenneur;)) a terme (si j arrive a créer ma cinématique) c est de la gérer avec un gyroscope 3 axe de l'un de mes hélicos.

super travail pour ton quadri moi j ai pas eu ton courage (le châssis je l'ai acheté;))niveau prog t'en ai ou ? 

 

une petite vidéo pour la présentation de CR6VA1 :  



#18 AlexBotMaker

AlexBotMaker

    Nouveau membre

  • Membres
  • 48 messages

Posté 06 juillet 2015 - 04:46

Salut ! en tout cas tu m'a l'air bien avancer, plus que moi concernant cinematique inverse moi je n'ai pas encore tout compris !

T'utilise aussi les coordonnée cartésienne et tu les passes en coordonnée cylindriques ? ou tu calcul juste tout les angles ? avec pytagore, al-kashi et la loi de cosinus. Je patauge dans la boue moi ^^  ! lol

Move(1,0,0,0) // (numeropatte, x, y, z)

void Move(int servoNumber, double x, double y, double z)
{
 RFx=x;
 RFy=y;
 RFz=z;
 MoveRF(gamma(RFx, RFy, RFz),alpha(RFx, RFy, RFz),beta(RFx, RFy, RFz));
}


int gamma(double x, double y, double garde_ausol) //coax
{
    Serial.print("x,y,z:"); Serial.print(x); Serial.print(", "); Serial.print(y); Serial.print(", "); Serial.print(garde_ausol);

    double g;

    g = atan(centerx/centery);

    return int(g*(180/pi));  // radian ---> degree
}

double alpha(double x, double y, double garde_ausol) //tibia
{
    double L=sqrt(pow(garde_ausol,2)+pow(centery-coxa,2));

    double alp1 = acos(pow(L,2)+pow(femur,2)-pow(tibia,2)/2*L*femur);

    double alp2 = acos(pow(centery-coxa,2)+pow(L,2)-pow(garde_ausol,2)/2*centery-coxa*femur);

    double alp = alp1-alp2;

    return int(alp*(180/pi));
}

double beta(double x, double y, double garde_ausol) //femur
{
    double L=sqrt(pow(garde_ausol,2)+pow(centery-coxa,2));

    double bet = 180 - acos(pow(femur,2)+pow(tibia,2)-pow(L,2)/(-2*femur*tibia));

    return int(bet*(180/pi));
}

j'ai essayer de m'inspirer de toi pour les noms mais jcrois que jme suis deja planter..

Voila mon programme qui n'est soit pas complet soit je mélange des choses, ton aide serait requise merci :)

 

C'est du beau boulot que ta fait la en tout cas toi! :)

a+



#19 Vaelan

Vaelan

    Nouveau membre

  • Membres
  • 45 messages

Posté 10 juillet 2015 - 11:05

Salut,

  j avance dans ma cinématique ;)) Une petite précision ,dans ma vidéo pas de cinématique mais des angles programmer angle par angle ma radio ne contrôle que la vitesse et quelque position sur les inter.... ma cinématique est loin d être finis mais elle avance bien et géogébra me confirme le bon fonctionnement de mes équation (qui resterons a simplifier par la suite).d' ailleurs pour ne pas polluer ton post je pense que je vais créer le mien pour une explication pas a pas de mon raisonnement peut être particulier et peut orthodoxe, vu mon niveau en math, mais fonctionnel ;)

 

A chaque robot ses contrainte.Moi je me suis imposer un gyroscope 3 Axes d'ou l'implantation du roulis et tangage dans ma cinématique .Quand a ton quadri (vi vi j y ai réfléchis..) je pense que tu peux te passer du roulis/tangage/lacet, mais tu dois inclure dans tes équation son centre de gravite qui ne dois jamais être devant la diagonal des pattes adjacente a celle qui se lève (suis pas sur d'etre clair.....).Rien de compliqué mais une contrainte importante pour un quadri, selon sa vitesse de déplacement son inertie peut avoir une importance aussi mais je pense que pour commencer tu peux t'en passer.

 

pour tes question sur les coordonnés heu...... cylindrique: je sais pas ce que c est...... cartésiens: suis pas sur, ma radio contrôle le centre de mon robot en hauteur largeur longueur + 3 axe de rotation et déplacement on peut considérer ça comme cartésien mais j ai viré les repéré de geogebra qui ne me serve a rien ... je pense que ce n est que du calcul d angle en gros le but c est de lui dire "avance/tourne/baisse toi .... " et il se débrouille a calculer le reste en plus de compenser les dénivelé du terrain mais pas de données genre (X,Y,Z)

 

En ce qui concerne l'arduino pour l instant je finis la cinématique inversé et je me lance dans la programmation (je n ai appris que ce que j avais besoin pour le faire avancer ) j' avoue que je comprends pas la moitié de ton code mais je vais faire comme toi je vais m inspire de ce que tu as fais pour trouver des structure et raisonnent qui correspondent à mon robot.

 

Une fois mon post créer je compte sur toi pour des critiques constructive et je continu à suivre l'avancement de ton robot avec beaucoup d’intérêt      



#20 AlexBotMaker

AlexBotMaker

    Nouveau membre

  • Membres
  • 48 messages

Posté 26 juillet 2015 - 06:10

Désolé pour le retard !

J'ai observer ton travaille il est pas mal ! mais pour l'instant je ne peux pas trop m'avancer et te dire qu'est se qui est bien ou pas dans ta cinématique, je ne maitrise pas encore le sujet j'y travaille ... En tout cas beau boulot ! je programmait aussi mon quadrupède en envoyant juste les positions en degré mais aucune stabilité et très peu de vitesse ! du au servomoteur aussi.. mais je pense le programme joue bcp !

Dès que j'ai du nouveau sur la cinématique je te le ferai savoir !

A+







1 utilisateur(s) li(sen)t ce sujet

0 members, 1 guests, 0 anonymous users