1.四元數的約定表述
1.1 四元數表述的差異
1.2 Hamilton vs JPL
1.2.1元素的順序
1.2.2 左手系和右手系
1.2.3 旋轉操作的對象
1.2.4 旋轉操作的方向
1.3 文章采用的表述
1.4擾動和時間導數
1.4.1右擾動和左擾動
1.4.2 Hamilton表示下的(L-G)的四元數時間導數
1.4.3 其他有用的表述方式
1.5 barfoot書中表述
2.旋轉角速率表示旋轉積分
2.1零階積分
2.2一階積分
2.3歸一化處理
1.1 四元數表述的差異
1.2 Hamilton vs JPL
1.2.1元素的順序
1.2.2 左手系和右手系
1.2.3 旋轉操作的對象
1.2.4 旋轉操作的方向
1.3 文章采用的表述
1.4擾動和時間導數
1.4.1右擾動和左擾動
1.4.2 Hamilton表示下的(L-G)的四元數時間導數
1.4.3 其他有用的表述方式
1.5 barfoot書中表述
2.旋轉角速率表示旋轉積分
2.1零階積分
2.2一階積分
2.3歸一化處理
1.四元數的約定表述
1.1 四元數表述的差異
- 根據實部虛部的順序,左手系和右手系(left-handed,right-handed),操作是旋轉向量還是旋轉坐標系(active or passive),操作方向(local to global or global to local),四元數有122中表述方法,其中Hamilton 和JPL是兩種常見的表述方式,兩者的對比如下表:
- JPL 在航空上經常使用,Hamliton的表述在機器人領域更為常見,和ROS,Eigen,Ceres的程序庫中使用的表示一致,和很多應用在IMU上的卡爾曼濾波文獻也一致。
1.2 Hamilton vs JPL
- 這里詳細比較兩者的差異
1.2.1元素的順序
- Hamilton將實部是第一元素,JPL實部是最后一個元素
1.2.2 左手系和右手系
- 右手系和左手系定義的差別
- 兩者定義下的四元數是共軛關系
1.2.3 旋轉操作的對象
一種是假設坐標軸frame不變(active),向量在旋轉,這種類似於相機不動,相機里觀察的目標在動,或者說整個過程都是假定在一個坐標系下的。
一種是假設向量不變(passive),坐標軸在變,類似於相機的視角在變,目標不動,這個和很多SLAM中的表述方式一致,因為SLAM中是假設路標是靜止的。如barfoot書中,一個向量r可以由由不同坐標系下的坐標表示,即passive。Hamliton和JPL都是使用的passive的方式。
- passive的表示中,向量r只有一種形式表示,不同時刻的坐標系是在變化的,即向量r在不同時刻有不一樣的坐標表示。
- active 和passive其實就是相對運動關系:
1.2.4 旋轉操作的方向
- 我的理解,Local和global是相對的概念,從旋轉矩陣的推導我們知道,開始假設機體系b和導航系n是重合的,然后我們推導用空間某個向量r的初始坐標 和旋轉矩陣,表示r在旋轉后的b系新的坐標 .這里b即local,n系即global。
- 或者說我們選擇是將相機在新的視角看到的空間某個固定點的坐標轉成開始相機視角下的坐標(local-global:
,barfoot書中的
);
還是旋轉將相機在初始視角看到的空間固定點坐標轉到相機新的視角下看到的坐標(global-local: ,barfoot書中 ) - local to global,旋轉矩陣下標第一個是舊坐標系,第二個是新坐標系,且下標表述滿足鏈式原則,所以對於添加擾動,local to global 是右擾動,global to local是左擾動。后面會證明。
兩種方式其實也是相對運動的關系
可以證明,Hamilton和JPL的四元數表示在數值上是相等的。
1.3 文章采用的表述
- 文章采用local to global的表示,且簡化以下表示:
1.4擾動和時間導數
1.4.1右擾動和左擾動
局部擾動(local perturbation)是右擾動形式;
local to global的形式下,局部擾動項表示為(下標第一個是舊坐標系G,第二個是新坐標系L)
global 擾動是左擾動,證明和局部擾動是相似的:
1.4.2 Hamilton表示下的(L-G)的四元數時間導數
- 所以局部擾動的表達式和一階泰勒項為:
- 四元數時間導數,涉及到四元數運算時,三維角速度向量是用四元數方式表示的,相似的可以推導旋轉矩陣的微分,相對於G-L的旋轉微分,我們很容易發現L-G的優勢,因為實際角速度是機體系b(local)下傳感器獲得的。
1.4.3 其他有用的表述方式
- 通過以上推導而來
1.5 barfoot書中表述
- 根據上述討論,結合barfoot書中旋轉相關公式的形式,可以得知barfoot書中的的表述是:四元數實部在后,使用右手系,passive方式,采用左擾動/全局擾動(global to local)。
2.旋轉角速率表示旋轉積分
- 這里不采用文章中的推導,從筆記(2)中,四元數和旋轉向量出發推導:
泰勒展開得到:
2.1零階積分
- 零階積分是假設
,這里零階積分方法的不同主要在於參數
值的選取時間的不同。去
的均值,有類似平滑的作用,是okvis采用的方法。
2.2一階積分
一階積分是假設 的二階微分為0,一微分是常數,利用插值方法得到:
代入2.1中的泰勒展開式,並利用叉乘性質簡化:
- 結果為零階積分加二階校正項,采樣時間很短時,二階項叉乘的部分幾乎共線,該二階項會很小。
2.3歸一化處理
- 由於積分舍去了高階項,使得積分后的四元數不再是單位四元數,需要從新歸一化