本文基本上是看着《视觉SLAM十四讲》第三章的部分内容写了一遍,加深自己的理解。
点和向量,坐标系
以三维空间为例,一个空间点的位置可以用三个坐标来表示,而对于一个刚体而言,除了在空间的位置,还有自身的姿态,合称为“位姿”。
向量是什么?
向量是空间中的一种元素,既有大小,也有方向。有几种表示方式:
代数表示:字母加粗或者字母上加箭头(
a⃗
或者
a
)
几何表示:用一个箭头(线段长度代表向量的大小)
坐标表示:在坐标系中,用坐标可以表示向量,终点坐标-起点坐标
例子: a=[e1,e2,e3]⎡⎣⎢a1a2a3⎤⎦⎥=a1e1+a2e2+a3e3
坐标系间的欧式变换
坐标系之间变换可以用两个坐标系之间的旋转和平移关系来表示。
设定一个惯性坐标系(世界坐标系),认为是固定不动的。
机器人坐标系(相机坐标系),认为相机固定在机器人上。
现在假设一个向量,在世界坐标系下,有:
在相机坐标系中,有:
即
等式两边同时左乘 ⎡⎣⎢⎢eT1eT2eT3⎤⎦⎥⎥
得到
⎡⎣⎢a1a2a3⎤⎦⎥=⎡⎣⎢⎢eT1e,1eT2e,1eT3e,1eT1e,2eT2e,2eT3e,2eT1e,3eT2e,3eT3e,3⎤⎦⎥⎥⎡⎣⎢e,1e,2e,3⎤⎦⎥=Ra,
所以,这个矩阵R就称为旋转矩阵。
a=Ra,
,R描述了从相机坐标系旋转到世界坐标系。
如果把平移也考虑上,那么我们可以有这么一个式子:
a,=Ra+t
注意,这里的R 描述从世界坐标系旋转一定角度,然后经过一个平移向量t,得到了相机坐标系。
变换矩阵与齐次坐标
但是上述旋转矩阵和平移向量的表达方式有一些问题,比如:
那么从 a 到 c 的变换就变成了以下式子:
这个样子在多次变换之后形式会有点复杂,我们比较嫌弃它,所以,引入齐次坐标和变换矩阵!
a,=Ra+t 这个式子,用齐次坐标和变换矩阵改写如下:
在这个式子中,T 就叫做变换矩阵,然后用
a,~
来表示
[a,1]
,叫做
a,
的齐次坐标。
[注]
齐次坐标的概念:
就是在原来的坐标增加一个维度。而且一个向量的齐次坐标是可以有多种表示的。
比如对于(1,1,1)这个点,它的齐次坐标可以是(k,k,k,k),k可以是任意的常数,只要不等于0。
因为一个(非齐次)坐标的齐次坐标有这么一个原则:
齐次坐标的每个分量,乘以一个非零常数后,任然表示同一个点。
所以有了齐次坐标和变换矩阵的概念以后,坐标系的多次变换可以写成这个样子:
所以啊,人类懒惰的本质又暴露出来了,默认情况下,我们去掉坐标字幕头上的波浪号了, a~→a 。
这样也挺好的,带着“帽子”总有点怪怪的,谁知道是什么颜色呢?(哈哈~~)!
不过我们自己心里也要清楚:
- 当出现Ta这种形式的时候,因为写了变换矩阵,所以,这里的a就是齐次坐标;
- 同理,当出现Ra,因为用了旋转矩阵,所以这里的a就是非齐次坐标
- 如果Ta和Ra出现在等号的两边,它们不是严格意义上的等号,我们假设二者之间已经从非齐次转换成了齐次坐标(或者齐次转为非齐次)。