视觉惯性单目SLAM (二) 算法基础知识

1. 基本概念

  • 视觉惯性:Visual-Inertial (VI)
  • VI ORB-SLAM:视觉惯性ORB-SLAM
  • VI ORB-SLAM输入:
    • IMU数据(用B表示,加速度: aBωB ;时间间隔: t
    • 单目图像
    • 在图像中提取KeyPoints时,对像素坐标进行畸变校正,即此KeyPoint坐标可与投影点坐标进行匹配
  • IMU数据(加速度和角速度)的测量除了被传感器噪声影响之外,还被缓慢变化的加速度(Accelerometer)偏差( ba )和陀螺仪(Gyroscope)偏差( bg
  • 加速度:受重力加速度( gw )影响,所在在计算运动时,需要减去重力加速度的作用。
  • SO(3) :The group of rotations about the origin in 3 dimensions
  • SE(3) :The group of rigid body motions (comprising rotations and translations) in 3 dimensions

2. 向量

  • 向量的运处可以由坐标运算来表达;下面的a、b都为列向量。

2.1 向量加减法

a±b=i=03(ai±bi)

2.2 向量内积/点乘(结果为实数)

ab=aTb=i=03aibi=|a||b|cos(a,b)

2.3 向量外积/叉乘(结果为向量)

a×b=ia1b1ja2b2ka3b3=a2b3a3b2a3b1a1b3a1b2a2b1=0a3a2a30a1a2a10b

2.4 向量欧氏长度(向量2范数)

  • x :为列向量
  • ||x||:向量欧氏长度(向量2范数)
  • ||x||=(xTx)1/2

3. 特殊矩阵

3.1 旋转矩阵 (特殊正交群)

  • R是一个正交矩阵( RRT=I )
  • R的行列式为+1 ( det(A)=+1
    SO(n)={RRn×n|RRT=I,det(A)=1}

3.2 对称矩阵 (Symmetric Matrix)

  • 对称矩阵: A=AT
  • 若A是对称矩阵,则有:
    A=UDUT

    • U:正交矩阵
    • D:对角矩阵
    • 实对称矩阵:有实特征值;且特征向量正交
  • Jacobismethod

3.3 反对称矩阵 (Skew-Symmetric Matrix)

  • 反对称矩阵: A=AT
  • 若S是反对称矩阵,则有:
    S=UBUT

    • B:块对角矩阵,其形式为:
      diag(a1Z,a2Z,...,amZ,0,...,0),whereZ=[0110]
    • S的特征向量都是纯虚数,奇数阶的反对称矩阵是奇异的(不可逆)
  • :若 a=(a1,a2,a3)T 是一个3维列向量, 其反对称矩阵为:
    [a]×=0a3a2a30a1a2a10

    • a :是3×1的列向量
    • [a]× :是 3×3 的反对称矩阵
    • 矩阵 [a]× :是奇异矩阵(不可逆)
  • 向量叉乘与反对称矩阵的关系
    a×b=ab=ia1b1ja2b2ka3b3=a2b3a3b2a3b1a1b3a1b2a2b1=0a3a2a30a1a2a10b=[a]×b=(aT[b]×)T

a×b=ab=a2b3a3b2a3b1a1b3a1b2a2b1=0a3a2a30a1a2a10b=[a]×b=(aT[b]×)T

4. 3D坐标系

4.1 坐标系旋转

  • 灰色的为坐标系1 ( V1=(322)T ),黑色的为坐标系2 ( V2=(3.540.7072)T $)
    这里写图片描述
  • 坐标系2的x轴和y轴相对于坐标系1有旋转,其旋转矩阵为:
    R=0.7070.70700.7070.7070001

V2=RV1=0.7070.70700.7070.7070001322=3.540.7072

  • 旋转矩阵 R 的直观理解:

    • R的列对应于单位向量

    • 此单位向量的的值为坐标系1的对应轴的单位向量在坐标系2中值
    • R 的第一列:为坐标系1中点(100)T在坐标系2中的值
    • R 的第二列:为坐标系1中点(010)T在坐标系2中的值
    • R 的第三列:为坐标系1中点(001)T在坐标系2中的值
    • 只有满足以下要求的 3×3 矩阵( R )才能表示坐标轴旋转:

      • R的列向量的长度(2-范数)都为1
      • R的列向量相互正交(即内积为0)
      • R的行列式为1(detA=1

      • 4.2 坐标系平移

        • 灰色的为坐标系1 ( V1=(322)T ),黑色的为坐标系2 ( V2=(112)T
          这里写图片描述
        • V2=V1+t t 为坐标系1的原点在坐标系2中的位置(210)T

        4.3 坐标系旋转与平移的组合

        • 灰色的为坐标系1 ( V1=(322)T ),黑色的为坐标系2 ( V2=(1.41402)T
          这里写图片描述
          R=0.7070.70700.7070.7070001,t=2.1210.7070V2=RV1+t

        4.4 齐次坐标系

        • 上面的旋转和平移需要用一个方程来表示: V2=RV1+t
        • :可把坐标系的旋转和平移用一个矩阵来表示
          T4×4=[R3×301×3t3×111×1]T14×4=[RT3×301×3RT3×3t3×111×1]0.7070.707000.7070.7070000102.1210.707013221=1.414021

        5. 李群与李代数(Lie Group and Lie Algebra)

        5.1 引入李群与李代数的原因

        • 三维世界刚体运动的描述:
        • 除了 之外, 还需要对其进行
        • 旋转矩阵自身带有约束( 1 ),作为优化变量时,会引入额外的约束,使优化变得困难
        • 李代数上可以变为

        5.2 特殊正交群与特殊欧氏群

        • 三维旋转矩阵构成了 (SpecialOrthogonalgroup)
          SO(3)={RR3×3|RRT=I,det(R)=1}
        • 三维变换矩阵(旋转+平移)构成了 (SpecialEuclideangroup)
          SE(3)={T=[R0Tt1]R4×4|RSO(3),tR3}
        • 群(Group):是一种集合( A )加上一种运算的代数结构,此运算满足以下性质(凤姐咬你):
          • 封闭性:a1,a2A,a1a2A
          • 结合律: a1,a2,a3A,(a1a2)a3=a1(a2a3)
          • 幺元: a0A,s.t.aA,a0a=aa0=a
          • 逆: aA,a1A,s.t.aa1=a0
        • 旋转矩阵集合+矩阵乘法:构成群(旋转矩阵群: SO(3) (3维特殊正交群))
        • 变换矩阵集合+矩阵乘法:构成群(变换矩阵群: SE(3) (3维特殊欧氏群))
        • 5.3 李群(Lie Group)(位于矩阵空间)

          • 李群( SO(3) ):三维空间旋转矩阵的集合
          • 李群中的旋转矩阵有9个值,所以可以把 SO(3) 看作9维空间
            这里写图片描述

            • 上图是SO(3)表面(流形)(surface (manifold))的一部分
            • 绿点:表示单位矩阵
            • 蓝点:绕 x 轴旋转了10度
            • 红点:绕z轴旋转了10度
          • SO(3) 中,如何表示单位矩阵附近的R矩阵?

            R=1bcb1fcf1

            • b,c,f :无穷小
            • 此矩阵有3个参数,因此在单位矩阵附近的矩阵看起来像一个三维空间
            • 此矩阵的来由:
              这里写图片描述
            • 把R表示为在单位矩阵附近的形式
              R=100010001f000001010+c001000100b010100000
            • α1=f,α2=c,α3=b ,则有:
              R=I+α1G1+α2G2+α3G3(α1,α2,α3)G1=000001010G2=001000100G3=010100000
          • G1,G2,G3 :叫做单位矩阵附近矩阵的导数分量,即生成矩阵(Generator Matrices)。

          • 李群的性质:

            • 具有连续(光滑)性质的群
            • 既是群,也是流形
            • 直观上看,一个刚体能够连续地在空间中运动,所以 SO(3) SE(3) 都是李群
            • ,即无法进行优化

          5.4 正切空间和导数:李代数(Lie Algebra)(位于向量空间)

          • identitymatrix
          • 向量空间+双线性运算 = 李代数 (Lie algebra)
          • 生成矩阵(Generator Matrices( G1G2G3 )):是此向量空间的基
          • G1,G2,G3 变为非无穷小,则它们创建了一个3维平面,此平面与 SO(3) 正切于单位向量,下图是一个二维表示:
            这里写图片描述
            • 红色 R(t) :表示流形表面上的路径
            • 橙色 dR/dt :表示当它经过单位向量时,此路径对变量t的导数
            • 正切空间:可看作 SO(3) 在单位向量处可能的导数集合
          • 重点:若旋转矩阵R是变量 t (如:弧度)的函数,则当t取一定的值时 R(t)=I (如绿点处),在此点 dR/dt 必然位于正切空间上,且是生成矩阵( G1G2G3 )的线性组合:
            dRdtR=I=i3αiGi
          • 举例说明:若变量t是绕x轴旋转的弧度值,则有:

            R=1000cos(t)sin(t)0sin(t)cos(t)

            • R t的导数为:
              dRdt=0000sin(t)cos(t)0cos(t)sin(t)
            • 当t=0时,R=I,则导数为:
              dRdt|t=0=000001010=G1
            • G1 :对应绕 x 轴的旋转
            • G2 :对应绕 y 轴的旋转
            • G3 :对应绕 z 轴的旋转
          • 李代数:与李群对应的一种结构,位于向量空间。

            • 记作: so(3)se(3)
            • 李代数是李群单位矩阵处的正切空间
          • 李代数的定义:
            • +线+
            • 组成:向量集合V + 数域F + 二元运算符[ , ] (叫做李括号,表示两个元素的差异)
          • 李代数的通用性质:
            • 封闭性: X,YV,[X,Y]V
            • 双线性: X,YZV,a,bF[aX+bY,Z]=a[X,Z]+b[Y,Z][Z,aX+bY]=a[Z,X]+b[Z,Y]
            • 自反性: XinV,[X,X]=0
            • 雅可比恒等式: X,Y,ZinV,[X,[Y,Z]]+[Y,[Z,X]]+[Z,[X,Y]]=0
            • 李括号具有反对称性(anit-symmetric): X,YinV,[X,Y]=[Y,X]
          • so(3)的性质(旋转向量):
            • so(3)={rR3,S=[r]×R3×3}S=[r]×=0r3r2r30r1r2r10
          • se(3)的性质(刚体变换:旋转+平移向量)
            • se(3)={e=[tr]R6,tR3,rso(3),[e]×=[[r]×0Tt0]R4×4}
            • se(3)组成:3个平移分量+3个旋转分量
            • 其旋转分量与so(3)相同
            • 平移是普通的向量,但不是SE(3)上的平移分量
            • [e]× 不是反对称矩阵,只是保留了相同的记法
          • 把李代数理解为向量形式或矩阵形式都可以,但向量形式更加自然些

          5.5 指数映射

          • A 是生成矩阵(导数分量)的线性组合(很明显,A反对称矩阵):
            A=i=03αiGi
          • ex 的泰勒展开式:
            ex=1+x+12x2+16x3++1n!xn
          • eA 泰勒展开式:
            M=eA=I+A+12A2+16A3++1n!An

            • M以这种方式计算,它必定是 SO(3) 的成员,即M为一个旋转矩阵
            • 任何SO(3)中的成员,都能以这种方式进行计算
          • 为什么 M=eA 必定是 SO(3) 的成员
            eA=limn(I+1nA)n

            • 当n无穷大时, 1nA 变为无穷小,因此 I+1nA 成为 SO(3) 的成员(
            • 因为: R=I+α1G1+α2G2+α3G3(α1,α2,α3)
            • 次数越高, eA 越接近R,如下图所示:
              这里写图片描述
            • 举例说明:
              这里写图片描述
          • 结论:
            • 指数映射:建立了在单位矩阵处的导数(如速度)与群 SO(3)SE(3) 成员间的关系,它可以不同的方程进行表示:
              A=iαiGi()dRdt=ARR(0)=IR(t)=etAR(1)=eA
          • dRdt=AR 的由来:
            • 任意旋转矩阵满足:
              RRT=I
            • 考虑R随着时间变化:
              R(t)R(t)T=I
            • 两侧对时间求导:
              dRdtR(t)T+R(t)(dRdt)T=0
            • 整理得:
              dRdtR(t)T=((dRdt)R(t)T)T
            • 可以看出这是一个反对称矩阵,记:
              dRdtR(t)T=A
            • 两侧右乘R(t),得:
              dRdt=AR
            • 可以看到,对R(t)求导后,左侧多出一个反对称矩阵A
              A=0a3a2a30a1a2a10

          5.6 SO(3)的生成与叉乘(Corss Product

          • v1×v2=abc×def=[a]×b=0cbc0aba0def=bfcecdafaebd

          • [a]×=0cbc0aba0=aG1+bG2+cG3

          • 这意味着 SO(3) 中旋转矩阵可表示为: R=e[V]×
          • 其参数为向量 V 中的元素,这3个参数在向量V与旋转矩阵 R 间建立了一个漂亮的关系
          • 基于此,旋转矩阵的直观理解:
            • 旋转轴:此旋转以向量V为旋转轴
            • 旋转角度:为向量 V 的长度
            • 旋转方向:沿着向量方向看,顺时针方向;沿着向量相反的方向看,逆时针方向;当V=0时,无旋转轴, 且旋转角度为0,即没有旋转
          • VR 的关系的直观解释
            • [V]× :是在单位矩阵处的导数(即: dRdt|R=I=A=3iαiGi=[V]× ),且在单位时间后产生了旋转 R
            • [V]×:可被解释为产生一个速度向量域(velocity vector field),在空间的每一个点有一个速度向量(velocity vector)
            • 点P处的向量域(vector field):被定义为: [V]×P
            • 在旋转轴 V 上的点没有速度,因为V×V=0
            • 在旋转轴 V 外的点有速度,它与向量V的长度与 [V]×P 的长度成正比
            • 速度域如下图所示(由 [V]× 建立的速度域形成一个围绕V的圆形旋转)
              这里写图片描述
          • 5.7 SE(3)的生成

            • SE(3)表示欧拉变换(刚体变换),在三给空间中形成了6维流形
            • 它有3个平移生成矩阵和3个旋转生成矩阵
              这里写图片描述
            • G1,G2,G3 :分别为沿x,y,z方向的平移生成矩阵
            • G4,G5,G6 :分别为绕x,y,z轴旋转的旋转生成矩阵
            • 沿x方向的平移+绕z轴的旋转=沿y方向移动旋转中心
              这里写图片描述

            5.8 李括号(Lie bracket)

            • 李代数:在群的单位矩阵处的正切空间中的向量
            • 李括号:李括号=李代数+双线性反对称运算
            • 指数映射:把正切空间->(映射到)群中的元素,这样可以抓住群的局部结构
            • AB 为正切空间中的矩阵(如为生成矩阵的线性组合),则有:
              eAeBeBeAABBA
            • AB BA 的差异叫做Commutator(换位子),即李括号, 表示为[A, B]:
              [A,B]=ABBA
            • 李括号是反对称的:
              [A,B]=[B,A]
            • 生成矩阵间的关系:
              [G2,G1]=[G1,G2]=G3[G3,G1]=G2[G2,G3]=G1

            5.9 李代数求导与扰动模型

            • 在SLAM实际应用中,需要对位姿进行估计
            • 李群上只有乘法,没有加法,从而无从定义导数
            • 能否利用李代数上的加法,定义李群元素的导数?基本问题是:当在李代数中做加法时,是否等价于在李群上做乘法:
              eA1eA2=eA1+A2
              :此等式当 A1A2 为矩阵时,成立吗?
            • 根据BCH线性近似,可得:

            1)左乘雅可比:

            Jl=J=sinθθI+(1sinθθ)aaT+1cosθθ[a]×

            J1l=θ2cosθ2I+(1θ2cosθ2)aaTθ2[a]×

            2)右乘雅可比:

            Jr(v)=Jl(v)

            3)在李群上左乘小量时,李代数上的加法相差左雅可比的逆:
            e[v]×e[v]×=e[v+J1l(v)v]×

            4)李代数上进行小量加法时, 相当于李群上左乘一个带左雅可比的量,或右乘一个带右雅可比的量
            e[v+v]×=e[Jlv]×e[v]×=e[v]×e[Jrv]×

            - 通过BCH线性近似,可以定义李代数上的导数
            -
            (Rp)R

            - 由于R没有加法,导数无法定义
            - 存在两种解决办法
            - R对应的李代数上加上小量,求相对于小量的变化率( 导数模型
            - R
            - 导数模型
            - 按照定义可得:
            (Rp)R=(e[v]×p)v=limv0e[v+v]×pe[v]×pv=[Rp]×Jl

            - 结果中含有左乘雅可比,比较复杂
            - 扰动模型
            - 左乘小量,令其李代数为0
            (Rp)v=limv0e[v]×e[v]×pe[v]×pvlimv0(1+[v]×)e[v]×pe[v]×pv=limv0[v]×Rpv=limv0[Rp]×vv=[Rp]×

            - 最终结果更为简洁,所以更实用

            5.10 总结

              • 由于 AT=A ,所以它主对角线元素必为0,而非对角线元素则只有三个自由度。
              • 可以把反对称矩阵对应到一个三维向量
              • 用途:它与叉积兼容,可以直接把矩阵与任意向量的乘积 Ab 写成 a×b ,即 Ab=a×b
            • SO(3)3

              • SO(3):三维旋转群,其元素为旋转矩阵
              • 每对旋转矩阵求一次导数,只需左乘一个 即可
              • 由于 反映了R的导数性质,故称它在SO(3)的正切空间(tangent space)上
            • so(3)33

              • so(3):是一个由三维向量(即 )组成的集合,每个向量对应到一个反对称矩阵,可以表达旋转矩阵的导数
              • 反映了R的导数性质
              • 旋转轴:旋转向量的方向为旋转轴
              • 旋转弧度:旋转向量的长度为旋转的弧度
              • 描述了李群 SO(3) 中元素的局部性质
              • [a,b]=ABBA (A、B分别为向量a、b 对应的反对称矩阵)
              • [A,B]=[B,A]
              • aaT=AA+||a||2I3×3
            • (so(3)SO(3))()

              • R(t)=etA=e[V]×A[V]×
                1)r()θ=||r|| 
                2)rr=1θr

                3)e[V]×=eθ[r]×=I+θ[r]×+12!θ2[r]2×++1n!θn[r]n×=rrT+(θ13!θ3+15!θ5+)[r]×(112!θ2+14!θ4)[r]2×=[r]2×+I+sin(θ)[r]×cos(θ)[r]2×=(1cos(θ))[r]2×+I+sin(θ)[r]×=cos(θ)I+(1cos(θ))rrT+sin(θ)[r]×

              • 4) 又根据罗德里格斯(Rodrigues)公式 R=cos(θ)I+(1cos(θ))rrT+sin(θ)[r]×

              • (5)所以结论为:

                R=eθ[r]×=e[V]×

              • 每个SO(3)中的元素,都可以找到so(3)一个或多个元素与之对应

            • so(3)SO(3)

              • 三维旋转表示: 除了采用旋转矩阵描述外,还可以用旋转向量来描述
              • 旋转向量的长度(模)表示绕轴逆时针旋转的角度(弧度)
              • :可以通过 Rodrigues 变换进行转换
                1)r()θ=||r||2)rr=1θr3)RR=cos(θ)I+(1cos(θ))rrT+sin(θ)[r]×4)OpenCVintcvRodrigues2(constCvMatsrc,CvMatdst,CvMatjacobian=0);

              • 1)弧度:

                θ=arccos(tr(R)12)

                2)旋转轴:
                Rn=n

                3)旋转向量:
                v=θn

              • 旋转向量可以视为旋转矩阵导数,指导如何在旋转矩阵中进行微积分运算

              • 旋转矩阵:9个自由度,有正交性和行列式值为+1的约束
              • 旋转向量:3个自由度,没有约束
              • 旋转向量与旋转矩阵:只是表达方式的不同,但表达的东西可以是同一个
            • +
              这里写图片描述

            6. 雅可比矩阵与海森矩阵

            6.1 雅可比矩阵(Jacobian Matrix)

            • Reduced Jacobian matrix :降阶雅可比矩阵

            • :即一阶导数矩阵( )

            • :它体现了一个可微方程在给定点的最优线性逼近。因此,雅可比矩阵类似于多元函数的导数。

            • :用于向量微积分

            • :是函数的一阶偏导数以一定方式排列成的矩阵

            • :多个函数(m个)+多个变量(n个) (RnRm)

            • :假设某函数从 Rn 映射到 Rm , 其雅可比矩阵是从 Rn Rm 的线性映射,其重要意义在于它表现了一个多变量 最佳线性逼近。因此,雅可比矩阵

            • 举例:假设 F:RnRm 是一个从 n 维欧氏空间映射到到m维欧氏空间的函数。这个函数由 m 个实函数组成: y1(x1,...,xn),...,ym(x1,...,xn)。这些函数的偏导数(如果存在)可以组成一个m行n列的矩阵( m×n ),这就是所谓的雅可比矩阵:

              y1x1ymx1y1xnymxn


            • JF(x1,,xn),(y1,,ym(x1,,xn

              1F
              2(x1,,xn)
              3JF(x1,,xn) :是一个线性映射(矩阵的本质就是线性变换),表示向量函数F在P点 (x1,,xn) 处的Jacobian矩阵(一阶导数矩阵)

              • 如果 p Rn 中的一点, F p点可微分,根据高等微积分, JF(p) 是在这点( p )的导数。
              • 在此情况下,JF(p)这个线性映射即 F 在点p附近的最优线性逼近,也就是说当 x 足够靠近点p时,我们有:
              • F(x)F(p)+JF(p)(xp)

            6.2 海森矩阵(Hessian Matrix)

            • 海森矩阵用途:被应用于牛顿法解决的大规模优化问题
            • 海森矩阵变量与函数一个函数+多个变量 (RnR)
            • 海森矩阵定义:(Hessian matrix 或 Hessian)是一个多变量实值函数的二阶偏导数组成的方块矩阵,假设有一实数函数 f(x1,x2,...,xn) ,如果 f 所有的二阶偏导数都存在,则海林矩阵H为:
              这里写图片描述
            • x=(x1,x2,...,xn)
            • 当函数 f 二阶连续可导时,Hessian矩阵H在临界点x0上是一个 n×n 阶的对称矩阵。
              • 当H是正定矩阵时,临界点 x0 是一个局部的极小值。
              • 当H是负定矩阵时,临界点 x0 是一个局部的极大值。
              • H=0,需要更高阶的导数来帮助判断。
              • 在其余情况下,临界点 x0 不是局部极值。

            6.3 雅可比矩阵与海森矩阵的比较

            矩阵属性雅可比矩阵 (Jacobian Matrix)海森矩阵 (Hessian Matrix)
            用途1)关节型机器人:关节空间微小运动 dθ 与手部作业空间微小位移dY的关系
            2)非线性最小二乘
            yy
            方程函数向量F由m个实值函数组成:
            y1=f1(x1,,xn)y2=f2(x1,,xn)ym=fm(x1,,xn)
            也可记为: Y=F(X)
            Y=(y1,,ym)T
            F=(f2,,fm)T
            X=(x1,,xn)T
            只有一个实值函数组成:
            y=f(x1,,xn)
            X=(x1,,xn)
            实值函数个数 m (即m个n元素函数 ) 1 (即1个n元函数)
            微分方程组
            dy1dym=f1x1fmx1f1xnfmxndx1dxn

            dY=JF(X)dX线,
            定义
            JF(X)=f1x1fmx1f1xnfmxn
            2fx1x12fx2x12fxnx12fx1x22fx2x22fxnx22fx1xn2fx2xn2fxnxn
            导数阶数一阶偏导数二阶偏导数
            矩阵类型 m×n (一般不为方阵) n×n (方阵)
            映射
            RnRmJYX线
  • 10
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值