Calcul des angles euler avec trois points

Olympiades mathématiques, énigmes et défis
cmaj85
Membre Naturel
Messages: 10
Enregistré le: 26 Juin 2013, 20:32

Calcul des angles euler avec trois points

par cmaj85 » 26 Juin 2013, 20:48

Bonjour à vous tous,

Je viens de m'inscrire sur le forum pour trouver de l'aide face à un problème mathématique.
L'application est concrète car il s'agit de programmer un centre d'usinage 5 axes en y rentrant les angles d'Euler.

La question est simple.

Soit un repère orthonormé xyz.

Soit 3 points dans ce repère

A (x1,y1,z1)
B (x2,y2,z2)
C (x3,y3,z3)

Soit un plan P1 passant par les points A B et C

Comment définir les angles d'Euler caractérisant le plan P1.

Je pense que les deux premiers angles suffisent.

En effet, le troisième est une rotation dans le plan P1 autour de son axe Z.

Mes cours de maths étant fort, fort, fort....lointain, merci de bien décomposer les formules.

Merci d'avance pour votre aide



Dlzlogic
Membre Transcendant
Messages: 5273
Enregistré le: 14 Avr 2009, 12:39

par Dlzlogic » 26 Juin 2013, 21:41

Bonjour,
Pouvez-vous décrire votre problème plus en détail, et surtout, pourquoi parlez-vous d'angles. On peut donc supposer que votre "centre d'usinage" comporte un affichage angulaire. Je suppose aussi qu'il s'agit de 3 axes, et non cinq.
Pouvez vous en particulier préciser comment vous connaissez les coordonnées des points A, B et C.

cmaj85
Membre Naturel
Messages: 10
Enregistré le: 26 Juin 2013, 20:32

par cmaj85 » 26 Juin 2013, 22:12

La machine fonctionne comme celle ci :

http://www.youtube.com/watch?v=b95zanOYb-U

La machine comporte 5 axes.

3 translations sur X, Y et Z et 2 rotations de tête ( A et B )

Voila le détail.

Je positionne la pièce sur son montage d'usinage.

Le dessus de cette pièce est une face plane sensée être parallèle au plan XY du repère d'usinage.

Pour diverses raisons, ce n'est pas la cas.

Je viens donc palper (pour exemple : http://www.youtube.com/watch?v=P7k_aV6MB0s) le dessus de la pièce en trois points.

Les coordonnés de ces trois points me permettent de me dégauchir.

C'est à dire que je corrige le repère d'usinage pour rendre son plan XY parallèle à la face du dessus.

La fonction utilisée utilise les angles d'Euler et corrige les angles C et B de la machine

Le premier angle d'Euler correspond à l'axe C de la machine. (rotation de la tète sur l'axe vertical de la vidéo)

Le deuxième à l'axe B ( rotation de l'outil sur l'axe horizontal de la vidéo)

Le principe d'Euler s'applique parfaitement à ces mouvements

Concernant le troisième angle, une fois que j'aurais activé les 2 premiers, je reparlerais la pièce

pour le déterminer.

N'hésitez pas à me demander plus d'explications si je ne suis pas claire.

Merci

Dlzlogic
Membre Transcendant
Messages: 5273
Enregistré le: 14 Avr 2009, 12:39

par Dlzlogic » 26 Juin 2013, 22:32

Cela me parait trop compliqué pour être traité de cette façon, c'est à dire par intermédiaire de forum.
Je tiens cependant à préciser un aspect qui me parait important : 3 points, donc forcément coplanaires, ne sont pas vraiment suffisants pour déterminer le système. En effet, cela peut conduire à des écarts non négligeables.

cmaj85
Membre Naturel
Messages: 10
Enregistré le: 26 Juin 2013, 20:32

par cmaj85 » 26 Juin 2013, 22:49

Mathématiquement, je ne pense pas que cela soit insurmontable.

Les trois points donne un plan.

Ce plan donne une normale.

C'est cette normale qu'il faut écrire avec les angles d'Euler.

Pourquoi se limiter à trois points ? parce que le référentiel de contrôle de la pièce passe par les 3

points palpés.

Avatar de l’utilisateur
fatal_error
Modérateur
Messages: 6610
Enregistré le: 22 Nov 2007, 12:00

par fatal_error » 27 Juin 2013, 07:10

slt,

j'ai pas regardé plus en détails (idem j'ai pas testé) mais pour passer du vecteur u(1,0,0) au vecteur v(x,y,z) à l'aide des angles d'euler,
v etant la normale à ton plan P1

1)tu peux trouver une matrice de rotation qui emmène u en v
2)en déduire les angles d'euler associé

1): la matrice de rotation R est de la forme

