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 Update?docs.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逆深度表示: