一般的邊緣化是將聯合機率分佈分解爲邊緣機率分佈和條件機率分佈的過程,這樣能夠將Sliding Window中較舊的狀態邊緣化出Sliding Window,同時保留其信息。而且保證了對應H海塞矩陣的稀疏,從而實現計算資源和計算精度的平衡。VINS中也能夠將最舊的狀態邊緣化,可是在一些退化的運動下(例如懸停或者勻速運動),會形成當前運動狀態的scale不可觀,所以須要有選擇地邊緣化當前Sliding Window中的狀態。具體來講,至少兩個軸的加速度份量不爲0時,尺度纔是可觀的。VINS中實現的是保留視差較大的狀態及其觀測,而優先邊緣化視差較小的狀態。算法
以下圖所示,app
(a)表明當前狀態$X_{5}$與$X_{4}$之間的視差較小,所以優先邊緣化掉$X_{5}$;這也說明VINS中沒有經過視覺來選擇關鍵幀(一般純視覺SLAM都會經過特徵點匹配比例或者時間上的判斷來插入關鍵幀),這是爲了防止在視覺模塊沒有插入關鍵幀的狀況下(例如懸停),IMU一直在積分,形成預積分偏差很大。同時注意不只與$X_{5}$相關的視覺觀測會被邊緣化到prior中,$f_{2}$也被邊緣化掉,同時因爲假設第一次觀測是沒有偏差的,所以$X_{4}$和$f_{2}$之間的觀測也從Sliding Window中去掉了。3d
(b)表明快速運動,加速度充分積分,所以選擇邊緣化最舊的狀態(以及相應的觀測)。blog
增量方程求解中的prior將會更新爲:資源
該Two-Way Marginalization過程目的是解決運動較小狀況下,近臨的狀態一直被邊緣化掉,保證只維護較久的,視差比較大的,能夠恢復出scale信息的狀態。具體的算法流程在另一篇Initialization- free monocular visual-inertial state estimation with application to autonomous MAVs文章中。it