## 視覺slam第二講:三維空間剛體運動
01 點與座標系
我們知道在乙個2d空間上,我們可以用兩個座標(x,y)加上旋轉角來表示乙個物體旋轉和平移的情況,那麼在3d空間中,我們怎麼表達這種情況呢?
在3d空間上,我們知道需要三個軸來表示乙個空間,常見的使用下面的兩種座標系的表示方法:右手定則和左手定則。
針對座標系中的點,我們可以使用帶有單位正交基底的座標來表示空間中的向量,這樣能夠進行下面的向量運算。
一般情況下,如果不宣告單位正交基底,我們是不能用座標來表示向量的。
在slam中,主要有固定世界座標系和移動的相機座標系,中間還有不同的感測器座標系。圖中(xc,yc,zc)表示相機座標系,(xw yw zw)表示世界座標系。
我們要想把相機座標系中的向量p表示在固定的世界座標系中,這樣我們是通過什麼操作呢?
02 旋轉矩陣
針對座標系的一次旋轉,我們通過下面的方程求解座標系中向量的變換:
在上式中r表示旋轉矩陣:
我們表示r12表示從2系到1系的變換矩陣:
在這種情況下,兩個座標系之間的關係完全可以通過r,t來描述。但是有時候我們表示旋轉加平移的情況時,我們會使用齊次矩陣來表示,這樣可以通過齊次矩陣的性質減小運算量。
我們把變換矩陣的集合稱為特殊歐式群,這裡不做介紹,後面課程還會有講解。因為我們只會用到三維座標,所以這裡使用的是se(3).
這裡要注意下變換矩陣逆的求解:
03 旋轉向量和尤拉角
除了使用旋轉矩陣/變換矩陣外,還有其他的表示方式:
下面給出以下羅德里格斯公式用於反對稱矩陣求旋轉矩陣的方法。
2.尤拉角
我們能夠通過旋轉來表示座標系的變換
下面的座標系通過旋轉z-y-x的順序,完成了旋轉。這樣我們也可以求得旋轉的座標。
但是尤拉角有乙個很大的缺點就是存在萬向鎖,在下圖的右圖中情況,我們向裡和向外旋轉的時候,旋轉的都是同乙個角度,存在奇異情況,所以一般我們在slam中很少用尤拉角表示姿態。
04 四元數
我們也可以通過乙個四元數來表示三維空間的情況,如下圖所示:在三維情況下,我們用乙個實部+三個虛部來表示四元數。
使用單位四元數可以表示旋轉情況:
下面是四元數的運算法則:
四元數能夠和角軸進行轉換運算:
我們用四元數來表示乙個點在空間旋轉後的運算:
第五節講解的是eigen庫,這是乙個矩陣運算的庫我們可以在ubuntu系統終端直接安裝
sudo apt-get install libeigen2-dev
eigen是乙個純標頭檔案的庫,不需要link,只需要在使用之前include即可。但是像open-cv的話既有標頭檔案也有原始檔,我們不但需要link,還有引標頭檔案,不然會報錯。今天的總結就到這裡,明天見!
提取碼:pgwb
《視覺SLAM十四講》筆記 第二講 初識SLAM
自身位置 定位 周圍環境 建圖 感測器分類 視覺slam 強調未知環境 單目相機 monocular 單目相機的資料 影象 以二維的形式反映了三維的世界。無法通過單張得到深度資訊。存在尺度不確定性 雙目相機 stereo 兩個相機間的距離 基線已知。基線越大,能測量的距離越遠。因此,無人車上的雙目相...
視覺slam第二講筆記 初識slam和編譯
3.ide clion 源 hello.cpp 編譯 g hello.cpp 執行 a.out 建立工程執行編譯 首先,建立 cmakelists.txt,內容如下 cmake minimum required version 2.8 project projectname add executab...
高翔視覺slam十四講書籍習題 第一講
假設a為m x n 的矩陣 對增廣矩陣 a,b 進行初等行變換,化成最簡式,若a的秩不等於 a,b 的秩,方程組無解 若a的秩等於 a,b 的秩且小於n,方程組有無窮多解,可以根據化成的最簡式寫出通解 若a的秩等於 a,b 的秩且等於n,方程組有唯一解,可以根據化成的最簡式寫出此解 正態分佈 nor...