三維旋轉&坐標系變換


旋轉三維向量


圖中 u 為單位向量,表示轉軸。將 x u 逆時針旋轉角度 ϕ 得到 x 。可將 x 分解為沿轉軸的分量 x 和垂直轉軸的分量 x x 在轉動時不變, x 在平面上旋轉角度 ϕ 得到 x ,可得

(1) x = x + x cos ϕ + ( u × x ) sin ϕ


u × x = [ u ] × x

其中
[ u ] × [ 0 u 3 u 2 u 3 0 u 1 u 2 u 1 0 ]

為反對稱矩陣。

那么式 (1) 可寫成:

x = u u T x + ( x u u T x ) cos ϕ + [ u ] × x sin ϕ = ( ( 1 cos ϕ ) u u + cos ϕ I + sin ϕ [ u ] × ) x

因此旋轉作用可用一個矩陣表示。

旋轉群

旋轉是線性變換,將 v 變為 r ( v ) 。其保持:

  1. 向量長度
  2. 兩向量的內積
  3. 相對方向 u × v = w r ( u ) × r ( v ) = r ( w )

1和2是等價的。1推2可由 r ( u v ) = u v 得到,2推1可由 r ( u ) r ( u ) = u u 得到。

因此可定義旋轉群:

S O ( 3 ) : { R 3 R 3 v , w R 3 , r ( v ) = v , r ( v ) × r ( w ) = r ( v × w ) }

旋轉矩陣

算符 r 是線性的,可用矩陣 R 表示,

r ( v ) = R v

R v = v ,即
( R v ) ( R v ) = v R R v = v v

可得:
R R = I

即旋轉矩陣是正交矩陣。

由旋轉性質3,對於向量 u , v , w 組成的六面體,旋轉前后的有向體積應該相等,即

| R u R v R w | = det ( R ) | u v w | = | u v w |

det ( R ) = 1

這就構成了 S O ( 3 ) 群(Special Orthogonal group),其中的special就是指 det ( R ) = 1

歐拉定理

是說存在向量 u ,使得旋轉前后不變:

R u = u

u 就是轉軸方向。

證明:
只要證明 R 有為1的特征值即可。

det ( R I ) = det ( ( R I ) T ) = det ( R T I ) = det ( R 1 R 1 R ) = det ( R 1 ( I R ) ) = det ( R 1 ) det ( ( R I ) ) = det ( R I ) det ( R I ) = 0.

指數映射

d d t ( R T R ) = R ˙ T R + R T R ˙ = 0

得:

R T R ˙ = ( R T R ˙ ) T

R T R ˙ 是反對稱矩陣。三維的反對稱矩陣集合用 s o ( 3 ) 表示,稱為 S O ( 3 ) 的李代數。

那么有

R T R ˙ = [ ω ] ×

得到:
R ˙ = R [ ω ] ×

R = I 時, R ˙ = [ ω ] × ,即李代數是在幺元處的切空間。

如果 ω 為常數,上述方程解得

R ( t ) = R ( 0 ) e [ ω ] × t

其中矩陣的指數按泰勒級數定義。

這稱為指數映射:

exp : s o ( 3 ) S O ( 3 ) ; [ ϕ ] × exp ( [ ϕ ] × ) = e [ ϕ ] ×

還可以定義"大寫的"指數映射:
Exp : R 3 S O ( 3 ) ; ϕ Exp ( ϕ ) = e [ ϕ ] ×

如果繞轉軸 u 轉了角度 ϕ ,那么旋轉矩陣:
R = e ϕ [ u ] ×

上式按泰勒展開后得:
R = I + sin ϕ [ u ] × + ( 1 cos ϕ ) [ u ] × 2

這就是Rodrigues旋轉公式。推導過程用到了
[ a ] × 2 = a a a a I

根據這個式子,又可寫成:
(2) R = cos ϕ I + sin ϕ [ u ] × + ( 1 cos ϕ ) u u

