最近幾個月忙於博士畢業,找工作一直沒有繼續更新博客,希望以這一篇開始,每個月能夠繼續有幾篇總結博客。
首先review一下比較著名的vio系統
- Tightly coupled
- EKF: mainly ETH ASL R.Siegwart work
- Tightly-coupled
- EKF:
- MSCKF->MSCKF2.0->SR-ISWR observability and consistency analysis
- ROVIO
- SR-ISWF
- Optimization:
- OKVIS
- VINS-Mono (more robust initialization compared with OKVIS and less sensitive towards noise and bias prior)
- Inertial ORB (no original open source, no metric scale estimation at the beginning, sudden change of Map when the scale is solved)
- EKF:
VIO系統的優點顯而易見,難點在於如何將visual和inertial兩個傳感器的優缺點有效結合,達到快速初始化(最重要的是尺度和重力方向),穩定魯邦估計,以及對噪聲和傳感器參數(相機IMU外參,IMU零偏)的高度容忍或者在線估計。
這篇博客主要比較集中優化方法的初始化過程,為了達到非線性優化問題的最優解,一個靠譜的初值可以讓系統很快收斂,不僅可以提高優化速度,也可以達到optimal的狀態估計。相反,初值估計錯誤不僅導致非線性優化問題陷入局部最小,而且使得參數估計完全錯誤,從而使得系統崩潰(俗稱系統飛掉,特別是imu的bias參數估計錯誤)。
首先介紹OKVIS的初始化方法,OKVIS對IMU的參數非常敏感(相對於VINS-Mono使用商用級別commercial-grade的IMU即可,它需要使用工業級別industrial-grade的IMU來完成初始化操作),因為整個系統的狀態propagation就是基於IMU,更嚴苛的是系統的初始化狀態也完全依賴於初始(幾十個或者幾百個)IMU數據的propagation給出的姿態,如果是pure rotation運動,則使用2D-2D匹配進行跟蹤,軌跡僅由IMU給出,當可以三角化出landmark時(有足夠的2D-2D匹配內點,且內點可以恢復出3D點(使用Kneip的Opengv中算法)),初始化完成。后續同時使用3D-2D匹配和2D-2D匹配。因此,IMU給出的初始軌跡估計需要比較准確,才可以給出初始軌跡,並且確定何時可以初始化完成。