TP Programmation robot : tracer une rosace paramétrable Partie 1 : y P2 P1 r θ x P0 P3 Soit la rosace ci-dessus, calculer les points P1 P2 et P3 en fonction des coordonnées X, Y, Z de P0, de l’angle θ et du rayon du cercle r. P1.X = P1.Y = P2.X = P2.Y = P3.X = P3.Y = 1/5 TP Programmation robot : tracer une rosace paramétrable Partie 2 : En fonction des résultats précédents, donner les équations permettant de calculer les coordonnées des points P1, P2, P3 pour la rosace ci-dessous. P1.X = P1.Y = P2.X = P2.Y = P3.X = P3.Y = y P2 P1 P0 x P3 Ecrire le programme Rapid permettant de tracer la rosace ci-dessus conseil : utiliser une boucle for avec un if then,else imbriqué. 2/5 TP Programmation robot : tracer une rosace paramétrable Partie 3 : On veut maintenant faire faire X rosace dans le cercle (1 rosace étant composé des 3 branches). La valeur X sera configurable. L’espace entre chaque branche est de :120° divisé par le nombre de rosace. On suppose 2 rosaces : Calculer les points P1, P2, P3 pour la rosace 1 et la rosace 2 Rosace 1 : P1.X = P1.Y = P2.X = P2.Y = P3.X = P3.Y = Rosace 2 : P1.X = P1.Y = P2.X = P2.Y = P3.X = P3.Y = En fonction des résultats ci-dessus et du code rapid déjà écrit, proposez une solution de programmation la plus optimale. 3/5 TP Programmation robot : tracer une rosace paramétrable Correction partie 1 : P1.X = r * cos θ + P0.X P1.Y = r * sin θ + P0.Y P2.X = r * cos (θ + 120°) + P0.X P2.Y = r * sin (θ + 120°) + P0.Y P3.X = r * cos (θ + 240°) + P0.X P3.Y = r * sin (θ + 240°) + P0.Y Correction partie 2 : P1.X = r + P0.X P1.Y = r + P0.Y P2.X = r * cos (120°) + P0.X P2.Y = r * sin (120°) + P0.Y P3.X = r * cos (240°) + P0.X P3.Y = r * sin (240°) + P0.Y Programme rapid : MODULE MainModule VAR num r:=0; VAR num x:=0; VAR num y:=0; CONST robtarget p0:=….. PROC main() r := 100; // rayon en mm FOR j FROM 0 TO 3 DO x := r * Cos(j * 120); y := r * Sin(j * 120); IF j = 0 THEN MoveL Offs(p0,x,y,20), v100, z0, tool0; // approche 20mm en Z MoveL Offs(p0,x,y,0), v100, z0, tool0; // point de départ P1 ELSE MoveC p0, Offs(p0,x,y,0), v100, z0, tool0; // vers P2 puis P3 ENDIF ENDFOR MoveL Offs(p0,x,y,20), v1000, z0, tool0; //point de dégagement ENDFOR 4/5 TP Programmation robot : tracer une rosace paramétrable Correction partie 3 : Algorithme pour faire X rosaces dans le cercle (1 rosace étant composé des 3 branches). L’espace entre chaque branche est de :120° divisé par le nombre de rosace. Rosace 1 : P1.X = r + P0.X P1.Y = r + P0.Y P2.X = r * cos (120°) + P0.X P2.Y = r * sin (120°) + P0.Y P3.X = r * cos (240°) + P0.X P3.Y = r * sin (240°) + P0.Y Rosace 2 : P1.X = r cos (120°/2) + P0.X P1.Y = r sin(120°/2) + P0.Y P2.X = r * cos (120°+(120°/2)) + P0.X P2.Y = r * sin (120°+(120°/2)) + P0.Y P3.X = r * cos (240°+(120°/2)) + P0.X P3.Y = r * sin (240°+(120°/2)) + P0.Y MODULE MainModule VAR num r:=0; VAR num nb:=0; VAR num x:=0; VAR num y:=0; CONST robtarget p0:=….. PROC main() r := 100; // rayon en mm nb := 5; // nombre de branches FOR i FROM 0 TO nb - 1 DO FOR j FROM 0 TO 3 DO x := r * Cos((i * 120 / nb) + (j * 120)); y := r * Sin((i * 120 / nb) + (j * 120)); IF j = 0 THEN MoveL Offs(p0,x,y,20), v100, z0, tool0; // approche 20mm en Z MoveL Offs(p0,x,y,0), v100, z0, tool0; // point de départ P1 ELSE MoveC p0, Offs(p0,x,y,0), v100, z0, tool0; // vers P2 puis P3 ENDIF ENDFOR MoveL Offs(p0,x,y,20), v1000, z0, tool0; //point de dégagement ENDFOR 5/5