極品巧克力
前言
前兩篇文章《Google Cardbord的九軸融合算法》,《Madgwick算法詳細解讀》,討論的都是在SO3上的傳感器融合,即,輸出的只是純旋轉的姿態。只有旋轉,而沒有位移,也就是目前的一些普通的VR盒子的效果。
而《相機IMU融合四部曲》要討論的是,在SE3上面的傳感器融合,在既有旋轉又有位移的情況下,該如何對多傳感器進行融合。也就是,工程實踐中的,如何把基於相機算出來的位姿,與IMU的位姿融合在一起。既有旋轉又有位移,可以反映玩家在三維空間中的運動,也就是目前的高端VR的效果,比如HTC Vive,Oculus以及微軟的Hololens, MR頭盔。
本系列文章分為四篇,分別從理論和實踐層面進行詳細闡述。
理論部分主要介紹相機和IMU在SE3上的融合,基於誤差狀態的卡爾曼濾波,IMU的在線標定,松耦合方法,緊耦合方法等。實踐部分,則是這些理論的具體實現,在VR中的實際融合效果,以及針對實驗結果的改進方案,實踐中總結的經驗等。
以下為第一篇,我結合參考文獻《Discrete extended Kalman filter on lie groups》,對SE3的融合理論進行詳細推導,總結成本文,與各位分享。
本文目標讀者:傳感器融合算法工程師。
一.基礎理論
首先,有SE3上的伴隨性質,這與《視覺SLAM十四講》里面的公式4.48一樣。伴隨性質與BCH近似的目的一樣,都是要讓相乘的李代數融成一個李代數。
還可以轉換成其它的形式。
然后是BCH公式。
另外一個公式。
關於的計算,參考《機器人狀態估計》。
不過,我覺得,上面這個公式,作者可能寫錯了,比如,當很大,而
時,代入上式,得到
,這樣就得到了
,這樣就可以進一步得出
,所以上面的公式是有錯誤的。
所以,作者想表達的應該是,BCH近似公式。應該寫成如下形式,當和
都為小量時,
然后,假設在均值0附近的李代數滿足高斯分布,均值處的李群為。
又因為,參考《on-manifold詳細解讀》,把
的中的表示旋轉的
的范圍限制住,可以得出
和
是一一對應的關系,
,所以,
而,如果是在位姿的附近進行同樣的誤差分布呢,則可以表示為
,用公式表示如下,
還可以推導出,,
但不能認為,是繞着
進行高斯分布的。因為李代數也都是相對的,根據BCH公式,
因為不一定是個微小值,所以不能用BCH近似。所以,通過上面公式可以看出,如果沒有的話,則
服從的分布和
一樣,會是高斯分布。但是,在
的情況下,
會隨着
值的改變而改變。在不同位置對高斯曲線會有不同的改變,所以,
也就不會服從高斯分布,並且對應的協方差也會隨之改變。參考《李代數及其協方差都是相對的》。
二.D-LG-EKF
2.1系統模型
是第
時刻的狀態,
是外界輸入,
是噪聲,則對下一個狀態的預測為,
其中,表示的是,這個輸入所造成的位姿變換的李代數。要注意的是,
並不直接代表
上的噪聲,雖然它的來源是
上的噪聲,它需要根據
上的噪聲,通過
的實際表達式,轉換出來。
因為和
都是已知的,假設只在
的作用下,狀態
變成了
。則,
而所表示的就是,
因為和
都是已知的,所以可以通過這個狀態變換,計算得到
。參考《視覺SLAM十四講》的圖4-1,可以將
轉換為
。所以,
也就可以得到了。
測量方程。
2.2傳播
假設在時刻的狀態的后驗概率分布服從,
。即,
如果沒有噪聲的話,則對下一個狀態均值的預測為,
而根據之前的公式,對預測的分布滿足,
所以,設下一個狀態的誤差分布為,則它要滿足,
可以得出,
參考《李代數擾動的理解》,當時,
,所以,上式可以轉換為,
要注意的是,,因為這里的
其實表示的是一種分布,
,所以,
,所以,原式還可以轉換成,
上式的右邊都是已知的,所以就是代表了從到
的變換關系。首先,根據伴隨性質,得到,
再根據BCH近似公式,上式可以轉換為,
令 ,則直接使用BCH公式,上式可以轉換為,
又因為和
都是小量,所以
可以忽略掉,上式可以轉換為,
所以, 與
的關系又可以表示為,
對上面的變換關系,在處進行線性化,也就是進行一階泰勒展開,
則,
因為,所以
,代入上式,得到,
所以,最終得到,
而另外一個,
所以,
然后,根據實際的運動方程,的表達式,算出
的解析式,再求出
。(或者,也可以用數值擾動的方法,求
。),然后得到
。
繼續之前的變換關系進行一階泰勒展開,
其中,是一個微小量,可以忽略掉。所以,就得到了
與
之間的線性轉換關系。
用表示
,得到,
再計算擾動的均值,
然后,再計算的協方差
。協方差的計算,參考《機器人狀態估計》的第二章。
所以,最后得到,
2.3更新
對預測出來的擾動和實際測量出來的擾動,進行融合。
對測量值的處理,可以直接是傳感器的測量值,比如加速度計的測量值,然后再考慮這個測量值上的高斯噪聲。將預測出來的測量值與實際的測量值進行融合,然后再反饋給狀態。
對測量值的處理,也可以轉換成李代數的形式。就像是madgwick算法一樣,以之前的姿態為初值,優化姿態,使得通過姿態計算出來的測量值與實際測量值最接近。而在本文中,采用的就是這種方法。(如果測量值只是加速度計或磁場計的測量向量的話,就更簡單了,因為madgwick要優化出四元數,而本文只要李代數就可以了。以之前的姿態為初值,優化姿態,使得通過姿態計算出來的加速度計向量與實際加速度計向量最接近,而這兩個向量之間的相對位姿變化,只需要叉乘一下就可以了,不需要通過優化。如果測量值是其它的,比如圖像上的特征點位置,那就只能通過優化的方法,優化出測量位姿,或者采用上一種測量值融合的方法。或者,也可以與視覺SLAM結合起來,直接以圖像計算出來的姿態或位姿為測量值。)
設第k時刻位姿的真實值為。
首先,有個預測的位姿,它的協方差為
。則意味着概率,
。
基於這個預測的位姿,預測出來的傳感器的測量值,然后有傳感器的實際測量值
。用
作為位姿初值,優化(或叉乘)出新的位姿,使得預測測量值與實際測量值
最接近。用
,表示優化出來的位姿相對於預測位姿的位姿。所以,實際測量值位姿可以表示為,
其中,是傳感器的測量值
的噪聲,傳遞到
之后,再分離到右邊去。
可以通過這個過程中的變換,從實際傳感器的測量值協方差,轉換過來。
所以,這就意味着,
所以,綜合目前的信息,可以得到,,就是要求一個
,使得
最大。
其中,是個未知數,用
,轉換成用未知數
來表示。然后,上式就可以轉換為,
但這樣子也解不出來。參考《李代數高斯分布的求導》,對上式中的部分,在處進行線性化,一階泰勒展開。則可以轉換為,
同理,
其中,的計算,用數值擾動的方法。當然,也可以用解析的方法,把公式都展開來推導。(或者,參考《MSF詳細解讀》里面的方法,為了算H矩陣,直接就認為
,這樣子算H矩陣很方便,其余的與原來方法一樣。如果是上式的話,則
)。
接下來,為了轉換成卡爾曼濾波的形式,用來表示。
所以,原式就可以表示為,
這樣子,參考《從貝葉斯到卡爾曼濾波》,就可以轉換成卡爾曼濾波的形式了。
所以,得到了融合后的擾動,
同時,滿足,
所以,預測出來的位姿,乘以這個融合后的擾動均值
,就得到了融合后的位姿
,
所以,新的位姿的李代數為,
則新位姿附近的李代數擾動要滿足,
所以,新的擾動的均值
和協方差
,
協方差,
所以,
三.總結
總結起來,流程就是,
四.參考文獻
-
Bourmaud G, Megret R, Giremus A, et al. Discrete Extended Kalman Filter on Lie groups[C]// Signal Processing Conference. EURASIP, 2013:1-5.