泡泡图灵智库,带你精读机器人顶级会议文章
标题:A Benchmark Comparison of Monocular Visual-Inertial Odometry Algorithms for Flying Robots
作者:Jeffrey Delmerico, Davide Scaramuzza
来源:ICRA 2018
编译:博主
欢迎个人转发朋友圈;其他机构或自媒体如需转载,后台留言申请授权


摘要

大家好,今天为大家带来的文章是——飞行机器人单目VIO算法测评。该文章发表于ICRA2018。
飞行机器人为保证飞行的稳定性,状态估计需要在更低的延迟下能有更高的精度。同时由于飞行平台电源、负载和计算能力有限,状态估计的算法必须在有限的资源下运行。相机和IMU组合能够满足上述苛刻的要求,能在没有其他传感器辅助的情况下进行状态估计,是目前飞行机器人状态估计中最常用的传感器。
然而,目前我们仍对各种VIO算法在飞行机器人上利用有限资源进行在线状态估计的表现不清楚,包括精度、延迟和计算复杂度等。
本文针对此问题,比较了各种公开的单目VIO算法,包括MSCKF,OKVIS,ROVIO,VINS-Mono,SVO+MSF,SVO+GTSAM等。本文在飞行机器人常用的各种硬件上测试了各种算法,评估的内容包括位姿估计精度、单帧处理时间、CPU和内存占用率,评估的数据集是EuRoC。


介绍

VIO算法目前已经得到了非常广泛的应用,包括自动驾驶、VR/AR和飞行机器人等等。同时随着研究的深入,大量的VIO算法涌现出来。然而由于条件限制,大部分的算法仅仅在PC平台下进行过性能测评。为满足飞行机器人的使用,测评各种VIO算法在嵌入式平台下的表现势在必行。
主要贡献有:
1. 全面的比较了各种公开的单目VIO算法;
2. 在多个嵌入式平台上测试了各种单目VIO算法,并分析了算法的表现。


算法流程


图1 展示算法性能的散点图,纵轴从上到下依次是CPU占用率、内存占用率和单帧处理时间,横轴都是状态估计的精度。每种算法用单独的颜色表示;每种计算平台用单独的形状表示,形状的大小反应了误差的大小

本文的主要内容是评价一些公开的单目VIO算法,并评价其在各种嵌入式平台上的性能。上图1综合展示了各种算法的性能。下文简要介绍一下本文所评估的单目VIO算法。

MSCKF

MSCKF是VIO算法中的元老级算法,但是目前仍旧没有可靠的公开的算法实现。Mourikis于2007年提出了MSCKF算法,其核心思路在于利用帧间的几何多视约束,并且不需要保存3D点的状态信息。Zhu在2017年将MSCKF的算法思路扩展到Event Camera中,但也同时引入了特征点策略。目前MSCKF的公开代码来自https://github.com/daniilidis-group/msckf_mono。

OKVIS

OKVIS利用非线性优化一个滑窗内的关键帧,其损失函数包括带权重的投影差和带权重的惯导误差。OKVIS的前端是利用多尺度Harris提取特征点,并用BRISK作为描述子。OKVIS的后端是利用Google Ceres完成的,通过非线性优化完成状态估计。值得注意的是,OKVIS并没有专门针对单目VIO进行优化,Leutenegger的实验表明在双目情况下其表现更好。目前,OKVIS的公开代码来自https://github.com/ethz-asl/okvis_ros。

ROVIO

ROVIO利用扩展卡尔曼滤波进行状态估计。ROVIO中许多非常吸引人的特性。首先,ROVIO使用速度更快的FAST来提取角点,其三维坐标用向量和距离表示;其次,所有角点是通过图像块进行描述,并通过视频流获取了多层次表达;最后利用IMU估计的位姿来计算特征投影后的光度误差,并将其用于后续优化。与OKVIS不同,ROVIO是基于单目开发的VIO系统,目前公开代码来自:https://github.com/ethz-asl/rovio。

VINS-Mono

