VINS分析(上)

VINS分析(上)

28 November, 2017
Ling Bao

1 VINS源码分析

1.1 配置文件

  包括:共有参数(ROS相关)相机矫正参数IMU和相机之间的外部参数特征跟踪参数优化参数IMU参数回环控制参数

1.2 VINS系统分析

[1] 港科VINS-Mono系统学习(1)
[2] 港科VINS-Mono系统学习(2) 预处理
[3] 港科VINS-Mono系统学习(3) 初始化
[4] 港科VINS-Mono系统学习(4) 里程计
[5] 港科VINS-Mono系统学习(5) 闭环检测
[6] VINS(一)简介与代码结构
[7] VINS(二)Feature Detection and Tracking
[8] imu标定 imu_tk
[9] VINS(三)IMU预积分
[10] VINS(四)初始化与相机IMU外参标定
[11] VINS(五)非线性优化与在线标定调整
[12] VINS(六)边缘化
[13] VINS(七)estimator_node 数据对齐 imu预积分 vision
[14] VINS(八)初始化
[15] VINS-Mono代码分析与总结(一) IMU预积分
[16] IMU误差模型和校准


2 论文分析

2.1 总体综述

  第一部分 传感器测量数据处理: 实现每帧视频的Harris角点(特征点), 并利用KLT光流法实现特征点跟踪。
  
  第二部分 初始化: 包括两个核心(纯视觉SFM、视惯对齐); 初始化的参数包括(Pose, Velocity, Gravity Vector, Gyroscope Bias, 3D Feature Position)。
  
  第三部分 后端Local BA: MU误差+重投影误差+先验误差的多目标非线性优化调整, 关键概念(滑动窗口、关键帧、 ceres 非线性优化),重定位。
  
  第四部分 回环检测与位姿图优化: fast特征提取+BRIEF描述子、利用BoW的闭环检测,基础矩阵+RANSAC的位姿估计、4自由度Psoe-Graph优化。
  
VINS系统架构图


2.2 符号定义

()w – word frame, gravity vector is along with z axis;

()b – body frame is aligned with IMU frame;

()c – camera frame.

R – 旋转矩阵, 用于与向量相乘

q – 四元数, 用于状态描述

qbw – Rotation from body frame to world frame

pbw – Translation from body frame to world frame

PbK+1bk – Covariance Matrix corresponding to pbw

bk – body frame while taking the kth image.

ck – camera frame while taking the kth image.

– Two quaternion multiplication operation.

gw=[0,0,g] – Gravity vector in the world frame.

ŵ t,â t – body frame IMU原始测量值,角速度和加速度.

ba,bw – body frame受加速度偏差、陀螺仪偏差及噪音的影响值.

na,nw – body frame受加速度偏差、陀螺仪偏差及噪音的影响值.


2.3 测量处理

  功能概要:新帧特Harris征点检测与连续帧间特征点KLT光流跟踪;IMU连续帧间预积分,同时预积分受bias与noise影响,因此在考虑bias条件下实现预积分并进行优化(对于低成本IMU)。
  
  视觉处理前端:(1)每个视频帧的特征点最小保持在100~300个,同时通过设置特征点之间的最小距离使得特征点分布成为均匀分布;将特征点归一化,并利用RANSAC进行Outlier点去除。(2)关键帧选择,两个准则(平均视差–利用IMU传递结果对旋转矩阵进行补偿、跟踪质量–跟踪的特征点数量)。
  
   IMU预积分:改进:增加了bias纠正以及动态连续时间内的noise传递;除此之外,IMU预积分的结果将被用于初始化程序的校正初始化状态。
  
   考虑时间点 k,k+1 ,对应的body frame是 bk,bk+1 ,时间间隔为 Δtk ,那么有:

pwk+1=pwk+vwbkΔtk+t[k,k+1](Rwt(â tbat))dt2(1)

vwbk+1=vwbk+t[k,k+1](Rwt(â tbat))dt(2)

qbwk+1=qbwkt[k,k+1]12Ω(ŵ tbwt)qbktdt(3)

Ω(w)=[[w]×wTw0](4)

[w]×=0wzwywz0wxwywx0(5)

   从公式 (1)(5) 可以看出IMU状态传递需要用到 bk 旋转矩阵、位置以及速度信息。
  
   在IMU传递过程中,reference frame变为局部body frame,采用与线性加速度 â  和角速度 ŵ  相关的部分:
