Aller au contenu


Photo
- - - - -

Robot Holonome à 5 roues


27 réponses à ce sujet

#21 Mamaad Pathe

Mamaad Pathe

    Membre

  • Membres
  • 14 messages

Posté 18 décembre 2014 - 08:25

Bon je vois que ça patine un peu, 
Je prend le sujet en cours mais : 

Premièrement : Réessaye de poster ton schémais / De préférence fais un schémas clair -> Ton pentagone vu de dessus, les axes de tes roues et les "vecteurs "  représentant la vitesse rayon de la roue r * vitesse de rotation de la roue w de chacune de tes roues. PS : click sur "utiliser l'éditeur complet " quand tu rédige ta réponse pour pouvoir mettre ton schémas en PJ!

à partir de ce schémas tu peux faire une étude cinématique de base  : 
En prenant en compte que ton pentagone est un solide indéformable tu peux t'essayer à supposer que les centre de tes roues ( pointes du pentagone) se déplacent bien à la vitesse r*w cependant tu vas vite te rendre compte que c'est pas possible de par la configuration de l'ensemble ( sauf cas particulier pour w = 0 pour chacune des roues et w constant pour chaque roue de manière à ce que le pentagone tourne sur lui même ) . 

Je te laisse le démontrer en essayant d'appliquant la formule de la base mobile ( aussi pompeusement nommée formule de varignon)  ou bien via un gradiant de vitesse de manière graphique . 

Bref du coup à mon sens tu ne peux pas facilement directement raisonner en terme de vitesses ... Cependant il me semble qu'un modèle en terme de forces exercées avec chaque roue exerçant une force dans la direction d'avance me semble plus adapté ... 
La résultante de ces forces exercé donne la direction du mouvement du pentagone après à toi de voir à quel point tu veux être précis dans ton modèle avec entre autre la(/les) force(s) de frottement(s) ainsi que la force exercé par les roues sur le sol que tu peux eventuellement commencer par modéliser comme proportionnel à la vitesse r*w de chacune de tes roues.
 

 

Est ce que tu comprends ce que je veux dire ? 


à bientôt !

 

Excuse moi mike118 mais je n'ai pas bien compris.

les roues sont fixées au milieu de chaque coté du pentagone

pour plus de details, j'ai mis en PJ le schema.

 

Et merci pour la methode comment joindre le fichier

Fichier(s) joint(s)

  • Fichier joint  Vitesse.pdf   246,28 Ko   149 téléchargement(s)


#22 Leon

Leon

    Membre passionné

  • Membres
  • PipPipPipPipPip
  • 1 289 messages
  • Gender:Male

Posté 18 décembre 2014 - 06:52

Il y a quand même beaucoup de sources sur Internet qui décrivent comment contrôler un tel robot holonome à roues suédoises.

Est-ce que tu as regardé le lien que j'avais donné quelques messages plus haut?

 

http://sitecv.free.fr/holonome/holonome.htm

 

 

  • holonome.jpg


    Pour les vitesses :
  • V1 = V * sin( a - 90)
  • V2 = V * sin( a + 30)
  • V3 = V * sin( a + 150)

 

 

 Sachant qu'il manque dans ces calculs la prise en compte de la rotation du robot sur lui même. Mais c'est plutôt simple à gérer, il suffit de rajouter un terme en "r x theta_point" à chaque vitesse roue. Théta_point étant la vitesse de rotation du robot par rapport à son centre (=vitesse de lacet).

 

Leon.


BOB4, mon drone hélicoptère autonome d'intérieur http://heli.bot.free.fr/
BOB3, mon robot autonome d'intérieur avec WiFi + Foxboard Linux http://ze.bot.free.fr/
BOB5, robot bipède simulé, puis tentative de réalisation (fail)


#23 Mamaad Pathe

Mamaad Pathe

    Membre

  • Membres
  • 14 messages

Posté 18 décembre 2014 - 07:00

Il y a quand même beaucoup de sources sur Internet qui décrivent comment contrôler un tel robot holonome à roues suédoises.

Est-ce que tu as regardé le lien que j'avais donné quelques messages plus haut?

 

http://sitecv.free.fr/holonome/holonome.htm

 

 Sachant qu'il manque dans ces calculs la prise en compte de la rotation du robot sur lui même. Mais c'est plutôt simple à gérer, il suffit de rajouter un terme en "r x theta_point" à chaque vitesse roue. Théta_point étant la vitesse de rotation du robot par rapport à son centre (=vitesse de lacet).

 

