摘要:小伙伴在學習高博的《視覺SLAM十四講》的時候,對羅德里格斯公式理解比較抽象,所以本次對該公式進行理論推導,並且整理該講內容,其中有錯誤的地方,望指正。
一.羅德里格斯公式的推導
1.該公式的推導,主要的步驟有兩個:
第一:尋找到一個向量,該向量與向量α的向量積=向量b
第二:將尋找到的這個向量轉化成對應的反對稱矩陣
其中旋轉軸用單位向量表示
說明:這里是不是感覺和SLAM十四講上面的公式不一樣,剛開始推導出來,對比之后發現,確實不一樣。反復檢查幾次,發現推導過程並沒有太大錯誤。確實這個過程是沒啥問題的,只是這個環節還差一步,關於反對稱矩陣與向量之間的變換關系(這個公式是李群李代數里面的,具體推導只能再另外一篇博文中闡述了)。把這個公式代入:
2.公式推導分步解釋
2.1旋轉向量與反對稱矩陣之間的關系(這個過程建立三維旋轉向量與對應反對稱矩陣的關系)
其中:
2.2向量積(叉乘)
(為什么說明這一步,因為我在推導的過程中,由於向量積的基礎知識不牢固,這里卡殼了兩天)
2.3向量的投影
二.變換矩陣與齊次坐標系(旋轉、平移)
1.向量
2.向量的內積
3.向量的外積
4.正交矩陣的性質補充
5.向量的旋轉
向量的旋轉與向量的外積(叉乘):旋轉軸方向與一致。旋轉的角度
6.坐標系的旋轉
三維直角坐標系的三個軸的相對位置永遠保持一致(剛體),只需要對一個向量如:
旋轉平移,整個坐標系就完成了變換操作
6.1剛體的變換(坐標系的歐式變換)
三.坐標變換:縮放、平移、旋轉(歐拉角)
這個過程主要是能夠直觀的理解坐標系的變換(此步可以跳過)
1.縮放
其中Sc是縮放比例
2.平移
3.旋轉
3.1二維坐標系旋轉
3.2三維坐標系旋轉
4.歐拉角和萬向鎖
我們以rpy角進行旋轉(即旋轉順序為ZYX:繞Z軸旋轉得到偏航角yaw,繞旋轉后的Y軸旋轉得到俯仰角pitch,繞旋轉后的X軸旋轉,得到滾轉角roll,這里和我們前面的分步旋轉順序是相反的,盡量和SLAM十四講中的內容一致,所以我們把前面的內容調整一下,就是簡單的調整一下左乘矩陣的順序)
下面我們在hypermesh中創建坐標系,實際演示一下,坐標系旋轉的實現過程。
從旋轉過程可以看出,在繞Z軸旋轉和繞X軸旋轉的時候,其實坐標軸都是繞同一的向量(世界坐標系的軸)在旋轉。這個就是萬向鎖問題。這個過程將三個旋轉向量(軸)變換,丟失一個一個旋轉。