PATRONI ROBOTYKI:
 

TEORIA ROBOTYKI

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 x0y0 z0. Przez r0 oznaczono położenie wektora r przed obrotem. Natomiast przez {i0, j0, k0oznaczono 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.

 

http://www.robotyka.com/teoria/grafika/image241.jpg

Rysunek 5.1 Układ współrzędnych związany z wektorem r

 

Wektor http://www.robotyka.com/teoria/grafika/image242.gif przedstawiono w układzie O x0 y0 z0 następująco:

http://www.robotyka.com/teoria/grafika/image243.gif

(5.1)

Natomiast ten sam wektor przedstawiono w układzie O x1 y1 z1 następująco:

http://www.robotyka.com/teoria/grafika/image244.gif

(5.2)

Wektor http://www.robotyka.com/teoria/grafika/image242.gif jest reprezentowany przez wektory r0 i r1 tak, więc związki pomiędzy składowymi wektora http://www.robotyka.com/teoria/grafika/image242.gif w obu układach współrzędnych zapisano w postaci:

http://www.robotyka.com/teoria/grafika/image245.gif

     (5.3)

Analogiczne wzory otrzymano dla składowych r0,y i r0,z:

http://www.robotyka.com/teoria/grafika/image246.gif

 (5.4)

http://www.robotyka.com/teoria/grafika/image247.gif

 (5.5)

Równania (5.3), (5.4), (5.5) przedstawiono w postaci równania wektorowego następująco:

http://www.robotyka.com/teoria/grafika/image248.gif

  (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ładzieO x0 y0 z0i zapisano ją w postaci:

http://www.robotyka.com/teoria/grafika/image249.gif

(5.7)

Jeżeli punkt w układzie O x1 y1 z1 określono za pomocą wektora r1, wówczas:

http://www.robotyka.com/teoria/grafika/image250.gif

       (5.8)

http://www.robotyka.com/teoria/grafika/image251.gif

   (5.9)

http://www.robotyka.com/teoria/grafika/image252.gif

  (5.10)

Zapis powyższych równań w postaci macierzowej jest następujący:

http://www.robotyka.com/teoria/grafika/image253.gif

(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ładzieO x1 y1 z1i zapisano ją w postaci:

http://www.robotyka.com/teoria/grafika/image254.gif

 (5.12)

Macierz R0,1 reprezentuje przekształcenie odwrotne do przekształcenia R1,0:

http://www.robotyka.com/teoria/grafika/image255.gif

     (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

http://www.robotyka.com/teoria/grafika/image256.jpg

 

 

Układ O x1 y1 z1obrócono o kąt qwokół 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.

 

 

Rysunek 5.2 Obrót wokół osi z

 

 

Rozwiązanie:

http://www.robotyka.com/teoria/grafika/image257.jpg

Rysunek 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:

http://www.robotyka.com/teoria/grafika/image258.gifhttp://www.robotyka.com/teoria/grafika/image259.gifhttp://www.robotyka.com/teoria/grafika/image260.gif

http://www.robotyka.com/teoria/grafika/image261.gifhttp://www.robotyka.com/teoria/grafika/image262.gifhttp://www.robotyka.com/teoria/grafika/image263.gif

http://www.robotyka.com/teoria/grafika/image264.gifhttp://www.robotyka.com/teoria/grafika/image265.gifhttp://www.robotyka.com/teoria/grafika/image266.gif

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

http://www.robotyka.com/teoria/grafika/image267.gif

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 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]));

 

 

Przykład 5.2

http://www.robotyka.com/teoria/grafika/image268.jpg

 

 

Układ O x1 y1 z1obrócono o kąt qwokół 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.

 

 

Rysunek 5.4 Obrót wokół osi y

 

 

Rozwiązanie:

http://www.robotyka.com/teoria/grafika/image269.jpg

Rysunek 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:

http://www.robotyka.com/teoria/grafika/image258.gifhttp://www.robotyka.com/teoria/grafika/image270.gifhttp://www.robotyka.com/teoria/grafika/image271.gif

http://www.robotyka.com/teoria/grafika/image272.gifhttp://www.robotyka.com/teoria/grafika/image273.gifhttp://www.robotyka.com/teoria/grafika/image263.gif

http://www.robotyka.com/teoria/grafika/image274.gifhttp://www.robotyka.com/teoria/grafika/image265.gifhttp://www.robotyka.com/teoria/grafika/image275.gif

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

http://www.robotyka.com/teoria/grafika/image276.gif

Poniżej 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]));

 

 

 

 