Leon.

Oui c'est ce que j'ai fais 

mon problème ce que je veux avoir (Vx, Vy, theta point) en fonction de (V1,V2,V3,V4,V5)....

mais comme la matrice n'est pas carrée...c'est impossible



#24 Leon

Leon

    Membre passionné

  • Membres
  • PipPipPipPipPip
  • 1 289 messages
  • Gender:Male

Posté 18 décembre 2014 - 07:34

Pourquoi veux-tu avoir Vx, Vy, Theta point en fonction des vitesses roues? C'est étrange... Quel serait l'intérêt? D'habitude, c'est l'inverse : on veut déplacer le robot d'une certaine façon, et on en déduit les consignes aux moteurs. C'est ce que font tous les robots holonomes à roues suédoises.

C'est un exercice imposé par un devoir d'école, que de fonctionner à l'envers?

 

Ou alors est-ce que tu veux pouvoir déterminer les déplacements 2D d'un robot holonome que l'on déplace à la main? Pour l'afficher sur un écran par exemple? Une souris à base de "robot holonome"? C'est le seul et unique intérêt que je verrais à fonctionner dans ce sens.

 

Je pense qu'il faut prendre un peu de recul, et ne pas rester sur du calcul matriciel, du calcul formel. Un peu de géométrie, de réflexion, ça marche bien aussi.

 

Je suis à peu près certain que :

 

la vitesse de rotation du robot est la moyenne des vitesses de chaque roue divisé par le rayon:

Theta_point = (V1 + V2 + V3 + V4 + V5) / (5 x r )

Où V1..5 sont les vitesses tangentielles à la circonférence du robot, c'est à dire les seules que tu mesures / contrôle avec tes roues suédoises.

 

Et la vitesse du centre du robot est la moyenne des projections de chaque vitesse unitaire

Vx = (V1x + V2x + V3x + V4x + V5x) / 5

Où V1x est la projection de V1 sur l'axe x (repère de ton choix).

Je te laisse calculer les projections V1x V1y en fonction de V1..5, mais ça doit être du style.

V1x = V1 x (theta)

V2x = V2 x (theta + 2Pi/5)

etc...

 

Voilà, je ne pense pas qu'il y ait besoin de la complexité des calculs matriciels, des torseurs ou autre joyeusetés pour répondre au problème posé.

Attention, c'est juste le principe, je n'ai pas respecté ton schéma.

 

Leon.


BOB4, mon drone hélicoptère autonome d'intérieur http://heli.bot.free.fr/
BOB3, mon robot autonome d'intérieur avec WiFi + Foxboard Linux http://ze.bot.free.fr/
BOB5, robot bipède simulé, puis tentative de réalisation (fail)


#25 Mamaad Pathe

Mamaad Pathe

    Membre

  • Membres
  • 14 messages

Posté 18 décembre 2014 - 08:24

Pourquoi veux-tu avoir Vx, Vy, Theta point en fonction des vitesses roues? C'est étrange... Quel serait l'intérêt? D'habitude, c'est l'inverse : on veut déplacer le robot d'une certaine façon, et on en déduit les consignes aux moteurs. C'est ce que font tous les robots holonomes à roues suédoises.

C'est un exercice imposé par un devoir d'école, que de fonctionner à l'envers?

 

Ou alors est-ce que tu veux pouvoir déterminer les déplacements 2D d'un robot holonome que l'on déplace à la main? Pour l'afficher sur un écran par exemple? Une souris à base de "robot holonome"? C'est le seul et unique intérêt que je verrais à fonctionner dans ce sens.

 

Je pense qu'il faut prendre un peu de recul, et ne pas rester sur du calcul matriciel, du calcul formel. Un peu de géométrie, de réflexion, ça marche bien aussi.

 

Je suis à peu près certain que :

 

la vitesse de rotation du robot est la moyenne des vitesses de chaque roue divisé par le rayon:

Theta_point = (V1 + V2 + V3 + V4 + V5) / (5 x r )

Où V1..5 sont les vitesses tangentielles à la circonférence du robot, c'est à dire les seules que tu mesures / contrôle avec tes roues suédoises.

 

Et la vitesse du centre du robot est la moyenne des projections de chaque vitesse unitaire

Vx = (V1x + V2x + V3x + V4x + V5x) / 5