Rbkwpbwk+1=Rbkw(pwbk+vwbkΔtk12gwΔt2k)+αbkbk+1(6)

Rbkwvwbk+1=Rbkw(vwbkgwΔtk)+βbkbk+1(7)

qbkwqwbk+1=γbkbk+1(8)

   其中,
αbkbk+1=t[k,k+1]Rbkt(â tbat)dt2(9)

βbkbk+1=t[k,k+1]Rbkt(â tbat)dt(10)

γbkbk+1=t[k,k+1]12Ω(ŵ tbwt)γbkbtdt(11)

   γbkbk 是开始时单位四元数;从 (9)(11) 可以由 bk 作为基准帧的IMU测量获得; αbkbk+1 , βbkbk+1 , γbkbk+1 仅与 bk bk+1 间的偏差有关,假设初始时刻 ba,bw 为0;当所估计的偏差值改变比较小时,调整 (9)(11) (有关偏差的一阶近似),否则进行重传递 (6)(8) ;该方法可以节省大量时间。
  
   针对离散情况,各种数值积分方法可以使用,如 Euler, Mid-point, RK4积分等;本论文中使用 Euler积分进行说明,而程序实现中使用 Mid-point积分
  
   开始时 αbkbk+1 , βbkbk+1 0, γbkbk+1 为单位四元数,代表单位旋转矩阵;此时的 α,β,γ 为:
α̂ bki+1=α̂ bki+β̂ bkiδt+12R(γ̂ bki)(â ibai)δt2(12)

β̂ bki+1=β̂ bki+R(γ̂ bki)(â ibai)δt(13)

γ̂ bki+1=γ̂ bki112(ŵ ibwi)δt(14)

   其中, i,i+1 对应与 [k,k+1] 的两个IMU测量; δt i,i+1 对应的时间间隔。
  
   协方差传递处理,假设加速度计、陀螺仪的测量噪音满足 Gaussian white noise,即: na(0,σ2a) , nw(0,σ2w) ;加速度、陀螺仪偏差满足随机游走分布,该分布的相邻项的差满足 Gaussian white noise,即: nba(0,σ2ba) nbw(0,σ2bw)
b˙at=nba,b˙wt=nbw(15)

   γbkt 受扰动误差项影响,定义如下:
γbktγ̂ bkt112δθbkt(16)

   从 (9)(15) 可以推导出误差项的连续时间线性动态,如下:
δα˙bktδβ˙bktδθ˙bktδb˙atδb˙wt=00000I00000Rbkt[â tbat]×[ŵ tbwt]×000Rbkt00000I00δαbktδβbktδθbktδbatδbwt+

0Rbkt00000I00000I00000Inanwnbanbw=Ftδzbkt+Gtnt(17)

   []× 代表反对称操作; Pbbkk+1 可以利用一阶离散时间协方差更新进行计算,初始 Pbbkk=0 ,如下所示:
Pbbkb+\delatt=(I+Ftδt)Pbkt(I+Ftδt)T+(Gtδt)Q(Gtδt)T,t[k,k+1](18)

   其中 δt 是连续两帧IMU测量的时间间隔, Q 是噪音对角协方差矩阵(σ2a,σ2w,σ2ba,σ2bw)
  
   与此同时, zbkk+1 的一阶Jacobian矩阵 Jbk+1 也可以迭代计算,初始Jacobian矩阵是 Jbk=I ,如下所示:
Jt+δt=(I+Ftδt)Jt,t[k,k+1](19)

   那么 αbkbk+1 , βbkbk+1 , γbkbk+1 的偏差一阶近似如下:
αbkbk+1α̂ bkbk+1+Jαbaδbbak+Jαbwδbwk(20)

βbkbk+1β̂ bkbk+1+Jβbaδbbak+Jβbwδbwk(21)

γbkbk+1γ̂ bkbk+1112Jβbwδbwk(22)

   Jαba Jbk+1 中对应于 δαbkbk+1δbak 的子块; JαbwJβbaJβbwJβbwγbkbk+1 仅受 bwk 影响,当偏差估计发生轻微改变时,使用 (22) 进行预积分矫正来近似代替重传递。

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值