1)旋轉矩陣用9個量表達3個自由度,應該有更緊湊的表達方式
2)旋轉矩陣存在必須是正交矩陣且行列式為1的約束。會給估計和優化旋轉矩陣帶來困難。
在三維空間中的任意旋轉都可以表示為以空間中的某一向量為軸,旋轉一定角度。其中,向量反映了這個旋轉的性質,即怎麼轉;而角度則反映了這個旋轉的程度,即旋轉到多大程度。
通常,對於任意旋轉,我們記其對應的旋轉軸為向量n
nn,旋轉角度為θ
\theta
θ,則θ
n\theta n
θn可以描述該旋轉,我們稱向量θ
n\theta n
θn為旋轉向量。
以下公式證明參見第四章李代數部分。
我們記乙個旋轉對應的旋轉矩陣為r
rr,對應的旋轉向量為θ
n\theta n
θn,則:r
=cosθ
i+(1
−cosθ
)nnt
+sinθ
n∧r = \cos \theta i + (1 - \cos \theta )n + \sin\theta n^\wedge
r=cosθi+
(1−cosθ)
nnt+
sinθn∧
n
∧n^\wedge
n∧是對向量n
nn求反對稱矩陣。
θ
=arccost
r(r)
−12n
=rn\begin \theta = \arccos \frac}\\ n = rn \end
θ=arccos2t
r(r)
−1n
=rn
其中,θ
\theta
θ是對r
=cosθ
i+(1
−cosθ
)nnt
+sinθ
n∧r = \cos \theta i + (1 - \cos \theta )n + \sin\theta n^\wedge
r=cosθi+
(1−cosθ)
nnt+
sinθn∧
等號兩端求跡得到的。
n
nn則為旋轉矩陣r
rr特徵值1對應的特徵向量;也可以理解為向量n
nn進行乙個r
rr的旋轉後不變,因為旋轉r
rr的旋轉軸就是n
nn,而向量n
nn圍繞自己怎麼轉都不會變。
旋轉矩陣和旋轉向量都不能直觀的展示乙個旋轉到底是怎麼旋轉的,為了能夠直觀的展示任意乙個旋轉,引入了尤拉角。尤拉角將任乙個旋轉分解為分別繞x,y,z三個軸的三次旋轉,這樣人類通過這三次分解後的旋轉就可以直觀的認識到乙個旋轉的具體過程。
根據三次旋轉的先後順序(先繞x,y,z那個軸轉?)以及每次旋轉時是按照最開始的軸轉還是按照旋轉後的軸轉,尤拉角可以分為很多種,但在導航中我們常用的是rpy角。
rpy角符合以下假設:
1)定義剛體前方為x軸,剛體的左側為y軸,剛體的上方為z軸,這符合右手系。
2)首先繞物體的z軸旋轉,得到偏航角yaw。
3)繞旋轉後的物體的y軸旋轉,得到俯仰角pitch。
4)繞旋轉後的物體的x軸旋轉,得到滾轉角roll。
確定rpy角,則可以用三維向量[r,
p,y]
t[r,p,y
]t表示乙個旋轉。旋轉過程如圖:
當rpy角度第二次旋轉角度為±
90\pm 90
±90度時(即俯仰角為±
90\pm 90
±90),會發現剛體在進行第二次旋轉(即俯仰角旋轉)後,其第三次旋轉的旋轉軸(即物體經歷兩次旋轉後的x軸)和第一次旋轉時的旋轉軸(即物體未旋轉時候的z軸)重合。這導致了系統只能在兩個自由度上進行旋轉,從而丟失了乙個自由度,這也被稱作奇異性問題。萬向鎖問題如圖:
理論已經證明,任何試圖用三個實數表達三維旋轉都會有奇異性問題。
因此,尤拉角多用於人機互動中,而不適用於插值和迭代。
或者再2d運動場合中將尤拉角中的乙個拿出來做定位資訊輸入,如乙個在平面運動的汽車,(x座標,y座標,偏航角)就可以完整的反映車輛的位姿。
編譯原理 第三節
我們知道世界上存在很多種語言 我們可以把他們分為自然語言 人們日常交流的工具 和程式語言。自然語言複雜且難以描述,程式語言結構規整,便於處理。但兩者又有共性,即核心都由語法和語義兩部分組成。那什麼是語言呢?首先來看一下字母表定義 字母表是元素的非空有窮集合。字母表包含了語言中允許出現的全部符號。例如...
Itween筆記 第三節
itween關於動畫執行的補充.itween.camerafadefrom itween.hash amount 1f,time 2f 在兩秒結束後.itween.camerafadefrom itween.hash amount 1f,time 2f,oncomplete itweentest o...
面向對像第三節
提高了 的復用性 讓類與類之間發生關係有了這個關係 才有後面的多型 繼承是物件導向的三大特性之一 可以層層繼承 issubclass 檢查乙個類是否是另乙個類的子類 object是所有類的父類 如果在子類中有和父類重名的方法.通過子類的例項去呼叫方法時,會先在子類裡面找,再到父類裡面找,若還是沒有找...