où on déduit a=x,d=y,g=z
(en supposant v qui est normé)
on orthonormalize R pour avoir une matrice de rotation
donc on prend (b,e,h) ortho à (a,d,g), par ex (b,e,h)=(a,d,-g)
puis on déduit (c,f,i) avec gram schmidt
la vie est une fête :)

Avatar de l’utilisateur
leon1789
Membre Transcendant
Messages: 5478
Enregistré le: 27 Nov 2007, 15:25

par leon1789 » 27 Juin 2013, 08:08

fatal_error a écrit:[...]
où on déduit a=x,d=y,g=z
(en supposant v qui est normé)
on orthonormalize R pour avoir une matrice de rotation
donc on prend (b,e,h) ortho à (a,d,g), par ex (b,e,h)=(a,d,-g)
puis on déduit (c,f,i) avec gram schmidt

Oui, il faut prendre (b,e,h) orthogonal à (a,d,g), et le choisir normé aussi.
mais (a,d,-g) n'est pas orthogonal à (a,d,g) :hein:

Pour (c,f,i), je dirais qu'on prend simplement le produit vectoriel de (a,d,g) et (b,e,h).




[HS]
Remarque : c'est marrant le nombre de discussions ouvertes par des nouveaux arrivants qui nous parlent de rotation dans l'espace. Et il est souvent question d'angles d'Euler par ci ou par là.
[/HS]

Avatar de l’utilisateur
fatal_error
Modérateur
Messages: 6610
Enregistré le: 22 Nov 2007, 12:00

par fatal_error » 27 Juin 2013, 08:32

mais (a,d,-g) n'est pas orthogonal à (a,d,g)

oui, jme suis embrouille avec gram.
je sais meme plus choisir des vecteurs orthogonaux. Fut un temps ou lesprit etait alerte a 9h...

[hs]
Et il est souvent question d'angles d'Euler par ci ou par là.

et depuis le temps jai tjs pas fait les calculs :hum:
[/hs]
la vie est une fête :)

cmaj85
Membre Naturel
Messages: 10
Enregistré le: 26 Juin 2013, 20:32

par cmaj85 » 27 Juin 2013, 10:27

Bonjour,

Merci tout le monde, juste deux interrogations :

- Les vecteurs (b,e,h) et (a,d,g) doivent être orthogonaux, mais doivent ils avoir la même norme pour rentrer les coéfficients (b,e,h) dans la matrice ?
-Une fois que la matrice est complète, quelle est l'analogie pour retomber sur les angles d'Euler ?

Merci, cdlt.

Dlzlogic
Membre Transcendant
Messages: 5273
Enregistré le: 14 Avr 2009, 12:39

par Dlzlogic » 27 Juin 2013, 10:42

cmaj85 a écrit:Pourquoi se limiter à trois points ? parce que le référentiel de contrôle de la pièce passe par les 3

points palpés.
Etes-vous sûr que les 3 points palpés et leurs homologues forment deux triangles STRICTEMENT semblables ?

Avatar de l’utilisateur
fatal_error
Modérateur
Messages: 6610
Enregistré le: 22 Nov 2007, 12:00

par fatal_error » 27 Juin 2013, 10:42

oui, la norme de (b,e,h) doit valoir 1 (comme la norme de (a,d,g) et la norme de (c,f,i))

le passage de la matrice de rotation aux angles d euler est donne dans le lien que jai donne (poste 08h10 )
la vie est une fête :)

cmaj85
Membre Naturel
Messages: 10
Enregistré le: 26 Juin 2013, 20:32

par cmaj85 » 27 Juin 2013, 22:19

Dlzlogic a écrit:Etes-vous sûr que les 3 points palpés et leurs homologues forment deux triangles STRICTEMENT semblables ?


Bonjour,

Dans l'absolu non. Lors de l'usinage, la pièce est palpée en automatique alors qu'au contrôle, elle l'est manuellement. Il y a donc un faible écart. A cela s'ajoute les contraintes et déformations de la pièce qui sont différentes. Cependant, plus les deux triangles sont identiques, plus le résultat est meilleur.


cdlt

Avatar de l’utilisateur
fatal_error
Modérateur
Messages: 6610
Enregistré le: 22 Nov 2007, 12:00

par fatal_error » 28 Juin 2013, 07:38

bon, j'ai un peu regardé hier et ce matin les angles d'euler ce que j'ai dit ne semble pas marcher.
Donc déjà le pdf indiqué est mauvais, parce qu'il prend les angles de rotation suivant x,y,et z alors que euler, c'est z x z.

Ensuite, si on regarde le script suivant:
Code: Tout sélectionner
target=[1,2,3]