VINS-Mono于OKVIS类似,是基于非线性优化器优化一个滑窗内的关键帧,帧间通过鲁邦的角点关联。VINS的主要估计框架(estimation framework)。在系统初始化阶段,通过松耦合的方式融合多种传感器;在重定位阶段,则通过紧耦合的方式融合传感器。在优化之前,也通过IMU预积分减少计算量。除此至外,VINS还提供了基于4DoF的位姿图优化和回环检测。本文分别测试了不使用回环和使用回环两种情况下VINS的表现。目前VINS的开源代码来自:https://github.com/HKUST-Aerial-Robotics/VINS-Mono。

SVO+MSF

MSF是基于扩展卡尔曼滤波的多传感器融合算法。SVO是一个轻量的直接法VO。SVO的前端是利用FAST提取角点,并通过最小化照度误差进行状态优化。MSF将SVO提供的状态信息与IMU进行融合,从而得到更优的状态估计结果。但是由于VO和IMU是松耦合在一起需要额外的方式来提供和估计尺度。单独的SVO和IMU都已经开源了代码,本文通过ROS将两者合并在一起。

SVO+GTSAM

SVO+GTSAM与SVO+MSF类似,但是其后段是通过因子图优化iSAM2的方式融合在一起。目前SVO和GTSAM也分别有开源代码,但是并没有公开的整合系统(作者可能是让我们找他要~)。


主要结果

本文在EuRoC MAV数据集上,分别用Laptop,Intel NUC,UP Board,ODROID四个嵌入式平台测试了上文提到的MSCKF、OKVIS、ROVIO、VINS-Mono、SVO+MSF和SVO+GTSAM。

硬件平台

本文中总共使用了四种平台,下文将简要介绍一下。
Laptop
Lenovo Thinkpad W540,拥有Intel Core i7-4810MQ 2.8GHz,32G RAM。Laptop在此处只是用于作为其他硬件平台做参考。
Intel NUC
处理器为Intel Core i7-5557U 3.10GHz,16G RAM,运行功率为28W,大小为10×10cm。
UP Board
处理器为Intel Atom x5-Z8350 1.44GHz,4G RAM,功率为12W,大小为8.5×8.6cm。
ODROID
处理器为一个ARM A7 1.5GHz和一个ARM 15 2.0GHz,2G RAM,大小为8.3×5.8cm。

评价结果

由于评测结果较多,此处只展示了部分结果,更多结果可以通过阅读原论文了解。一些大致的结论是SVO+MSF是计算效率最高的算法,而VINS-Mono是状态估计精度最高的算法,ROVIO则处于两者之间。不过在本次测试中发现ROVIO不能在Up Board上正常运行。

表1 充分展示了各种算法在各种平台下在EuRoC下的表现,主要通过状态估计的轨迹与真实轨迹的差异来比较。其中蓝色加粗表示VINS-Mono带回环检测的轨迹的精度最高,黑色加粗表示其他不带回环的算法精度最高。


图2 展示了各种算法的CPU占用率


图3 展示了各种算法的内存占用率


图4 展示了各种算法的单帧处理时间


结论

本文系统全面的测试了6种VIO算法在4种平台下的性能与表现。评估的结论也表明天下没有免费的午餐,要想提高精度和鲁棒性就只能提供更多的计算资源。
最后也希望本文的结果能帮助各位SLAM爱好者,也期望有朝一日此问题能被妥善解决。

