旋转矩阵的推导过程

刚体变换

定义

一个映射g: R 3 → R 3 \R^3 \to \R^3 R3R3如果满足一下两个特性,则是刚体变换
1. 长度保持不变: ∥ g ( p ) − g ( q ) = ∥ p − q ∥ \Vert g(p)-g(q)=\Vert p-q\Vert g(p)g(q)=pq, 所有 p , q ∈ R 3 p,q\in\R^3 p,qR3
2. 叉乘保持不变: g ∗ ( v × w ) = g ∗ ( v ) × g ∗ ( w ) g_*(v×w)=g_*(v)×g_*(w) g(v×w)=g(v)×g(w),所有向量 v , w ∈ R 3 v,w\in\R^3 v,wR3


旋转矩阵

旋转矩阵的推导过程_第1张图片

A坐标系

X A = [ 1   0 ] T X_A=[1\ 0]^T XA=[1 0]T
Y A = [ 0   1 ] T Y_A =[0\ 1]^T YA=[0 1]T

在A坐标系下的B坐标系

X B = c o s θ ∥ X A ∥ X A + s i n θ ∥ X A ∥ Y A = [ c o s θ   0   0 ] T + [ 0   s i n θ   0 ] T = [ c o s θ   s i n θ   0 ] T X_B=cos\theta \|X_A\|X_A+sin\theta\|X_A\| Y_A=[cos\theta \ 0 \ 0]^T+[0\ sin\theta\ 0]^T=[cos\theta \ sin\theta \ 0]^T XB=cosθXAXA+sinθXAYA=[cosθ 0 0]T+[0 sinθ 0]T=[cosθ sinθ 0]T
Y B = − s i n θ ∥ Y A ∥ X A + c o s θ ∥ Y A ∥ Y A = [ − s i n θ   0   0 ] T + [ 0   c o s θ   0 ] T = [ − s i n θ   c o s θ   0 ] T Y_B=-sin\theta \|Y_A\|X_A+cos\theta \|Y_A\|Y_A=[-sin\theta \ 0 \ 0]^T+[0\ cos\theta\ 0]^T=[-sin\theta \ cos\theta \ 0]^T YB=sinθYAXA+cosθYAYA=[sinθ 0 0]T+[0 cosθ 0]T=[sinθ cosθ 0]T

构造矩阵

X B   Y B X_B\ Y_B XB YB放到一个矩阵里 R a b = [ X B   Y B ] R_{ab}=[X_B \ Y_B] Rab=[XB YB],将之称为旋转矩阵

意义

将一个点的坐标值在不同的基底下进行变换
P点在B坐标系下为 P B ( a , b ) P_B(a,b) PB(a,b),可以进行一下变换
P = [ X B   Y B ] [ a b ]      = a X B + b Y B      = ( c o s θ X A + s i n θ Y A ) a + ( − s i n θ X A + c o s θ Y A ) b      = [ X A   Y A ] [ c o s θ − s i n θ s i n θ c o s θ ] [ a b ]      = [ X A   Y A ] R a b [ a b ] P=[X_B\ Y_B]\begin{bmatrix} a \\b\\ \end{bmatrix}\\ \ \ \ \ =aX_B+bY_B \\ \ \ \ \ =(cos\theta X_A+sin\theta Y_A)a+(-sin\theta X_A+cos\theta Y_A)b\\ \ \ \ \ =[X_A\ Y_A]\begin{bmatrix} cos\theta & -sin\theta \\ sin\theta & cos\theta \\ \end{bmatrix}\begin{bmatrix} a \\b \\ \end{bmatrix}\\ \ \ \ \ =[X_A\ Y_A]R_{ab}\begin{bmatrix} a \\b \\ \end{bmatrix} P=[XB YB][ab]    =aXB+bYB    =(cosθXA+sinθYA)a+(sinθXA+cosθYA)b    =[XA YA][cosθsinθsinθcosθ][ab]    =[XA YA]Rab[ab]
可以看到,我们把基底从 [ X B   Y B ] [X_B\ Y_B] [XB YB]换成了 [ X A   Y A ] [X_A\ Y_A] [XA YA],也就是同一个点,在B坐标系下的坐标为 [ a   b ] T [a \ b]^T [a b]T,在A坐标系下的坐标为 R [ a   b ] T R[a \ b]^T R[a b]T,可以理解为是空间中同一个点在不同的坐标系中(坐标系旋转了)的表示,也可以理解为同一个坐标系下,是点在运动(假设坐标系没动,那么动的就是点)。


平移变换

刚体变换除了旋转外还有平移运动,假设变换后的坐标系B的原点在原来坐标系A下为 P A B = [ x 1   y 1 ] T P_{AB}=[x_1 \ y_1]^T PAB=[x1 y1]T
P A = R A B P B + P A B P_A=R_{AB}P_B+P_{AB} PA=RABPB+PAB
结合以上的推导,我们可以将刚体变换写成齐次坐标的形式
P A = [ R A B P A B 0 1 ] [ P B 1 ] P_A=\begin{bmatrix} R_{AB} & P_{AB}\\ 0 & 1\end{bmatrix}\begin{bmatrix} P_{B} \\ 1\end{bmatrix} PA=[RAB0PAB1][PB1]


以上的推导同样可以拓展到三维空间里

绕Z轴旋转的旋转矩阵

R Z ( θ ) = [ c o s θ − s i n θ 0 s i n θ c o s θ 0 0 0 1 ] R_Z(\theta)=\begin{bmatrix} cos\theta & -sin\theta &0\\ sin\theta & cos\theta & 0 \\0&0&1\end{bmatrix} RZ(θ)=cosθsinθ0sinθcosθ0001

绕Y轴旋转的旋转矩阵

R Y ( θ ) = [ c o s θ 0 s i n θ 0 1 0 − s i n θ 0 c o s θ ] R_Y(\theta)=\begin{bmatrix} cos\theta &0& sin\theta \\ 0&1&0\\ -sin\theta &0& cos\theta \end{bmatrix} RY(θ)=cosθ0sinθ010sinθ0cosθ

绕X轴旋转的旋转矩阵

R X ( θ ) = [ 1 0 0 0 c o s θ − s i n θ 0 s i n θ c o s θ ] R_X(\theta)=\begin{bmatrix} 1&0&0\\0&cos\theta&-sin\theta \\0&sin\theta&cos\theta\end{bmatrix} RX(θ)=1000cosθsinθ0sinθcosθ

你可能感兴趣的:(机器人学)