Système d'équation

Discussion générale entre passionnés et amateurs de mathématiques sur des sujets mathématiques variés
Thegreencat
Messages: 5
Enregistré le: 03 Nov 2012, 10:03

Système d'équation

par Thegreencat » 03 Nov 2012, 10:22

Bonjour,

Je suis Roboticien et dans le cadre de la programmation de robots dans l'industrie du ferrage je développe moi même mes outils de calculs. Je suis confronté au problème que voici :

Mon robot possède un repère x,y,z qui lui est propre. Ses trajectoires peuvent être exprimées dans ce repère mais aussi dans d'autres repères que je peu définir. Mon problème actuel repose sur le fait que le repère que je souhaite définir est celui que je veux calculer.

J'en viens au fait :

Soit 3 Point P1,P2,P3 connus dans R(x,y,z) et R'(x',y',z) orthonormés. R' est le résultat de l’enchaînement de 3 rotation Rx,Ry,Rz et une translation T de R. Je cherche à déterminer Rx,Ry,Rz et O' l'origine de mon second repère.

Pour cela j'ai déterminé les équation pour le changement de repère de P1->P'1, P2->P'2 et P3->P'3. Et afin de déterminer dans un premier temps O'z,Rx et Ry j'ai utilisé la coordonnée en z, soit donc le système 3 équations/3 inconnues suivant :

Z'1 = O'z - X1*sin(Ry) + Y1*sin(Rx)*cos(Ry) + Z1*cos(Rx)*cos(Ry)
Z'2 = O'z - X2*sin(Ry) + Y2*sin(Rx)*cos(Ry) + Z2*cos(Rx)*cos(Ry)
Z'3 = O'z - X3*sin(Ry) + Y3*sin(Rx)*cos(Ry) + Z3*cos(Rx)*cos(Ry)

les inconnues sont O'z,Rx,Ry

Malheureusement je n'arrive pas le résoudre, pouvez vous m'aider pour ce problème ?



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

par Dlzlogic » 03 Nov 2012, 13:11

Bonjour,
Je ne suis pas tout à fait sûr que votre équation est correcte.

Ce n'est pas la méthode que j'utilise.
La forme générale d'un changement de repère en 3D est la suivante
X = TX + XX.x + XY.y + XZ.z
Y = TY + YX.x + YY.y + YZ.z
Z = TZ + ZX.x + ZY.y + ZZ.z

Il y 12 paramètres à calculer donc un système de 12 équation à 12 inconnues.
En partant de 4 points connus dans le repère de départ, on calcule leur position dans le repère d'arrivée.
Oubliez le fait qu'il y a des rotations, c'est trop compliqué.
Par contre vous avez 3 points, je parle de 4. Si vos 3 points ne sont pas dans l'un de 3 plans du repère, vous pouvez créer le 4è par simple symétrie. Mais il vaut mieux avoir 4 points indépendants (je peux expliquer pourquoi) De toute façon, il y a bien 12 paramètres dans la formule.
Vous me direz dans quel langage vous travaillez.

Thegreencat
Messages: 5
Enregistré le: 03 Nov 2012, 10:03

par Thegreencat » 03 Nov 2012, 13:32

Dlzlogic a écrit:Bonjour,
Je ne suis pas tout à fait sûr que votre équation est correcte.

Ce n'est pas la méthode que j'utilise.
La forme générale d'un changement de repère en 3D est la suivante
X = TX + XX.x + XY.y + XZ.z
Y = TY + YX.x + YY.y + YZ.z
Z = TZ + ZX.x + ZY.y + ZZ.z

Il y 12 paramètres à calculer donc un système de 12 équation à 12 inconnues.
En partant de 4 points connus dans le repère de départ, on calcule leur position dans le repère d'arrivée.
Oubliez le fait qu'il y a des rotations, c'est trop compliqué.
Par contre vous avez 3 points, je parle de 4. Si vos 3 points ne sont pas dans l'un de 3 plans du repère, vous pouvez créer le 4è par simple symétrie. Mais il vaut mieux avoir 4 points indépendants (je peux expliquer pourquoi) De toute façon, il y a bien 12 paramètres dans la formule.
Vous me direz dans quel langage vous travaillez.


