三维旋转的不同表示方法(欧拉角、旋转矩阵、四元数、指数映射、特征向量)及其等价关系(三)

Title: 三维旋转的不同表示方法 (欧拉角、旋转矩阵、四元数、指数映射、特征向量) 及其等价关系 (三)


总目录

⼀. 欧拉⾓相关

​ I. Euler angles

​ II. 旋转矩阵

​ III. Euler angles 等价转换为旋转矩阵

​ IV. Euler angles 的⾏列式

​ V. 旋转矩阵等价转换为 Euler angles

​ ⼩结

⼆. 轴⾓相关

​ I. 向量形式的 Rodrigues’ rotation formula

​ II. 指数映射形式的 Rodrigues’ rotation formula

​ III. 指数映射的⼀般形式及说明

​ IV. 指数映射的⾏列式

​ V. Rodrigues’ rotation formula 之间的⼀致性

​ VI. Rodrigues’ rotation formula 与 Euler angles 之间的等价

​ VII. 由普通旋转矩阵计算单位旋转轴和旋转⾓度 (利⽤指数映射)

​ VIII. 旋转矩阵的特征值和特征向量

三. 四元数相关

I. 四元数形式的 3D 旋转公式

II. 四元数的左乘、右乘与矩阵形式

III. 四元数的 Graβmann 积 (Graβmann product)

​IV. 四元数形式的 3D 旋转公式的等价性

V. 四元数形式的 3D 旋转公式导出的矩阵形式

VI. 四元数形式的 3D 旋转公式导出的矩阵形式的计算证明

VII. 四元数形式的 3D 旋转公式导出的矩阵形式的正交性质

VIII. 四元数形式的 3D 旋转公式导出的矩阵形式 与 欧拉⾓导出的矩阵形式的等价关系

​ IX. 由普通旋转矩阵计算四元数形式的 3D 旋转

总结

参考⽂献


我们经常遇到三维空间中旋转 S O ( 3 ) SO(3) SO(3) 的不同表示方法, 如欧拉角、旋转矩阵、四元数、指数映射等1 2 3 4. 归结一下就是两类表示:1. Euler angles , 2. Axis-angle. 这两类不同表示法都可以产生旋转矩阵, 作为数字计算的工具. 欧拉角产生旋转矩阵的方式相对直观, 通过坐标系之间的旋转就可以获得; 而 Axis-angle 的方式需要基于指数映射的 Rodrigues’ rotation formula 或者四元数计算获得旋转矩阵.

此处我们整理一下这些不同的描述方法及其之间的等价计算关系.


已完成内容, 请参见:

三维旋转的不同表示方法 (欧拉角、旋转矩阵、四元数、指数映射、特征向量) 及其等价关系 (一)

三维旋转的不同表示方法 (欧拉角、旋转矩阵、四元数、指数映射、特征向量) 及其等价关系 (二)


三. 四元数相关

I. 四元数形式的 3D 旋转公式

