3. 视觉感知系统
另外一种替代品是视觉感知系统。1970年之后,随着数字成像技术的发展,相机作为一种传感器开始被广泛研究。因为人可以通过自己的视觉估计视野中物体的位置、距离,而相机的原理模拟了人的双眼,所以研究者们模仿人的特点,利用相机的二维图像反推图像中物体的三维信息。这种和二维图像推算三维信息相关的技术和数学理论发展成了一个独立的学科——计算机视觉,也被称作机器视觉。
视觉感知系统是目前世界上最热门的机器人学和机器视觉领域研究课题。其原理是利用一个或者多个相机构成的视觉传感器系统,采用复杂的算法,通过二维的相机图像推算出视野中物体相对与视觉传感器系统的几何中心的运动信息,如果假设这些物体都是静止的,那么相对运动其实代表了视觉传感器本身的运动。理论上,计算机视觉技术能够单凭一个相机就可以准确测量十五个状态量,但是与其他传感器类似,相机也有很多的缺陷,包括无法恢复尺度、成像质量有限、计算量消耗巨大等等。幸好,我们还可以把视觉感知系统和其他传感器结合起来,互相提高测量精度。
聪明的读者肯定能够想到,把视觉感知系统和之前说的所有组合导航中用到的传感器融合起来,GPS信号质量高的时候用GPS组合导航,没GPS的时候用视觉感知系统替代GPS,不就解决问题了吗。这确实正是目前工程师和科学家们正在努力解决的问题,也是精灵4上初步实现的技术。在介绍精灵4是如何结合视觉感知系统和组合导航技术之前,我们先简单介绍两种已经比较成熟的视觉感知系统:光流测速模块和视觉里程计。
光流测速模块顾名思义,只能测速度。通常一个光流测速模块由一个相机、一个惯性测量元件、一个超声波模块构成,它的主要原理是计算机视觉技术中于1981年被发展出来的“光流追踪”算法。
“光流”的概念最早在1950年代由心理学家和生物学家提出,指的是一个观察者和他在观察的事物发生相对运动时,这些事物在他眼前成的像会产生“运动的模式”,人脑利用这种“运动的模式”能够更灵敏地感知周围什么东西在动。比如下图中,读者一看就可以直观理解“光流”的意义。
后来计算机科学家布鲁斯-卢卡斯和金出武雄在1981年发明了Lucas-Kanade算法,通过算法计算出连续拍摄的图片上的光流,并证明了光流可以反解出相对运动的速度。虽然三十多年来,Lucas-Kanade算法始终被公认为最好的“光流追踪”算法,但是它有比较大的局限性,它包含很多假设,比如假设连续图片的平均亮度相同,比如假设图片中的物体只发生平面运动等等。另外,光流算法算出的速度是没有尺度的,因为相机图像的单位是像素,所以光流算法只能给出“你现在的速度是10个像素每秒”,但是没法算出10个像素是1厘米还是1米。恢复尺度的方式是增加一个超声波模块测量平面运动离相机的距离,这样就能够把像素运动转换成真实的运动。最后,如果要让光流测速模块在晃来晃去的多旋翼飞行器上也能使用,通过惯性测量元件找出图像所代表的平面也是必不可少的,这一点需要在算法上进行两种传感器很好的配合。
光流算法原理上只可以测三维速度,不能直接测量三维位置。我们同样可以通过把光流测速模块测出的三维速度积分获得三维位置,但是就像惯性测量元件积分会发散一样,光流测速模块积分得到的位置也会发散。好在它不会天马行空地失去控制,和组合导航技术中除了GPS之外的传感器妥善融合之后,它可以做到悬停时测量的位置不发散。因此可以说光流测速模块只在有限的条件下能够替代GPS。
光流测速模块已经形成了非常标准的解决方案。大疆悟以及精灵3上都装载了自主研发的光流测速模块,另外著名的开源飞控产品Pixhawk中包含了一个叫做PX4Flow的光流测速模块,并且开源了所有的代码和硬件方案。所以光流测速模块目前已经广泛出现在了各大厂商的多旋翼飞行器产品上。视觉里程计相比光流测速模块,增加了直接测量位置的能力,所以才叫“里程计”。视觉里程计比光流测速模块能力更强,性能更好。
读者可能会问,为什么听起来视觉里程计和光流测速模块参与的传感器数量差不多(光流测速模块甚至还多一个超声波模块),但是视觉里程计能力反而更强呢。这里的原因不在于传感器硬件,而在软件算法上。前面已经说到光流追踪算法有很多简化的假设,只能测量平面运动,增加其他传感器硬件一定程度上是为了把那些为了计算方便而简化掉的因素重新弥补起来。
而视觉里程计算法则复杂得多,它不仅要通过图像反推出视野中物体的平面运动,还要反推出这些物体的三维位置,并且基于这些物体的三维位置做很多次的优化计算,算法复杂度成倍于光流测速模块。有些视觉里程计的算法甚至包含完整的光流追踪的算法,但是仅仅把计算光流作为预处理图像的步骤。
视觉里程计能够直接测量位置,测量值也比较准确,不会像光流测速模块那样发散。通常比较优秀的视觉里程计飞100米之后只会积累十几厘米到几十厘米的误差,这个测量水平比起导弹上几百万的惯性测量元件还是差了不少,但是考虑到视觉里程计的价格极其低廉,对比起来它的性价比非常高。
视觉里程计有几个不同层次的难度,最简单的是两个相机构成的双目立体视觉系统加惯性测量元件,最难的是一个相机构成的单目视觉系统加惯性测量元件。如果视觉里程计和光流测速模块硬件一致,那么这里的视觉里程计采用的是单目视觉系统。目前,双目立体视觉系统加惯性测量元件实现自身状态观测已经是比较完善的技术,而单目视觉系统则是活跃的研究方向,世界上做这个研究方向较好的大学有美国的宾西法尼亚大学、瑞士的苏黎世联邦理工学院、英国的牛津大学、我国的香港科技大学和其他一些欧美院校。
单目视觉系统和双目立体视觉系统两者对比起来,他们的算法难度差别很大。视觉里程计的算法关键点是前面说的“通过连续的图像反推出视野中物体的三维位置”。对于和人眼结构类似的双目立体视觉系统,这一点比较容易,因为一个物体同时出现在左右两个相机的视野中时左右视野有视差,视差可以帮助解算物体的位置,只需要用简单的几何关系就可以实现,这已经是非常成熟的技术。
但是对于单目视觉系统,只有一个相机就没有视差,没法做简单的几何关系的解算,所以算法必须能智能地在局部范围内同时估计很多个物体的位置,然后在自身移动过程中通过位置移动产生视差,然后进行多个物体的位置的最大似然估计,从而推算出这些物体比较准确的位置。这个过程包括很多个环节,大部分环节在学术界都没有公认最优的方案,因此还没有成熟的技术。
因为原理相对简单,所以双目立体视觉系统构成的视觉里程计在三十年前就开始被研究了。1980年代早期,NASA工程师、著名机器人学家汉斯-莫拉维克就已经制造出了这种状态测量系统。关于汉斯-莫拉维克的另一个故事,我在知乎问题中“有哪些与控制、机器人等相关的 quotes? - YY硕的回答”也有提到。
在经年累月的优化之后,2004年,NASA成功把视觉里程计和惯性测量元件构成的视觉定位系统装在“机遇号”和“勇气号”火星车主频仅有20MHz的特制芯片上,送上了火星,它可以帮助火星车通过一对双目相机非常准确地记录自己走过的路线。2007年,参与火星探测任务的计算机科学家和工程师们把这个激动人心的过程写成了一篇论文《计算机视觉在火星》(Computer Vision on Mars),这篇文章吸引了很多计算机视觉研究人员投身视觉里程计的研究,也极大推动了视觉里程计在机器人学中的应用。
4. 精灵4的传感器方案
大疆在精灵4上实现了双目立体视觉系统加惯性测量元件构成的视觉里程计,飞机上装了两套双目立体视觉系统,一套向前看,一套向下看,一共是四个相机。
两套双目立体视觉系统都参与视觉里程计的计算。通常情况下以向下看的双目立体视觉系统为主,如果向下看的相机对着一些特征不明显的环境(比如纯色的地板、海面等等),感受不到什么图像变化,视觉里程计会自动切换到向前看的立体视觉系统做测量计算。虽然精灵4采用的都是较为成熟的机器视觉技术,但是由于精灵4上机载的计算量非常有限,大疆还是下了相当久的苦功去优化算法,并使用了Movidius公司制作的图像算法处理专用芯片,结合Movidius公司的图像处理算法库优化四路图像处理的性能。值得一提的是,不久就会面世的Google Project Tango也使用了Movidius公司的这款芯片。不过因为Movidius公司的芯片不包含视觉里程计的算法,所以Google的这款产品中视觉里程计的算法应该与精灵4的算法有较大差别。
两套双目立体视觉系统还带来了视觉里程计之外的两个好处:
1. 向下看的一套双目立体视觉系统可以探测下方地面上物体的三维位置,从而知道地面的距离;
2. 向前看的一套双目立体视觉系统可以用来探测前方场景中物体的深度,产生深度图进行障碍感知。深度图还可以用于重建一个飞行器周围的局部地图,以进行精细的运动规划,这就是精灵4指点飞行的基础,在这篇文章中不详细介绍了。
除了增加视觉里程计之外,精灵4上还增加了内置的超声波模块。所以精灵4上一共有GPS+惯性测量元件+气压计+地磁指南针+超声波模块+双目视觉系统六种传感器。其中双目视觉系统有两套,共4个相机;惯性测量元件有两个,实现双冗余备份;地磁指南针也有两个,同样双冗余。当工作中的惯性测量元件或者地磁指南针受到严重干扰的时候,系统会自动进行备份切换,切换到另一个传感器上。
有了这些传感器以后,组合导航系统升级成为了智能导航系统。智能导航技术极大拓展了飞行器可以活动的空间,当有GPS的时候,系统可以通过GPS为主进行十五个状态量的测量,视觉里程计依然可以继续运作,提供额外的速度和位置的测量值进一步提高精度;GPS信号不好的时候,视觉里程计可以接替GPS为整个系统提供稳定的观测。智能导航系统中有三种确定高度的传感器:超声波、气压计、双目立体视觉,这三种传感器几乎可以覆盖所有让传统多旋翼飞行器头疼的定高场景:树丛上方、室内、靠近建筑的位置、大风环境等等。
地磁指南针的冗余设计可以很大程度上减小外部磁干扰带来的指南针故障。另外视觉里程计也能给出航向的观测,两者互补能够提高航向的观测精度。在以前的飞行器上,因为地磁指南针受到干扰造成的炸机问题比较多,在精灵4上因为有了多重保护措施,地磁指南针被干扰导致问题的概率大大降低。
有了智能导航系统之后,还需要有一套强有力的软件系统去组织导航算法和飞行控制算法。精灵4的飞控和最新推出的A3飞控类似,都是大疆第三代飞行控制器。大疆第一代飞控是汪滔自己写的,性能很不错,然后飞控组在过去的几年里做了两次比较大的飞控软件系统的重构,以支持更多的传感器和功能。2014年底推出的第二代飞控里加入了光流测速模块支持、SDK、限飞区和新手模式等功能,2016年初开发完成的第三代飞控里加入了冗余传感器、双目立体视觉支持、避障功能和智能返航等功能。因为每一次重构都对整个软件系统做了很大规模的调整,增加了很多的软件模块和新的软件架构,所以分了三代。别人刚开始做飞控的时候,大疆已经自己重构了两次代码,这一点是大疆最引以自豪的地方之一。
智能导航系统让精灵4在任何状态下都可以准确测量自身的三维位置和三维速度,这对实现多种功能都有非常重要的意义。
近年来,业界有很多关于避障应该使用双目立体视觉还是激光雷达传感器等传感器的争论。在大疆内部,选择什么样的传感器放入智能导航系统用来避障,工程师团队也进行了旷日持久的探讨,最后还是选择了双目立体视觉的方案。我相信随着科技的发展,在未来会不断有更多更好的新传感器诞生,很可能会有其他传感器代替双目立体视觉,但是实现稳定避障的关键不在于避障所使用的传感器。避障这个事件发生前后,飞行器机体一定会发生急刹车,整体会经历很大的姿态变化和加速度,在这种状态下,飞行器是否还能稳定地测量出自己的十五个状态量,才是最影响安全性的问题。
如果系统急刹车之后,整体的位置观测甚至速度观测都发散了,这时候飞行器有可能左右飘出去,还是会发生炸机。就算不炸机,避障之后飞机前后左右摇晃,也会给用户心理上造成不安全的感受,带来很差的用户体验。精灵4在很多严苛的情况下发生避障动作时,飞行器会自动锁定位置、速度迅速减为0的状态,很快就可以从高速机动恢复到完全不动,非常稳定地悬停,避免了在障碍附近不稳定活动引起炸机。
精灵4还能处理很多看似很简单,但是对传感器系统要求非常高的飞行场景。比如在十几层楼的窗口把飞行器从室内飞到室外悬停。这种场景下,从窗口穿出时,向下看的传感器几乎马上全部失效,由于有建筑的遮挡,GPS也不会立刻生效,因此传感器系统不够稳健的飞行器有可能因为失去速度和位置的测量而飘到建筑上造成高空炸机。而精灵4则能够通过前视双目视觉系统的观测,在向下看的传感器都暂时失效时继续运行视觉里程计,及时提供辅助的速度和位置观测,避免造成无法控制速度和位置导致炸机的情况出现。
实际上,由于前面说的过GPS容易被遮挡导致没有足够的信号做观测的情况在航拍的场景中其实常常遇到。比如在树木茂密的峡谷里航拍,经常出现的情况是飞行器放在地面上时接收不到GPS信号,如果稳定飞到几十米的高度就可以接收到了。在这些临界情况下起飞和降落非常危险,如果要保证飞行器在升降过程中都能保持稳定的状态,飞行器必须能够在GPS和视觉里程计之间无缝转换,这样才能让用户放心地起降。如果用户从高处下降到低处GPS突然没有了,而视觉里程计没有及时补上,飞机失去位置和速度观测之后就变得非常难操控,就有可能撞在树丛上。
读者可能问,在这些情况下光流测速模块效果是不是也一样呢。我们前面说过光流测速模块的算法有很多简化的假设,尤其是被观测的物体必须处于同一个平面这样的假设,使得光流测速模块在树丛上方、地势变化较大的空间上方,都表现非常糟糕,并不能满足户外航拍的需求。虽然视觉里程计计算量庞大,但它是比光流测速模块更加实用有效的方案。
另外值得一提的是,第二代的大疆飞控使用的是遥控器杆量转化成飞行器的加速度指令,而第三代的大疆飞控在精灵4上变成了遥控器杆量转化成飞行器的速度指令。在精灵3、大疆的前代飞行器以及很多无人机产品上,如果你推遥控器满杆前进,飞行器会以一个固定的角度加速飞出去,直到加速度被空气阻力抵消,这样控制并不直观,所以新手很难操作飞行器;而在精灵4上,如果你推遥控器满杆前进,飞行器会自己调整到一个固定的速度上,直接操控速度显得非常直接,非常容易操控。以往,让飞行器保持匀速飞行是只有专业飞手才能做到的事情,现在则真真正正地让普通人也能触手可得。这一个修改看似简单,但是提供了更好的操作手感,而且让飞行器飞行的状态更加稳定。
对于航拍操作手来说,所有的花哨功能都不如悬停得稳、飞得稳这一点重要,因为飞机晃得太厉害,总会给用户造成一种“我的飞机真的没出问题吗”的感受,用户体验极其不好。我们去西藏青海或者其他很美的地方开车玩,肯定是希望平稳、慢慢地开,这样才能专心看美景;如果开着一部油门轻轻一点就加速到200公里的赛车,坐在车里一会儿被推背,一会儿过弯时左右甩,人还有心情欣赏路上的美景吗?
遥控器杆量改动也显示了大疆对自己智能导航系统提供的稳定的三维速度测量的信心。目前我没有见过其他哪家公司的飞行器控制系统采用的是遥控器杆量转化成飞行器的速度指令。
评论
查看更多