三维空间刚体运动之旋转矩阵与变换矩阵

 1. 旋转矩阵

 1.1 点、向量和坐标系

点:点是空间中的基本元素,没有长度,没有体积;

向量:把两个点连接起来,就构成了向量,向量可以看成从某点指向另一点的一个箭头;只有当我们指定这个三维空间中的某个坐标系时,才可以谈论该向量在此坐标系下的坐标;默认向量就是列向量;
坐标系:三根不共面的轴,坐标系的三根坐标轴的方向向量就是基,坐标系能用它的基来表示;

标准正交基:两两正交、单位长度(基就是张成这个空间的一组线性无关的向量。
 

\left[e_1, e_2, e_3\right]

任意向量在基下的坐标(坐标 + 坐标系可以表示向量)。

\boldsymbol{a}=\left[\boldsymbol{e}_1, \boldsymbol{e}_2, \boldsymbol{e}_3\right]\left[\begin{array}{l} a_1 \\ a_2 \\ a_3 \end{array}\right]=a_1 \boldsymbol{e}_1+a_2 \boldsymbol{e}_2+a_3 \boldsymbol{e}_3

机器人中有各种各样的坐标系

  • 世界系 World、机体系 Body、传感器参考系 Sensor

向量点乘和叉乘

点乘(内积):结果是一个数

\boldsymbol{a} \cdot \boldsymbol{b}=\boldsymbol{a}^{\mathrm{T}} \boldsymbol{b}=\sum_{i=1}^3 a_i b_i=\underset{}{|\boldsymbol{a}||\boldsymbol{b}| \cos \langle\boldsymbol{a}, \boldsymbol{b}\rangle}

叉乘(外积):结果是一个向量,方向垂直于这两个向量,大小为 |a||b|sin

$a \times b=\left|\begin{array}{ccc}i & j & k \\ a_1 & a_2 & a_3 \\ b_1 & b_2 & b_3\end{array}\right|=\left[\begin{array}{c}a_2 b_3-a_3 b_2 \\ a_3 b_1-a_1 b_3 \\ a_1 b_2-a_2 b_1\end{array}\right]=\left[\begin{array}{ccc}0 & -a_3 & a_2 \\ a_3 & 0 & -a_1 \\ -a_2 & a_1 & 0\end{array}\right] \stackrel{\text { def }}{=} a^{\wedge} b$

通过上述等式,我们引入符号^,把 $a$写成矩阵, $a^{\wedge}$实际上是一个反对称矩阵,可以把$a \times b$写成矩阵与向量的乘法 $a^{\wedge} b$,变成线性运 算。此符号是一个一一映射,意味着任意向量都对应着唯一的一个反对称矩阵,反之亦然:

a^{\wedge}=\left[\begin{array}{ccc} 0 & -a_3 & a_2 \\ a_3 & 0 & -a_1 \\ -a_2 & a_1 & 0 \end{array}\right]

2. 坐标系间的欧式变换

2.1 欧式变换之旋转

三维空间刚体运动之旋转矩阵与变换矩阵_第1张图片

我们假设某个单位正交基 (e_{1},e_{2},e_{3})经过一次旋转变成了(e_1',e_2',e_3'),这时,对于同一个向量$a$它在两个基坐标系下的坐标分别为 [a_1,a_2,a_3]^T[a_1^{\prime},a_2^{\prime},a_3^{\prime}]^T。因为向量本身并没有发生变化,所以下列等式成立:

[e_1,e_2,e_3]\begin{bmatrix}a_1\\a_2\\a_3\end{bmatrix}=[e_1',e_2',e_3']\begin{bmatrix}a_1'\\a_2'\\a_3'\end{bmatrix}

为了让两个坐标之间的关系看起来更清晰,我们将上述等式两侧同时左乘[e_1^T,e_2^T,e_3^T]此时左侧第一项将变为单位矩阵:

$\left[\begin{array}{l}a_1 \\ a_2 \\ a_3\end{array}\right]=\left[\begin{array}{ccc}e_1^T e_1^{\prime} & e_1^T e_2^{\prime} & e_1^T e_3^{\prime} \\ e_2^T e_1^{\prime} & e_2^T e_2^{\prime} & e_2^T e_3^{\prime} \\ e_3^T e_1^{\prime} & e_3^T e_2^{\prime} & e_3^T e_3^{\prime}\end{array}\right]\left[\begin{array}{c}a_1^{\prime} \\ a_2^{\prime} \\ a_3^{\prime}\end{array}\right] \stackrel{\text { def }}{=} \boldsymbol{R} a^{\prime}$

矩阵\boldsymbol{R}描述了不同坐标系下同一向量的坐标变换关系。可以说,矩阵 \boldsymbol{R}描述了旋转本身。所以矩阵 \boldsymbol{R}称为旋转矩阵( Rotation Matrix)。显 然,我们定义的矩阵\boldsymbol{R}是由两组基之间的内积组成,实际上是各基向量夹角的余弦值,所以我们也可以称矩阵 \boldsymbol{R}为方向余弦矩阵 (Direction Cosine Matrix)。

同时,我们可以看出,矩阵 \boldsymbol{R} 为正交矩阵,根据正交矩阵的性质,我们可以得到下面的关系:

a^{\prime}=\boldsymbol{R}^{-1}a=\boldsymbol{R}^Ta

很明显,\boldsymbol{R}^{-1}(\boldsymbol{R}^T) 刻画了一个相反的旋转。

除些之外,旋转矩阵也有一些特别的性质,我们通过矩阵 \boldsymbol{R}的行列式可以看出,它是一个行列式为 1 的正交矩阵。反过来说,行列式为 1 的 正交矩阵也是一个旋转矩阵。

根据这些性质,我们可以推广到 $n$ 维旋转矩阵,可以将 $n$ 维旋转矩阵的集合定义如下:

\mathrm{SO(n)=\{\boldsymbol{R}\in\mathbb{R}^{n\times n}|\boldsymbol{RR}^T=1,\det(\boldsymbol{R})=1\}}.

在这里,_{SO(n)}表示的是特殊正交群(Special 0rthogonal Group)的意思,通过上式我们可以看出,这个集合由维空间的旋转拒阵组成,所以我们可以用_{SO(n)}表示二维空间的旋转。我们之后可以通过旋转短阵直接谈论两个坐标系之间的旋转变换,而不再通讨基表述。

2.2 两个坐标系间的欧式变换

        我们经常在实际场景中定义各种各样的坐标系,如果考虑运动的机器人(即相机),那么常见的做法是设定一个惯性坐标系(或者叫世界坐标系),可以认为它是固定不动的。

        刚体运动: 两个坐标系之间的运动变换由一个旋转加上一个平移组成,这种运动就是刚体运动。相机运动就是一个刚体运动。刚体运动过程中,同一个向量在各个坐标系下的长度和夹角都不会发生变化。此时,我们说手机坐标系和世界坐标系之间,相差了一个欧氏变换(Euclidean Transform)。

旋转矩阵也有一些特别的性质,我们通过矩阵R的行列式可以看出,它是一个行列式为1的正交矩阵。反过来说,行列式为1的正交矩阵也是一个旋转矩阵
 

视觉SLAM十四讲 3-三维空间刚体运动_三维空间中的刚体有哪几个运动维度组成_Nismilesucc的博客-CSDN博客

视觉SLAM十四讲笔记-第三讲 刚体运动_独自悠哉独自在的博客-CSDN博客

你可能感兴趣的:(矩阵,线性代数)