Zastosowanie kwaternionów do opisu mechanizmów wieloczłonowych
Kiril Kravchuk 6 listopada 2018
1 Wstęp
1.1 Definicja kwaternionów
Kwaterniony (daw. czwarki Hamiltona) – struktura algebraiczna (liczby) będąca rozszerzeniem ciała liczb zespolonych. Kwaterniony zostały wprowadzone przez irlandzkiego matematyka Williama Hamiltona w 1843 [1] i służyły opisowi mechaniki w przestrzeni trójwymiarowej.
Współczesna matematyka traktuje kwaterniony jako czterowymiarową, unormowaną algebrę z dzie- leniem nad liczbami rzeczywistymi. Algebra kwaternionów jest oznaczana przez H od pierwszej litery nazwiska twórcy. Zajmuje ona specjalne miejsce w algebrze, ponieważ zgodnie z twierdze- niem Frobeniusa jest jednym z trzech skończenie wymiarowych pierścieni z dzieleniem zawierających liczby rzeczywiste jako podpierścień.
1.2 Konstrukcje kwaternionów
Jest kilka sposobów konstruowania kwaternionów[9].
Kwaternion jako macierz zespolona
Kwaterniony zdefiniowane są jako macierze z przestrzeni M2×2(C) postaci:
z w
−w z
, gdzie z, w ∈ C.
Podstawowe własności:
• suma dwu kwaternionów jest kwaternionem:
z w
−w z
+ x y
−y x
=
z + x w + y
−(w + y) z + x
• iloczyn dwu kwaternionów jest kwaternionem:
z w
−w z
· x y
−y x
=
zx − wy zy + wx
−(zy + wx) (zx − wy)
• dla kwaternionu q 6= 0 istnieje kwaternion odwrotny do q zadany wzorem:
q−1=
z w
−w z
−1
= |z|2+|w|1 2 · z −w
w z
• macierz jednostkowa i zerowa są kwaternionami
1 0 0 1
, 0 0 0 0
• mnożenie kwaternionów nie jest przemienne:
i 0 0 −i
· 0 1
−1 0
6= 0 1
−1 0
· i 0 0 −i
Kwaternion jako para liczb zespolonych
W tej konstrukcji każdy kwaternion jest parą pewnych liczb zespolonych: q = (z, w), gdzie z, w ∈ C.
W tym zbiorze definiuje się działania:
• dodawanie:
(z, w) + (x, y) = (z + x, w + y)
• mnożenie:
(z, w) · (x, y) = (zx − wy, zy + wx)
Te dwie struktury są izomorficzne. Wynika to z tego, że zdefiniowana tu para liczb zespolonych jest pierwszym wierszem w macierzy definiującej kwaterniony, a pierwszy wiersz kwaternionu ma- cierzowego jednoznacznie określa całą macierz.
Kwaternion jako macierz rzeczywista
a b −d −c
−b a −c d
d c a b
c −d −b a
, dla a, b, c, d ∈ R.
Kwaternion jako suma algebraiczna
Kwaterniony w tej konstrukcji[2] mają postać:
q = (s, m) = s + x · i + y · j + z · k, gdzie s, x, y, z ∈ R zaś i, j, k są symbolami pewnych zmiennych Dodawanie i mnożenie na tych sumach wykonujemy jak na wielomianach czterech zmiennych e, i, j, k, przy czym mnożenie „zmiennych” i, j, k z uwzględnieniem ich kolejności określa poniższe definicje:
i2= j2= k2= −1
i · j = k, j · k = i, k · i = j j · i = −k, k · j = −i, i · k = −j Zgodnie z definicją kwaternionów q1 i q2:
q1= (s1, m1) = s1+ x1i + y1j + z1k q2= (s2, m2) = s2+ x2i + y2j + z2k Dodawanie jest zdefiniowane następująco:
q1+ q2= (s1+ s2, m1+ m2) = (s1+ s2) + (x1+ x2)i + (y1+ y2)j + (z1+ z2)k (1) Mnożenie skalarne (·):
q1· q2= s1· s2+ m1· m2 (2)
Mnożenie kwaternionów (⊗):
q1⊗ q2= (s1· s2− m1· m2, s1· m2+ s2· m1+ m1∧ m2) (3) Mnożenie kwaternionów jest łączne, ale nie jest przemienne.
Dla każdego kwaternionu istnieje kwaternion sprzężony q∗ oraz odwrotny q−1 (oprócz kwaternionu zerowego):
q∗= (s, −m) (4)
q−1= (1
|q|)2q∗ (5)
gdzie:
|q|2= s2+ x2+ y2+ z2= q ⊗ q∗= q∗⊗ q (6)
1.3 Reprezentacja rotacji
Rotacje[2] defioniowane są za pomocą kwaternionów jednostkowych. Kwaternion jednostkowy ma
|q| = 1. Iloczyn dwóch kwaternionów jednostkowych będzie kwaternionem jednostkowym. Z tego wynika, że za pomocą jednego kwaternionu można przedstawić N rotacji: cR= qR1·qR2·qR3·...·qRN. Za pomocą iloczynu kwaternionów można obracać wektor. W tym celu należy zdefiniować trój- wymiarowy wektor V = (vx, vy, vz) który zostanie obrócony jak qv = (0, v) = 0 + vxi + vyj + vzk.
Obrócony wektor V0 = (vx0, v0y, v0z) zdefiniowany jest następująco qv0 = (0, v0) = 0 + vx0i + vy0j + vz0k.
Zauważając, że qR−1= qR∗ ( dla kwaternionu jednostkowego) qv0 można wyznaczyć następująco:
qv0 = qR⊗ qv⊗ qR−1= qR⊗ qv⊗ q∗R (7) Dwie rotacje wektora V są przedstawione poniżej:
qv0 = pR⊗ (qR⊗ qv⊗ qR−1) ⊗ p−1R (8) cR= pR⊗ qR co oznacza: qv0 = cR⊗ qv⊗ c−1R
Dane równanie pokazuje, że wektor jest obrócony najpierw rotacją opisaną w qRa później pR.
2 Dualne kwaterniony (DK)
Dualne kwaterniony zostały zaproponowane przez William Kingdom Clifford’a w 1873 roku. Są one rozszerzeniem kwaternionów. Reprezentują one zarówno rotacje, jak i translacje, których po- łączenie definiowane jest jako sztywna transformacja. Są one reprezentowane przez następujący 8-wymiarowy wektor:
ˆ
q = (ˆs, ˆm) = (s, x, y, z, s, x, y, z) = (ˆs, ˆx, ˆy, ˆz) (9) ˆ
q = q + q= s + x · i + y · j + z · k + (s+ x· i + y· j + z· k) Mnożenie dualnych kwaternionów:
q1 ⊗ ˆˆ q2 = q1 ⊗ q2 + (q1 ⊗ q2+ q1⊗ q2) (10) gdzie 2= 0.
Kwaternion sprzężony ma postać:
ˆ
q = q − q (11)
Korzystając ze wzoru powyżej wynika, że kwaternion odwrotny ma postać:
ˆ q−1=1
qˆ=1 q− q
q2 (12)
Korzystając z zależności (4),(9) i (11) można pokazać:
ˆ
q∗= (s, −x, −y, −z, −s, x, y, z) (13)
2.1 Rotacje
Wzór na transformację DK jest zdefiniowany, podobnie jak zwykła transformacja kwaternionów (7), czyli jako ciąg mnożeń:
ˆ
qv0= ˆqR⊗ ˆqv⊗ ˆqR
∗= ( ˆqR⊗ ˆqv) ⊗ ˆqR
∗= ˆqR⊗ ( ˆqv⊗ ˆqR
∗) (14)
Niech DK przedstawia tylko obrót w przestrzeni 3D (q = 0, ˆqR = ˆq = q = R). Za jego pomocą można wykonać rotację wektora ~v = (vx, vy, vz) w przestrzeni.
ˆ
qv = 1 + (vxi + vyj + vzk)
Korzystając z zależności (14) można dokonać obrotu wektora ~v, gdzie ˆqv0 przedstawia postać DK wektora po rotacji ~v0= (vx0, v0y, v0z).
ˆ
qv0 = 1 + (vx0i + vy0j + vz0k) Ponieważ q= 0, to ˆq∗= q∗ i ˆ
q ⊗ ˆqv⊗ ˆq∗= q ⊗ ˆqv⊗ q∗, to wtedy można zrobić rozwinięcie do postaci:
qˆv0 = q ⊗ (1 + (vxi + vyj + vzk)) ⊗ q∗
= q ⊗ q∗+ q ⊗ (vxi + vyj + vzk) ⊗ q∗
= 1 + q ⊗ (vxi + vyj + vzk) ⊗ q∗
= 1 + (v0xi + vy0j + vz0k)
Ostatecznie porównując wyniki dostaniemy:
(v0xi + v0yj + vz0k) = q ⊗ (vxi + vyj + vzk) ⊗ q∗
2.2 Translacje
Dualne kwaterniony też reprezentują rotacje. Dualny kwaternion zdefioniowany jako ˆ
qT = 1 +
2(txi + tyj + tzk)
odnosi się do wektora translacji ~T = (vxi + vyj + vzk)) który można skrótowo zapisać jako T . Stąd ˆ
qT = 1 + T 2
Translacja T na wektorze ~v można obliczyć w sposób następujący: ˆqv0= ˆqT ⊗ ˆqv⊗ ˆqT
∗. Korzystając z powyższych definicji otrzymujemy ˆqT
∗= ˆqT = 1 + T2
ˆ
qv0 = ˆqT ⊗ ˆqv⊗ ˆqT = [1 + 2(txi + tyj + tzk)] ⊗ [1 + (vxi + vyj + vzk] ⊗ [1 +2(txi + tyj + tzk)]
= 1 + [(vx+ tx)i + (vy+ ty)j + (vz+ tz)k]
Ostatecznie po translacji wektor ma postać:
~v0= (vx+ tx)i + (vy+ ty)j + (vz+ tz)k
2.3 Kombinacja rotacji i translacji
Dwie transformacje zaprezentowane powyżej można połączyć w jeden dualny kwaternion ( podobnie jak we wzorze (8) dla kwaternionów ). Zakładając, że ˆp i ˆq to dwie transformacji DK a q(v to wektor pozycji mamy następującą zależność:
ˆ
qv0= ˆp ⊗ (ˆq ⊗ ˆqv⊗ ˆq∗) ⊗ ˆp∗ = (ˆp ⊗ ˆq) ⊗ ( ˆqv) ⊗ (ˆq∗⊗ ˆp∗) (15) W celu uzyskania bardziej zwartego zapisu używa się polączoną transformację c:
ˆc = ˆp ⊗ ˆq ⇒ ˆqv0= ˆc ⊗ qv⊗ ˆc∗
Należy zauważyć, że najpierw jest wykonywana najbardziej wewnętrzna transformacja równania, a póżniej kolejne, aż się dojdzie do zewnętrznej. W naszym przypadku (15) pierwszą transformacją jest ˆq a drugą ˆp.
Rotacja i translacja jednostkowego DK
Po połączeniu jednostkowej rotacji DK: ˆqR= qRi jednostkowej translacji DK:
ˆ
qT = 1 + (txi + tyj + tzk) otrzymamy:
ˆ
qT ⊗ ˆqR= (1 +
2(txi + tyj + tzk)) ⊗ qR= qR+
2(txi + tyj + tzk) ⊗ qR (16) To oznacza, że każdy dualny kwaternion można rozdzielić na dwie części: jedną odpowiadającą za rotację i drugą odpowiadającą za translację.
ˆ
q = q + q= qR+
2(txi + tyj + tzk) ⊗ qR= R + T R 2
Odwrotność ˆq będzie równa ˆq−1 = (R + T R2 )−1 = R∗− R∗2T Dokonując prostych przekształceń można pokazać że translacja ˆqT można przedstawić jako 2q· q∗. q = 2(txi + tyj + tzk) ⊗ qR⇒ 2q⊗ q∗R= (txi + tyj + tzk)
⇒ 2q⊗ q∗= (txi + tyj + tzk)
Jeśli najpierw jest dokonywana translacja to:
ˆ
q = R + RT 2
3 Równanie kinematyki robota szeregowego
Jednostki robotów przemysłowych jako manipulatorów łączone są ze sobą za pomącą par kinema- tycznych. Człony można łączyć w sposób szeregowy, równoległy lub hybrydowy. Człony robota szeregowego tworzą otwarty łańcuch kinematyczny. Czyli jeden jego koniec jest na stałe przymo- cowany do bazy, a drugi wyposażony w efektor. Ilość napędów potrzebna do określenia położenia efektora w przestrzeni nazywa się liczbą stopni swobody[2].
3.1 Zadanie proste kinematyki w notacji DK
Aby rozwiązać zadanie proste kinematyki robota szeregowego wykorzystuje się system określany jako notacja Denavita-Hartenberga, która wykorzystuje 4 parametry. są to: kąt skręcenia członu, długość członu, odsunięcie przegubu oraz kąt przegubu.
Rysunek 1: Uproszczony model 2D[8]
Każda transformacja pomiędzy sąsiednimi układami współrzędnych opisana jest jako złożenie czte- rech podstawowych transformacji[8]:
Ti−1i =Ri−1i Di−1i
0 1
= Rotz,θiT ransz,diT ransx,aiRotx,αi (17)
Podobnie jest w notacji DK, transformacja pomiędzy sąsiednimi układami jest iloczynem 4 dualnych kwaternionów odpowiadających za poszczególne transformacje:
qi−1,i= qrot(z, θi)qtrans(z, di)qtrans(x, ai)qrot(x, α)i) (18) Indeksy ’rot’ i ’trans’ oznaczają czy dana transformacja jest czystą rotacją czy czystą translacją.
Dla czystej rotacji wektor translacji jest równy zero, czyli qrot = qrot. Czysta translacja wygłada następująco: qtrans= 1 + 2t.
Zatem zadanie proste kinematyki n-tego ramia robota sprowadza się do policzenia:
q = q01q12...qn−1,n (19)
3.2 Macierz Jakobiego w notacji DK
Dla każdego manipulatora robota z n przegubami, równanie kinematyki które wiąże wektor pręd- kości efektora X0 z wektorem prędkości przegubów θ0 wygląda następująco:
X0= J(θ)θ0 (20)
Macierz Jakobiego J(θ) jest równa: J(θ) = dXdθ
W notacji dualnych kwaternionów równanie (20) można zapisać jako:
ˆ
q = J (q)θ0 Macierz Jakobiego jest równa:
J (q) = dˆq dθ = d
dθ
q1 q2 q3 q4 q5 q6 q7 q8
=
dq1
dθ1· · · dθdq1 .. n
. . .. ...
dq8
dθ1· · · dθdq8
n
(21)
gdzie q = [q1 q2 q3 q4]T,q0= [q5 q6 q7 q8]T. q i q0stanowią dwie części dualnego kwater- nionu ˆq = q + q0.
4 Kinematyka robota 3R
W tej części zostanie wyznaczone równanie kinematyki robota 3R (Rys. 2):
• metodą Denavita-Hartenberga (DH)
• metodą dualnych kwaternionów (DK)
Wszystkie trzy przeguby są obrotowe. Dla robota 3R parametry DH są przedstawione w tabeli poniżej.
H10 H21 He2 ai L1 L2 L3
αi 0 0 0
di 0 0 0
θi θ1 θ2 θ3
Tabela 1: Parametry DH robota
Rysunek 2: Model robota 3R[3]
4.1 Kinematyka w notacji Denavita-Hartenberga
Metoda Denavita-Hartenberga wymaga oddzielnego układu współrzędnych dla każdego przegubu, efektora oraz bazy. Transformację pomiędzy sąsiednimi układami można przedstawić jako[3]:
Hii−1=
cos θi − sin θi 0 aicos θi sin θi cos θi 0 aisin θi
0 0 1 0
0 0 0 1
; i = 1, 2, 3
Transformacja globalna ma postać:
He0=
cos(θ1+ θ2+ θ3) − sin(θ1+ θ2+ θ3) 0 a14 sin(θ1+ θ2+ θ3) cos(θ1+ θ2+ θ3) 0 a24
0 0 1 0
0 0 0 1
gdzie
a14= L1cos θ1+ L2cos(θ1+ θ2) + L3cos(θ1+ θ2+ θ3) a14= L1sin θ1+ L2sin(θ1+ θ2) + L3sin(θ1+ θ2+ θ3) Stąd pozycja końcowa efektora w układzie bazowym będzie równa:
qv0,e=
L1cos θ1+ L2cos(θ1+ θ2) + L3cos(θ1+ θ2+ θ3) L1sin θ1+ L2sin(θ1+ θ2) + L3sin(θ1+ θ2+ θ3)
0 1
4.2 Kinematyka w notacji dualnych kwaternionów
W danym robocie αi = 0 oraz di = 0 dla i = 1, 2, 3. Na podstawie parametrów z tabeli 1 poszczególne transformacje w notacji DK będą wyglądać następująco[3]:
qR0,1=
cosθ21
0 0 sinθ21
0
L1 2 cosθ21
L1 2 sinθ21
0
, qR1,2=
cosθ22
0 0 sinθ22
0
L2 2 cosθ22
L2 2 sinθ22
0
, q2,eR =
cosθ23
0 0 sinθ23
0
L3 2 cosθ23
L3 2 sinθ23
0
,
Zatem transformacja globalna ma postać:
qR0,e=
cos(θ1+θ22+θ3) 0 0 sin(θ1+θ22+θ3)
0
L1
2 cos(θ1−θ22−θ3) +L22 cos(θ1−θ22−θ3) +L23cos(θ1+θ22+θ3)
L2
2 sin(θ1+θ22−θ3) +L21sin(θ1−θ22−θ3) +L23sin(θ1+θ22+θ3) 0
Korzystając ze wzoru (14) wyznaczono pozycję końcową efektora:
qv0,e=
1 0 0 0 0
L1cos θ1+ L2cos(θ1+ θ2) + L3cos(θ1+ θ2+ θ3) L1sin θ1+ L2sin(θ1+ θ2) + L3sin(θ1+ θ2+ θ3)
0
Otrzymany wynik jest zgodny z obliczeniami metodą Denavita-Hartenberga.
5 Analiza wydajności obliczeniowej
Podczas przechowywania i manipulowania macierzami rzadkimi na komputerze, korzystne, a cza- sami nawet konieczne jest stosowanie specjalnych algorytmóm i struktur danych. Stosowanie stan- dardowych metod i struktur powoduje, że algorytmy są wolniejsze i potrzebują dużo większej ilości pamięci. Macierze rzadkie mogą być w prosty sposób kompresowane, co skutkuje znacznie mniej- szym wykorzystaniem pamięci komputera[3].
Metoda Denavita-Hartenberga wykorzystuje macierze 4x4 o specyficznej strukturze, z zerami w określonych miejscach. Taka macierz wymaga 12 komórek pamięci[4].Zaś metoda dualnych kwater- nionów wykorzystuje 8 komórek pamięci.
W tabeli 2 jest przedstawiona liczba dodawań i mnożeń potrzebna do uzyskania globalnej transfor- macji robota o n przegubach.
metoda DH metoda DK
+ 23n-26 40(n-1)
* 38n-35 2(31n-24)
Tabela 2: Wydajność obliczeniowa metody DH i DK[3]
Rysunek 3: Wydajność obliczeniowa metody DH i DK[3]
Zaletą dualnych kwaternionów jest oszczędność pamięcie. Wykorzystują 8 komórek pamięci, wtedy jak macierze jednorodne potrzebują 12. Metoda DK jest mniej wydajna obliczeniowo. Największą zaletą dualnych kwaternionów jest fakt, że nie tylko punkty, ale też proste i płaszczyzny mogą być używane do określenia pozycji i orientacji w algebrze[5], która w kinematyce robota unika osobliwości macierzy[6][7].
Literatura
[1] Hamilton W.R.(1843): On quaternions, or on a new system of imaginaries in algebra.
[2] Gousami M.,Ouali M., Fernini B.(2012):Robot kinematics using dual quaternions.
[3] Radavelli L.A., Simoni R., De Pieri E.R., Martins D.(2012): A Comparative Study of the Kinematics of Robots Manipulators by Denavit-Hartenberg and Dual Quaternion.
[4] Aspragathos N.A., Dimitros J.K(1998): A comparative study of three methods for robot kine- matics.IEEE, 28(2):135–145
[5] Selig J.M.(2000): Geometric fundamentals of robotics.ISBN 0-387-20874-7
[6] Oliveira A.S.D., Pieri E.R.D., Moreno U.F.(2010):Analise cinematica via quaternios duais.
[7] Sariyildiz E., Cakiray E., Temeltas H.(2011): A comparative study of three inverse kinematic methods of serial industrial robot manipulators in the screw theory framework.
[8] Możaryn J., Klimaszewski J.(2018):Sterowanie mechanizmów wieloczłonowych [9] https://en.wikipedia.org/wiki/Quaternion