5.1 Obroty
Do opisania obrotów wykorzystano
układ współrzędnych O x0 y0 z0
następnie przyjęto wektor r (rys.5.1), z którym związano układ współrzędnych O
x1 y1 z1. Należy rozważyć, jakie
zależności występują między współrzędnymi wektora r w układzie współrzędnych O
x1 y1 z1, a współrzędnymi tego wektora w
stałym (nieobróconym) układzie odniesienia O x0 y0 z0.
Przez r0 oznaczono położenie wektora r przed obrotem.
Natomiast przez {i0, j0, k0} oznaczono
standardową bazę ortogonalną w układzie O x0 y0 z0;
gdzie i0, j0, k0 są
wektorami jednostkowymi (wersorami) odpowiednio wzdłuż osi x0, y0,
z0. Analogicznie {i1, j1, k1}
będzie standardową bazą ortogonalną w układzie O x1 y1
z1.
|

|
|
Rys.5.1 Układ współrzędnych
związany z wektorem r
|
Wektor przedstawiono
w układzie O x0 y0 z0 następująco:
(5.1)
Natomiast ten sam wektor przedstawiono w układzie O
x1 y1 z1 następująco:
(5.2)
Wektor jest reprezentowany przez
wektory r0 i r1 tak, więc związki pomiędzy
składowymi wektora w obu układach
współrzędnych zapisano w postaci:
(5.3)
Analogiczne wzory otrzymano dla składowych r0,y
i r0,z:
(5.4)
(5.5)
Równania (5.3), (5.4), (5.5)
przedstawiono w postaci równania wektorowego następująco:
(5.6)
Macierz R1,0 reprezentuje
przekształcenie punktu P ze współrzędnych w układzie O x1
y1 z1 na współrzędne w układzie O x0 y0
z0 i zapisano ją w postaci:
(5.7)
Jeżeli punkt w układzie O x1 y1
z1 określono za pomocą wektora r1, wówczas:
(5.8)
(5.9)
(5.10)
Zapis powyższych równań w postaci macierzowej jest
następujący:
(5.11)
Macierz R0,1 reprezentuje
przekształcenie punktu P ze współrzędnych w układzie O x0
y0 z0 na współrzędne w układzie O x1 y1
z1 i zapisano ją w postaci:
(5.12)
Macierz R0,1 reprezentuje
przekształcenie odwrotne do przekształcenia R1,0:
(5.13)
Macierz, której odwrotnością jest macierz
transponowana nazywa się macierzą ortogonalną. Ograniczając się do
prawoskrętnego układu współrzędnych, wtedy det R1,0 = ą 1. Macierze ortogonalne o
wyznaczniku +1 są nazywane macierzami obrotu lub rotacji.
|
Przykład
5.1
|

|
|
|
Układ O x1 y1
z1 obrócono o kąt q wokół osi z0 (rys.5.2). Znaleźć macierz R1,0
tego przekształcenia. Należy zwrócić uwagę, iż dodatni kierunek kąta q jest określony regułą prawej
ręki, to znaczy dodatni obrót o kąt q wokół osi z daje przesunięcie śruby prawoskrętnej wzdłuż
dodatniego kierunku osi z.
|
|
|
Rys.5.2
Obrót wokół osi z
|
|
Rozwiązanie:
|

|
|
Rys.5.3 Obrót układu wokół osi z
wraz z wersorami
|
Z analizy rys.5.3 wynika, iż
cosinusy kierunkowe dla poszczególnych wersorów można zapisać następująco
uwzględniając, iż iloczyn długości odpowiednich wersorów jest równy jedności:



Tak, więc przekształcenie R1,0
przedstawiono ostatecznie w postaci:

Powyższą macierz nazwano
podstawową macierzą obrotu lub rotacji (wokół osi z). Ze względów
praktycznych wygodniejszy jest zapis Rz,q zamiast R1,0 do
oznaczenia obliczonej symbolicznie macierzy. Poniżej w tabeli 5.1 zamieszczono
kod przygotowany w programie MapleTM.
|
>
|
restart;
|
|
>
|
with(linalg):
|
|
>
|
with(difforms):
|
|
>
|
R[1,0]:=matrix(3,3,[i[1]*i[0],j[1]*i[0],k[1]*i[0],i[1]*j[0],j[1]*j[0],k[1]*j[0],i[1]*k[0],j[1]*k[0],k[1]*k[0]]);
|
|
>
|
r[1,1]:=i[1]*i[0]=cos(theta);
|
|
>
|
r[1,2]:=j[1]*i[0]=cos((Pi/2)+theta);
|
|
>
|
r[1,3]:=k[1]*i[0]=cos(Pi/2);
|
|
>
|
r[2,1]:=i[1]*j[0]=cos((Pi/2)-theta);
|
|
>
|
r[2,2]:=j[1]*j[0]=cos(theta);
|
|
>
|
r[2,3]:=k[1]*j[0]=cos(Pi/2);
|
|
>
|
r[3,1]:=i[1]*k[0]=cos(Pi/2);
|
|
>
|
r[3,2]:=j[1]*k[0]=cos(Pi/2);
|
|
>
|
r[3,3]:=k[1]*k[0]=cos(0);
|
|
>
|
R[z,theta]:=subs({r[1,1],r[1,2],r[1,3],r[2,1],r[2,2],r[2,3],r[3,1],r[3,2],r[3,3]},evalm(R[1,0]));
|
Tabela 5.1 Zapis funkcji w
programie MapleTM dla przykładu 5.1.
|
Przykład
5.2
|