Bonjour,

En fait je ne cherche pas les équations de changement de repère. J'ai déjà pu les programmer dans le soft. Tout mon problème réside dans la recherche d'un nouveau repère sachant que je connais les coordonnées de 3 points dans ce nouveau repère et dans l'ancien. Mon système d'équation est issue de l'équation en Z via les 3 rotations + la translation.

J'ai un peu de mal expliquer ce que je recherche. Si vous voulez, normalement on connais le repère R et on sait passer les point de ce repère dans le repère R' car celui ci est exprimé via la série des 6 paramètres qui transforment R en R'. Moi je voudrais prendre le problème à l'envers, je ne connais pas R' mais je connais 3 points dans l'espace avec leur coordonnées dans R et R'.

Pour cela j'ai développé ma suite d'équation de transformation et utilisé la plus simple pour parvenir a calculer Rx, Ry, et O'z . J'utiliserai ensuite les autres pour trouver O'x,O'y, et Rz . Malheureusement je ne parviens pas a résoudre le premier système .

voici mon raisonnement :

Soit les 3 matrices de rotation + la translation. Nous partons du point de départ : P(X,Y,Z)

RX
|1 0 0 |
|0 cos(Rx) -sin(Rx)|
|0 sin(Rx) cos(Rx)|

Ry
|cos(Ry) 0 sin(Ry) |
| 0 1 0 |
|-sin(Ry) 0 cos(Ry) |

RZ
|cos(Rz) -sin(Rz) 0 |
| 0 cos(Rz) 0 |
| 0 0 1 |

T->O'x,O'y,O'z

développons simplement les 2 premières rotations X et Y :

(1) Xxy = X*cos(Ry) + Y*sin(Rx)*sin(Ry) + Z*cos(Rx)*sin(Ry)
(2) Yxy = Y*cos(Rx) - Z*sin(Rx)
(3) Zxy = -X*sin(Ry) + Y*sin(Rx)*cos(Ry) + Z*cos(Rx)*cos(Ry)

la suite est une translation Rz + une rotation, moi je veux juste un premier système d'équation
Si on regarde bien la coordonnée Z ne fait pas apparaitre Rz, ce qui est logique. donc j'ai juste à exprimer cette coordonnée en continuant le développement sur (3) avec la rotation Rz + la translation.

Je trouve donc :

Z'= Oz - X*sin(Ry) + Y*sin(Rx)*cos(Ry) + Z*cos(Rx)*cos(Ry)

étant donné que je connais 3 points je suis capable d'établir les 3 équations 3 inconnues énoncées précédemment.

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

par Dlzlogic » 03 Nov 2012, 14:08

Oui, j'ai tout à fait compris cela.
Je constate encore une fois que l'utilisation des matrices n'a pas que des avantages.
Le but final est tout de même de calculer pour tout point P quelconque connu dans le système de départ, ses coordonnées dans le système d'arrivée.
La formule de transformation est celle que j'ai indiquée dans ma réponse précédente. Donc, il faudra bien de toute façon déterminer ces 12 paramètres.
On peut certainement résoudre votre système à 3 inconnues, mais cela reviendrait, je pense, avec des changements de variables, à établir un système à 12 inconnues. Reste le fait que 3 points ne définissent pas parfaitement un changement de repère, puisqu'il en faut 4.

PS. Il est beaucoup plus facile de résoudre un système linéaire de 12 équations qu'un système non linéaire de 3 équations, surtout s'il y a des fonctions trigo.
Le problème le plus difficile à expliquer sur le plan théorique est la nécessité du 4è point.

Thegreencat
Messages: 5
Enregistré le: 03 Nov 2012, 10:03

par Thegreencat » 03 Nov 2012, 14:41

