天天看點

坐标變換及旋轉矩陣1 空間點的坐标變換2 旋轉矩陣3 多次旋轉的組合

最近由于研究機器人的運動控制,是以複習和查閱了一些關于坐标系變換的資料,記錄一下,以備使用。

1 空間點的坐标變換

以下公式中,規定幾種辨別:

1) 坐标系A用{A}表示,同理,有{B};

2) 左上角表示所在坐标系辨別,如 A p ^Ap Ap和 B p ^Bp Bp表示點p分别在坐标系{A}和{B}中的坐标。

1.1 平移坐标變換

A p = B p + A p B O ^Ap={^Bp}+{^Ap_{B_O}} Ap=Bp+ApBO​​

式中: A p B O {^Ap_{B_O}} ApBO​​為{B}的原點 B O B_O BO​在{A}中的坐标。

1.2 旋轉坐标變換

A p = A R B B p ^Ap={^AR_B}{^Bp} Ap=ARB​Bp

式中: A R B {^AR_B} ARB​為{B}在{A}中的旋轉矩陣。

1.3 複合坐标變換

A p = A R B B p + A p B O ^Ap={^A{R_B}}{^Bp}+^Ap_{B_O} Ap=ARB​Bp+ApBO​​

複合變換實際是以上平移和旋轉的組合。

2 旋轉矩陣

2.1 二維坐标系的旋轉矩陣

二維坐标系下的旋轉,比較簡單,設旋轉角為 θ θ θ,逆時針為正,有旋轉矩陣:

R ( θ ) = [ c o s θ − s i n θ s i n θ c o s θ ] R(θ)=\left[\begin{matrix} cosθ & -sinθ \\ sinθ & cosθ \\ \end{matrix}\right] R(θ)=[cosθsinθ​−sinθcosθ​]

2.2 三維坐标系的旋轉矩陣

三維坐标系下的旋轉需要指定兩個要素:旋轉軸,旋轉角。是以,有不同的旋轉矩陣。

2.2.1 繞坐标軸的旋轉

以下三個為基本旋轉矩陣:

繞X軸旋轉θ的旋轉矩陣

R X ( θ ) = [ 1 0 0 0 c o s θ − s i n θ 0 s i n θ c o s θ ] R_X(θ)=\left[\begin{matrix} 1&0&0\\ 0&cosθ&-sinθ\\ 0&sinθ&cosθ\\ \end{matrix}\right] RX​(θ)=⎣⎡​100​0cosθsinθ​0−sinθcosθ​⎦⎤​

繞Y軸旋轉θ的旋轉矩陣

R Y ( θ ) = [ c o s θ 0 s i n θ 0 1 0 − s i n θ 0 c o s θ ] R_Y(θ)=\left[\begin{matrix} cosθ&0&sinθ\\ 0&1&0\\ -sinθ&0&cosθ\\ \end{matrix}\right] RY​(θ)=⎣⎡​cosθ0−sinθ​010​sinθ0cosθ​⎦⎤​

繞Z軸旋轉θ的旋轉矩陣

R Z ( θ ) = [ c o s θ − s i n θ 0 s i n θ c o s θ 0 0 0 1 ] R_Z(θ)=\left[\begin{matrix} cosθ&-sinθ&0\\ sinθ&cosθ&0\\ 0&0&1\\ \end{matrix}\right] RZ​(θ)=⎣⎡​cosθsinθ0​−sinθcosθ0​001​⎦⎤​

其中θ的方向确定:當旋轉軸朝向被觀察者時,逆時針旋轉為正,即右手系統,右手攥住旋轉軸,大拇指指向旋轉軸箭頭方向時,其它四指指的方向即為旋轉正向。如圖所示。

坐标變換及旋轉矩陣1 空間點的坐标變換2 旋轉矩陣3 多次旋轉的組合

2.2.2 繞空間任意軸的旋轉矩陣

給定一個機關向量 K ^ = ( k x , k y , k z ) \hat K=(k_x,k_y,k_z) K^=(kx​,ky​,kz​),有 k x 2 + k y 2 + k z 2 = 1 k_x^2+k_y^2+k_z^2=1 kx2​+ky2​+kz2​=1,以這個機關向量 K ^ \hat K K^為旋轉軸,旋轉 θ θ θ角的旋轉矩陣為:

R K ^ ( θ ) = [ c o s θ + k x 2 ( 1 − c o s θ ) k x k y ( 1 − c o s θ ) − k z s i n θ k x k z ( 1 − c o s θ ) + k y s i n θ k y k x ( 1 − c o s θ ) + k z s i n θ c o s θ + k y 2 ( 1 − c o s θ ) k y k z ( 1 − c o s θ ) − k x s i n θ k z k x ( 1 − c o s θ ) − k y s i n θ k z k y ( 1 − c o s θ ) + k x s i n θ c o s θ + k z 2 ( 1 − c o s θ ) ] R_{\hat K}(θ)=\left[\begin{matrix} cosθ+k_x^2(1-cosθ)&k_xk_y(1-cosθ)-k_zsinθ&k_xk_z(1-cosθ)+k_ysinθ\\ k_yk_x(1-cosθ)+k_zsinθ&cosθ+k_y^2(1-cosθ)&k_yk_z(1-cosθ)-k_xsinθ\\ k_zk_x(1-cosθ)-k_ysinθ&k_zk_y(1-cosθ)+k_xsinθ&cosθ+k_z^2(1-cosθ)\\ \end{matrix}\right] RK^​(θ)=⎣⎡​cosθ+kx2​(1−cosθ)ky​kx​(1−cosθ)+kz​sinθkz​kx​(1−cosθ)−ky​sinθ​kx​ky​(1−cosθ)−kz​sinθcosθ+ky2​(1−cosθ)kz​ky​(1−cosθ)+kx​sinθ​kx​kz​(1−cosθ)+ky​sinθky​kz​(1−cosθ)−kx​sinθcosθ+kz2​(1−cosθ)​⎦⎤​

θ θ θ的旋轉方向也遵守前述的右手系統。

實際上,前面講的三個繞坐标軸的基本旋轉矩陣是以上公式的三個特例。

這個公式也可由以上的三個基本旋轉矩陣推導而來,其基本思想是把繞任意機關向量的旋轉分解為幾個已知的動作:

1) 首先旋轉給定向量軸到位于任意一個坐标平面内(XY、YZ或ZX);

2) 然後旋轉這個給定向量軸與剛才這個坐标平面内的一個軸重合(X、Y或Z);

3) 利用以上的三個基本旋轉矩陣,繞與之重合的這個坐标軸旋轉相應的角度 θ θ θ;

4) 反向做2)步驟的工作;

5) 反向做1)步驟的工作。

具體推導過程可見其它材料。

2.3 旋轉矩陣的特性

R T = R − 1 R^T = R^{-1} RT=R−1,即旋轉矩陣的轉置等于旋轉矩陣的逆。旋轉矩陣為正交矩陣,同一行、列元素的平方和=1;不同行、列元素對應乘積的和=0;矩陣行列式=1。旋轉矩陣的9個元素是線性相關的。

3 多次旋轉的組合

一次空間旋轉,可以分解為多次旋轉的組合,實際上就是多次用不同的旋轉矩陣來叉乘,多次旋轉矩陣組合時,要注意:矩陣與矩陣的叉乘,或者矩陣與向量的叉乘,滿足結合律,但一般不滿足交換律,是以,要注意旋轉矩陣的順序。

繼續閱讀