MATRIX_TO_EULER (189)
MATRIX_TO_EULER (189)
ID 189
było:
Zastosowanie: |
PLC |
SIM |
Grupa: DATA CONVERSION
Opis skrótowy:
Funkcja obliczająca kąty Eulera na podstawie elementów macierzy transformacji.
wejścia (9 sztuk):
nr |
typ |
impuls |
oznaczenie |
uwagi |
1 |
R |
nie |
PR11 |
Element [1,1] macierzy transformacji |
2 | R | nie | PR12 | Element [1,2] macierzy transformacji |
3 | R | nie | PR13 | Element [1,3] macierzy transformacji |
4 | R | nie | PR21 | Element [2,1] macierzy transformacji |
5 | R | nie | PR22 | Element [2,2] macierzy transformacji |
6 | R | nie | PR23 | Element [2,3] macierzy transformacji |
7 | R | nie | PR31 | Element [3,1] macierzy transformacji |
8 | R | nie | PR32 | Element [3,2] macierzy transformacji |
9 | R | nie | PR33 | Element [3,3] macierzy transformacji |
było: wyjścia (4 sztuki):
nr |
typ |
impuls |
oznaczenie |
uwagi |
1 |
R |
nie |
Rz |
Pierwszy kąt Eulera - orientacja w układzie współrzędnych nr 6 względem układu współrzędnych podstawy robota |
2 | R | nie | Ry | Drugi kąt Eulera - orientacja w układzie współrzędnych nr 6 względem układu współrzędnych podstawy robota |
3 | R | nie | Rx | Trzeci kąt Eulera - orientacja w układzie współrzędnych nr 6 względem układu współrzędnych podstawy robota |
4 | B | nie | error | Rozwiązanie niejednoznaczne |
wyjścia (4 sztuki):
nr |
typ |
impuls |
oznaczenie |
uwagi |
1 |
R |
nie |
rot_x |
Pierwszy kąt Eulera [Rad] - orientacja w osi X |
2 | R | nie | rot_y | Drugi kąt Eulera [Rad] - orientacja w osi Y |
3 | R | nie | rot_z | Trzeci kąt Eulera [Rad] - orientacja w osi Z |
4 | B | nie | error | Rozwiązanie niejednoznaczne |
ustawienia: brak
opis działania:
Funkcja MATRIX_TO_EULER oblicza kąty Eulera na podstawie elementów macierzy transformacji.
Macierz wejściowa:
[ PR11 PR12 PR13 ]
Wej = [ PR21 PR22 PR23 ]
[ PR31 PR32 PR33 ]
Kąty Eulera uzyskuje się wykorzystując funkcję atan2:
gdy Ry = -PI/2:PI/2
Rz = atan2((PR21),(PR11))
Ry = atan2((-PR31),(sqrt((PR32*PR32)+(PR33*PR33))))
Rx = atan2((PR32),(PR33))
gdy Ry = PI/2:3PI/2
Rz = atan2((-PR21),(-PR11))
Ry = atan2((-PR31),(-sqrt((PR32*PR32)+(PR33*PR33))))
Rx = atan2((-PR32),(-PR33))
Obsługa błędu error (błąd o niejednoznacznej pozycji):
Gdy kąt Ry wynosi -PI/2 lub PI/2, robot znajduje się w pozycji niejednoznacznej. Na wyjściach Rz, Ry oraz Rx zapisywane są wartości 0.
więcej informacji teoretycznych:
Wikipedia
Używane rejestry R i znaczniki M: brak