高翔《視覺SLAM》第二講筆記

2021-09-12 11:29:19 字數 2186 閱讀 9750

## 視覺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...