|
|
|
Układ O x1 y1
z1 obrócono o kąt q wokół osi y0 (rys.5.4). Znaleźć macierz R1,0
tego przekształcenia. Należy zwrócić uwagę, iż dodatni kierunek kąta q jest określony regułą prawej
ręki, to znaczy dodatni obrót o kąt q wokół osi y daje przesunięcie śruby prawoskrętnej wzdłuż
dodatniego kierunku osi y.
|
|
|
Rys.5.4
Obrót wokół osi y
|
|
Rozwiązanie:
|

|
|
Rys.5.5 Obrót układu wokół osi y
wraz z wersorami
|
Dokonując analogiczną analizę do
przykładu 5.1 można stwierdzić iż cosinusy kierunkowe dla poszczególnych
wersorów można zapisać następująco uwzględniając, iż iloczyn długości
odpowiednich wersorów jest równy jedności:



W analizowanym przekształceniu macierz R1,0
przedstawiono w postaci:

Poniżej w tabeli 5.2 zamieszczono
kod przygotowany w programie MapleTM.
|
>
|
restart;
|
|
>
|
with(linalg):
|
|
>
|
with(difforms):
|
|
>
|
R[1,0]:=matrix(3,3,[i[1]*i[0],j[1]*i[0],k[1]*i[0],i[1]*j[0],j[1]*j[0],k[1]*j[0],i[1]*k[0],j[1]*k[0],k[1]*k[0]]);
|
|
>
|
r[1,1]:=i[1]*i[0]=cos(theta);
|
|
>
|
r[1,2]:=j[1]*i[0]=cos(Pi/2);
|
|
>
|
r[1,3]:=k[1]*i[0]=cos((Pi/2)-theta);
|
|
>
|
r[2,1]:=i[1]*j[0]=cos(Pi/2);
|
|
>
|
r[2,2]:=j[1]*j[0]=cos(0);
|
|
>
|
r[2,3]:=k[1]*j[0]=cos(Pi/2);
|
|
>
|
r[3,1]:=i[1]*k[0]=cos((Pi/2)+theta);
|
|
>
|
r[3,2]:=j[1]*k[0]=cos(Pi/2);
|
|
>
|
r[3,3]:=k[1]*k[0]=cos(theta);
|
|
>
|
R[y,theta]:=subs({r[1,1],r[1,2],r[1,3],r[2,1],r[2,2],r[2,3],r[3,1],r[3,2],r[3,3]},evalm(R[1,0]));
|
Tabela 5.2 Zapis funkcji w
programie MapleTM dla przykładu 5.2.
|
Przykład
5.3
|

|
|
|
Układ O x1 y1
z1 obrócono o kąt q wokół osi x0 (rys.5.6). Znaleźć macierz R1,0
tego przekształcenia. Należy zwrócić uwagę, iż dodatni kierunek kąta q jest określony regułą prawej
ręki, to znaczy dodatni obrót o kąt q wokół osi x daje przesunięcie śruby prawoskrętnej wzdłuż
dodatniego kierunku osi x.
|
|
|
Rys.5.6
Obrót wokół osi y
|
|
Rozwiązanie:
|

|
|
Rys.5.7 Obrót układu wokół osi x
wraz z wersorami
|
Analizując obrót układu względem
osi x można stwierdzić iż cosinusy kierunkowe dla poszczególnych wersorów można
zapisać następująco uwzględniając, iż iloczyn długości odpowiednich wersorów
jest równy jedności:



W analizowanym przekształceniu macierz R1,0
przedstawiono w postaci:

