前言:導師主要是做圖像處理方面的,然後接了一個與機械臂相關的項目,然後讓我學習機械臂,我從去年寒假開始,自己搜集資料,看了零星一些文章,感覺自己學的不是很深入,學的也比較零碎,我希望能通過寫部落格的方式來監督自己的學習。
機械臂我們可以理想地把他作為剛體,以剛體的角度對機械臂進行研究。剛體參考點的位置和剛體的姿态稱為剛體的位姿,其表示方式主要有:齊次變換法、矢量法、旋量法和四元數法。其中介紹及應用比較多的是齊次變換法,他能将運動、變換、映射和矩陣運算聯系起來。此外齊次變換在研究空間機構動力學、機器人控制算法、計算機圖形學和視覺資訊處理方面也有廣泛的運用。
位姿描述:
(1)位置的描述:
描述一個點的位置,有很多方法。描述點的位置需要基于一個坐标系,常見的坐标系有直角坐标系,極坐标系,圓柱坐标系。通常我們采用直角坐标系來描述一個點的位置。對于直角坐标系{A},空間任意一點p的位置,我們可以用列矢量 ( p x , p y , p z ) T (px,py,pz)^T (px,py,pz)T來表示,其中px,py,pz是點p在坐标系{A}下的三個分量,這三個分量便能唯一确定一點的位置。

