Posté 27 octobre 2010 - 09:12
Salut,
La difficulté que tu as dans ce que tu veux faire c'est que tu sais que tu veux mettre la pince de ton robot aux coordonnées (X,Y,Z) par exemple au centre de la feuille (0,0,0).
Pour cela, il faut que tu donnes à tes servomoteurs des ordres de position. Ces ordres sont des positions angulaires.
Il faut donc connaitre les angles à donner aux servomoteurs de façon à se que la pince du robot soit (0,0,0). Il faut connaitre la fonction (theta1,theta2,theta3) = f(x,y,z). La fonction f est ce que l'on appelle pompeusement en robotique le modèle géométrique inverse. Pour le calculer il y a de nombreuses manières :
- on calcule à la main en faisant de la géométrie, et de la trigonométrie en faisant attention aux multiples solutions, c'est un excellent exercice de géométrie. C'est abordable si tu connais ce qu'est un cosinus/sinus/tangente inverse (arccos, arcsin, arctan) (boutons cos-1 d'une calculatrice).
- Si tu as moyen de mesurer les angles de tes servomoteurs, ou si tu pilotes ton bras manuellement, tu peux quadriller ta feuille avec une grille par exemple carrés de 5 cm de côtés. Tu places ton stylo sur les différents points de la grille et tu sauvegardes les ordres que tu as donné aux servomoteurs pour chaque point. Tu obtiens une grosse table de correspondances. Du coup pour aller sur un point voulu, tu va regarder directement dans la table, et tu envois l'ordre. Et puis pour aller par exemple au milieu de deux points enregistrés, du prend la moyenne des ordres donnés pour aller à ces deux points. Si tu es assez loin de l'embase (si ton bras est bien déplié) l'approximation faite est plus que raisonnable. (c'est une conversion grossière entre des coordonnées polaires et des coordonnées cartésiennes)
- par tatonnements (ici, l'écriture risque d'être tremblante). Il faut d'abord calculer la fonction qui permet d'avoir les coordonnées du stylo à partir des angles des servomoteurs (c'est le modèle géométrique direct ici) c'est à dire (x,y,z)=g(theta1,theta2,theta3). Il faut faire ici de la trigonométrie mais c'est en général beaucoup plus simple que le premier point (modèle géométrique inverse) il faut juste savoir ce qu'est un cosinus, sinus, tangente.
Ainsi, tu sais quelles sont les coordonnées de ton stylo si tu connais les angles de tes servomoteurs. Du coup, si tu est à (7,5,2) et que tu veux aller à (7,5,3), le principe c'est de rajouter complètement au pif sur les angles de tes servomoteurs + ou - 1deg (ou moins si tu veux être plus précis)=> tu calcules les nouvelles coordonnées de ton stylo=> tu calcules si tu t'es rapproché du point cible=> si oui tu valides et tu bouges - si non tu retires au hasard des petits écarts et tu recommences. Petit à petit, après plusieurs essais/erreur, ton stylo va se rapprocher de là ou tu veux aller.
Il doit y avoir d'autres solutions astucieuses en tous les cas. sachant que bien sûr la solution la plus rapide au niveau temps de calcul est la première.