三维空间中, 任意向量 v \bf v v, 沿着单位向量定义的旋转轴 u \bf u u 旋转 θ \theta θ 角度后, 得到新的向量 v ′ {\bf v}^{'} v. 向量 v \bf v v 对应四元数 v = [ 0 , v ] v = [0, \bf v] v=[0,v], 3D 旋转对应的四元数 q = [ c o s ( θ / 2 ) , s i n ( θ / 2 ) u ] q = [{\rm cos}(\theta/2), {\rm sin}(\theta/2){\bf u}] q=[cos(θ/2),sin(θ/2)u], 新向量对应四元数 v ′ = [ 0 , v ′ ] v^{'} = [0, \bf v^{'}] v=[0,v]. 则
v ′ = q v q ∗ = q v q − 1 {v}^{'} = q v q^{*} = q v q ^{-1} v=qvq=qvq1

其中 q ∗ q^{*} q q q q 的共轭四元数, 即 q ∗ = [ c o s ( θ / 2 ) , − s i n ( θ / 2 ) u ] q^{*} = [{\rm cos}(\theta/2), -{\rm sin}(\theta/2){\bf u}] q=[cos(θ/2),sin(θ/2)u].

II. 四元数的左乘、右乘与矩阵形式

任意四元数写成向量形式为
r = [ a b c d ] & r ∗ = [ a − b − c − d ] { r} = \begin{bmatrix}a \\ b \\ c \\ d \end{bmatrix} \qquad \& \qquad r^{*}= \begin{bmatrix}a \\ -b \\ -c \\ -d \end{bmatrix} r= abcd &r= abcd

r \mathbf r r 为乘子的四元数左乘
r q = [ a − b − c − d b a − d c c d a − b d − c b a ] q ≜ L r   q ⇒ L r = [ a − b − c − d b a − d c c d a − b d − c b a ] { r} {q} = \begin{bmatrix} a &-b &-c &-d \\ b & a &-d &c\\ c &d &a &-b\\ d &-c &b &a\end{bmatrix} { q} \triangleq {\mathbf L_{r}} \,{{q}} \qquad \Rightarrow \qquad {\mathbf L_{r}} = \begin{bmatrix} a &-b &-c &-d \\ b & a &-d &c\\ c &d &a &-b\\ d &-c &b &a\end{bmatrix} rq= abcdbadccdabdcba qLrqLr= abcdbadccdabdcba

r \mathbf r r 为乘子的四元数右乘
q r = [ a − b − c − d b a d − c c − d a b d c − b a ] q = R r   q ⇒ R r = [ a − b − c − d b a d − c c − d a b d c − b a ] { q} { r} = \begin{bmatrix} a &-b &-c &-d \\ b & a &d &-c\\ c &-d &a &b\\ d &c &-b &a\end{bmatrix} { q} = {\mathbf R_{r}} \, { q} \qquad \Rightarrow \qquad {\mathbf R_{r}} = \begin{bmatrix} a &-b &-c &-d \\ b & a &d &-c\\ c &-d &a &b\\ d &c &-b &a\end{bmatrix} qr= abcdbadccdabdcba q=RrqRr= abcdbadccdabdcba

左乘 r \mathbf r r 对应的矩阵 L r \mathbf L_r Lr, 右乘 r \mathbf r r 对应的矩阵 R r {\mathbf R_r} Rr. 同理, 左乘 r ∗ \mathbf r^{*} r 对应的矩阵 L r ∗ \mathbf L_{r^*} Lr, 右乘 r ∗ \mathbf r^{*} r 对应的矩阵 R r ∗ {\mathbf R_{r^*}} Rr

可以发现或计算得到:
L r ∗ = L r T & R r ∗ = R r T {\mathbf L}_{r^{*}} = {\mathbf{L}_{r}^{\rm T}} \qquad \& \qquad {\mathbf R}_{r^{*}} = {\mathbf{R}_{r}^{\rm T}} Lr=LrT&Rr=RrT

如果 r r r 是单位四元数, 即 ∥ r ∥ = a 2 + b 2 + c 2 + d 2 = 1 \Vert r \Vert = \sqrt{a^2+b^2+c^2+d^2} = 1 r=a2+b2+c2+d2 =1, 可以计算得到
L r L r T = I 4 × 4 & R r R r T = I 4 × 4 {\mathbf{L}_{r}} {\mathbf{L}_{r}^{\rm T}} = \mathbf I_{4\times 4} \qquad \& \qquad {\mathbf{R}_{r}} {\mathbf{R}_{r}^{\rm T}} = \mathbf I_{4\times 4} LrLrT=I4×4&RrRrT=I4×4

L r ∗ L r ∗ T = I 4 × 4 & R r ∗ R r ∗ T = I 4 × 4 {\mathbf{L}_{r^{*}}} {\mathbf{L}_{r^{*}}^{\rm T}} = \mathbf I_{4\times 4} \qquad \& \qquad {\mathbf{R}_{r^{*}}} {\mathbf{R}_{r^{*}}^{\rm T}} = \mathbf I_{4\times 4} LrLrT=I4×4&RrRrT=I4×4

此时 L r \mathbf L_{r} Lr R r {\mathbf R}_r Rr L r ∗ \mathbf L_{r^{*}} Lr R r ∗ {\mathbf R}_{r^{*}} Rr 都是正交矩阵.

另外, 计算验证行列式
d e t ( L r ) = d e t ( L r ∗ ) = d e t ( R r ) = d e t ( R r ∗ ) = d 4 + 2 c 2   d 2 + 2 b 2   d 2 + 2 a 2   d 2 + c 4 + 2 b 2   c 2 + 2 a 2   c 2 + b 4 + 2 a 2   b 2 + a 4 = ( a 2 + b 2 + c 2 + d 2 ) ( a 2 + b 2 + c 2 + d 2 ) = 1 \begin{aligned} {\rm det}({\mathbf L}_{r})& = {\rm det}({\mathbf L}_{r^*}) = {\rm det}({\mathbf R}_{r}) ={\rm det}({\mathbf R}_{r^*}) \\ &= {{d}^{4}}+2 {{c}^{2}}\, {{d}^{2}}+2 {{b}^{2}}\, {{d}^{2}}+2 {{a}^{2}}\, {{d}^{2}}+{{c}^{4}}+2 {{b}^{2}}\, {{c}^{2}}+2 {{a}^{2}}\, {{c}^{2}}+{{b}^{4}}+2 {{a}^{2}}\, {{b}^{2}}+{{a}^{4}} \\ &= (a^2+b^2+c^2+d^2)(a^2+b^2+c^2+d^2)\\ &=1 \end{aligned} det(Lr)=det(Lr)=det(Rr)=det(Rr)=d4+2c2d2+2b2d2+2a2d2+c4+2b2c2+2a2c2+b4+2a2b2+a4=(a2+b2+c2+d2)(a2+b2+c2+d2)=1
所以 L r \mathbf L_{r} Lr R r {\mathbf R}_r Rr L r ∗ \mathbf L_{r^{*}} Lr R r ∗ {\mathbf R}_r^{*} Rr 都是特殊正交矩阵, 就是针对四元数的旋转矩阵.

最后,可以计算验证:
L r R r ∗ = R r ∗ L r \mathbf L_{r} \mathbf R_{r^{*}} = \mathbf R_{r^{*}} \mathbf L_{r} LrRr=RrLr

III. 四元数的 Graβmann 积 (Graβmann product)

对任意四元数 q 1 = [ s , v ] q_1 = [s, \bf v] q1=[s,v], q 2 = [ t , u ] q_2 = [t, \bf u] q2=[t,u] 的积写成向量点乘和叉乘形式为
q 1 q 2 = [ s t − v ⋅ u , s u + t v + v × u ] q_1 q_2 = [st -{\bf v}\cdot {\bf u}, s{\bf u}+t {\bf v} + {\bf v}\times {\bf u}] q1q2=[stvu,su+tv+v×u]

IV. 四元数形式的 3D 旋转公式的等价性

由 “四元数形式的 3D 旋转公式”, 已知
v ′ = q v q ∗ {v}^{'} = q v q^{*} v=qvq
其中, v = [ 0 , v ] v = [0, \bf v] v=[0,v], q = [ c o s ( θ / 2 ) , s i n ( θ / 2 ) u ] q = [{\rm cos}(\theta/2), {\rm sin}(\theta/2){\bf u}] q=[cos(θ/2),sin(θ/2)u]. 计算
v ′ = q v q ∗ = [ c o s θ 2 , s i n θ 2 u ] ⋅ [ 0 , v ] ⋅ [ c o s θ 2 , − s i n θ 2 u ] ⇒ G r a β m a n n   p r o d u c t v ′ = [ − s i n θ 2 ( u ⋅ v ) , c o s θ 2 v + s i n θ 2 ( u × v ) ] ⋅ [ c o s θ 2 , − s i n θ 2 u ] ⇒ G r a β m a n n   p r o d u c t + 矢量三重积 v ′ = [ 0 , c o s θ   v + ( 1 − c o s θ )   ( u ⋅ v )   u + s i n θ   ( u × v ) ] {v}^{'} =q v q^{*} = \left[{\rm cos}\frac{\theta}{2}, {\rm sin}\frac{\theta}{2}{\bf u}\right] \cdot \left[0, {\bf v}\right] \cdot \left[{\rm cos}\frac{\theta}{2}, -{\rm sin}\frac{\theta}{2}{\bf u}\right] \\ \overset{\rm Graβmann\ product} \Rightarrow\\ {v}^{'} = \left[-{\rm sin}\frac{\theta}{2} (\mathbf{u} \cdot \mathbf{v}), {\rm cos}\frac{\theta}{2} \mathbf{v} + {\rm sin}\frac{\theta}{2} (\mathbf{u}\times \mathbf{v})\right] \cdot \left[{\rm cos}\frac{\theta}{2}, -{\rm sin}\frac{\theta}{2}{\bf u}\right] \\ \overset{\rm Graβmann\ product+矢量三重积} \Rightarrow\\ {v}^{'} = \left[0, {\rm cos}\theta\,{\bf v} + (1-\rm cos\theta)\,({\bf u} \cdot{\bf v})\,{\bf u} + {\rm sin}\theta\,(\bf u \times {\bf v})\right] v=qvq=[cos2θ,sin2θu][0,v][cos2θ,sin2θu]Graβmann productv=[sin2θ(uv),cos2θv+sin2θ(u×v)][cos2θ,sin2θu]Graβmann product+矢量三重积v=[0,cosθv+(1cosθ)(uv)u+sinθ(u×v)]
与 “Rodrigues’ rotation formula” 等价.

附. 矢量三重积:

( a × b ) × c = ( a ⋅ c ) b − a ( b ⋅ c ) (\mathbf a\times \mathbf b)\times \mathbf c = (\mathbf a \cdot \mathbf c)\mathbf b - \mathbf a(\mathbf b \cdot \mathbf c) (a×b)×c=(ac)ba(bc)

a × ( b × c ) = ( a ⋅ c ) b − ( a ⋅ b ) c \mathbf a\times (\mathbf b \times \mathbf c ) = (\mathbf a \cdot \mathbf c)\mathbf b - (\mathbf a\cdot \mathbf b) \mathbf c a×(b×c)=(ac)b(ab)c

V. 四元数形式的 3D 旋转公式导出的矩阵形式

任意向量 v \bf v v 沿着以单位向量定义的旋转轴 u \bf u u 旋转 θ \theta θ 角度后得到新的向量 v ′ \bf v^{'} v. 3D 旋转对应的四元数 q = [ c o s ( θ / 2 ) , s i n ( θ / 2 ) u ] q = [{\rm cos}(\theta/2), {\rm sin}(\theta/2){\bf u}] q=[cos(θ/2),sin(θ/2)u], 其中 u = [ u x u y u z ] \mathbf u =\begin{bmatrix}u_x \\ u_y \\u_z \end{bmatrix} u= uxuyuz . 令 a = c o s ( θ / 2 ) , b = s i n ( θ / 2 ) u x , c = s i n ( θ / 2 ) u y , d = s i n ( θ / 2 ) u z a = {\rm cos}(\theta/2), b = {\rm sin}(\theta/2) u_x, c = {\rm sin}(\theta/2) u_y, d = {\rm sin}(\theta/2) u_z a=cos(θ/2),b=sin(θ/2)ux,c=sin(θ/2)uy,d=sin(θ/2)uz, 则
v ′ = [ 1 − 2 c 2 − 2 d 2 2 b c − 2 a d 2 a c + 2 b d 2 b c + 2 a d 1 − 2 b 2 − 2 d 2 2 c d − 2 a b 2 b d − 2 a c 2 a b + 2 c d 1 − 2 b 2 − 2 c 2 ] v \bf v^{'} = \begin{bmatrix} 1-2c^{2}-2 d^{2} &2bc-2ad &2ac+2bd\\ 2bc+2ad &1-2b^{2}-2 d^{2} &2cd-2ab\\ 2bd-2ac &2ab+2cd & 1-2 b^2 - 2 c^2 \end{bmatrix}{\bf v} v= 12c22d22bc+2ad2bd2ac2bc2ad12b22d22ab+2cd2ac+2bd2cd2ab12b22c2 v
或者写成
R = [ 1 − 2 c 2 − 2 d 2 2 b c − 2 a d 2 a c + 2 b d 2 b c + 2 a d 1 − 2 b 2 − 2 d 2 2 c d − 2 a b 2 b d − 2 a c 2 a b + 2 c d 1 − 2 b 2 − 2 c 2 ] \mathbf R = \begin{bmatrix} 1-2c^{2}-2 d^{2} &2bc-2ad &2ac+2bd\\ 2bc+2ad &1-2b^{2}-2 d^{2} &2cd-2ab\\ 2bd-2ac &2ab+2cd & 1-2 b^2 - 2 c^2 \end{bmatrix} R= 12c22d22bc+2ad2bd2ac2bc2ad12b22d22ab+2cd2ac+2bd2cd2ab12b22c2

VI. 四元数形式的 3D 旋转公式导出的矩阵形式的计算证明

已知
v ′ = q v q ∗ = L q R q ∗ v = [ a − b − c − d b a − d c c d a − b d − c b a ] [ a b c d − b a − d c − c d a − b − d − c b a ] v ⇒ v ′ = [ d 2 + c 2 + b 2 + a 2 0 0 0 0 − d 2 − c 2 + b 2 + a 2 2 b c − 2 a d 2 b d + 2 a c 0 2 a d + 2 b c − d 2 + c 2 − b 2 + a 2 2 c d − 2 a b 0 2 b d − 2 a c 2 c d + 2 a b d 2 − c 2 − b 2 + a 2 ] v ⇒ 右下角   3 × 3   子矩阵 v ′ = [ − d 2 − c 2 + b 2 + a 2 2 b c − 2 a d 2 b d + 2 a c 2 a d + 2 b c − d 2 + c 2 − b 2 + a 2 2 c d − 2 a b 2 b d − 2 a c 2 c d + 2 a b d 2 − c 2 − b 2 + a 2 ] v ⇒ a 2 + b 2 + c 2 + d 2 = 1 v ′ = [ 1 − 2 c 2 − 2 d 2 2 b c − 2 a d 2 a c + 2 b d 2 b c + 2 a d 1 − 2 b 2 − 2 d 2 2 c d − 2 a b 2 b d − 2 a c 2 a b + 2 c d 1 − 2 b 2 − 2 c 2 ] v v^{'} = q v q^{*} = {\mathbf L}_q {{\mathbf R}_{q^{*}}} v = \begin{bmatrix} a &-b &-c &-d \\ b & a &-d &c\\ c &d &a &-b\\ d &-c &b &a\end{bmatrix} \begin{bmatrix}a & b & c & d\\ -b & a & -d & c\\ -c & d & a & -b\\ -d & -c & b & a\end{bmatrix} v\\ \Rightarrow\\ v^{'} =\begin{bmatrix}{{d}^{2}}+{{c}^{2}}+{{b}^{2}}+{{a}^{2}} & 0 & 0 & 0\\ 0 & -{{d}^{2}}-{{c}^{2}}+{{b}^{2}}+{{a}^{2}} & 2 b c-2 a d & 2 b d+2 a c\\ 0 & 2 a d+2 b c & -{{d}^{2}}+{{c}^{2}}-{{b}^{2}}+{{a}^{2}} & 2 c d-2 a b\\ 0 & 2 b d-2 a c & 2 c d+2 a b & {{d}^{2}}-{{c}^{2}}-{{b}^{2}}+{{a}^{2}}\end{bmatrix} v\\ \overset{右下角 \,3\times 3\, 子矩阵}\Rightarrow\\ {\mathbf v}^{'} =\begin{bmatrix} -{{d}^{2}}-{{c}^{2}}+{{b}^{2}}+{{a}^{2}} & 2 b c-2 a d & 2 b d+2 a c\\ 2 a d+2 b c & -{{d}^{2}}+{{c}^{2}}-{{b}^{2}}+{{a}^{2}} & 2 c d-2 a b\\ 2 b d-2 a c & 2 c d+2 a b & {{d}^{2}}-{{c}^{2}}-{{b}^{2}}+{{a}^{2}}\end{bmatrix}\mathbf v\\ \overset{a^2 + b^2 +c^2 +d^2 =1} \Rightarrow\\ \bf v^{'} = \begin{bmatrix} 1-2c^{2}-2 d^{2} &2bc-2ad &2ac+2bd\\ 2bc+2ad &1-2b^{2}-2 d^{2} &2cd-2ab\\ 2bd-2ac &2ab+2cd & 1-2 b^2 - 2 c^2 \end{bmatrix}{\bf v} v=qvq=LqRqv= abcdbadccdabdcba abcdbadccdabdcba vv= d2+c2+b2+a20000d2c2+b2+a22ad+2bc2bd2ac02bc2add2+c2b2+a22cd+2ab02bd+2ac2cd2abd2c2b2+a2 v右下角3×3子矩阵v= d2c2+b2+a22ad+2bc2bd2ac2bc2add2+c2b2+a22cd+2ab2bd+2ac2cd2abd2c2b2+a2 va2+b2+c2+d2=1v= 12c22d22bc+2ad2bd2ac2bc2ad12b22d22ab+2cd2ac+2bd2cd2ab12b22c2 v

VII. 四元数形式的 3D 旋转公式导出的矩阵形式的正交性质

已知
L q R q ∗ = [ d 2 + c 2 + b 2 + a 2 0 0 0 0 − d 2 − c 2 + b 2 + a 2 2 b c − 2 a d 2 b d + 2 a c 0 2 a d + 2 b c − d 2 + c 2 − b 2 + a 2 2 c d − 2 a b 0 2 b d − 2 a c 2 c d + 2 a b d 2 − c 2 − b 2 + a 2 ] ⇒ 分块矩阵形式 L q R q ∗ = [ 1 0 1 × 3 0 3 × 1 R 3 × 3 ] {\mathbf L}_q {{\mathbf R}_{q^{*}}} =\begin{bmatrix}{{d}^{2}}+{{c}^{2}}+{{b}^{2}}+{{a}^{2}} & 0 & 0 & 0\\ 0 & -{{d}^{2}}-{{c}^{2}}+{{b}^{2}}+{{a}^{2}} & 2 b c-2 a d & 2 b d+2 a c\\ 0 & 2 a d+2 b c & -{{d}^{2}}+{{c}^{2}}-{{b}^{2}}+{{a}^{2}} & 2 c d-2 a b\\ 0 & 2 b d-2 a c & 2 c d+2 a b & {{d}^{2}}-{{c}^{2}}-{{b}^{2}}+{{a}^{2}}\end{bmatrix} \\ \overset{分块矩阵形式}\Rightarrow \\ {\mathbf L}_q {{\mathbf R}_{q^{*}}} =\begin{bmatrix}1 & \mathbf 0_{1\times 3} \\ \mathbf 0_{3\times 1} &\mathbf R_{3\times 3}\end{bmatrix} LqRq= d2+c2+b2+a20000d2c2+b2+a22ad+2bc2bd2ac02bc2add2+c2b2+a22cd+2ab02bd+2ac2cd2abd2c2b2+a2 分块矩阵形式LqRq=[103×101×3R3×3]
先看 L q R q ∗ {\mathbf L}_q {{\mathbf R}_{q^{*}}} LqRq 的正交性
( L q R q ∗ ) ( L q R q ∗ ) T = L q R q ∗ R q ∗ T L q T = I ( 根据 矩阵结合律   +   L q 正交   +   R q ∗ 正交 ) ({\mathbf L}_q {{\mathbf R}_{q^{*}}}) ({\mathbf L}_q {{\mathbf R}_{q^{*}}} )^{\rm T} = {\mathbf L}_q {{\mathbf R}_{q^{*}}} {\mathbf R}_{q^{*}}^{\rm T} {\mathbf L}_q ^{\rm T} = \mathbf I \\ {\small (根据{矩阵结合律\,+\,\mathbf L_{q}正交\,+\,\mathbf R_{q^{*}}正交})} (LqRq)(LqRq)T=LqRqRqTLqT=I(根据矩阵结合律+Lq正交+Rq正交)
以分块矩阵形式
( L q R q ∗ ) ( L q R q ∗ ) T = [ 1 0 1 × 3 0 3 × 1 R 3 × 3 ] [ 1 0 1 × 3 0 3 × 1 R 3 × 3 T ] = [ 1 0 1 × 3 0 3 × 1 R 3 × 3 R 3 × 3 T ] = [ 1 0 1 × 3 0 3 × 1 I 3 × 3 ] ({\mathbf L}_q {{\mathbf R}_{q^{*}}}) ({\mathbf L}_q {{\mathbf R}_{q^{*}}} )^{\rm T} = \begin{bmatrix}1 & \mathbf 0_{1\times 3} \\ \mathbf 0_{3\times 1} &\mathbf R_{3\times 3}\end{bmatrix} \begin{bmatrix}1 & \mathbf 0_{1\times 3} \\ \mathbf 0_{3\times 1} &\mathbf R_{3\times 3}^{\rm T}\end{bmatrix} = \begin{bmatrix}1 & \mathbf 0_{1\times 3} \\ \mathbf 0_{3\times 1} &\mathbf R_{3\times 3} \mathbf R_{3\times 3}^{\rm T}\end{bmatrix} = \begin{bmatrix}1 & \mathbf 0_{1\times 3} \\ \mathbf 0_{3\times 1} &\mathbf I_{3\times 3}\end{bmatrix} (LqRq)(LqRq)T=[103×101×3R3×3][103×101×3R3×3T]=[103×101×3R3×3R3×3T]=[103×101×3I3×3]
所以 R R T = I \mathbf R {\mathbf R}^{\rm T} = \mathbf I RRT=I 是正交矩阵, 这样就证明了四元数形式的 3D 旋转公式导出的矩阵形式的正交性(应该也可以直接硬算来验证吧).

最后验证一下四元数形式的 3D 旋转公式导出的矩阵形式 R \mathbf R R 的行列式. 已知
d e t ( L q R q ∗ ) = d e t ( L q ) d e t ( R q ∗ ) = 1 {\rm det}({\mathbf L}_q {{\mathbf R}_{q^{*}}}) = {\rm det}({\mathbf L}_q ) {\rm det}( {{\mathbf R}_{q^{*}}}) = 1 det(LqRq)=det(Lq)det(Rq)=1
故分块矩阵
d e t ( [ 1 0 1 × 3 0 3 × 1 R 3 × 3 ] ) = d e t ( R 3 × 3 ) = 1 {\rm det} \left(\begin{bmatrix}1 & \mathbf 0_{1\times 3} \\ \mathbf 0_{3\times 1} &\mathbf R_{3\times 3}\end{bmatrix}\right) = {\rm det}(\mathbf R_{3\times 3}) = 1 det([103×101×3R3×3])=det(R3×3)=1
四元数形式的 3D 旋转公式导出的矩阵形式 R \mathbf R R 是旋转矩阵.

VIII. 四元数形式的 3D 旋转公式导出的矩阵形式 与 欧拉角导出的矩阵形式的等价关系

计算绕 ZYX 轴转动 ( α , β , ϕ ) (\alpha, \beta, \phi) (α,β,ϕ) 角度对应的 “四元数形式的 3D 旋转公式导出的矩阵形式‘’

绕 X 轴旋转 ϕ \phi ϕ, 对应四元数 q = [ c o s ( ϕ / 2 ) s i n ( ϕ / 2 ) 0 0 ] q = \begin{bmatrix}{\rm cos}(\phi/2)\\ {\rm sin}(\phi/2)\\0\\0\end{bmatrix} q= cos(ϕ/2)sin(ϕ/2)00 , 则 a = c o s ( ϕ / 2 ) , b = s i n ( ϕ / 2 ) , c = d = 0 a = {\rm cos}(\phi/2), b = {\rm sin}(\phi/2), c=d=0 a=cos(ϕ/2),b=sin(ϕ/2),c=d=0, 代入得到 v ′ = [ 1 0 0 0 c o s ϕ − s i n ϕ 0 s i n ϕ c o s ϕ ] v \bf v^{'} = \begin{bmatrix} 1 & 0 &0 \\ 0 &\rm cos \phi &-{\rm sin} \phi \\ 0 &\rm sin \phi & \rm cos \phi\end{bmatrix}\bf v v= 1000cosϕsinϕ0sinϕcosϕ v

绕 Y 轴旋转 β \beta β, 对应四元数 q = [ c o s ( β / 2 ) 0 s i n ( β / 2 ) 0 ] q = \begin{bmatrix}{\rm cos}(\beta/2)\\ 0\\ {\rm sin}(\beta/2)\\0\end{bmatrix} q= cos(β/2)0sin(β/2)0 , 则 a = c o s ( β / 2 ) , c = s i n ( β / 2 ) , b = d = 0 a = {\rm cos}(\beta/2), c = {\rm sin}(\beta/2), b=d=0 a=cos(β/2),c=sin(β/2),b=d=0, 代入得到 v ′ = [ c o s β 0 s i n β 0 1 0 − s i n β 0 c o s β ] v \bf v^{'} = \begin{bmatrix} {\rm cos}\beta & 0 &{\rm sin} \beta \\ 0 &1 &0 \\ -\rm sin\beta &0 & \rm cos\beta\end{bmatrix}\bf v v= cosβ0sinβ010sinβ0cosβ v

绕 Z 轴旋转 α \alpha α, 对应四元数 q = [ c o s ( α / 2 ) 0 0 s i n ( α / 2 ) ] q = \begin{bmatrix}{\rm cos}(\alpha/2)\\ 0 \\ 0 \\ {\rm sin}(\alpha/2)\end{bmatrix} q= cos(α/2)00sin(α/2) , 则 a = c o s ( α / 2 ) , d = s i n ( α / 2 ) , b = c = 0 a = {\rm cos}(\alpha/2), d = {\rm sin}(\alpha/2), b=c=0 a=cos(α/2),d=sin(α/2),b=c=0, 代入得到 v ′ = [ c o s α − s i n α 0 s i n α c o s α 0 0 0 1 ] v \bf v^{'} = \begin{bmatrix} {\rm cos}\alpha &-{\rm sin} \alpha & 0 \\ \rm sin\alpha & \rm cos\alpha &0 \\ 0 &0 &1\end{bmatrix}\bf v v= cosαsinα0sinαcosα0001 v

对比 “I. Euler angles” 相应矩阵, 可以看出等价性.

IX. 由普通旋转矩阵计算四元数形式的 3D 旋转

已知三维空间中的旋转矩阵是一个 3 × 3 3\times 3 3×3 方阵
R = [ r 11 r 12 r 13 r 21 r 22 r 23 r 31 r 32 r 33 ] {\mathbf R} = \begin{bmatrix} r_{11} & r_{12} & r_{13}\\ r_{21} & r_{22} & r_{23}\\ r_{31} & r_{32} & r_{33} \end{bmatrix} R= r11r21r31r12r22r32r13r23r33

四元数导出的旋转矩阵为
R = [ 1 − 2 c 2 − 2 d 2 2 b c − 2 a d 2 a c + 2 b d 2 b c + 2 a d 1 − 2 b 2 − 2 d 2 2 c d − 2 a b 2 b d − 2 a c 2 a b + 2 c d 1 − 2 b 2 − 2 c 2 ] \mathbf R = \begin{bmatrix} 1-2c^{2}-2 d^{2} &2bc-2ad &2ac+2bd\\ 2bc+2ad &1-2b^{2}-2 d^{2} &2cd-2ab\\ 2bd-2ac &2ab+2cd & 1-2 b^2 - 2 c^2 \end{bmatrix} R= 12c22d22bc+2ad2bd2ac2bc2ad12b22d22ab+2cd2ac+2bd2cd2ab12b22c2
由等价关系
R = [ r 11 r 12 r 13 r 21 r 22 r 23 r 31 r 32 r 33 ] = [ 1 − 2 c 2 − 2 d 2 2 b c − 2 a d 2 a c + 2 b d 2 b c + 2 a d 1 − 2 b 2 − 2 d 2 2 c d − 2 a b 2 b d − 2 a c 2 a b + 2 c d 1 − 2 b 2 − 2 c 2 ] \mathbf R = \begin{bmatrix} r_{11} & r_{12} & r_{13}\\ r_{21} & r_{22} & r_{23}\\ r_{31} & r_{32} & r_{33} \end{bmatrix} = \begin{bmatrix} 1-2c^{2}-2 d^{2} &2bc-2ad &2ac+2bd\\ 2bc+2ad &1-2b^{2}-2 d^{2} &2cd-2ab\\ 2bd-2ac &2ab+2cd & 1-2 b^2 - 2 c^2 \end{bmatrix} R= r11r21r31r12r22r32r13r23r33 = 12c22d22bc+2ad2bd2ac2bc2ad12b22d22ab+2cd2ac+2bd2cd2ab12b22c2
可以求出旋转矩阵对应的四元数 r = [ a , b , c , d ] T r= [a, b,c, d]^{\rm T} r=[a,b,c,d]T, 而由四元数可以进一步获得 “axis-angle” 表示的单位旋转轴方向 u \mathbf u u 和旋转角度 θ \theta θ.

对角元素的计算, 得到
r 11 + r 22 + r 33 = ( 1 − 2 c 2 − 2 d 2 ) + ( 1 − 2 b 2 − 2 d 2 ) + ( 1 − 2 b 2 − 2 c 2 ) = 4 a 2 − 1 ⇒ 4 a 2 = 1 + r 11 + r 22 + r 33 r_{11} + r_{22} + r_{33} = (1-2c^{2}-2 d^{2})+(1-2b^{2}-2 d^{2})+( 1-2 b^2 - 2 c^2) = 4 a^2 - 1 \\ \Rightarrow \qquad 4 a^2 = 1+r_{11} + r_{22} + r_{33} r11+r22+r33=(12c22d2)+(12b22d2)+(12b22c2)=4a214a2=1+r11+r22+r33

− r 11 + r 22 + r 33 = − ( 1 − 2 c 2 − 2 d 2 ) + ( 1 − 2 b 2 − 2 d 2 ) + ( 1 − 2 b 2 − 2 c 2 ) = 1 − 4 b 2 ⇒ 4 b 2 = 1 + r 11 − r 22 − r 33 -r_{11} + r_{22} + r_{33} = -(1-2c^{2}-2 d^{2})+(1-2b^{2}-2 d^{2})+( 1-2 b^2 - 2 c^2) = 1 - 4 b^2 \\ \Rightarrow \qquad 4 b^2 = 1 +r_{11} - r_{22} -r_{33} r11+r22+r33=(12c22d2)+(12b22d2)+(12b22c2)=14b24b2=1+r11r22r33

r 11 − r 22 + r 33 = ( 1 − 2 c 2 − 2 d 2 ) − ( 1 − 2 b 2 − 2 d 2 ) + ( 1 − 2 b 2 − 2 c 2 ) = 1 − 4 c 2 ⇒ 4 c 2 = 1 − r 11 + r 22 − r 33 r_{11} - r_{22} + r_{33} = (1-2c^{2}-2 d^{2})-(1-2b^{2}-2 d^{2})+( 1-2 b^2 - 2 c^2) = 1 - 4 c^2 \\ \Rightarrow \qquad 4c^2 = 1-r_{11}+r_{22}- r_{33} r11r22+r33=(12c22d2)(12b22d2)+(12b22c2)=14c24c2=1r11+r22r33

r 11 + r 22 − r 33 = ( 1 − 2 c 2 − 2 d 2 ) + ( 1 − 2 b 2 − 2 d 2 ) − ( 1 − 2 b 2 − 2 c 2 ) = 1 − 4 d 2 ⇒ 4 d 2 = 1 − r 11 − r 22 + r 33 r_{11} + r_{22} - r_{33} = (1-2c^{2}-2 d^{2})+(1-2b^{2}-2 d^{2})-( 1-2 b^2 - 2 c^2) = 1 - 4 d^2 \\ \Rightarrow \qquad 4d^2 =1 - r_{11} - r_{22} + r_{33} r11+r22r33=(12c22d2)+(12b22d2)(12b22c2)=14d24d2=1r11r22+r33

以上四个式子可以解出 [ ± a , ± b , ± c , ± d ] T [\pm a, \pm b,\pm c, \pm d]^{\rm T} [±a,±b,±c,±d]T 8 种组合, 实际上四元数 r r r − r -r r 表示的是同一个旋转. 我们只可以通过以上四个式子确定绝对值最大的那个分量值, 比如 a, 该分量的正负值可以任意选一个, 后面计算的其他分量与之协调一致就行.

实际上, 上述第一条公式就是通过旋转矩阵迹求解旋转角度等方法
r 11 + r 22 + r 33 = 4 a 2 − 1 ⇒ t r ( R ) = 4 c o s ( θ / 2 ) 2 − 1 ⇒ t r ( R ) − 1 2 = 2 c o s ( θ / 2 ) 2 − 1 = c o s ( θ ) r_{11} + r_{22} + r_{33} = 4 a^2 - 1\\ \Rightarrow \quad {\rm tr}(\mathbf R) = 4 {\rm cos}(\theta/2)^2 - 1\\ \Rightarrow \quad \frac{{\rm tr}(\mathbf R) - 1}{2} = 2 {\rm cos}(\theta / 2)^2 - 1 ={\rm cos}(\theta) r11+r22+r33=4a21tr(R)=4cos(θ/2)212tr(R)1=2cos(θ/2)21=cos(θ)
言归正传,由非对角元素的计算, 得到
r 32 − r 23 = 4 a b r 13 − r 31 = 4 a c r 21 − r 12 = 4 a d r 32 + r 23 = 4 c d r 13 + r 31 = 4 b d r 21 + r 12 = 4 b c r_{32} - r_{23} = 4ab\\ r_{13} - r_{31} = 4ac\\ r_{21} - r_{12} = 4ad\\ r_{32} + r_{23} = 4cd\\ r_{13} + r_{31} = 4bd\\ r_{21} + r_{12} = 4bc\\ r32r23=4abr13r31=4acr21r12=4adr32+r23=4cdr13+r31=4bdr21+r12=4bc
以上六个式子中,代入已确定的最大绝对值分量,得到另外三个分量值. 比如,利用已确定的 a a a, 代入以上的第 1-3 式, 就可以计算 b b b c c c d d d. 选择绝对值最大的分量先确定下来,再计算其他绝对值较小的分量,是为了数值计算的精度. 因为第一个确定的分量, 要影响其他三个分量, 而后面计算的分量不对其他分量构成影响. 所以, 同样计算误差情况下,肯定希望选择误差影响范围越小越好.

以上完成了普通旋转矩阵到旋转四元数的计算, 由四元数就很容易确定旋转轴和旋转角度. “由普通旋转矩阵计算单位旋转轴和旋转角度 (利用指数映射)” 也一样可以获得旋转轴和旋转角度, 数值计算精度影响决定具体旋转哪种方法.

总结

可以发现四元数最有意识最奥妙, 李代数形式最一致, 欧拉角最直观. 最终实际应用中的编程计算都归结为旋转矩阵形式, 不管哪种表述方式最后都是一个一样的矩阵. 不同的描述可以从不同角度揭示旋转矩阵的本质特性, 给矩阵计算提供指引.

旋转运动的描述还有更一般的几何代数描述的形式, 这里先不涉及.

参考文献

[1] Joan Solà, Jeremie Deray, Dinesh Atchuthan, "A micro Lie theory for state estimation in robotics", arXiv:1812.01537 [cs.RO]
[2] Krasjet, 四元数与三维旋转, https://github.com/Krasjet/quaternion

[3] Berthold K. P. Horn, “Closed-form solution of absolute orientation using unit quaternions”, Journal of The Optical Society of America A-optics Image Science and Vision, Vol 4., No. 4, April 1987

[4] Richard M. Murray, Zexiang Li, S. Shankar Sastry, “A Mathematical Introduction to Robotic Manipulation”, CRC Press, 1994 [book]

[5] Timothy D. Barfoot, “State Estimation for Robotics”, Cambridge University Press, 2017 [book]

[6] 百度百科, “欧拉旋转定理”, https://baike.baidu.com/item/%E6%AC%A7%E6%8B%89%E6%97%8B%E8%BD%AC%E5%AE%9A%E7%90%86?fromModule=lemma_inlink

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值