S O ( n ) = { R ∈ R n × n ∣ R R T = I , d e t ( R ) = 1 } SO(n)=\{ R \in \mathbb{R^{n \times n}} | RR^T=I,det(R)=1 \} SO(n)={R∈Rn×n∣RRT=I,det(R)=1}
SO(n)为特殊正交群
设 a a a为一点坐标 ( x , y , z ) (x,y,z) (x,y,z)。
旋转与平移的结合可以描述为如下形式
a ′ = R T a + t a'=R^Ta+t a′=RTa+t
R T = R − 1 R^T = R^{-1} RT=R−1
R R T = I , d e t ( R ) = 1 RR^T=I,det(R)=1 RRT=I,det(R)=1
[ a ′ 1 ] = [ R t 0 T 1 ] ≜ T [ a ′ 1 ] \begin{bmatrix} a' \\ 1 \end{bmatrix} = \begin{bmatrix} R & t \\ 0^T & 1 \end{bmatrix} \triangleq T \begin{bmatrix} a' \\ 1 \end{bmatrix} [a′1]=[R0Tt1]≜T[a′1]
关于变换矩阵,其具有特殊的结构:左上角位旋转矩阵,右侧为平移向量,左下角位0向量,右下角位1,该矩阵又称之为特殊欧式群
S E ( 3 ) = { T = [ R t 0 T 1 ] ∈ R 4 × 4 ∣ R ∈ S O ( 3 ) , t ∈ R 3 } SE(3)={ \{ T=\begin{bmatrix} R & t \\ 0^T & 1 \end{bmatrix} \in \mathbb{R^{4 \times 4 } } | R \in SO(3), t \in \mathbb{R^3} \}} SE(3)={T=[R0Tt1]∈R4×4∣R∈SO(3),t∈R3}
求解该矩阵的逆表示一个反向的变换
T − 1 = [ R T − R T t 0 T 1 ] T^{-1} = \begin{bmatrix} R^T & -R^Tt \\ 0^T & 1 \end{bmatrix} T−1=[RT0T−RTt1]
旋转矩阵的缺点
因此,使用旋转轴+旋转角来刻画旋转,该向量称之为旋转向量。
罗德里格斯公式
R = c o s θ + ( 1 − c o s θ ) n n T + s i n θ n ∧ R = cos\theta + (1-cos\theta) n n^T + sin\theta n^{\land} R=cosθ+(1−cosθ)nnT+sinθn∧
∧ \land ∧为向量到反对称的转换符(笔者也称之为矩阵化,反之解矩阵),其定位如下所示
a ∧ = [ 0 − a 3 a 2 a 3 0 − a 1 − a 2 a 1 0 ] a^{\land} = \begin{bmatrix} 0 & -a_3 & a_2 \\ a_3 & 0 & -a_1 \\ -a_2 & a_1 & 0 \end{bmatrix} a∧= 0a3−a2−a30a1a2−a10
其中 n n n为旋转轴。
θ = a r c c o s ( t r ( R ) − 1 2 ) \theta = arccos(\frac{tr(R)-1}{2}) θ=arccos(2tr(R)−1)
1、位于旋转轴上的向量在旋转后不发生改变,即
R n = n Rn=n Rn=n
2、旋转轴 n n n是矩阵 R R R特征值 1 1 1对应的特征向量
q = q 0 + q 1 i + q 2 j + q 3 k q = q_0 + q_1 i + q_2 j + q_3 k q=q0+q1i+q2j+q3k
假设某个旋转是围绕单位向量 n = [ n x , n y , n z ] T n=[n_x, n_y, n_z]^T n=[nx,ny,nz]T进行了角度为 θ \theta θ的旋转,这个旋转的四元数形式为
q = [ c o s θ 2 , n x s i n θ 2 , n y s i n θ 2 , n z s i n θ 2 ] q = [cos\frac{\theta}{2}, n_x sin\frac{\theta}{2}, n_y sin\frac{\theta}{2}, n_z sin\frac{\theta}{2}] q=[cos2θ,nxsin2θ,nysin2θ,nzsin2θ]
反之,亦可以从单位四元数中计算出对应的旋转轴与夹角
θ = 2 a r c c o s ( q 0 ) \theta = 2arccos(q_0) θ=2arccos(q0)
[ n x , n y , n z ] T = [ q 1 , q 2 , q 3 ] T / s i n ( θ / 2 ) [n_x, n_y, n_z]^T = [q_1, q_2, q_3]^T / sin(\theta/2) [nx,ny,nz]T=[q1,q2,q3]T/sin(θ/2)
四元数的定义可以写为如下形式
q = s + x i + y j + z k = [ s , v ] q = s + x i + y j + z k = [s, v] q=s+xi+yj+zk=[s,v]
v = [ x i , y j , z k ] v = [xi, yj, zk] v=[xi,yj,zk]
q a ± q b = [ s a ± s b , v a ± v b ] q_a \pm q_b = [s_a \pm s_b, v_a \pm v_b] qa±qb=[sa±sb,va±vb]
q a q b = s a s b − x a x b − y a y b − z a z b + ( s a x b + x a s b + y a z b − z a y b ) i + ( s a y b − x a z b + y a s b + z a x b ) j + ( s a z b + x a y b − y a x b + z a s b ) k \begin{split} q_a q_b &= s_a s_b - x_a x_b - y_a y_b - z_a z_b \\ & + (s_a x_b + x_a s_b + y_a z_b -z_ay_b)i \\ & + (s_ay_b - x_az_b + y_as_b + z_ax_b)j \\ & + (s_az_b + x_ay_b - y_ax_b + z_as_b)k \end{split} qaqb=sasb−xaxb−yayb−zazb+(saxb+xasb+yazb−zayb)i+(sayb−xazb+yasb+zaxb)j+(sazb+xayb−yaxb+zasb)k
或者
q a q b = [ s a s b − v a T v b , s a v b + s b v a + v a × v b ] q_a q_b = [s_as_b-v_a^Tv_b, s_av_b + s_bv_a + v_a \times v_b] qaqb=[sasb−vaTvb,savb+sbva+va×vb]
矩阵外积的性质如下所是
∣ ∣ q a ∣ ∣ = ( s a 2 + x a 2 + y a 2 + z a 2 ) ||q_a||= \sqrt{(s_a^2+x_a^2+y_a^2+z_a^2)} ∣∣qa∣∣=(sa2+xa2+ya2+za2)
∣ ∣ q a q b ∣ ∣ = ∣ ∣ q a ∣ ∣ ∣ ∣ q b ∣ ∣ ||q_a q_b|| = ||q_a|| ||q_b|| ∣∣qaqb∣∣=∣∣qa∣∣∣∣qb∣∣
q − 1 = q ∗ / ∣ ∣ q ∣ ∣ 2 q^{-1} = q^* / ||q||^2 q−1=q∗/∣∣q∣∣2
q q − 1 = q − 1 q = 1 qq^{-1}=q^{-1}q=1 qq−1=q−1q=1
( q a q b ) − 1 = q b − 1 q a − 1 (q_a q_b)^{-1} = q_b^{-1}q_a^{-1} (qaqb)−1=qb−1qa−1
q a ⋅ q b = s a s b + x a x b + y a y b + z a z b q_a \cdot q_b = s_a s_b + x_ax_b + y_ay_b + z_az_b qa⋅qb=sasb+xaxb+yayb+zazb
k q = [ k s , k v ] kq = [ks, kv] kq=[ks,kv]
假设一空间三维点 P = [ x , y , z ] ∈ R 3 P=[x,y,z] \in \mathbb{R^3} P=[x,y,z]∈R3,由轴角 n , θ n,\theta n,θ表示旋转
三维空间点用一个虚四元数表示为
p = [ 0 , x , y , z ] p = [0,x,y,z] p=[0,x,y,z]
用四元数表示旋转为
q = [ c o s θ 2 , n s i n θ 2 ] q=[cos\frac{\theta}{2}, nsin\frac{\theta}{2}] q=[cos2θ,nsin2θ]
乘积可以表示为
p ′ = q p q − 1 p'=qpq^{-1} p′=qpq−1
R = [ 1 − 2 q 2 2 − 2 q 3 2 2 q 1 q 2 − 2 q 0 q 3 2 q 1 q 3 + 2 q 0 q 2 2 q 1 q 2 + 2 q 0 q 3 1 − 2 q 1 2 − 2 q 3 2 2 q 2 q 3 − 2 q 0 q 1 2 q 1 q 3 − 2 q 0 q 2 2 q 2 q 3 + 2 q 0 q 1 1 − 2 q 1 2 − 2 q 2 2 ] R = \begin{bmatrix} 1-2q_2^2-2q_3^2 & 2q_1q_2-2q_0q_3 & 2q_1q_3+2q_0q_2 \\ 2q_1q_2+2q_0q_3 & 1-2q_1^2-2q_3^2 & 2q_2q_3-2q_0q_1 \\ 2q_1q_3-2q_0q_2 & 2q_2q_3+2q_0q_1 & 1-2q_1^2-2q_2^2 \end{bmatrix} R= 1−2q22−2q322q1q2+2q0q32q1q3−2q0q22q1q2−2q0q31−2q12−2q322q2q3+2q0q12q1q3+2q0q22q2q3−2q0q11−2q12−2q22