圖1-1
(2)方位的描述:
描述剛體的運動,不僅要描述某一點的位置,也要描述剛體的方位;為了描述空間某剛體B的方位,另外設一個直角坐标系{B}與剛體連接配接,用坐标系{B}的三個機關主矢量 X b X_b Xb, Y b Y_b Yb, Z b Z_b Zb,相對于坐标系{A}的方向餘弦組成的3X3的矩陣
B A R _B^AR BAR = [ A X B , A Y B , A Z B ] [^A{X_B},^A{Y_B},^A{Z_B}] [AXB,AYB,AZB] = [ r 11 r 12 r 13 r 21 r 22 r 23 r 31 r 32 r 33 ] \begin{bmatrix} r11&r12&r13\\ r21&r22&r23\\r31&r32&r33\end{bmatrix} ⎣⎡r11r21r31r12r22r32r13r23r33⎦⎤
B A R _B^AR BAR為旋轉矩陣,其中上标A代表參考坐标系{A},下标B代表被描述的坐标系{B}。 B A R _B^AR BAR矩陣中含有9個元素,隻有三個是獨立的,他的三個列矢量都是機關主矢量,兩兩互相垂直。标量 r i j {r_{ij}} rij可用每個矢量在參考坐标系中機關方向上的投影的分量來表示。 B A R _B^AR BAR中的各個分量可用一對機關矢量的點積來表示。由兩個機關矢量的點積可以得到二者之間的夾角的餘弦,是以旋轉矩陣的各個分量常被稱作方向餘弦。
繞x軸、y軸、z軸旋轉 θ \theta θ角度的矩陣分别為:
R(x, θ \theta θ)= ( 1 0 0 0 c o s θ − s i n θ 0 s i n θ c o s θ ) \begin{pmatrix} 1&0&0 \\ 0&cos\theta&-sin\theta \\ 0&sin\theta&cos\theta \end{pmatrix} ⎝⎛1000cosθsinθ0−sinθcosθ⎠⎞
R(y, θ \theta θ)= ( c o s θ 0 s i n θ 0 1 0 − s i n θ 0 c o s θ ) \begin{pmatrix} cos\theta&0&sin\theta \\ 0&1&0 \\ -sin\theta&0&cos\theta \end{pmatrix} ⎝⎛cosθ0−sinθ010sinθ0cosθ⎠⎞
R(z, θ \theta θ)= ( c o s θ − s i n θ 0 s i n θ c o s θ 0 0 0 1 ) \begin{pmatrix} cos\theta&-sin\theta&0 \\ sin\theta&cos\theta&0 \\0&0&1 \end{pmatrix} ⎝⎛cosθsinθ0−sinθcosθ0001⎠⎞
通常情況下會用旋轉矩陣來描述剛體的方位。
(3)位姿的描述:
為了完整描述剛體B在空間的位置與姿态,需要将剛體B與坐标系{B}固接。坐标系的原點一般選取物體的特征點,如質心,對稱中心等。相對于參考系{A},位置矢量和旋轉矩陣分别描述坐标系{B}的原點位置和坐标軸的方位。是以B的位姿由坐标系{B}參考坐标系{A}來描述,即{B} = { B A R _B^AR BAR, A X B ^A{X_B} AXB}
(4)手爪坐标系:
為了描述末端執行器的位置和姿态,規定一個與手爪固接的坐标系,稱為手爪坐标系。z軸設定在接近物體的方向,稱為接近矢量a(approach);y軸設定在設在兩手指的聯線方向,稱為方向矢量o(orientation);x軸由右手法則确定,n稱為法向矢量(normal)。如此,手爪的方位就由旋轉矩陣[n,o,a]而手爪的位置由位置矢量p所規定,他代表手爪坐标系的原點,是以手爪的位姿可有四個獨立矢量進行描述[ n,o,a,p],記為[T]=[ n,o,a,p],在後續正逆運動學中,會多次用到這個坐标系。
坐标變化:
在空間中一點p在不同坐标系下的描述是不同的,從一個坐标系到另一個坐标系描述之間的變化關系主要如下三種:
(1)平移變換:
假設坐标系{B}和{A}有着相同的方位,但是兩個坐标系的原點不一緻。用位置矢 A P B ^A{P_B} APB來描述{B}相對于參考坐标系{A}的位置,如下圖所示。把 A P B ^A{P_B} APB稱為{B}相對于{A}的平移矢量。如果點P在坐标系{B}中的位置為 B P ^B{P} BP,則他相對于{A}的位置 B P ^B{P} BP可以通過矢量相加得到:
A P ^ A{P} AP= B P ^ B{P} BP+ A P B ^A{P_B} APB
這個矢量相加的等式稱為坐标平移方程。
圖2-1
(2)旋轉變化:
坐标系{B}與{A}具有相同的坐标原點,卻有着不同的方位,如下圖所示。可以用旋轉矩陣來描述{B}相對于{A}的方位。同樣的,空間中一點P在坐标系{A}和{B}中具有以下變換關系: A P ^ A{P} AP= B A R _B^A{R} BAR B P ^B{P} BP ,旋轉矩陣與位置矢量的相乘稱為坐标系旋轉方程。
圖2-2
(3)複合變化:
對于一般情況,坐标系{B}與坐标系{A},兩個坐标系,原點不重合,方位也不相同,如下圖所示。結合上面兩個方程,複合變換由坐标平移與坐标旋轉共同作用得來的,得出他的一般方程如下: A P ^ A{P} AP= B A R _B^A{R} BAR B P ^B{P} BP+ A P B ^A{P_B} APB
齊次坐标變換:
上式的複合變換對點 B P ^B{P} BP來說是非齊次的,但是可以把他轉化成齊次的形式:
( A P 1 ) \begin{pmatrix} ^A{P} \\ 1\end{pmatrix} (AP1)= ( B A R A P B 0 1 ) \begin{pmatrix} _B^AR &^A{P_B} \\ 0&1\end{pmatrix} (BAR0APB1) ( B P 1 ) \begin{pmatrix} ^B{P} \\ 1\end{pmatrix} (BP1)
(1)平移齊次坐标變換:
空間的任意點都有矢量ai+bj+ck來描述,其中i,j,k為軸x,y,z上的機關矢量,是以此點可以用平移齊次變換表示為:
Trans(a,b,c)= ( 1 0 0 a 0 1 0 b 0 0 1 c 0 0 0 1 ) \begin{pmatrix} 1&0&0&a \\ 0&1&0&b \\ 0&0&1&c \\ 0&0&0&1 \end{pmatrix} ⎝⎜⎜⎛100001000010abc1⎠⎟⎟⎞
(2)旋轉齊次坐标變換:
對應于軸x,y,z作轉角為 θ \theta θ的旋轉變化,可得到如下齊次矩陣:
Rot(x, θ \theta θ)= ( 1 0 0 0 0 c o s θ − s i n θ 0 0 s i n θ c o s θ 0 0 0 0 1 ) \begin{pmatrix} 1&0&0&0 \\ 0&cos\theta&-sin\theta&0 \\ 0&sin\theta&cos\theta&0 \\ 0&0&0&1 \end{pmatrix} ⎝⎜⎜⎛10000cosθsinθ00−sinθcosθ00001⎠⎟⎟⎞
Rot(y, θ \theta θ)= ( c o s θ 0 s i n θ 0 0 1 0 0 − s i n θ 0 c o s θ 0 0 0 0 1 ) \begin{pmatrix} cos\theta&0&sin\theta&0 \\ 0&1&0&0 \\ -sin\theta&0&cos\theta&0 \\ 0&0&0&1 \end{pmatrix} ⎝⎜⎜⎛cosθ0−sinθ00100sinθ0cosθ00001⎠⎟⎟⎞
Rot(z, θ \theta θ)= ( c o s θ − s i n θ 0 0 s i n θ c o s θ 0 0 0 0 1 0 0 0 0 1 ) \begin{pmatrix} cos\theta&-sin\theta&0&0 \\ sin\theta&cos\theta&0&0 \\ 0&0&1&0 \\ 0&0&0&1 \end{pmatrix} ⎝⎜⎜⎛cosθsinθ00−sinθcosθ0000100001⎠⎟⎟⎞
(3)複合齊次變換:
空間某點既有平移變換又有旋轉變化是,按照變化的先後順序,可得到如下變化矩陣:
T=Trans( a 1 a_1 a1 , b 1 ,b_1 ,b1, c 1 c_1 c1)*Trans( a n a_n an , b n ,b_n ,bn, c n c_n cn)Rot(y, θ \theta θ)Rot(x, ε \varepsilon ε)
參考
[1].John J.Craig《機器人學導論》[M]機械工業出版社, 2006:14~47
[2].熊有倫,《機器人技術基礎》[M]華中理工大學出版社,1996:15~30
[3]馬強.《六自由度機械臂軌迹規劃研究》[D]哈爾濱工程大學2007:9~13
[4]馬江.《六自由度機械臂控制系統設計與運動學仿真》[D]北京工業大學2009:31~33