Dlzlogic a écrit:Oui, j'ai tout à fait compris cela.
Je constate encore une fois que l'utilisation des matrices n'a pas que des avantages.
Le but final est tout de même de calculer pour tout point P quelconque connu dans le système de départ, ses coordonnées dans le système d'arrivée.
La formule de transformation est celle que j'ai indiquée dans ma réponse précédente. Donc, il faudra bien de toute façon déterminer ces 12 paramètres.
On peut certainement résoudre votre système à 3 inconnues, mais cela reviendrait, je pense, avec des changements de variables, à établir un système à 12 inconnues. Reste le fait que 3 points ne définissent pas parfaitement un changement de repère, puisqu'il en faut 4.


Oui le but final sera de modéliser mes trajectoires robot en 3 dimensions. Mais j'avoue ne pas comprendre quels sont ces 12 paramètres, de même pourquoi me faut il 4 point pour trouver mon repère ? .

J'ai beaucoup de lacune en math, en revanche je sais qu'actuellement nous avons toujours déterminés les repères véhicule au moyen de 3 points. la méthode dite de "palpage" pars du principe que 3 points de l'outil sont connu dans le repère véhicule, il suffit alors de positionner le robot sur ces 3 points afin de déterminer la position de ces points par rapport au robot. Ceci fais nous utilisons un logiciel propriétaire pour déterminer le repère véhicule. Moi je souhaite comprendre comment ce logiciel le calcul, ce qui nous mène à mon problème.

Pensez vous que mon système d'équation ne peut être résolu ?

Edit: Je suis obligé de passer par le système Rx,Ry,Rz car le robot travaille avec ces paramètres.

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

par Dlzlogic » 03 Nov 2012, 15:25

C'est un problème qui a déjà été évoqué plusieurs fois, mais je sait bien que l'aspect "intuitif" des rotations complique l'explication, mais je vais essayer.
Le changement de repère en 2D a la forme suivante :
X = TX + XX.x + XY.y
Y = TY + YX.x + YY.y
Dans le cas le plus courant, XX = YY et XY = -YX
et XX peut être mis sous la forme K.cos(A) et XY sous la forme K.sin(A)
A est l'angle de rotation, K est le facteur d'homothétie, souvent égal à 1.
On constate que dans le cas de changement de repère 2D, il faut en général 3 points, mais dans les cas les plus courants, 2 points suffisent.
On constate que dans le cas général, on peut écrire 6 équations à 6 inconnues qui permettent de calculer les 6 paramètres TX, TY, XX, XY, YX, YY.
Dans les cas "les plus courants" il n'y a plus que 4 paramètres à calculer. Mais on se gardera bien de se servir des relations avec fonctions trigonométriques qui imposent pour la résolution d'écrire
cos²A + sin²A = 1, ce qui devient franchement compliqué, mais faisable en 2D.

Etendons la question à 3D.
On a un point p (minuscule) dans le repère r (minuscule) et on connait les coordonnées du point P dans le repère d'arrivée R.
Les coordonnées de P se calculent à partir des coordonnées de p ainsi :
X = TX + XX.x + XY.y + XZ.z
Y = TY + YX.x + YY.y + YZ.z
Z = TZ + ZX.x + ZY.y + ZZ.z
Dans un espace 2D, on avait 6 paramètres, en 3D, il y en a 12.
En 2D, dans "les cas courants" on pouvait se ramener à 4 paramètres, donc 2 points, en 3D, on pourrait se ramener à 9 paramètres, donc 3 points. Cependant, si ces 3 points appartiennent à l'un des plans parallèles à l'un des 3 plans du repère, le système n'est pas défini.
Si ces 3 points sont bien disposés, on peut calculer un 4è points qui sera fonction de ces 3 points. Des calculs ont montré que le résultat n'était pas très bon, bien que théorique. La raison en est que les triangles formés par les 3 points, dans le repère de départ et dans le repère d'arrivée, doivent être strictement égaux, ce qui est rarement le cas. La présence du 4è point résout cette difficulté.