target/=norm(target,2)
xInitial=[1,0,0];
%{
   M=
   v1 v2 v3
   --------
   a  b  c
   d  e  f
   g  h  i
%}
v1=target';
v2=[-v1(2) v1(1) 0];
v2/=norm(v2,2);
v2=v2';
v3=cross(v1,v2);
M(1,:)=v1;
M(2,:)=v2;
M(3,:)=v3;
M=M';
%on verifie que M est bien une matrice de rotation: det(M)=1, inv(M)=M'

phi=atan2(M(3,1),M(3,2));
theta=asin(M(3,1))
psi=-atan2(M(1,3),M(2,3));

R_phi=[
   cos(phi) sin(phi) 0;
   -sin(phi) cos(phi) 0;
   0 0 1
];

R_theta=[
   1 0 0;
   0 cos(theta) sin(theta);
   0 -sin(theta) cos(theta);
];
R_psi=[
   cos(psi) sin(psi) 0
   -sin(psi) cos(psi) 0
   0 0 1
];

R=R_psi*R_theta*R_phi


%on sattend a trouver target, ce qui nest pas le cas
R*xInitial'



On a une ptite erreur de signe, sur x pour la target [1,2,3] mais par exemple [2,2,3] marche correctement... (j'ai suivi http://mathworld.wolfram.com/EulerAngles.html)


------------------------
On peut etre plus immédiat en construisant nos angles nous même.
tjs si on prend target[1,2,3]
on peut projeter target sur (xOy)
du coup la premiere rotation sur z consiste à amener [1,0,0] sur le projeté de target.
Puis de tourner autour de x' (obtenu par la rotation précédente) de facon a ce que y' soit aligné avec z.
De fait target est dans le plan (x'Oz)=(x'Oy')
Puis la derniere rotation autour de z', il suffit de trouver le bon angle dans (x'Oy')

Code: Tout sélectionner
clear;
clearplot
clg
target=[1,2,3]

hold('on')
target/=norm(target,2)
xInitial=[1,0,0];
phi=atan2(target(3), norm(target(1:2),2))
theta=pi/2
psi=atan2(target(2),target(1));
plot3([0 1], [0 0], [0 0], "-", "color", "green")
plot3([0 0], [0 1], [0 0], "-", "color", "magenta")
plot3([0 0], [0 0], [0 1], "-", "color", "black")
plot3([0 target(1)], [0 target(2)], [0 target(3)], "-", "color", "red")


R_phi=[
   cos(phi) -sin(phi) 0;
   sin(phi) cos(phi) 0;
   0 0 1
];
x2=R_phi*xInitial';
plot3([0 x2(1)], [0 x2(2)], [0 x2(3)], "-")

R_theta=[
   1 0 0;
   0 cos(theta) -sin(theta);
   0 sin(theta) cos(theta);
];
R_psi=[
   cos(psi) -sin(psi) 0
   sin(psi) cos(psi) 0
   0 0 1
];

R=R_psi*R_theta*R_phi

hold('off')
%on sattend a trouver target, est le cas, au moins pour [1,2,3]
R*xInitial'-target'

la vie est une fête :)

sylvainc2
Membre Naturel
Messages: 69
Enregistré le: 12 Aoû 2012, 18:22

par sylvainc2 » 28 Juin 2013, 16:07

Dans le document suivant:

http://www.geometrictools.com/Documentation/EulerAngles.pdf

l'auteur donne plusieurs ordres d'angles à extraire,dont ZXZ dans le paragraphe 2.11.

cmaj85
Membre Naturel
Messages: 10
Enregistré le: 26 Juin 2013, 20:32

par cmaj85 » 28 Juin 2013, 21:53

Bonjour,


Merci pour vos réponses.

En observant bien l'animation ci jointe, je me suis aperçu d'une contrainte supplémentaire.

http://www.sciences.univ-nantes.fr/sites/genevieve_tulloue/Meca/Cinematique/euler1.html#

Les trois points A B et C doivent me donner les angles psi et théta.
Cependant, pour le bon déroulement du cycle de palpage. Il faut aussi que la projection de x3 selon z2 dans le plan xy soit confondue avec l'axe x.

De plus l'axe z2 doit être orienté dans la même direction que l'axe z.

Je pense que maintenant il n'y a plus qu'une seule solution.

Comme je l'ai indiqué au début, cela fait longtemps (30 ans) que je n'ai pas pratiqué les calculs matriciels et encore je ne suis jamais arrivé à ce niveau.

Je ne voudrais pas abuser mais si quelqu'un pouvait me donner le résultat sous forme

psi = (X2-X1)-(Y3-Y2)*......
théta = idem .... je lui en serais grandement reconnaissant.

Encore merci

Dlzlogic
Membre Transcendant
Messages: 5273
Enregistré le: 14 Avr 2009, 12:39

par Dlzlogic » 28 Juin 2013, 22:50

Bonsoir,
Juste un point de détail, le calcul matriciel est un outil, et pas plus. Ce type de calcul se fait très bien sans calcul matriciel.
En d'autres termes, le calcul matriciel est utile sur le papier, au tableau noir, mais quand au calcul final, il n'y a forcément plus que des opérations arithmétiques.
Ceci dit, je suis prêt à vous aider, mais comme je vous l'ai dit, les hypothèses ne sont pas assez bien déterminées.

Avatar de l’utilisateur
leon1789
Membre Transcendant
Messages: 5478
Enregistré le: 27 Nov 2007, 15:25

par leon1789 » 29 Juin 2013, 08:11

Dlzlogic a écrit:En d'autres termes, le calcul matriciel est utile sur le papier, au tableau noir, mais quand au calcul final, il n'y a forcément plus que des opérations arithmétiques.

Encore un jugement très hâtif concernant les matrices !
Quand on limite l'algèbre linéaire à la résolution de systèmes linéaires, effectivement, on peut très bien se passer des matrices.
Mais le calcul matriciel est un outil indispensable pour présenter et mener des calculs en l'algèbre linéaire (exemple ici). Encore faut-il connaître suffisamment d'algèbre pour le constater.

Sylviel
Modérateur
Messages: 6466
Enregistré le: 20 Jan 2010, 12:00

par Sylviel » 29 Juin 2013, 19:20

Juste un point de détail, le calcul matriciel est un outil, et pas plus. Ce type de calcul se fait très bien sans calcul matriciel. En d'autres termes, le calcul matriciel est utile sur le papier, au tableau noir, mais quand au calcul final, il n'y a forcément plus que des opérations arithmétiques.


Remarquons toutefois qu'il existe de nombreuses librairies (Lapack par exemple) de calculs matriciel efficace, et des langages de calculs scientifiques entièrement orientés matriciel (matlab ou scilab par exemple).

edit : Précisons ce que cela signifie : il est plus efficace sous scilab/ matlab, pour faire la somme
d'écrire X=(x_1,...,x_n) et Y=(y_1,...,y_n) puis de dire que
S=X'Y (produit matriciel), plutôt que de faire une boucle avec une succession d'addition et de multiplication.
Merci de répondre aux questions posées, ce sont des indications pour vous aider à résoudre vos exercices.

Dlzlogic
Membre Transcendant
Messages: 5273
Enregistré le: 14 Avr 2009, 12:39

par Dlzlogic » 29 Juin 2013, 20:11

Sylviel a écrit:Remarquons toutefois qu'il existe de nombreuses librairies (Lapack par exemple) de calculs matriciel efficace, et des langages de calculs scientifiques entièrement orientés matriciel (matlab ou scilab par exemple).
Oui, je suppose que c'est vrai, amis il me parait difficile, voire dangereux d'utiliser un logiciel si on ne sait pas exactement ce qu'il fait, en d'autres termes si on ne saurait pas le faire à la main.
D'autre part, puisqu'il s'agit de calcul matriciel, ces logiciels mélangent "matrices" et "tableaux", probablement à cause d'une traduction un peu hâtive.
En d'autres termes, je recommande à cmaj85 la plus grande prudence dans l'utilisation de ces logiciels. Au mieux, il constatera assez vite qu'il a perdu plus de temps à apprendre à l'utiliser qu'à faire le calcul. Au pire, il va utiliser des fonctions dont la définition n'est pas très bien précisée et qui ne donnent pas le résultat comme on a l'habitude de l'obtenir. Plus de détails seraient hors sujet.

PS. par "entièrement orienté matriciel" il faut entendre "toutes les variables sont des tableaux".

Avatar de l’utilisateur
fatal_error
Modérateur
Messages: 6610
Enregistré le: 22 Nov 2007, 12:00

par fatal_error » 29 Juin 2013, 20:26

je vous invite à cesser la digression sur le calcul matriciel et les tableaux.
Je doute que cela intéresse quiconque, et pour ceux que cela intéresserait nous savons déjà que le pseudo dit débat est caduque.

1) Pour revenir au sujet principal, les angles d'euler ne sont pas au nombre de deux mais de trois.
2) sur le schéma, z2 n'est clairement pas orienté dans la même direction que z
3) tu ne valides ni n'invalides ce que j'ai proposé, pe passes tu à coté de ta solution.
4) Que les maths remontent à loin ou pas, je ne sais pas si des gens seront motivés pour te macher le travail (je trouve ca abuser en fait :hum: mais ce n'est qu'un avis parmi d'autres )
la vie est une fête :)

 

Retourner vers ⚔ Défis et énigmes

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite