视觉SLAM十四讲|【一】三维空间刚体运动

视觉SLAM十四讲|【一】三维空间刚体运动

旋转矩阵

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)={RRn×nRRT=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=R1
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} [a1]=[R0Tt1]T[a1]
关于变换矩阵,其具有特殊的结构:左上角位旋转矩阵,右侧为平移向量,左下角位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×4RSO(3),tR3}

性质

求解该矩阵的逆表示一个反向的变换
T − 1 = [ R T − R T t 0 T 1 ] T^{-1} = \begin{bmatrix} R^T & -R^Tt \\ 0^T & 1 \end{bmatrix} T1=[RT0TRTt1]

旋转向量与欧拉角

旋转矩阵的缺点

  • S O ( 3 ) SO(3) SO(3)用9个量表示3个自由度上的变换, S E ( 3 ) SE(3) SE(3)用16个量表示了6个自由度上的变换,存在冗余。
  • 旋转矩阵自带约束:必须是个正交矩阵且行列式为1,约束会使得求解更加困难。

因此,使用旋转轴+旋转角来刻画旋转,该向量称之为旋转向量

旋转向量到旋转矩阵

罗德里格斯公式
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θ+(1cosθ)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= 0a3a2a30a1a2a10
其中 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对应的特征向量

四元数(Quaternion)

定义

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=sasbxaxbyaybzazb+(saxb+xasb+yazbzayb)i+(saybxazb+yasb+zaxb)j+(sazb+xaybyaxb+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=[sasbvaTvb,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 q1=q/∣∣q2
q q − 1 = q − 1 q = 1 qq^{-1}=q^{-1}q=1 qq1=q1q=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=qb1qa1

数乘与点乘

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 qaqb=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=qpq1

四元数转旋转矩阵

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= 12q222q322q1q2+2q0q32q1q32q0q22q1q22q0q312q122q322q2q3+2q0q12q1q3+2q0q22q2q32q0q112q122q22

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值