Poniżej w tabeli 5.3 zamieszczono
kod przygotowany w programie MapleTM.
|
>
|
restart;
|
|
>
|
with(linalg):
|
|
>
|
with(difforms):
|
|
>
|
R[1,0]:=matrix(3,3,[i[1]*i[0],j[1]*i[0],k[1]*i[0],i[1]*j[0],j[1]*j[0],k[1]*j[0],i[1]*k[0],j[1]*k[0],k[1]*k[0]]);
|
|
>
|
r[1,1]:=i[1]*i[0]=cos(0);
|
|
>
|
r[1,2]:=j[1]*i[0]=cos(Pi/2);
|
|
>
|
r[1,3]:=k[1]*i[0]=cos(Pi/2);
|
|
>
|
r[2,1]:=i[1]*j[0]=cos(Pi/2);
|
|
>
|
r[2,2]:=j[1]*j[0]=cos(theta);
|
|
>
|
r[2,3]:=k[1]*j[0]=cos((Pi/2)+theta);
|
|
>
|
r[3,1]:=i[1]*k[0]=cos(Pi/2);
|
|
>
|
r[3,2]:=j[1]*k[0]=cos((Pi/2)-theta);
|
|
>
|
r[3,3]:=k[1]*k[0]=cos(theta);
|
|
>
|
R[x,theta]:=subs({r[1,1],r[1,2],r[1,3],r[2,1],r[2,2],r[2,3],r[3,1],r[3,2],r[3,3]},evalm(R[1,0]));
|
Tabela 5.3 Zapis funkcji w
programie MapleTM dla przykładu 5.3.
Przedstawione macierze obrotu (5.14) względem
poszczególnych osi posłużą w dalszej części rozważań do przedstawienia
formalizmu matematycznego zdolnego opisywać obroty i przemieszczenia
poszczególnych członów robotów.
(5.14)
Można także interpretować daną
macierz obrotu jako macierz wyznaczającą orientację układu współrzędnych O x1
y1 z1 względem O x0 y0
z0, gdyż kolumny macierzy R1,0 są cosinusami
kierunkowymi osi układu O x1 y1 z1
w stosunku do osi układu O x0 y0 z0.
|
Przykład
5.4
|

|
|
|
Wyznaczyć
współrzędne wektora r (rys.5.8) związanego z układem O x1 y1
z1 względem układu O x0 y0 z0
po wykonaniu obrotu względem osi z o 90°. Wektora r jest opisany następującymi współrzędnymi względem układu
O x1 y1 z1 r=[2,1,0].
|
|
|
Rys.5.8
Wektor r wraz z układami przed obrotem
|
|
Rozwiązanie:
Po wykonaniu obrotu względem osi z wektor r zmieni swoje
położenie względem układu O x0 y0 z0
, co przedstawiono na rys.5.9.
|

|
|
Rys.5.9 Wektor r wraz z układami
po obrocie.
|

Należy zauważyć iż współrzędne
wektora r względem układu O x1 y1 z1
będą wynosiły r=[2,1,0], natomiast współrzędne wektora r względem układu O x0
y0 z0 można wyznaczyć wykorzystując
macierz obrotu względem osi z, co przedstawiono powyżej. Poniżej w tabeli 5.4
zamieszczono kod przygotowany w programie MapleTM.
|
>
|
restart;
|
|
>
|
with(linalg):
|
|
>
|
r[0]:=(vector(3,[2,1,0]));
|
|
>
|
theta:=evalf(convert(90*degrees,radians));
|
|
>
|
R[z,theta]:=matrix(3,3,[cos(theta),-sin(theta),0,
sin(theta),cos(theta),0,0,0,1]);
|
|
>
|
r[1]:=evalm(multiply(R[z,theta],r[0]));
|
Tabela 5.4 Zapis funkcji w
programie MapleTM dla przykładu 5.4.
Z przedstawionej analizy
wektorowej (zależność 5.12, 5.13) wynika iż można również wykonywać operacje
odwrotne do tych które przedstawiono w przykładzie 5.4.
|
Przykład
5.5
|

|
|
|
Wyznaczyć współrzędne wektora r
(rys.5.10) związanego z układem O x1 y1 z1
względem układu O x0 y0 z0 przed
wykonaniem obrotu względem osi z o 90°.
Wektora r jest opisany następującymi współrzędnymi względem układu O x0
y0 z0 po obrocie r1=[-1,2,0].
|
|
|
Rys.5.10
Wektor r wraz z układami po obrocie
|
|
Rozwiązanie:
Aby
wyznaczyć współrzędne wektora r przed obrotem względem osi z (rys.5.11) należy
wykorzystać macierz obrotu względem odpowiedniej osi a następnie transponować
ją. Transponowana macierz powinna zostać pomnożona z wektorem r1.

|

|
|
Rys.5.11 Wektor r wraz z
układami przed obrotem.
|
Podobnie jak w przypadku
poprzednich przykładów poniżej w tabeli 5.5 przedstawiono kod przygotowany w
programie MapleTM.
|
>
|
restart;
|
|
>
|
with(linalg):
|
|
>
|
r[1]:=(vector(3,[-1,2,0]));
|
|
>
|
theta:=evalf(convert(90*degrees,radians));
|
|
>
|
R[z,theta]:=matrix(3,3,[cos(theta),-sin(theta),0,
sin(theta),cos(theta),0,0,0,1]);
|
|
>
|
transpose(R[z,theta]);
|
|
>
|
multiply(transpose(R[z,theta]),r[1]);
|
Tabela 5.5 Zapis funkcji w
programie MapleTM dla przykładu 5.5.
Należy
zauważyć iż w przypadku obracania wektora wraz z układem jego współrzędne względem
układu O x1 y1 z1 będą takie same jak
współrzędne wektora r przed obrotem względem układu O x0 y0
z0.
|