坐标变换及旋转矩阵

最近由于研究机器人的运动控制,所以复习和查阅了一些关于坐标系变换的资料,记录一下,以备使用。

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=ARBBp
式中: 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=ARBBp+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(θ)=1000cosθsinθ0sinθ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θ0sinθ010sinθ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θ0sinθcosθ0001
其中θ的方向确定:当旋转轴朝向被观察者时,逆时针旋转为正,即右手系统,右手攥住旋转轴,大拇指指向旋转轴箭头方向时,其它四指指的方向即为旋转正向。如图所示。
在这里插入图片描述

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(1cosθ)kykx(1cosθ)+kzsinθkzkx(1cosθ)kysinθkxky(1cosθ)kzsinθcosθ+ky2(1cosθ)kzky(1cosθ)+kxsinθkxkz(1cosθ)+kysinθkykz(1cosθ)kxsinθcosθ+kz2(1cosθ)
θ θ θ的旋转方向也遵守前述的右手系统。
实际上,前面讲的三个绕坐标轴的基本旋转矩阵是以上公式的三个特例。
这个公式也可由以上的三个基本旋转矩阵推导而来,其基本思想是把绕任意单位向量的旋转分解为几个已知的动作:
1) 首先旋转给定向量轴到位于任意一个坐标平面内(XY、YZ或ZX);
2) 然后旋转这个给定向量轴与刚才这个坐标平面内的一个轴重合(X、Y或Z);
3) 利用以上的三个基本旋转矩阵,绕与之重合的这个坐标轴旋转相应的角度 θ θ θ
4) 反向做2)步骤的工作;
5) 反向做1)步骤的工作。
具体推导过程可见其它材料。

2.3 旋转矩阵的特性

R T = R − 1 R^T = R^{-1} RT=R1,即旋转矩阵的转置等于旋转矩阵的逆。旋转矩阵为正交矩阵,同一行、列元素的平方和=1;不同行、列元素对应乘积的和=0;矩阵行列式=1。旋转矩阵的9个元素是线性相关的。

3 多次旋转的组合

一次空间旋转,可以分解为多次旋转的组合,实际上就是多次用不同的旋转矩阵来叉乘,多次旋转矩阵组合时,要注意:矩阵与矩阵的叉乘,或者矩阵与向量的叉乘,满足结合律,但一般不满足交换律,因此,要注意旋转矩阵的顺序。

猜你喜欢

转载自blog.csdn.net/hangl_ciom/article/details/97903310