在视觉SLAM中,理解和表示3D空间中的位置是至关重要的。这涉及到多种数学概念和工具,如坐标系、向量、矩阵、旋转和平移等。这些数学基础构成了视觉SLAM算法的核心。以下是3D空间位置表示的基本数学概念。
这是一个表示世界坐标系和相机坐标系之间关系的3D图。图中:
红色、绿色和蓝色的箭头分别表示各个坐标系的X、Y、Z轴。
“World” 表示世界坐标系的轴,原点位于图中的中心。
“Camera” 表示相机坐标系的轴,原点相对于世界坐标系有一个位移,并且围绕Z轴旋转了45度。
虚线连接了世界坐标系的原点和相机坐标系的原点,表示两者之间的平移关系。
1. 坐标系和点的表示
1.1 世界坐标系(World Coordinate System):
通常在SLAM中,设定一个全局参考系,称为世界坐标系,表示整个环境中的固定参考点。
1.1.1 定义与用途
定义:世界坐标系是一个三维笛卡尔坐标系,通常由三个正交的轴(X轴、Y轴和Z轴)构成。在SLAM系统中,世界坐标系的原点通常选择为某个固定位置,如机器人的初始位置、地图的某个基准点等。
1.1.2用途:
定位与地图构建:世界坐标系用于统一表示所有物体、特征点、传感器的位置信息。通过统一的世界坐标系,SLAM系统可以在地图构建过程中确保所有点和物体的位置关系是一致的。
坐标转换:SLAM系统经常涉及多个坐标系之间的转换,如相机坐标系、机器人坐标系与世界坐标系之间的转换。世界坐标系作为全局基准,使得这些转换有了一个统一的参考点。
路径规划与导航:在机器人导航中,路径通常以世界坐标系为基准进行规划,这样可以确保机器人按照全球统一的路径移动,而不受局部坐标系变化的影响。
1.2 相机坐标系(Camera Coordinate System):
相机自身的坐标系,通常定义为相机光心为原点,光轴为Z轴。
相机坐标系是视觉SLAM和计算机视觉中一个非常重要的坐标系,它用于描述相机所看到的世界中的物体或点的位置。理解相机坐标系有助于进行从三维空间到图像平面的投影变换,进而用于视觉SLAM中的定位和地图构建。
- 定义
相机坐标系是以相机的光心(光学中心)为原点的三维坐标系,具体的定义如下:
原点:相机的光心,即相机的光轴与成像平面交点在相机内部的理想位置。
Z轴:通常定义为沿着相机的光轴方向,指向前方(也就是相机镜头看向的方向)。
X轴:水平 指向右(从相机的视角来看)。
Y轴:垂直 指向下(从相机的视角来看)。
这种坐标系的定义与相机的几何和物理结构紧密相关,是所有图像处理和计算的基础。
- 3D点的表示
在相机坐标系中,三维空间中的一个点
表示该点相对于相机光心的位置。该坐标系中的Z轴表示相机的前方,X轴表示相机的右侧,Y轴表示相机的下方。
3. 投影与相机模型
为了将3D世界中的点投影到2D图像平面上,需要使用相机模型,通常采用针孔相机模型来描述这一过程。
针孔相机模型:假设光线通过相机光心进行投影,空间中的3D点
在图像平面上的投影点(u,v) 可以通过以下关系表示:
4. 相机坐标系与其他坐标系的转换
1.3 点的表示:
在3D空间中,一个点的位置可以用一个三维向量
表示。这个向量表示点相对于某个坐标系的坐标值。
其中,X、Y、Z 是点在该坐标系中沿着三个轴的坐标值。这个点的位置相对于所选择的坐标系原点(通常是相机的光心、世界坐标系的原点等)进行测量。
1.3.6. 点的重建
在一些情况下,需要从多个图像视角中重建3D点的位置。这通常通过三角测量法完成,即根据两个或多个相机视角的2D点,反推出原始3D点的坐标。这种重建过程在SLAM中非常关键,用于构建地图和环境模型。
2 各个坐标系的关系
在SLAM中,世界坐标系通常与其他几个坐标系互相配合使用:
相机坐标系(Camera Coordinate System):以相机光心为原点,通常Z轴朝向相机的视线方向,X轴水平指向右,Y轴指向下。在SLAM中,需要将相机坐标系中的点转换到世界坐标系中,以统一表示这些点在全局环境中的位置。
机器人坐标系(Robot Coordinate System):以机器人自身的某个点为原点,通常X轴指向机器人前方,Y轴指向左方,Z轴指向上方。SLAM中,机器人的位置和姿态常用世界坐标系来表示。
图像坐标系(Image Coordinate System):用于描述图像中的像素点位置。SLAM系统通过相机模型将图像坐标系中的点与世界坐标系中的3D点关联起来。
2. 旋转矩阵和欧拉角
在计算机视觉和SLAM(Simultaneous Localization and Mapping)中,旋转矩阵和欧拉角是用于描述物体在三维空间中旋转的两种常见方式。它们各有优缺点,并在不同的应用场景中发挥作用。
2.2 欧拉角(Euler Angles)
定义
欧拉角是一种用来描述三维旋转的方式,通过三个角度来表示物体绕固定坐标轴的旋转。这三个角度通常称为 俯仰角(Pitch)、横滚角(Roll)和 偏航角(Yaw),分别表示绕X轴、Y轴和Z轴的旋转。
2.3. 旋转矩阵与欧拉角的转换
在实际应用中,经常需要在旋转矩阵和欧拉角之间进行转换。
2.4. 实际应用中的选择
使用旋转矩阵:如果需要高精度计算,或者需要频繁地组合和分解旋转,旋转矩阵通常是更好的选择。
使用欧拉角:如果旋转角度的直观解释很重要,或者系统中旋转不会涉及到极端的姿态(如接近万向锁),欧拉角可能会更方便。
3. 四元数(Quaternion)
四元数是用于描述三维空间中旋转的一种数学工具,在计算机视觉、SLAM(Simultaneous Localization and Mapping)、计算机图形学等领域被广泛应用。与欧拉角和旋转矩阵相比,四元数具有许多独特的优点,如避免了欧拉角的万向锁问题、存储效率更高、计算更高效等。
1. 四元数的定义
四元数是一种扩展的复数,由一个实数部分和一个三维向量部分组成。它可以表示为:
3.2. 四元数表示旋转
3. 四元数的性质
3.4. 四元数的应用
3. 5. 四元数的优点
避免万向锁问题:四元数不会像欧拉角那样遇到万向锁问题,适合表示任意角度的旋转。
计算效率高:四元数的旋转计算比旋转矩阵的乘法更高效,特别是在组合多个旋转时。
存储紧凑:四元数只需要4个参数,而旋转矩阵需要9个参数,存储和传输更为紧凑。
3.6. 实际应用中的四元数
SLAM系统:在SLAM系统中,四元数被广泛用于描述相机、传感器或机器人的姿态(位置和方向)。
计算机图形学:四元数用于3D动画中的旋转插值(如球面线性插值,SLERP),确保平滑的旋转效果。
无人驾驶和机器人学:四元数常用于路径规划、姿态控制和状态估计中,以描述和计算运动中的旋转。
4. 平移和齐次坐标
5. 刚体变换(Rigid Transformation)
6. 相机模型与投影
在3D空间中表示位置和姿态是视觉SLAM的数学基础,涉及坐标系、向量、矩阵、旋转和平移等多个概念。这些数学工具不仅用于描述相机的位置和方向,还用于在不同坐标系之间进行转换,是视觉SLAM算法的核心部分。理解这些基础对于进一步深入学习和应用视觉SLAM技术至关重要。