J'ai un bras robotisé à 2 segments qui doit atteindre un point spécifique en configurant ses articulations (angles).Comment déterminer la rotation de 2 segments de bras en fonction du point cible?
Voici un dessin de la configuration:
Mon bras est positionné au milieu de l'esquisse donc mon origine est (largeur/2,0). Voici les valeurs que je connais: Longueurs: Premier segment (L1): 140 mm. Deuxième segment (L2): 180 mm. Distance entre le point d'origine et le point cible. (en utilisant dist()).
Ces longueurs forment un triangle. Donc, en utilisant des lois de trigonométrie, je peux trouver les angles du triangle qui sont les angles que je veux utiliser pour positionner mon bras afin qu'il atteigne le point cible.
Maintenant, je veux dessiner le triangle sur l'écran en utilisant l'environnement de traitement pour la simulation. J'ai appliqué quelques transformations pour dessiner le triangle mais je n'obtiens pas le dessin correct.
Ceci est mon code:
void draw(){
background(100);
translate(width/2,0); // origin
// target
float penX = mouseX-width/2;
float penY = mouseY;
// draw points
ellipse(penX, penY, 20, 20);
ellipse(0,0,20,20);
line(0,0,penX,penY);
// distance from origin to target
float distance = dist(0,0,penX,penY);
// first angle (part of S1)
float b = asin(penY/distance);
arc(0,0,100,100,0,b);
// second angle (part of S1)
float a = acos((pow(L1,2)+pow(distance,2)-pow(L2,2))/(2*L1*distance));
// Angle representing first joint
S1 = a + b; // first joint angle
// Angle representing second joint
S2 = acos((pow(L1,2)+pow(L2,2)-pow(distance,2))/(2*L1*L2)); //second joint angle
//Drawing Triangle:
rotate(S1);
line(0,0,120,0);
translate(120,0);
rotate(-S2);
line(0,0,180,0);}
J'espère que mon écriture est claire et désolé pour toute confusion.
je la loi des cosinus pour trouver les angles intérieurs parce que je sais que les longueurs de les côtés à tout moment. N'est-ce pas suffisant? – user3458260
@ user3458260 Non. Vous ne connaissez pas toutes les longueurs, vous ne connaissez que deux des longueurs. –
Merci beaucoup. Tu a été d'une grande aide. Je vais repenser le tout .. – user3458260