Où V1x est la projection de V1 sur l'axe x (repère de ton choix).

Je te laisse calculer les projections V1x V1y en fonction de V1..5, mais ça doit être du style.

V1x = V1 x (theta)

V2x = V2 x (theta + 2Pi/5)

etc...

 

Voilà, je ne pense pas qu'il y ait besoin de la complexité des calculs matriciels, des torseurs ou autre joyeusetés pour répondre au problème posé.

Attention, c'est juste le principe, je n'ai pas respecté ton schéma.

 

Leon.

 

Oui t'as raison Leon..

je me disais qu'il fallait contrôler la vitesse des roues en fonction de celle du robot (trop con).....

je vois ce que tu veux dire et ça éclairci beaucoup de truc dans ma cervelle...



#26 Mamaad Pathe

Mamaad Pathe

    Membre

  • Membres
  • 14 messages

Posté 19 décembre 2014 - 07:09

 

Oui t'as raison Leon..

je me disais qu'il fallait contrôler la vitesse des roues en fonction de celle du robot (trop con).....

je vois ce que tu veux dire et ça éclairci beaucoup de truc dans ma cervelle...

Hey Leon je reviens sur ce que j'ai dit......

en fait on doit trouver (Vx, Vy) du robot en fonction des autres (Vxi, Vyi) (i=1..5) des roues  car ces vitesses sont les données d'entrées...

les moteurs sont montés sur les 5 roues et donc on doit orienter le robot en fonction des vitesses des différentes roues...

C'est pourquoi je cherche à inverser la matrice...



#27 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 9 969 messages
  • Gender:Male
  • Location:Anglet

Posté 19 décembre 2014 - 10:12

Hey Leon je reviens sur ce que j'ai dit......

en fait on doit trouver (Vx, Vy) du robot en fonction des autres (Vxi, Vyi) (i=1..5) des roues  car ces vitesses sont les données d'entrées...

les moteurs sont montés sur les 5 roues et donc on doit orienter le robot en fonction des vitesses des différentes roues...

C'est pourquoi je cherche à inverser la matrice...

 

Déterminer les vitesse de rotation théorique à avoir pour obtenir (Vx Vy w ) du robot souhaité est presque un "jeu d'enfant ". 
Tu peux supposer qu'on est sans glissement et que les vitesses de rotation des roues w1 w2 w3 w4 w5 doivent être de "tant" = Wx pour qu'on se déplace de " 1"  en Vx et 0 en Vy et en w   / de tant = Wy pour qu'on se déplace de "1" en Vy et 0 en Vx et w  de tant Ww pour une rotation à la vitesse "1" en w et 0 en Vx et Vy ...  ( 1 dépendant des unités que tu veux mettre )
Ensuite par principe de superposition avec une combinaison linéaire des trois vecteurs solutions Wx Wy Ww tu obtiens la configuration que tu veux en ( Vx Vy w ) ... 

 

C'est le cas où tu impose les conditions de départ qui font que tu te retrouve avec un système à 3 équations et 3 inconnues ...
=> tu trouvera toujours une solution
 

Or quand tu etudies le cas inverse

Deux cas s'offrent à toi : 
1) si tu prend un vecteur de départ  W = ( w1 w2 w3 w4 w5 )  qui est une forme linéaire résultant de tes trois vecteurs solutions précédents W=KxWx+KyWy+KwWw ( Kx Ky Kw des constantes ) :  aucun problème tu peux retrouver Vx Vy w en faisant des projeté de ton vecteur de départ sur tes vecteurs solutions ... et tu auras bien : V = ( Kx , Ky, Kw ) 

Bref c'est le cas où tu as 5 équations w1 w2 w3 w4 w5, et 3 inconnues ( Kx, Ky, Kw) et ça converge car en fait si tu regarde bien avec tes valeurs de w1 w2 w3 w4 w5,  2 équations sont redondantes

2) si tu prend un vecteur de départ  ( w1 w2 w3 w4 w5 )  qui n'est pas une forme linéaire résultant de tes trois vecteurs solutions précédent tu es " foutu" car tu ne peux pas faire " l'opération inverse " car en projetant tu obitent  W =  KxWx+KyWy+KwWw + W* ... et rien ne te dis comment prendre en compte l'effet du vecteur W* ...  