Przykład 5.3

http://www.robotyka.com/teoria/grafika/image277.jpg

 

Układ O x1 y1 z1obrócono o kąt qwokół 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.

 

Rysunek 5.6 Obrót wokół osi y

 

 

Rozwiązanie:

http://www.robotyka.com/teoria/grafika/image278.jpg

Rysunek 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:

http://www.robotyka.com/teoria/grafika/image279.gifhttp://www.robotyka.com/teoria/grafika/image270.gifhttp://www.robotyka.com/teoria/grafika/image280.gif

http://www.robotyka.com/teoria/grafika/image272.gifhttp://www.robotyka.com/teoria/grafika/image281.gifhttp://www.robotyka.com/teoria/grafika/image282.gif

http://www.robotyka.com/teoria/grafika/image283.gifhttp://www.robotyka.com/teoria/grafika/image284.gifhttp://www.robotyka.com/teoria/grafika/image275.gif

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

http://www.robotyka.com/teoria/grafika/image285.gif

Poniżej 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]));

 

 

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.

http://www.robotyka.com/teoria/grafika/image285.gifhttp://www.robotyka.com/teoria/grafika/image276.gifhttp://www.robotyka.com/teoria/grafika/image267.gif

                                                                                               (5.14)

Można także interpretować daną macierz obrotu jako macierz wyznaczającą orientację układu współrzędnych O x1 y1z1względem O x0 y0 z0, gdyż kolumny macierzy R1,0 są cosinusami kierunkowymi osi układu O x1 y1 z1w stosunku do osi układuO x0 y0 z0.

 

 

Przykład 5.4

http://www.robotyka.com/teoria/grafika/image286.jpg

 

 

Wyznaczyć współrzędne wektora r (rys.5.8) związanego z układem O x1 y1 z1względem układu O x0 y0 z0po 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]. 

 

 

 

Rysunek 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.     

http://www.robotyka.com/teoria/grafika/image287.jpg

Rysunek 5.9 Wektor r wraz z układami po obrocie.

 

http://www.robotyka.com/teoria/grafika/image288.gif

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 z0można wyznaczyć wykorzystując macierz obrotu względem osi z, co przedstawiono powyżej. Poniżej zamieszczono kod przygotowany w programie MapleTM.

 >restart;

>with(linalg):

>r[1]:=(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[0]:=evalm(multiply(R[z,theta],r[1]));

 

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

http://www.robotyka.com/teoria/grafika/image289.jpg

 

 

Wyznaczyć współrzędne wektora r (rys.5.10) związanego z układem O x1 y1z1 względem układu O x0 y0 z0przed wykonaniem obrotu względem osi z o 90°. Wektora r jest opisany następującymi współrzędnymi względem układu O x0 y0z0 po obrocie r1=[-1,2,0].

 

 

 

Rysunek 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.

http://www.robotyka.com/teoria/grafika/image290.gif

 

http://www.robotyka.com/teoria/grafika/image291.jpg

Rysunek 5.11 Wektor r wraz z układami przed obrotem.

 

Podobnie jak w przypadku poprzednich przykładów poniżej 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]);

Należy zauważyć iż w przypadku obracania wektora wraz z układem jego współrzędne względem układu O x1 y1 z1będą takie same jak współrzędne wektora r przed obrotem względem układu O x0 y0 z0.