VSLAM中特征点的参数化表示有很多,最直接的是用三维坐标XYZ来表示,但通常大家更喜欢用逆深度表示,因为逆深度优势在于能够建模无穷远点。Open VINS文档中给出了五种特征参数化表示:Global XYZ,Global Inverse Depth,Anchored XYZ,Anchored Inverse Depth,Anchored Inverse Depth (MSCKF Version),区别在于:
- Global vs Anchored:特征点的表示是全局坐标系的坐标还是局部相机坐标系的坐标。
- XYZ vs Inverse Depth:使用的XYZ还是逆深度
- Two different Inverse Depth:两种不同类型的逆深度参数
特征的参数化表示即以何种方式表示特征点的位置,在优化中它决定了特征以何种参数进行的迭代更新
本文理论推导全部参考Open VINS,感兴趣的可以直接阅读原版,链接如下:
Measurement Update Derivations " Camera Measurement Updatedocs.openvins.com1. 特征点重投影过程
设k时刻特征在图像上的投影为
- 特征参数转换为特征点的全局坐标:
- 特征点的全局坐标转到观测相机坐标系:
- 相机坐标系投影到normalize平面:
- normalize平面转到图像平面:
根据链式法则有:
下面分别计算每一步的转换关系及Jacobian。
a. normalize平面转到图像平面
对于Normalize平面上的观测点
转换关系:
- 对于Radial畸变模型:
- 对于Fisheye畸变模型:
Jacobian:
- 对于Radial畸变模型:
- 对于Fisheye畸变模型:
b. 透视投影
转换关系:
Jacobian:
c. 刚性变换
转换关系:
Jacobian:
2. 特征参数表示
针对不同的特征参数表示
a. Global vs Anchored
Global XYZ表示为:
Anchored XYZ表示选择某个相机坐标系作为Anbchor坐标系
值得一提的是参考文档中将世界系中的相机位姿拆分成了IMU位姿以及相机到IMU的外参,这样是为了分别对IMU位姿和相机外参求Jacobian,这里只讨论了对特征点的Jacobian,所以未进行拆分。
b. 球坐标逆深度 vs MSCKF逆深度
逆深度顾名思义是用
逆深度的好处是能够表示无穷远点(
单位方向向量
- 球坐标表示:
- MSCKF表示:
可以看到MSCKF的
将Achored和逆深度结合起来得到Anchored逆深度表示: