Aller au contenu


Photo
- - - - -

les bases du mouvement serv


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

#1 stephane83

stephane83

    Membre

  • Membres
  • 64 messages

Posté 23 août 2013 - 08:29

bonsoir à tous, j'aurais voulu savoir quelles sont les bases de programmation sous arduino Uno pour créer un mouvement simple sur un hexapode 12 DOF, exemple je souhaite avancer tout droit !
Merci pour votre future aide ( je début dans la programmation arduino )
merci pour le forum, stephane83

#2 R1D1

R1D1

    Modérateur et Membre passionné

  • Modérateur
  • PipPipPipPipPip
  • 1 211 messages
  • Gender:Male
  • Location:Autriche

Posté 23 août 2013 - 10:14

bonsoir à tous, j'aurais voulu savoir quelles sont les bases de programmation sous arduino Uno pour créer un mouvement simple sur un hexapode 12 DOF, exemple je souhaite avancer tout droit !
Merci pour votre future aide ( je début dans la programmation arduino )


A priori, en termes de code, savoir commander tes servomoteurs en position (librairie servo) devrait suffire si tu peux accéder directement à chacun. À partir de ça, tu peux mettre n'importe quelle patte dans n'importe quelle position. Tu peux d'ailleurs t'amuser à contrôler une patte pour lui faire faire les gestes que tu veux.
Pour ce qui est de marcher, je dirais qu'il y a deux méthodes :
- l'une "expérimentale" : tu cherches comment contrôler les bons mouvements de pattes en testant des valeurs et en regardant quel geste fait la patte. Sachant en suite que la marche correspond à répéter un cycle de déplacement de chacune des pattes, tu peux répéter cette suite de commandes et faire avancer ton robot.
- l'autre est plus mathématique : en utilisant un modèle de la géométrie de ton robot (distances inter-articulations), tu peux raisonner sur la position du bout de chaque patte, et donc la position du "centre" de ton robot, et utiliser l'inverse de ce modèle pour trouver les commandes à appliquer pour déplacer le centre. Cherche des informations sur la cinématique inverse, c'est un domaine bien maîtrisé de la robotique (qui vient du contrôle des bras industriels).
R1D1 - Calculo Sed Ergo Sum -- en ce moment, M.A.R.C.E.L.
Avatar tiré du site bottlebot

#3 stephane83

stephane83

    Membre

  • Membres
  • 64 messages

Posté 24 août 2013 - 10:02

A priori, en termes de code, savoir commander tes servomoteurs en position (librairie servo) devrait suffire si tu peux accéder directement à chacun. À partir de ça, tu peux mettre n'importe quelle patte dans n'importe quelle position. Tu peux d'ailleurs t'amuser à contrôler une patte pour lui faire faire les gestes que tu veux.
Pour ce qui est de marcher, je dirais qu'il y a deux méthodes :
- l'une "expérimentale" : tu cherches comment contrôler les bons mouvements de pattes en testant des valeurs et en regardant quel geste fait la patte. Sachant en suite que la marche correspond à répéter un cycle de déplacement de chacune des pattes, tu peux répéter cette suite de commandes et faire avancer ton robot.
- l'autre est plus mathématique : en utilisant un modèle de la géométrie de ton robot (distances inter-articulations), tu peux raisonner sur la position du bout de chaque patte, et donc la position du "centre" de ton robot, et utiliser l'inverse de ce modèle pour trouver les commandes à appliquer pour déplacer le centre. Cherche des informations sur la cinématique inverse, c'est un domaine bien maîtrisé de la robotique (qui vient du contrôle des bras industriels).


Merci pour ta réponse ! J'ai cherché de chose sur la cinétique inverse et il y a une méga source de mouvement avec cette méthode, je vais étudier, mais pour le moment je pense que je ne suis pas ce niveau de programmation, donc je vais suivre dans un premier temps ton premier conseille =) !

Tu dis " testant des valeurs ", tu veux parler des angles, des degrés, oui une synchronisation avec du temps ?(excuse-moi si je comprends pas trop je suis débutant^^) aurais-tu un petit exemple de programme pour que je puisse l'étudier et comprendre ?
merci et a bientôt
merci pour le forum, stephane83

#4 olivthill

olivthill

    Membre occasionnel

  • Membres
  • Pip
  • 143 messages
  • Gender:Male
  • Location:Normandie

Posté 24 août 2013 - 11:43

La documentation de la librairie servo est :

http://arduino.cc/en/Reference/Servo

Il y a deux petits exemples complets avec des schémas :

http://arduino.cc/en/Tutorial/Sweep

et

http://arduino.cc/en/Tutorial/Knob

#5 R1D1

R1D1

    Modérateur et Membre passionné

  • Modérateur
  • PipPipPipPipPip
  • 1 211 messages
  • Gender:Male
  • Location:Autriche

Posté 24 août 2013 - 11:49

Merci pour ta réponse ! J'ai cherché de chose sur la cinétique inverse et il y a une méga source de mouvement avec cette méthode, je vais étudier, mais pour le moment je pense que je ne suis pas ce niveau de programmation, donc je vais suivre dans un premier temps ton premier conseille =) !

Tu dis " testant des valeurs ", tu veux parler des angles, des degrés, oui une synchronisation avec du temps ?(excuse-moi si je comprends pas trop je suis débutant^^) aurais-tu un petit exemple de programme pour que je puisse l'étudier et comprendre ?
merci et a bientôt


Je ne sais pas à quel point tu connais ou non le C++ du framework Arduino, donc ça n'est pas évident de t'aider ^^. Une méthode peut être la suivante :
Le programme Sweep, dans Fichier > Exemples > Servo, qui sert à faire passer un servo de 0° à 180° et vice-versa. Tu peux utiliser ce programme pour contrôler l'un des servos du bout de patte et voir le mouvement qu'il fait (attention à tes contraintes mécaniques éventuelles qui empêcheraient le servo d'atteindre ses valeurs extrêmes). Ensuite, tu fais la même chose avec le servo du "coude" de la patte, puis celui de "l'épaule".
L'étape d'après, c'est de contrôler tout les servos d'une patte, pour leur faire prendre des positions, puis de faire la même chose pour chaque patte, jusqu'à ce que ton robot tienne debout. À partir de ce moment, tu peux expérimenter le déplacement d'une patte et voir son effet sur le déplacement du robot.

En termes de code, Sweep contient à mon avis tout ce qu'il faut, si l'électronique est bonne, ça devrait fonctionner correctement. Tu as également intéresser à faire un tableau d'éléments de classe Servo (Servo tabledeservos[NBDESERVOS]) pour simplifier la gestion de plusieurs servos avec des boucles.
N'hésite pas à poser des questions plus précises pour que l'on puisse t'aider sur les détails qui peuvent poser problème.
R1D1 - Calculo Sed Ergo Sum -- en ce moment, M.A.R.C.E.L.
Avatar tiré du site bottlebot




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

0 members, 0 guests, 0 anonymous users