PATRONI ROBOTYKI:
 

TEORIA ROBOTYKI

5.2. Składanie obrotów

Macierz R1,0 opisuje obrót między układami współrzędnych O x0 y0 z0 i O x1 y1 z1. Jeżeli zostanie dołożony trzeci układ współrzędnych O x2 y2 z2powiązany z układami O x0 y0 z0 i O x1 y1 z1przez obroty, to w takim przypadku punkt Pmoże być reprezentowany na trzy sposoby przez wektory r0,r1, r2w trzech układach współrzędnych. Związki pomiędzy tymi reprezentacjami punktu przedstawiono następująco:

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

      (5.15)

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

   (5.16)

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

   (5.17)

Macierze R1,0 i R2,0 reprezentują obroty względem osi układu O x0 y0 z0, natomiast R2,1 reprezentuje obrót względem układu O x1 y1 z1. Podstawiając wzór (5.17) do równania (5.15) otrzymano:

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

    (5.18)

Po porównaniu równań (5.16) i (5.18) otrzymano równość:

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

                                              (5.19)

Powyższe równanie jest prawem składania dla obrotów. Innymi słowy aby przekształcić współrzędne punktu P z jego reprezentacji r2w układzie O x2 y2 z2na reprezentację r0 w układzie O x0 y0 z0, można ją najpierw przekształcić na jego reprezentację r1 w układzie O x1 y1 z1, używając macierzy R2,1, a następnie przekształcić r1 nar0używając macierzy R1,0.

Równanie (5.18) można interpretować następująco. Założono, iż na początku wszystkie trzy układy pokrywają się. W pierwszej fazie obracany jest układ          O x1 y1 z1względem układu O x0 y0 z0 zgodnie z przekształceniem R1,0. W fazie drugiej przy pokrywających się układach O x1 y1 z1 i O x2 y2 z2, następuje obrót układu O x2 y2 z2 względem układach O x1 y1 z1 zgodnie z przekształceniem R2,1.   W każdym przypadku układ, względem którego odbywa się obrót, nazywa się układem bieżącym.

 

 

Przykład 5.6

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

 

 

Wyznaczyć macierz reprezentującą obrót układu O x1 y1 z1 wraz z wektorem r o kątf=90° wokół bieżącej osi y z następnym obrotem układu O x2 y2 z2 związanego z wektorem r o kąt q=90° wokół bieżącej osi z, wiedząc iż na początku wszystkie układy były zorientowane tak jak zostało to przedstawione na rys.5.12, a współrzędne wektora względem układu O x2 y2 z2 są następujące r2=[2,1,0].

 

Rysunek 5.12 Początkowa orientacja układów

 

 

Rozwiązanie:

Aby rozwiązać przedstawione zadanie należy dokonać złożenia ruchów, tak więc macierz R powstaje z wymnożenia macierzy obrotu względem osi y z macierzą obrotu względem osi z. Na rys. 5.13 i rys. 5.14 przedstawiono poszczególne etapy obrotów.

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

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

 

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

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

Rysunek 5.13 Obrót układu względem osi y

Rysunek 5.14 Obrót układu względem osi z

 

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

Wyznaczona macierz R2,0 transformuje układ O x2 y2 z2 do układu O x0 y0 z0, tak więc współrzędne wektora r2względem układu O x0 y0 z0 są następujące:

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

Poniżej przedstawiono kod przygotowany w programie MapleTM

 >    restart;

>     with(linalg):

>     r[2]:=(vector(3,[2,1,0]));

>     phi:=evalf(convert(90*degrees,radians));

>     theta:=evalf(convert(90*degrees,radians));

>     R[y,phi]:=matrix(3,3,[cos(phi),0,sin(phi), 0,1,0,

-sin(phi),0,cos(phi)]);

>     R[z,theta]:=matrix(3,3,[cos(theta),-sin(theta),0, sin(theta),cos(theta),0,0,0,1]);

>     R[2,0]:=multiply(R[y,phi],R[z,theta]);

>     r[0]:=multiply(R[2,0],r[2]);

 

 

Przykład 5.7

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

 

Wyznaczyć macierz reprezentującą obrót układu O x1 y1 z1 wraz z wektorem r o kątq=90° wokół bieżącej osi z z następnym obrotem układu O x2 y2 z2 związanego z wektorem r o kąt f=90° wokół bieżącej osi y, wiedząc iż na początku wszystkie układy były zorientowane tak jak zostało to przedstawione na rys.5.15, a współrzędne wektora względem układu O x2 y2 z2 są następujące r2=[2,1,0].

 

Rysunek 5.15 Początkowa orientacja układów

 

 

Rozwiązanie:

W tym przykładzie zaistniała sytuacja odwrotna do tej z przykładu 5.6 należy dokonać złożenia ruchów w następującej kolejności, należy wymnożyć macierz obrotu względem osi z z macierzą obrotu względem osi y. Na rys. 5.16 i rys. 5.17 przedstawiono poszczególne etapy obrotów.

 

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

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

