第二讲 三维空间中的刚体运动
本讲将介绍SLAM的基本问题之一:如何描述刚体在三维空间的运动
1.点和坐标
位姿:位置(坐标) + 姿态(朝向)
向量:是空间中一个东西,它并不需要和若干个实数相关联。只有当我们指定了三维空间中的某个坐标系时,才可以讨论该向量在此坐标下的坐标,也就是找到若干个实数对应这个向量。
[a1,a2,a3]称为a向量在[e1,e2,e3]基下的坐标。坐标的具体取值:和向量本身有关,和**坐标系(基)**的选取有关。
相机视野中的某个向量p,它在相机坐标系下的坐标为pc,而在世界坐标系下它的坐标为pw,那么这两个坐标之间是如何转换的?—— 先得到该点针对机器人坐标系的坐标值,然根据机器人的位姿变换到世界坐标系中(T)。
刚体运动:两个坐标系之间的运动由一个旋转+平移组成。在刚体运动过程中,同一个向量在各个坐标系下的长度和夹角不会发生变化。
2.旋转矩阵
R描述了旋转本身,同时R中的每个分量都是两个坐标系基的内及,由于基向量的长度为1,所以旋转矩阵又叫作方向余弦矩阵。
该向量并没有随着坐标系的旋转而发生变化,所以从几何角度可以得出如下的等式:
T欧式矩阵的逆——由于T是一个分块矩阵,可以通过分块矩阵求逆的过程来求解它的逆矩阵:
====
3.旋转向量和欧拉角
4.四元数
为什么要引入四元数?
旋转矩阵用9个量来描述了三自由度的旋转,冗余;欧拉角和旋转向量是紧凑的,但具有奇异性;所以进入了扩展的复数——四元数来描述旋转,它即是紧凑的又无奇异性,但不够直观。
四元数到其他旋转的表示的转换过程:任意的单位四元数可以描述一个旋转。四元数与旋转矩阵,旋转向量之间的转化关系是如何的呢?
推导过程:
5.实践:Eigen/Core/Dense/Gemetory
(1),,通过以下命令来安装Eigen库
sudo apt-get install libeigen3-dev
(2),通过以下命令可以定位自己的Eigen库是否安装,以及头文件和库文件的安装路径:
sudo update
locate eigen3
(1)掌握Eigen库和几何模块的使用
slambook2中ch3 代码练习。