Vu votre PS. Les valeurs de RX, Ry, Rz doivent être connus, donc il suffit de les calculer.
Dans un premier temps, à partir des 3 points vous en calculez un 4è, s'il n'y a pas d'autre solution, puis vous résolvez le système de 12 équations.
Ceci vous permet de passer d'un repère à l'autre, puis en trouvant les 3 plans adéquats vous calculez les 3 angles de rotation. En fait, vous ferez la calcul en 2D, pour chaque angle, ce qui est beaucoup plus facile.

EDIT. Petite rectification : j'ai dit par erreur que le plan des 3 points ne devait pas être parallèle à l'un des plans du repère. J'aurais dû dire "les 4 points ne doivent pas être coplanaires".

Thegreencat
Messages: 5
Enregistré le: 03 Nov 2012, 10:03

par Thegreencat » 07 Nov 2012, 07:58

Bonjour,

J'ai bien tenu compte de vos messages et je vous remercie pour ces réponses. Je suis en train de travailler sur le problème donc pour le moment il n'est pas résolu. Je mettrai une réponse dès lors que j'aurai trouvé.

Cordialement.

Avatar de l’utilisateur
fatal_error
Membre Légendaire
Messages: 6610
Enregistré le: 22 Nov 2007, 12:00

par fatal_error » 07 Nov 2012, 08:50

salut,

A supposer correcte :
Z'1 = O'z - X1*sin(Ry) + Y1*sin(Rx)*cos(Ry) + Z1*cos(Rx)*cos(Ry)
Z'2 = O'z - X2*sin(Ry) + Y2*sin(Rx)*cos(Ry) + Z2*cos(Rx)*cos(Ry)
Z'3 = O'z - X3*sin(Ry) + Y3*sin(Rx)*cos(Ry) + Z3*cos(Rx)*cos(Ry)


Z'1, Z'2 et Z'3 sont tes nouveaux points points exprimés dans le repère R (et pas R').

Pour obtenir ton nouveau repère R, il te suffit d'appliquer ta transformation sur les points définissant ton repère R.
idem R'=M(R). (ou M est ta transformation translation + rotation etc)
En l'occurrence, R est défini par X_R=(1,0,0), Y_R=(0,1,0), Z_R=(1,0,0)
donc tu appliques la transformation sur chacun de ces points et tu trouves
X'=M(X_R)=M(1,0,0)
Y'=M(Y_R)=M(0,1,0)
Z'=M(Z_R)=M(0,0,1)
ton repère R' est donc R'(M(O), M(X_R), M(y_R), M(Z_R))

Les coordonnées de tes points dans R devraient être restées inchangées après transformation dans R' (note quand même le conditionnel...)
la vie est une fête :)

Thegreencat
Messages: 5
Enregistré le: 03 Nov 2012, 10:03

par Thegreencat » 07 Nov 2012, 11:11

J'ai un peu de mal à saisir. le système d'équations que j'ai trouvé est justement issue de ces transformation + translation. Et je n'ai toujours pas réussi à le résoudre. Cela dit j'ai développé la totalité des équations de transformation, voici le détail de mon calcul :

inconnues : Ux,Uy,Uz,a,b,c
connues :
P1(x1,y1,y1) dans R et P1(xp1,yp1,zp1) dans R'
P1(x2,y2,y2) dans R et P1(xp2,yp2,zp2) dans R'
P1(x3,y3,y3) dans R et P1(xp3,yp3,zp3) dans R'

Après Rx,Ry,Rz,T on obtient :