Rysunek 5.16 Obrót układu względem osi z

Rysunek 5.17 Obrót układu względem osi y

 

 

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

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

 

Wyznaczona macierz R2,0 transformuje układ O x2 y2 z2 do układu O x0 y0 z0, tak więc współrzędne wektora r2względem układu O x0 y0 z0 są następujące:

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

Poniżej przedstawiono kod przygotowany w programie MapleTM

 >    restart;

>     with(linalg):

>     r[2]:=(vector(3,[2,1,0]));

>     theta:=evalf(convert(90*degrees,radians));

>     phi:=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[y,phi]:=matrix(3,3,[cos(phi),0,sin(phi),0,1,0,    -sin(phi),0,cos(phi)]);

>     R[2,0]:=multiply(R[z,theta],R[y,phi]);

>     r[0]:=multiply(R[2,0],r[2]);

 

Jak widać na przykładzie 5.6 i 5.7 bardzo istotna jest kolejność mnożenia macierzy, obrót w przeciwieństwie do położenia nie jest wielkością wektorową i nie podlega prawu dodawania wektorów, wynika z tego, iż składanie obrotów na ogół nie jest przemienne.

 

 

 

Przykład 5.8

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

 

Wyznaczyć macierz reprezentującą obrót układu O x1 y1 z1 wraz z wektorem r o kąt f=90° wokół ustalonej osi y0 z następnym obrotem układu O x2 y2 z2związanego z wektorem r o kąt q=90°wokół ustalonej osi z0, wiedząc iż na początku wszystkie układy były zorientowane tak jak zostało to przedstawione na rys.5.15, a współrzędne wektora względem układu O x2 y2 z2 są następujące r2=[2,1,0].

 

Rysunek 5.18 Początkowa orientacja układów

 

 

Rozwiązanie:

W tym przypadku układ O x0 y0 z0 jest układem ustalonym tak więc wcześniej określone prawo składania nie jest prawdziwe, natomiast właściwym prawem składania jest mnożenie kolejnych macierzy obrotów w kolejności odwrotnej do podanej wzorem (5.19). Należy zauważyć, że same obroty nie są wykonywane w odwrotnej kolejności, a raczej są one wykonywane wokół układu ustalonego niż bieżącego. Na rys. 5.19 i rys. 5.20 przedstawiono poszczególne etapy obrotów.

 

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

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

Rysunek 5.19 Obrót układu względem osi y0

Rysunek 5.20 Obrót układu względem osi z0

 

W pierwszej fazie osie ustalone i bieżące są te same, czyli O x0 y0 z0 co umożliwia zapisanie przekształcenia w postaci:

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

W drugiej fazie następuje obrót wokół ustalonego układu O x0 y0 z0, a nie bieżącego układu  O x1 y1 z1 dlatego nie można stwierdzić, czy zachodzi zależność:

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

W takim wypadku należy cofnąć poprzedni obrót, a następnie wykonać obrót wokół osi z0 i na koniec przywrócić wyjściowe przekształcenie, czyli:

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

Podstawiając do równania opisującego wektor r w układzie O x0 y0 z0 zależność przedstawioną powyżej i reprezentującą wektor r w układzie O x1 y1 z1 otrzymano:

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

Dla danego układu ustalonego O x0 y0 z0, układu bieżącego O x1 y1 z1 i macierzy obrotu R1,0 wiążącej te układy, jeżeli trzeci układ O x2 y2 z2 jest otrzymany przez obrót R2,1 wykonany względem układu bieżącego, to aby otrzymać obrótR2,0 należy pomnożyć prawostronnie macierz R1,0 z R2,1:

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

Natomiast, gdy drugi obrót ma być wykonany względem układu ustalonego, należy dokonać mnożenia lewostronnie macierzy R1,0 z R2,1 w wyniku takiej operacji otrzymano:

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

Macierz R2,0 reprezentuje zawsze przekształcenie między układami O x0 y0 z0 O x2 y2 z2.

 

 

http://www.robotyka.com/teoria/grafika/image305.gif
http://www.robotyka.com/teoria/grafika/image306.gif

Wyznaczona macierz R2,0 transformuje układ O x2 y2 z2 do układu O x0 y0 z0, tak więc współrzędne wektora r2względem układu O x0 y0 z0 są następujące:

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

Poniżej przedstawiono kod przygotowany w programie MapleTM

 >    restart;

>     with(linalg):

>     r[2]:=(vector(3,[2,1,0]));

>     phi:=evalf(convert(90*degrees,radians));

>     theta:=evalf(convert(90*degrees,radians));

>     R[y,phi]:=matrix(3,3,[cos(phi),0,sin(phi), 0,1,0,

-sin(phi),0,cos(phi)]);

>     R[z,theta]:=matrix(3,3,[cos(theta),-sin(theta),0, sin(theta),cos(theta),0,0,0,1]);

>     R[2,0]:=multiply(R[z,theta],R[y,phi]);

>     r[0]:=multiply(R[2,0],r[2]);