本文为视觉 SLAM 学习总结。第三讲讲解的是观测方程中的 x x x 是什么。
本讲内容概要
- 三维空间的刚体运动的描述方式:旋转矩阵、变换矩阵、四元数和欧拉角
- Eigen 库的矩阵、几何模块的使用方法
旋转矩阵
点和向量,坐标系
定义坐标系后,向量可由 R 3 R^3 R3 坐标表示:
a ⃗ = [ e 1 ⃗ , e 2 ⃗ , e 3 ⃗ ] [ a 1 a 2 a 3 ] = a 1 e 1 ⃗ + a 2 e 2 ⃗ + a 3 e 3 ⃗ \vec{a}=[\vec{e_1},\vec{e_2},\vec{e_3}] \left[ \begin{matrix} a_1 \\ a_2 \\ a_3 \\ \end{matrix} \right]=a_1\vec{e_1}+a_2\vec{e_2}+a_3\vec{e_3} a=[e1,e2,e3]⎣⎡a1a2a3⎦⎤=a1e1+a2e2+a3e3
直接用坐标进行向量间的运算。
我们对外积进行介绍,这个概念在之后的学习中会经常使用,我们可以将向量叉乘写为矩阵点乘的形式:
其中 a^ 表示将向量转换为矩阵的形式,为反对称矩阵,也可称为反对称符号。
坐标系间的欧式变换
SLAM 中有两个坐标系,一个是世界坐标系,通常以地面参考,另一个为机器人坐标系,会随着机器人的运动而运动。
那么坐标系之间是如何变化的?如何计算同一个向量在不同坐标系下的坐标?
直观来看,我们需要用旋转+平移来描述刚体运动。
- 坐标系原点的平移
- 三个轴的旋转。
同一向量在不同坐标系下可以被描述为以下两种不同的形式:
左乘 [ e 1 T e 2 T e 3 T ] \left[ \begin{matrix} e_1^T \\ e_2^T \\ e_3^T \\ \end{matrix} \right] ⎣⎡e1Te2Te3T⎦⎤,得:
将中间的矩阵定义为 R R R,称为旋转矩阵。其性质有:正交矩阵且行列式=1;相反,满足这些性质的矩阵也可以称为旋转矩阵,也称为特殊正交群,定义如下:
S O ( n ) = { R ∈ R n × n ∣ R R T = I , d e t ( R ) = 1 } SO(n)=\{R∈R^{n×n}|RR^T=I,det(R)=1\} SO(n)={
R∈Rn×n∣RRT=I,det(R)=1}
当 n = 3 n=3 n=3 时为 S O ( 3 ) SO(3) S