视觉里程计(Visual Odometry,简称VO)是SLAM技术中非常关键的部分,主要侧重于计算机视觉算法。本文从VO的发展起源、技术优势、术语对比、应用场景几方面对VO做一个简要的介绍,后续文章会继续介绍VO相关的技术细节。
视觉里程计概念来自车轮里程计
视觉里程计的研究最早是从上个世纪八十年代开始的,2004年David Nister 在CVPR上发表了一篇以视觉里程计为标题的论文《Visual Odometry》,而同年,视觉里程计用于美国国家航空航天局(NASA)主导的火星漫游者勇气号和机遇号上。从此,视觉里程计被大众熟知,相关的研究掀起了新的高潮。
视觉里程计这个术语借鉴了汽车的车轮里程计的概念,还是挺贴切的。
我们知道汽车的车轮里程计是用来测量车速、行驶距离的测量装置。它的原理可以简单的做如下理解:汽车的车轮直径是已知的,那么车轮的周长也可以计算出来,都是一个恒定的值。车轮上安装有一个“计数器”,车轮每转动一圈就记一次数字,两次计数之间的时间也是可以测量的,因此根据车轮的周长和两次计数时间差就可以得到汽车行驶速度。随着时间的累积就能知道该汽车总共走了多少公里的路程,称为里程,也是里程计名字的由来。以上过程用一句专业的话总结一下就是:车轮里程计通过增量式地对车轮转过的圈数积分来估计车辆的运动状态。
同样的,视觉里程计是通过移动物体(如车辆、人、机器人)上搭载的单个或多个相机拍摄的连续图像作为输入,从而增量式地估计物体自身的运动状态。
视觉里程计的优势
从上面的描述看,视觉里程计貌似和车轮里程计的功能差不多,都是估计运动物体的状态信息,只是传感器不同而已,那么为什么还需要视觉里程计呢,或者说它有什么优势呢?
1、和车轮里程计相比,视觉里程计的优势是不受车轮在恶劣环境下(如不平整的路面、水面或沙漠)打滑的影响。
2、汽车拐弯时,左右车轮的拐弯半径是不同的,这会增加车轮里程计的误差。而视觉里程计可以提供更为精确的轨迹估计,相对位置误差范围为0.1%到2%(2012年数据)。
3、视觉里程计主要应用在自主移动机器人、无人机等领域。它可以作为车轮里程计、全球卫星定位系统(GPS),惯性测量单元(IMU),和激光雷达等很多设备的有效补充。
4、视觉里程计在某些特殊场景下是非常重要且必须的,如无法使用车轮里程计的环境(如无人机)下,在GPS失效的特殊环境(如水下、外太空)下。
视觉里程计相关术语辨析
1 VO vs. Structure from Motion(SfM)
Structure from Motion简称SfM,中文译为运动恢复结构。是指从一组相机图像(有序或者无序都可以)中恢复相机位置姿态和重建三维结构的一种通用方法。最终结构和相机位姿通过离线优化(比如Bundle Adjustment,译为光束法平叉、捆集调整)算法来进一步提升效果,它的计算时间随图像的数量增加而增长。
SfM的一个比较著名的项目就是《Building Rome in a Day》: 该项目利用网上搜集到的以罗马为关键词的200万张图片,经过一天的计算时间实现了对罗马的三维重建。
项目网址:
http://grail.cs.washington.edu/projects/rome/index.html
VO可以看做是SfM方法的一个特例。因为VO不能处理无序图像集,它只能根据序列化的连续图像来估计相机的三维运动。Bundle Adjustment也可以用来优化轨迹的局部估计,但不是必须的。VO可以做到实时处理,而SfM不行。
2 VO vs. Visual SLAM
1、VO只关心轨迹的局部一致性。其工作方式是一个位姿接一个位姿地增量式地重构路径,只优化前面若干个路径位姿(称为windowed bundle adjustment)。
Visual SLAM(简称VSLAM)关心的是全局轨迹和地图的一致性。其最终目的是获得一个全局的、一致性的机器人运动路径估计。这要求机器人能够识别它之前去过的地方,该过程称为回环检测或闭环检测(loop closure)。当回环检测到后,这部分获得的信息可以用于减少地图和相机路径的漂移(称为global bundle adjustment)。
2、VO可以作为构建VSLAM算法的一个模块,用于重构相机的增量运动。但是完整的VSLAM一般需要回环检测、全局优化以获得精确一致的地图。但VSLAM增加的回环检测处理不好会降低鲁棒性,因为回环检测时混进的离群点可能严重影响地图一致性。
如果用户只对相机路径感兴趣,但不需要环境地图,而且对实时性要求较高,可以只使用VO来完成。因为VO不需要跟踪相机的所有历史信息,它牺牲了全局的一致性来获得实时的计算性能。
3、VO和VSLAM如何选择?
取决于三个方面:性能(如地图精度)、一致性、易于实现。
视觉里程计应用
视觉里程计应用领域非常广泛,涵盖机器人、可穿戴计算、增强现实和自动驾驶等领域。下面主要以两个例子进行说明。
1 、火星漫游车
视觉里程计(以下简称VO)早期最著名的应用就是火星漫游车了。据美国喷气推进实验室(JPL)的报道,勇气号火星车从2004年着陆至2005年3月5日的一年多时间里,有184个火星日行驶,其中52个火星日应用了VO,计算收敛成功率为97%;机遇号有172个火星日行驶,其中75个火星日应用了VO,成功率为95%。VO不成功的情况一般是没有足够的特征点、特征点分布范围太小、火星车自身阴影的影响等。
勇气号和机遇号火星车所用的VO的优点是自主性强、精度较高,能改正航迹推算方法在车轮打滑和IMU漂移时的定位误差;其缺点是计算速度慢、只能应用于局部定位,性能依赖于地形特征。VO速度慢是由于火星车计算机的计算能力限制,现在计算机软硬件技术都有了飞速的发展,计算能力已经可以克服。
2、无人机
下面是苏黎世大学机器人感知实验室设计的全自主无人机,完全不需要人工参与,没有GPS,没有激光,也没有外部定位系统,仅仅使用无人机上搭载的相机和惯性测量单元就可以“观察世界”和自主定位。与视觉里程计相关的计算任务可以在机载的手机处理器内实时运行,相机拍摄的图像序列无线传输到笔记本电脑,在电脑端可以处理后生成稠密的三维环境模型。
算法非常高效,可以接近实时,因此该系统可以用于即时获取未知环境信息,尤其是对时间要求苛刻的场合,该无人机设计的目的就是希望用于搜索救援、远程监测等场景。比如,在地震、泥石流等重大灾难后可以第一时间进入灾区执行幸存者搜索任务,可以执行边境线巡检、高压线路监测等超出人类视线之外的工作。