這就是式 (1)

R 得到 ϕ u

(2) 可得:

t r ( R ) = 2 cos ϕ + 1

即:
ϕ = arccos ( t r ( R ) 1 2 )

又有

R R T = 2 sin ϕ [ u ] ×

因此
u = ( R R T ) 2 sin ϕ

其中 [ ] × 的逆,即 ( [ v × ] ) = v .

如果 sin ϕ = 0 ,分兩種情況:

  1. cos ϕ = 1 ,這時候 R = I ,轉軸未定義
  2. cos ϕ = 1 ,這時 R + I = 2 u u T ,這個矩陣的每一列都平行於 u ,只要對非0的一列歸一化即可。這時候 u 也滿足條件,但是不影響,因為繞 ± u 轉180度效果是一樣的。

四元數

四元數.md

旋轉公式為:

(3) x = q x q

旋轉要求
x = x = q 2 x

因此 q 2 = 1 ,即 q 是單位四元數:
q q = 1 = q q

這與 R T R = I = R R T 的條件類似。

還可以看到,自動保持了相對方向:

r ( v ) × r ( w ) = ( q v q ) × ( q w q ) = 1 2 ( ( q v q ) ( q w q ) ( q w q ) ( q v q ) ) = 1 2 ( q v w q q w v q ) = 1 2 ( q ( v w w v ) q ) = q ( v × w ) q = r ( v × w )

其中第2和第5個等號是因為:

p v q v q v p v = 2 p v × q v

指數映射

d ( q q ) d t = q ˙ q + q q ˙ = 0

得:

q q ˙ = ( q ˙ q ) = ( q q ˙ )

q q ˙ 是虛四元數。令:
q q ˙ = Ω

兩邊左乘 q ,得到:
q ˙ = q Ω

q = 1 時, q ˙ = Ω ,可見虛四元數構成了單位四元數球 S 3 的切空間。

如果 Ω 為常數,上式解得 q ( t ) = q ( 0 ) e Ω t (可代回驗證),這就引出了指數映射。

如果繞轉軸 u 轉了角度 ϕ ,定義“大寫的”指數映射:

(4) q Exp ( ϕ u ) = e ϕ u / 2 = cos ϕ 2 + u sin ϕ 2

旋轉作用

將式 (4) 代入式 (3) , 推導可得式 (1) ,這就驗證了 (3) 的正確性。

在證明中有一步 u x u = x ( u T u ) 2 u ( u T x ) 用到了 ( a × b ) × c = a ( c b ) + b ( c a )

四元數到旋轉矩陣的轉換


q x q = [ q ] R [ q ] L [ 0 x ] = [ 0 R x ]

可以得到:
R = ( q w 2 q v q v ) I + 2 q v q v + 2 q w [ q v ] ×

旋轉合成

假設旋轉2作用於旋轉1之后。

對於旋轉矩陣,

R 2 ( R 1 x ) = ( R 2 R 1 ) x

對於四元數,
q 2 ( q 1 x q 1 ) q 2 = ( q 2 q 1 ) x ( q 2 q 1 )

因此,后旋轉的都是乘在左邊。


坐標系變換

方向余弦矩陣(DCM)

用G表示global,或者n系;L表示local,或者b系。

r G , r L 分別為向量 r 在坐標系 G L 中的坐標,由

r = ( i G j G k G ) r G = ( i L j L k L ) r L

得:

r G = ( i G j G k G ) ( i L j L k L ) r L R G L r L

表示從 L G 的坐標變換。

R G L 的定義還可得基變換:

( i L j L k L ) = ( i G j G k G ) R G L

對於一個與 L 系固連的向量 r ,經過主動旋轉 R ,得到 r ,那么:

r G = R r G

r L = r G ,因此
r G = R r L

而按定義:
r G = R G L r L

因此坐標變換矩陣與主動旋轉矩陣 R 的關系是:
R G L = R