xp1 = Ux + (x1*cos(b)*cos(c)) + (y1*sin(a)*sin(b)*cos(c)) -(y1*cos(a)*sin(c)) + (z1*cos(a)*sin(b)*cos(c)) + (z1*sin(a)*sin(c))
xp2 = Ux + (x2*cos(b)*cos(c)) + (y2*sin(a)*sin(b)*cos(c)) -(y2*cos(a)*sin(c)) + (z2*cos(a)*sin(b)*cos(c)) + (z2*sin(a)*sin(c))
xp3 = Ux + (x3*cos(b)*cos(c)) + (y3*sin(a)*sin(b)*cos(c)) -(y3*cos(a)*sin(c)) + (z3*cos(a)*sin(b)*cos(c)) + (z3*sin(a)*sin(c))
====================
yp1 = Uy + (x1*cos(b)*sin(c)) + (y1*sin(a)*sin(b)*sin(c)) +(y1*cos(a)*cos(c)) + (z1*cos(a)*sin(b)*sin(c)) - (z1*sin(a)*cos(c))
yp2 = Uy + (x2*cos(b)*sin(c)) + (y2*sin(a)*sin(b)*sin(c)) +(y2*cos(a)*cos(c)) + (z2*cos(a)*sin(b)*sin(c)) - (z2*sin(a)*cos(c))
yp3 = Uy + (x3*cos(b)*sin(c)) + (y3*sin(a)*sin(b)*sin(c)) +(y3*cos(a)*cos(c)) + (z3*cos(a)*sin(b)*sin(c)) - (z3*sin(a)*cos(c))
====================
zp1 = Uz - (x1*sin(b)) + (y1*sin(a)*cos(b)) + (z1*cos(a)*cos(b))
zp2 = Uz - (x2*sin(b)) + (y2*sin(a)*cos(b)) + (z2*cos(a)*cos(b))
zp3 = Uz - (x3*sin(b)) + (y3*sin(a)*cos(b)) + (z3*cos(a)*cos(b))

;J'ai testé ces équations dans mon soft, elles fonctionnent, j'arrive bien à passer d'un repère à l'autre

-------------------------------------------------------------------------------------------------------------------------------------------------------------
;Je combine mes équations pour enlever Ux, Uy, Uz de la balance

xp1-xp2 = (x1*cos(b)*cos(c)) + (y1*sin(a)*sin(b)*cos(c)) - (y1*cos(a)*sin(c)) + (z1*cos(a)*sin(b)*cos(c)) + (z1*sin(a)*sin(c)) - (x2*cos(b)*cos(c)) - (y2*sin(a)*sin(b)*cos(c)) + (y2*cos(a)*sin(c)) - (z2*cos(a)*sin(b)*cos(c)) - (z2*sin(a)*sin(c))
xp3-xp2 = (x3*cos(b)*cos(c)) + (y3*sin(a)*sin(b)*cos(c)) - (y3*cos(a)*sin(c)) + (z3*cos(a)*sin(b)*cos(c)) + (z3*sin(a)*sin(c)) - (x2*cos(b)*cos(c)) - (y2*sin(a)*sin(b)*cos(c)) + (y2*cos(a)*sin(c)) - (z2*cos(a)*sin(b)*cos(c)) - (z2*sin(a)*sin(c))
yp1-yp2 = (x1*cos(b)*sin(c)) + (y1*sin(a)*sin(b)*sin(c)) + (y1*cos(a)*cos(c)) + (z1*cos(a)*sin(b)*sin(c)) - (z1*sin(a)*cos(c)) - (x2*cos(b)*sin(c)) - (y2*sin(a)*sin(b)*sin(c)) - (y2*cos(a)*cos(c)) - (z2*cos(a)*sin(b)*sin(c)) + (z2*sin(a)*cos(c))
yp3-yp2 = (x3*cos(b)*sin(c)) + (y3*sin(a)*sin(b)*sin(c)) + (y3*cos(a)*cos(c)) + (z3*cos(a)*sin(b)*sin(c)) - (z3*sin(a)*cos(c)) - (x2*cos(b)*sin(c)) - (y2*sin(a)*sin(b)*sin(c)) - (y2*cos(a)*cos(c)) - (z2*cos(a)*sin(b)*sin(c)) + (z2*sin(a)*cos(c))
zp1-zp2 = (x1*sin(b)) + (y1*sin(a)*cos(b)) + (z1*cos(a)*cos(b)) - (x2*sin(b)) - (y2*sin(a)*cos(b)) - (z2*cos(a)*cos(b))
zp3-zp2 = (x3*sin(b)) + (y3*sin(a)*cos(b)) + (z3*cos(a)*cos(b)) - (x2*sin(b)) - (y2*sin(a)*cos(b)) - (z2*cos(a)*cos(b))

