天天看点

Ysfyuan的VINS-Fusion学习之路Ysfyuan的VINS-Fusion学习之路

Ysfyuan的VINS-Fusion学习之路

刚刚接触到SLAM(同时定位与建图)的初学者我想一定会被其强大的应用前景所打动。站在巨人的肩膀上可以看到更远的风景 ,我认为SLAM的应用在未来不仅是狭隘的机器人智能领域,而是物联网这个几乎可以明确限定的未来发展方向,不止是改变人们的交通出行方式和工作方式,而是改变人类的思考和生活。 常规工作可能会被替代,出行方式和途径可能会在想法出现的一刹那被规划好。

  • SLAM
  • 视觉惯性里程计(IMU+相机)
  • VI ORBSLAM和VINS-Fusion差异分析
  • VINS-Fusion系统实现学习
  • 现有成果重现分析

1. SLAM

  • SLAM过程个人拆分理解
  • 可能在磁悬浮真空管道中的定位建图应用看不出来SLAM的运用前景,但是我讲一 个故事来说明它的部分作用,比如一个小孩子在没有去过的商场和爸妈走散了,那么他 要怎么找到父母呢,很显然自己蒙头找方向不是那么现实,但是如果他能利用电话 或者信息将自己周围的地表门店位置以及自己所在的路线传递给父母,我想应该问 题就显得没那么紧迫了。实际上,幼儿园的小朋友不一定可以完成采集周围信息的 过程,这时就需要志愿者来帮助。
  • 那么这个志愿者的工作实际上就类似于安装在没有定位功能机器上SLAM的工作,利用带有SLAM的机器先来熟悉一遍环境,将路标和路径信息提前录入,那么当其他的机器在进入这个区域时,即使它没有其他传感器,也可以在此前SLAM记录的历史信息中明确自身的定位。或者说减少了后续机器进去区域测速定位时的所需要的计算量。
  • 实际上,SLAM的真正应用是不限环境和条件的无人驾驶或者说无轨道列车驾驶。但是它想要实现不预先建图,直接面对物质环境的建图与定位则需要依赖强大的计算能力和各类模式识别的深度学习算法。在室外定位建图领域可能GPS要更加成熟一些,但是未来更精确更细微的定位和建图,SLAM可能才是最优选择。另一方面,室内的定位建图则完全是SLAM的市场,从智能扫地机器人到物流传输机器人。
  • SLAM需要解决的问题拆分:首先按照它的名字将它拆分成定位和建图。

    建图即是在一个未知环境中确定周围环境中的点的位置,并完成记录。

    定位则是在未知环境中确定自己的位置,在确定好一个相对坐标后,我们需要做的就是发现并且确定自身与周围环境的相对位置。

  • 可能光看这两个任务会感觉没有大问题,在2D环境中,通过周围的两个已知点和辅助三角形的知识我们便可以完成自身与两点的定位。但是,实际上工程应用会带来许多理论中没有考虑到的问题,首先是自身与已知点之间距离测试就不准确,会得到多个测量值,其次在运用时自身的运动模型不是简单完美的直线匀速运动。这些传感器的测量误差是不可避免的,我们可以利用许多常用的估量模型来得到较优的值。最主要的问题还是来源于模型的不确定性,在不同的环境下需要不同的模型来进行值的选取和估算。而环境因素又是不可控的,因此SLAM需要更加迅速的反应和计算能力去应对环境的不断变化。

2. VIO视觉惯性里程计

视 觉 传 感 器 与 惯 性 传 感 器 的 融 合 视觉传感器与惯性传感器的融合 视觉传感器与惯性传感器的融合

  • 硬件上 VIO使用相机和六轴螺旋仪
  • 相机负责产生图片
  • 六轴陀螺仪负责产生加速度(三轴)和角速度(三轴)
  • 一方面,在静态情境下,相机传感器得到的数据基本没有飘移,但是动态环境下则会出现明显误差;另一方面,IMU惯性里程计摆放不动也会有较大的数据漂移,而它在运动状态时的数值估计却往往有较好的效果。显而易见,这两者存在功能上的互补性。
  • 而且,在定位的过程中,单凭视觉信号(图片和视频)我们很难判断出是自身在运动还是周围的环境在运动;加入IMU之后,很大程度上我们可以缓解上面的问题。
  • 相机的采样频率一般为 30 Hz,IMU 的采样频率则高达 100 Hz – 1000 Hz,采样频

    率不同导致二者间数据获取频率的差异,此时我们就需要利用预积分来实现VIO,处理相邻关键帧中的IMU测量值,并推导出IMU协方差的迭代公式以及jacobian迭代公式。

4. VI ORBSLAM与VINS-Fusion

  • VINS 是一种基于滑动窗口方式的紧耦合视觉-惯性状态估计器,该方法通过融合

    预积分后的 IMU 测量值和特征观测值,获得高精度的视觉惯性里程计

  • VI ORBSLAM是一种能够实现自动初始化、地图重用、回环检测、重定位以及全局优化的功能,适用于环形线路环境的VIO方法
  • 此前的实验情况表明:

    以光流作为前端的 VINS-Fusion 比基于 ORB 特征的 VI ORBSLAM 更具鲁棒性,在快速运动时更不容易丢失。因此,针对高温超导磁悬浮环形实验线这一特点场景,VINS-Fusion更加适用。

5. 改进后的VIO初始化方法

  • 在VINS中融合VI ORBSLAM的初始化优点
  • 提高已有定位建图算法的精度和效率
  • 通过数据集EuRoc上验证初始化融合的改进
  • VINS-Fusion系统实现的环境

    安装环境:

    linux中Ubantu 16.04系统

    ROS系统

    Ceres Solver库

    Eigen3库

    Open-CV库

    编译环境:

    EuRoC数据集

    KITTI数据集

    Cmake编译器

6.独立跑通VINS-Fusion

  • 项目进行中

继续阅读