歐拉角

intrinsic rotation是指繞當前坐標系(而不是某個固定坐標系)的軸轉動。

G 繞某軸逆時針旋轉 θ ,得到 L 。對於 R L G ,根據定義得出如下結果1

X 軸旋轉

R x = [ 1 0 0 0 c θ s θ 0 s θ c θ ]

Y 軸旋轉
R y = [ c θ 0 s θ 0 1 0 s θ 0 c θ ]

Z 軸旋轉
R z = [ c θ s θ 0 s θ c θ 0 0 0 1 ]

如果按 Z Y X 的順序轉動,
R L G = R x R y R z = [ c y c z c y s z s y s x s y c z c x s z s x s y s z + c x c z s x c y c x s y c z + s x s z c x s y s z s x c z c x c y ]

可得歐拉角和DCM的轉換關系:
tan ( θ z ) = R 12 R 11 sin ( θ y ) = R 13 tan ( θ x ) = R 23 R 33

若是小角度轉動,
(5) R = [ 1 θ z θ y θ z 1 θ x θ y θ x 1 ] = I [ θ ] ×

可見小角度轉動與轉動順序無關(即只與繞XYZ各軸轉過的角度有關。如果只有倆軸,比如Z->X->Z,那么未出現的軸角度為0,出現兩次的軸的角度相加),等效於一次轉動:角度為 θ = θ x 2 + θ y 2 + θ z 2 ,轉軸為 1 θ ( θ x θ y θ z ) ,也可以從Rodrigues旋轉公式做小角近似看出來:
R L G = R T I ϕ [ u ] ×

Extrinsic rotation

設固定坐標系為 A 。坐標系 B A u 軸轉動角度 ϕ ,這個轉動用 R ϕ u 表示,得坐標系 C 。求 R C A

首先

R C A = R B D

其中 D A u 軸轉動角度 ϕ 得到。這個結論對於二維轉動很直觀,對於三維其實也容易看出。按定義,只要證明兩對坐標系的基的內積相等即可。把基分解到平行於轉軸和垂直於轉軸。平行部分的內積顯然不變,垂直部分由二維情況可知也不變,且平行於垂直部分內積為0。因此得證。
R B D = R B A R A D = R B A R D A 1 = R B A R ϕ u 1 = R B A R ϕ u

因此得到結論,繞固定坐標系的軸轉動, R 是乘在右邊的。

四元數

和DCM類比有

(6) x G = q G L x L q G L

其中 q G L 等於主動旋轉 q

運動方程

推導的要點是從當前 L 系做擾動得到新的 L 系,而陀螺儀的測量值剛好是在角速度在 L 系的值。

四元數

(6) 可得, q G L 2 = q G L 1 q L 1 L 2 ,即擾動是乘在右邊的(L表示local):

q ( t + Δ t ) = q ( t ) Δ q L = q ( t ) Exp ( Δ ϕ L )

q ˙ lim Δ t 0 q ( t + Δ t ) q ( t ) Δ t = lim Δ t 0 q Δ q q Δ t = lim Δ t 0 q ( [ cos Δ ϕ 2 u sin Δ ϕ 2 ] [ 1 0 ] ) Δ t = lim Δ t 0 q ( [ 1 Δ ϕ / 2 ] [ 1 0 ] ) Δ t ( ) = lim Δ t 0 q [ 0 Δ ϕ / 2 ] Δ t = 1 2 q ω L

方向余弦矩陣

(5) 得:

R L 2 L 1 = I [ θ ] ×

因此
R L 1 L 2 = R L 2 L 1 T = I + [ θ ] ×

R G L 2 = R G L 1 R L 1 L 2 ,推導可得:
R ˙ G L = R G L [ ω L ] ×

參考資料

Quaternion kinematics for the error-state Kalman filter


  1. s θ 放置位置記憶方法:放在轉動軸的上一列(循環)。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM