#視覺slam與三維重建#
1.坐標系表示
1.1空間中規定直角坐標系的方法
右手系(後續章節及代碼中都使用此種方式)
此坐標系中x軸,y軸和z軸的正方向是如下規定的:把右手放在原點的位置,使大姆指,食指和中指互成直角,把大姆指指向x軸的正方向,食指指向y軸的正方向時,中指所指的方向就是z軸的正方向。
左手系
把左手放在原點,剩餘操作同右手系。
1.2世界坐標系與相機坐標系
下標為w(word)地為世界坐標系,一般作為相機的參考系,下標為c(camera)的為相機坐標系,相機成像過程在此坐標系計算。
2.相機相對世界坐標系的旋轉表示法
2.1.旋轉矩陣
在講旋轉矩陣前,先介紹下向量的概念,因為旋轉矩陣的推導是根據同一向量在不同坐標系下的坐標表示得出的。
2.1.1向量以及表示
概念
在數學中,向量(物理學和工程學稱矢量)指具有大小和方向的量。它可以形象化地表示為帶箭頭的線段。箭頭所指:代表向量的方向;線段長度:代表向量的大小。
表示方法
代數法
一般印刷用黑體的小寫英文字母(a、b、c等)來表示,手寫用在a、b、c等字母上加一箭頭(→)表示,也可以用大寫字母AB、CD上加一箭頭(→)等表示。
幾何法
向量可以用有向線段來表示。有向線段的長度表示向量的大小,也就是向量的長度。長度為0的向量叫做零向量,長度為1的向量,叫做單位向量。箭頭所指的方向表示向量的方向。
坐標法
在空間直角坐標系中,分別取與x軸、y軸,z軸方向相同的3個單位向量i,j,k作為一組基底。以坐標原點O為起點作向量a。由空間基本定理知,有且只有一組實數(x,y,z),使得a=ix+jy+kz,因此把實數對(x,y,z)叫做向量a的坐標,記作a=(x,y,z)。(注意此處a沒有加粗)這就是向量a的坐標表示。其中(x,y,z),就是點P的坐標。向量a稱為點P的位置向量。
向量運算
內積
外積
外積的方向垂直於這兩個向量,大小為|a||b|sin<a,b>,我們引進反對稱符號^,把a寫成反對稱矩陣,外積可以表示旋轉,如下圖a×b表示a到b的旋轉。
2.1.2坐標系之間的歐氏變換
由上節知向量在給定坐標系的情況下可以由坐標表示(注意向量與坐標的區別),那麼給定一個向量它怎麼在兩個坐標系中表示呢?如上圖中向量a,若世界坐標系與相機坐標系的基底分別為(e,e,e)和(e',e',e'),則向量a可以分別由兩坐標系下的坐標表示,故而有:
等式兩邊同乘[e,e,e]T,得:
R即為旋轉矩陣,可以看出其是行列式為1的正交矩陣(滿足AAT=I的矩陣,其行列式detA=±1)
2.2旋轉向量與歐拉角
歐拉角
兩個參考系間的旋轉關係可以用一系列繞三個主軸的旋轉順序來表示,在經典力學中,繞軸順序為:
(1)在原始坐標系基礎上沿著主軸3旋轉φ度(進動角);
(2)在第一步的基礎上,沿著新坐標系的主軸1旋轉γ度(章動角);
(3)在第二部的基礎上,沿著新坐標系的主軸3旋轉θ度(自旋角)。
上面的表示稱為3-1-3順序;在航空航天領域(如無人機)採用1-2-3順序,也稱RPY,分別旋轉θ度(翻滾角);θ度(俯仰角);θ度(偏航角)。
旋轉向量與歐拉參數
歐拉旋轉定理告訴我們,剛體在三維空間裡的一般運動可以分解為剛體上方某一點的平移,以及繞經過此點的旋轉軸的轉動。我們定義旋轉運動的旋轉軸為單位向量a=[a,a,a]T,同時把繞軸a旋轉的旋轉角度定義為φ,則旋轉向量為φa
順帶提一下歐拉參數,其為下節提出的四元數做了幾何解釋,定義變量組合:
這四個參數{ε,η}被稱作旋轉運動對應的歐拉參數,它們並非獨立變量,因為它們之間存在約束:
2.3四元數
四元數是一個4×1的列向量記為:
其中ε是3×1的列向量,η是標量,我們定義四元數的左手形式的複合算子+和右手形式的複合算子⊕(這兩個運算可以看做四元數之間的左右乘法),滿足:
四元數的逆定義為:
旋轉可由單位四元數來刻畫,單位四元數滿足qTq=1,可以用四元數q來旋轉某個點。記某個點的齊次坐標(攝影空間概念,第二章會講解)為:
旋轉後點υ的齊次坐標為:
3.不同旋轉表示與旋轉矩陣的轉換
3.1.歐拉角
3-1-3:(採用三角函數的縮寫形式s=sin(.),c=cos(.))
旋轉矩陣R=
1-2-3:(si=sinθi,ci=cosθi)
3.2旋轉向量(羅德裡格斯公式)
3.3四元數(R=C)
4.不同旋轉表示的優缺點分析
(1)旋轉矩陣法可以簡化很多計算,但是對於剛體姿態的描述不夠直接,而且用到了9個非獨立的參數
(2)歐拉角表示法屬於最小參數描述,比較形象直觀,但姿態表示會出現奇異,所謂奇異,幾何上表現為萬向鎖現象,代數上表現為角度解不唯一,因而根據3.1中公式可知3-1-3序列奇的一個異點為γ=0,此時根據旋轉向量R只能解得θ+φ的值而不能分別解得θ和φ的值,同理可知1-2-3序列的一個奇異點為θ=Π/2。
(3)四元數表示法是全局非奇異姿態的最小參數表示,且通過四元數表示的旋轉運動,如角位移,速度,加速度等可以表示成簡單的形式,缺點是姿態表示不夠直觀。
根據不同的應用需求,使用不同的表示方法。例如在具體的運動學計算中才用旋轉矩陣(如相機在世界坐標系下的運動)而在載具姿態的描述中使用採用歐拉角或者四元數(如無人機的姿態描述)。