VIO:飞行机器人单目VIO算法测评相关推荐

  1. 基于先验LiDAR点云地图的单目VIO定位(IROS 2020)

    Yu H , Zhen W , Yang W , et al. Monocular Camera Localization in Prior LiDAR Maps with 2D-3D Line Co ...

  2. 实践篇 | 机器人单目相机测距的实验

    众志成城 抗击肺炎 如何预防新型冠状病毒肺炎? 1 保持手卫生.咳嗽.饭前便后.接触或者处理动物粪便后,要用流水洗手,或者使用含有酒精成分的免洗洗手液. 2 保持室内空气流畅.避免到封闭.空气不流通的 ...

  3. 基于简化点云地图的语义边缘对齐的单目定位方法

    标题:Compact 3D Map-Based Monocular Localization Using Semantic  Edge Alignment 作者:Kejie Qiu, Shenzhou ...

  4. 单目相机 svd 从图像恢复3维位置_论文学习——VINSMono:一种鲁棒且通用的单目视觉惯性系统...

    点击上方"视觉部落",选择"星标"公众号 精选作品,第一时间送达 文章同步首发于知乎用户yikang专栏 Part 1. 基本信息 本文提出了一种基于紧耦合滑动 ...

  5. 一文详解单目VINS论文与代码解读目录

    本文旨在对前一阶段学习vins-mono开源框架的总结.结合暑假秋招之前报名的深蓝学院的<从零开始手写VIO>课程,本文从VIO原理以及开源代码分析两部分进行详细介绍.PS:提升代码能力最 ...

  6. 变焦单目论文阅读笔记

    文章目录 双焦距光学成像模型 双焦成像原理 视场转像 本篇小结 基于双焦成像的单目立体视觉算法 算法分析 图像获取 运动模型 深度恢复 本篇小结 基于双焦的单目立体成像系统分析 深度误差与焦距 双焦系 ...

  7. 2017CVPR NID-SLAM:基于归一化信息距离的鲁棒单目SLAM系统

    原作:Geoffrey Pascoe 翻译:Frank 转载请注明出处 水平有限,错误请指出 NID-SLAM:基于归一化信息距离的鲁棒单目SLAM系统 摘要 本文提出了一种基于归一化信息距离(NID ...

  8. 基于点云的语义单目SLAM

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者:robot L 链接:https://zhuanlan.zhihu.com/p/13043758 ...

  9. 用于自动驾驶的混合稀疏-稠密单目SLAM系统

    点击上方"计算机视觉工坊",选择"星标" 干货第一时间送达 作者丨泡椒味的口香糖 来源丨 GiantPandaCV 0. 引言 随着自动驾驶系统的推广,越来越多 ...

最新文章

  1. python输入若干个整数试找出其中的最大数和最小数_Python编程的若干个经典小技巧...
  2. Struts2和Struts1.x的全面比较一
  3. “智企云中享“,首届SAP中国云大会召开
  4. php如何删除数据mysql数据库_php如何删除数据库
  5. 国外html游戏发展历史,17个国外游戏行业的网页设计欣赏
  6. 轻松scrum之旅 思维导图读书笔记
  7. 如何利用Camtasia为视频添加注释?
  8. c#控制台应用程序读取 config
  9. SM2证书的鉴定方法
  10. C#获取屏幕的分辨率
  11. yocs_velocity_smoother速度平滑库知识
  12. Minecraft 1.19.2 Fabric模组开发 02.物品栏+物品
  13. 中小学线上教学平台让孩子轻松学,大屏教育软件打造居家小课堂
  14. vxWorks启动时间
  15. 我为什么加入 TDengine
  16. 全球股市指数缩写及开盘时间
  17. 【招银网络科技java面试题目面试经验】-看准网
  18. 接口测试小白的Testng学习之路--在eclips中安装Testng
  19. Mac更新系统后 删除文件后可用空间还变少了?
  20. 基于canoe 新建一个lin工程_基于CANoe的车身控制器CAN/LIN网络设计方法

热门文章

  1. 迈创采集卡搭配工业相机二次开发介绍(一)
  2. 系统负载和CPU数量
  3. 利用Stanford Parser进行观点词否定词抽取
  4. 中国移动5星级用户,手机10年不换号,会有什么特殊待遇?
  5. 判断一组不等式是否满足约束并输出最大差
  6. 对NLP中transformer里面decoder的理解
  7. a370m和2050差距 a370m和rtx 2050参数对比
  8. Git切换分支 更新代码
  9. mysql数据库数据录入报错问题
  10. 给定点坐标求多边形面积模板