注:本文转载自-- 博主:虾米一代 博客:《科普“智能导航”--整理自大疆工程师》
1.飞行器想要稳定飞行,需要15个状态量:三维角度,三维角度对应的三维速度、三维加速度、三维角速度,三维位置。
传感器的测量如下:
2.传感器自身的限制:
(1)惯性测量元件:会受到温度、制造工艺的限制,产生一些测量的偏差。这类测量的偏差需要比较仔细的算法进行修正,而且往往不能单靠惯性测量元件自己的测量完全消除。
(2)地磁指南针:地磁线的强度非常弱,很容易受到干扰。
(3)气压计:会受到温度、湿度、空气流速、光照、振动等因素的影响
(4)GPS:只有在开阔的空间内才能给出比较好的测量值,因为GPS接收机需要从天上的卫星获得信号,这些信号要从太空传入大气层,这么远的距离,信号已经相对来说很微弱,所以必须要求接收机和卫星之间的连线上没有遮挡,一旦有建筑甚至是树木的遮挡,卫星发下来的信号就有噪声,GPS接收机就不能给出很好的位置和速度观测。在室内环境中,GPS甚至完全不能使用。
(5)光流:只能测量维平面,离测量物体不能超过5米左右。
(6)视觉里程计:也就是单目和双目视觉,离测量物体不能超过5米左右。
3.组合导航技术
克劳德-香农总结归纳出:信息可以用来估计状态,越多的信息可以把状态量估计得越准。
控制论的奠基人诺伯特-维纳与其他一大批工程师和科学家完善了通过信息进行状态估计的线性估计理论,进一步提出了传感器之间“互补滤波”,共同减小误差的理论。在此基础上鲁道夫-卡尔曼提出了卡尔曼滤波器,在通信、控制工程和飞行器状态估计领域广泛使用。
因此,结合GPS、惯性测量元件、地磁指南针和气压计各自的优缺点,使用电子信号处理领域的很多技术,融合多种传感器的测量值,获得较为准确的飞行器十五个状态量的测量。
4.控制过程
拿“悬停”这件看起来是多旋翼飞行器最基本的能力来说,实际上飞行器的控制器在背后做了一系列“串级控制”:在知道自己三维位置的基础上,控制自己的位置始终锁定在悬停位置,这里的控制量是一个目标的悬停速度,当飞行器的位置等于悬停位置时,这个目标悬停速度为0,当飞行器的位置偏离了悬停位置时,飞行器就需要产生一个让自己趋向悬停位置的速度,也就是一个不为零的目标悬停速度;飞行器要想控制自己产生目标悬停速度,就需要根据自己当前的三维速度,产生一个目标加速度;为了实现这个目标加速度,飞机需要知道自己的三维角度,进而调整自己的姿态;为了调整自己的姿态,就需要知道自己的三维角速度,进而调整电机的转速。
5.视觉感知
GPS可以令发散的IMU等传感器通过组合导航技术收敛,但在感知系统中没有GPS的的情况下需要另一个传感器替代GPS组成新的感知系统感知十五个状态量。
(1)光流:只可以测三维速度,不能直接测量三维位置。同样可以通过把光流测速模块测出的三维速度积分获得三维位置,但是就像惯性测量元件积分会发散一样,光流测速模块积分得到的位置也会发散。好在它不会天马行空地失去控制。和组合导航技术中除了GPS之外的传感器妥善融合之后,它可以做到悬停时测量的位置不发散。
(2)视觉里程计:相比光流测速模块,增加了直接测量位置的能力,所以才叫“里程计”。视觉里程计比光流测速模块能力更强,性能更好。视觉里程计算法复杂很多,它不仅要通过图像反推出视野中物体的平面运动,还要反推出这些物体的三维位置,并且基于这些物体的三维位置做很多次的优化计算,算法复杂度成倍于光流测速模块。有些视觉里程计的算法甚至包含完整的光流追踪的算法,但是仅仅把计算光流作为预处理图像的步骤。
视觉里程计能够直接测量位置,测量值也比较准确,不会像光流测速模块那样发散。通常比较优秀的视觉里程计飞100米之后只会积累十几厘米到几十厘米的误差。
视觉里程计有几个不同层次的难度,最简单的是两个相机构成的双目立体视觉系统加惯性测量元件,最难的是一个相机构成的单目视觉系统加惯性测量元件。单目视觉系统和双目立体视觉系统两者对比起来,他们的算法难度差别很大。视觉里程计的算法关键点是前面说的“通过连续的图像反推出视野中物体的三维位置”。对于和人眼结构类似的双目立体视觉系统,这一点比较容易,因为一个物体同时出现在左右两个相机的视野中时左右视野有视差,视差可以帮助解算物体的位置,只需要用简单的几何关系就可以实现,这已经是非常成熟的技术。但是对于单目视觉系统,只有一个相机就没有视差,没法做简单的几何关系的解算,所以算法必须能智能地在局部范围内同时估计很多个物体的位置,然后在自身移动过程中通过位置移动产生视差,然后进行多个物体的位置的最大似然估计,从而推算出这些物体比较准确的位置。这个过程包括很多个环节,大部分环节在学术界都没有公认最优的方案,因此还没有成熟的技术。
6.大疆的领先技术
(1)视觉方案:在精灵4上实现了双目立体视觉系统加惯性测量元件构成的视觉里程计,飞机上装了两套双目立体视觉系统,一套向前看,一套向下看,一共是四个相机。两套双目立体视觉系统都参与视觉里程计的计算。通常情况下以向下看的双目立体视觉系统为主,如果向下看的相机对着一些特征不明显的环境(比如纯色的地板、海面等等),感受不到什么图像变化,视觉里程计会自动切换到向前看的立体视觉系统做测量计算。虽然精灵4采用的都是较为成熟的机器视觉技术,但是由于精灵4上机载的计算量非常有限,大疆还是下了相当久的苦功去优化算法,并使用了Movidius公司制作的图像算法处理专用芯片,结合Movidius公司的图像处理算法库优化四路图像处理的性能。值得一提的是,不久就会面世的Google Project Tango也使用了Movidius公司的这款芯片。不过因为Movidius公司的芯片不包含视觉里程计的算法,所以Google的这款产品中视觉里程计的算法应该与精灵4的算法有较大差别。
两套双目立体视觉系统还带来了视觉里程计之外的两个好处:1.向下看的一套双目立体视觉系统可以探测下方地面上物体的三维位置,从而知道地面的距离;2.向前看的一套双目立体视觉系统可以用来探测前方场景中物体的深度,产生深度图进行障碍感知。深度图还可以用于重建一个飞行器周围的局部地图,以进行精细的运动规划,这就是精灵4指点飞行的基础,在这篇文章中不详细介绍了。
智能导航技术极大拓展了飞行器可以活动的空间,当有GPS的时候,系统可以通过GPS为主进行十五个状态量的测量,视觉里程计依然可以继续运作,提供额外的速度和位置的测量值进一步提高精度;GPS信号不好的时候,视觉里程计可以接替GPS为整个系统提供稳定的观测。智能导航系统中有三种确定高度的传感器:超声波、气压计、双目立体视觉,这三种传感器几乎可以覆盖所有让传统多旋翼飞行器头疼的定高场景:树丛上方、室内、靠近建筑的位置、大风环境等等。
地磁指南针的冗余设计可以很大程度上减小外部磁干扰带来的指南针故障。另外视觉里程计也能给出航向的观测,两者互补能够提高航向的观测精度。在以前的飞行器上,因为地磁指南针受到干扰造成的炸机问题比较多,在精灵4上因为有了多重保护措施,地磁指南针被干扰导致问题的概率大大降低。
有了智能导航系统之后,还需要有一套强有力的软件系统去组织导航算法和飞行控制算法。精灵4的飞控和最新推出的A3飞控类似,都是大疆第三代飞行控制器。2016年初开发完成的第三代飞控里加入了冗余传感器、双目立体视觉支持、避障功能和智能返航等功能。2014年底推出的第二代飞控里加入了光流测速模块支持、SDK、限飞区和新手模式等功能。大疆第一代飞控是汪滔自己写的,性能很不错,然后飞控组在过去的几年里做了两次比较大的飞控软件系统的重构,以支持更多的传感器和功能。
智能导航系统让精灵4在任何状态下都可以准确测量自身的三维位置和三维速度,这对实现多种功能都有非常重要的意义。
(2)避障:近年来,业界有很多关于避障应该使用双目立体视觉还是激光雷达传感器等传感器的争论。大疆选择了双目立体视觉的方案。相信随着科技的发展,在未来会不断有更多更好的新传感器诞生,很可能会有其他传感器代替双目立体视觉,但是实现稳定避障的关键不在于避障所使用的传感器。避障这个事件发生前后,飞行器机体一定会发生急刹车,整体会经历很大的姿态变化和加速度,在这种状态下,飞行器是否还能稳定地测量出自己的十五个状态量,才是最影响安全性的问题。
如果系统急刹车之后,整体的位置观测甚至速度观测都发散了,这时候飞行器有可能左右飘出去,还是会发生炸机。就算不炸机,避障之后飞机前后左右摇晃,也会给用户心理上造成不安全的感受,带来很差的用户体验。精灵4在很多严苛的情况下发生避障动作时,飞行器会自动锁定位置、速度迅速减为0的状态,很快就可以从高速机动恢复到完全不动,非常稳定地悬停,避免了在障碍附近不稳定活动引起炸机。
(3)多种场景的适应:
场景一:在十几层楼的窗口把飞行器从室内飞到室外悬停
这种场景下,从窗口穿出时,向下看的传感器几乎马上全部失效,由于有建筑的遮挡,GPS也不会立刻生效,因此传感器系统不够稳健的飞行器有可能因为失去速度和位置的测量而飘到建筑上造成高空炸机。而精灵4则能够通过前视双目视觉系统的观测,在向下看的传感器都暂时失效时继续运行视觉里程计,及时提供辅助的速度和位置观测,避免造成无法控制速度和位置导致炸机的情况出现。
场景二:在航拍时,GPS被遮挡
比如在树木茂密的峡谷里航拍,经常出现的情况是飞行器放在地面上时接收不到GPS信号,如果稳定飞到几十米的高度就可以接收到了。在这些临界情况下起飞和降落非常危险,如果要保证飞行器在升降过程中都能保持稳定的状态,飞行器必须能够在GPS和视觉里程计之间无缝转换,这样才能让用户放心地起降。如果用户从高处下降到低处GPS突然没有了,而视觉里程计没有及时补上,飞机失去位置和速度观测之后就变得非常难操控,就有可能撞在树丛上。在这些情况下光流测速模块效果是不是也一样呢。我们前面说过光流测速模块的算法有很多简化的假设,尤其是被观测的物体必须处于同一个平面这样的假设,使得光流测速模块在树丛上方、地势变化较大的空间上方,都表现非常糟糕,并不能满足户外航拍的需求。虽然视觉里程计计算量庞大,但它是比光流测速模块更加实用有效的方案。
(4)遥控器杆量转化成飞行器的速度指令
第二代的大疆飞控使用的是遥控器杆量转化成飞行器的加速度指令,而第三代的大疆飞控在精灵4上变成了遥控器杆量转化成飞行器的速度指令。在精灵3、大疆的前代飞行器以及很多无人机产品上,如果你推遥控器满杆前进,飞行器会以一个固定的角度加速飞出去,直到加速度被空气阻力抵消,这样控制并不直观,所以新手很难操作飞行器;而在精灵4上,如果你推遥控器满杆前进,飞行器会自己调整到一个固定的速度上,直接操控速度显得非常直接,以往,让飞行器保持匀速飞行是只有专业飞手才能做到的事情,现在则真真正正地让普通人也能触手可得。遥控器杆量改动也显示了大疆对自己智能导航系统提供的稳定的三维速度测量的信心。(这点px4也已经实现)
7.一套完整、可靠的传感器系统是一点一滴积累起来的,新传感器必须和已有的组合导航系统在硬件和软件上仔细融合,才能真正发挥作用。