Bref pour faire simple : c'est le cas où tu as 5 equations w1 w2 w3 w4 w5 et 3 inconnues ( Kx, Ky, Kw) et que ça ne converge pas vers une solution car cas hors cadre du modèle de solution que tu t'es imposé au départ ... 
Tu as alors deux choix : Soit tu prend un modèle de départ qui englobe tous les cas, soit tu suppose qu'il y a une "erreur"  de mesure et tu identifies Kx Ky et Kw de sorte à ce que la norme de W* soit la plus petite possible ...

 

D'où les problèmes que tu rencontres pour "inverser ta matrice"... tu ne peux pas rencontrer ce problème sur un deux roues et je ne suis pas sur que tu puisse le rencontrer sur un trois roues à axe de rotation concourant ... ( à vérifier un de ces 4 ) .

Du coup soit tu supposes que tu seras toujours dans le cas 1) et tu peux raisonner comme proposé, soit tu veux prendre en compte le cas 1 et le cas 2 et tu dois: soit changer ton modèle de solution et te rapprocher du modèle " en Force exercée " et non en "Vitesse projetée " comme je t'ai proposé  soit prendre en compte une erreur de mesure et " traiter ton vecteur de départ pour le remettre dans le cas 1 "...  

Quoi qu'il en soit je suis au moins d'accord avec une des remarques de Léon : " D'habitude on fait le cas simple où on veux déplacer le robot d'une façon et on en déduit la consigne aux moteurs .... " 

Et idem le seul intérêt que j'y vois c'est de reconstituer le déplacement d'un robot holonome 5 roue déplacé à la main et dont les roues disposent d'odométrie ... Dans ce cas précis il me parrait plus pertinent de considérer une erreur W* ... qui pourra s'expliquer comme étant les glissement non pris en compte dans le modèle de départ ... 

Sinon j'ai compris que tu n'as pas compris ce que je proposais comme modèle englobant les cas 1 et 2 ... mais si tu veux des explications claire sur ce que tu n'as pas compris j'ai besoin que tu me poses des questions précises ! 

@ bientôt ! 


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  

 

 

 


#28 Leon

Leon

    Membre passionné

  • Membres
  • PipPipPipPipPip
  • 1 289 messages
  • Gender:Male

Posté 20 décembre 2014 - 07:53

Hey Leon je reviens sur ce que j'ai dit......

en fait on doit trouver (Vx, Vy) du robot en fonction des autres (Vxi, Vyi) (i=1..5) des roues  car ces vitesses sont les données d'entrées...

les moteurs sont montés sur les 5 roues et donc on doit orienter le robot en fonction des vitesses des différentes roues...

C'est pourquoi je cherche à inverser la matrice...

Mais pourquoi veux-tu faire ça? Quel est l'intérêt? Pourquoi dis-tu "car ces vitesses sont des données d'entrées"? Je ne comprends pas. D'habitude, quand tu contrôle un robot holonome, les vitesses des roues sont des consignes, donc des sorties de l'algorithme qui gère les déplacements.

 

Pour contrôler un robot holonome, il suffit de calculer la vitesse de consigne de chaque roue suédoise à partir de Vx, Vy, Theta_point. Et d'injecter ces consignes vers chacun des 5 moteurs. Vx, Vy et Theta_point étant les déplacement que tu veux imposer à ton robot. Oui, car normalement, tu imposes des déplacements à ton robot. Tu ne les subis pas.

Je ne suis pas d'accord sur le fait que tu "dois orienter le robot en fonction des vitesses des différentes roues". Non, ce que tu veux faire d'habitude pour contrôler un robot holonome, c'est de contrôler les vitesses des différentes roues pour orienter et déplacer le robot comme tu le veux.

 

Je me répète : il est infiniment plus important de prendre du recul, de réfléchir à la logique, la géométrie d'un problème, plutôt que de se lancer dans des calculs formels sans savoir où l'on va.

 

De toutes façon, je t'ai déjà fourni toutes les billes pour le "calcul inverse", avec une méthode très simple, basée sur le "bon sens" plutôt que sur des calculs formels, matriciels, même si ce "calcul inverse" me semble totalement inutile pour ce que tu veux faire.

 

Leon.


BOB4, mon drone hélicoptère autonome d'intérieur http://heli.bot.free.fr/
BOB3, mon robot autonome d'intérieur avec WiFi + Foxboard Linux http://ze.bot.free.fr/
BOB5, robot bipède simulé, puis tentative de réalisation (fail)




Répondre à ce sujet



  


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

0 members, 0 guests, 0 anonymous users