-------------------------------------------------------------------------------------------------------------------------------------------------------------
;Je transforme mes sin et cos en variable afin d'obtenir un système de 6 équations a 6 inconnues

sin(a)=A cos(a)=B
sin(b)=C cos(b)=D
sin(c)=E cos(c)=F

C1 = xp1-xp2 C2 = xp3-xp2 C3 = yp1-yp2 C4 = yp3-yp2 C5 = zp1-zp2 C6 = zp3-zp2

C1 = (x1*D*F) + (y1*A*C*F) - (y1*B*E) + (z1*B*C*F) + (z1*A*E) - (x2*D*F) - (y2*A*C*F) + (y2*B*E) - (z2*B*C*F) - (z2*A*E)
C2 = (x3*D*F) + (y3*A*C*F) - (y3*B*E) + (z3*B*C*F) + (z3*A*E) - (x2*D*F) - (y2*A*C*F) + (y2*B*E) - (z2*B*C*F) - (z2*A*E)
C3 = (x1*D*E) + (y1*A*C*E) + (y1*B*F) + (z1*B*C*E) - (z1*A*F) - (x2*D*E) - (y2*A*C*E) - (y2*B*F) - (z2*B*C*E) + (z2*A*F)
C4 = (x3*D*E) + (y3*A*C*E) + (y3*B*F) + (z3*B*C*E) - (z3*A*F) - (x2*D*E) - (y2*A*C*E) - (y2*B*F) - (z2*B*C*E) + (z2*A*F)
C5 = (x1*C) + (y1*A*D) + (z1*B*D) - (x2*C) - (y2*A*D) - (z2*B*D)
C6 = (x3*C) + (y3*A*D) + (z3*B*D) - (x2*C) - (y2*A*D) - (z2*B*D)

-------------------------------------------------------------------------------------------------------------------------------------------------------------

Je vous épargnerai la suite de mes calculs car je ne pense pas utiliser la bonne méthode (j'arrive à un totale de 60 constante au bout de la résolution de la 3 eme inconnue, autant dire que j'irai plus vite en m'achevant sur place). :mur:

Cela dit les 2 première solutions sont affriolantes :
---------------------------- C en fonction de (A,B,D,E,F)
C = ((C7 - (C8*A*D) - (C9*B*D) + (C10*A*D) + (C11*B*D)))
---------------------------- 1/D en fonction de (A,B,E,F)
1/D = (A*C24) + (B*C25)

Mais après ... :cry: :cry: :cry:

---------------------------- F en fonction de (A,B,E)
F = (C26/E*B)/((C34/E) + (C65*B/E*A) + (C66*A/B) + (C63)) + (C27/E*A)/((C34/E) + (C65*B/E*A) + (C66*A/B) + (C63)) - (C60)/((C34/E) + (C65*B/E*A) + (C66*A/B) + (C63)) - (C64/A*B)/((C34/E) + (C65*B/E*A) + (C66*A/B) + (C63)) + (C48*A)/((C34/E) + (C65*B/E*A) + (C66*A/B) + (C63))-(C61*B/A)/((C34/E) + (C65*B/E*A) + (C66*A/B) + (C63)) - (C62*A/B)/((C34/E) + (C65*B/E*A) + (C66*A/B) + (C63))
/((C34/E) + (C65*B/E*A) + (C66*A/B) + (C63))

:hein:

Bref, je vais bien y arriver un jour, héhé.

Avatar de l’utilisateur
fatal_error
Membre Légendaire
Messages: 6610
Enregistré le: 22 Nov 2007, 12:00

par fatal_error » 07 Nov 2012, 14:11

mais tu cherches quoi?

tu dis vouloir chercher R'. des R' il yen a une infinite.
Est-ce qu'il s'agit d'un repere R' tel que pour un point P(1,2,3) dans R, si on lui applique la transformation M, son image a pour coordonnees (1,2,3) dans R'?
la vie est une fête :)

 

Retourner vers ⚜ Salon Mathématique

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 6 invités

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