查看: 581|回复: 0

详解多旋翼飞行器上的传感器技术(上)

[复制链接]

365

主题

404

帖子

1134

积分

金牌飞友

Rank: 6Rank: 6

积分
1134
飞币
728
注册时间
2017-7-6
发表于 2022-12-30 15:30:02 | 显示全部楼层 |阅读模式
雷锋网按:本文作者杨硕,来自大疆工程师。此文一共分上下两篇,下篇链接在此。

2014年的六月,我在知乎“民用小型无人机的销售现状和前景怎么样? - YY硕的回答”这个问题下面发布了一篇科普多旋翼飞行器技术的回答,在知乎上至今获得了889个赞同、近10万次浏览,并且被几十家媒体和公众号转发。2014年中正是多旋翼飞行器市场爆发前的风口,后来很多朋友告诉我说正是这篇文章吸引他们走入了多旋翼飞行器行业。

两年来,大疆精灵系列更新了两代,飞控技术更新了两代,智能导航技术从无到有,诸多新的软件和硬件产品陆续发布。同时我们也多了很多友商,现在多旋翼飞行器市场火爆,诸多产品琳琅满目,价格千差万别。为了理解这些飞行器的区别,首先要理解这些飞行器上使用的传感器技术。我觉得现在很有必要再发一篇科普文章,定义“智能导航”这个概念,顺便字里行间介绍一下两年来大疆在传感器技术方面的努力。

1. 飞行器的状态

客机、多旋翼飞行器等很多载人不载人的飞行器要想稳定飞行,首先最基础的问题是确定自己在空间中的位置和相关的状态。测量这些状态,就需要各种不同的传感器。

世界是三维的,飞行器的三维位置非常重要。比如民航客机飞行的时候,都是用GPS获得自己经度、纬度和高度三维位置。另外GPS还能用多普勒效应测量自己的三维速度。后来GPS民用之后,成本十几块钱的GPS接收机就可以让小型的设备,比如汽车、手机也接收到自己的三维位置和三维位置。

对多旋翼飞行器来说,只知道三维位置和三维速度还不够,因为多旋翼飞行器在空中飞行的时候,是通过调整自己的“姿态”来产生往某个方向的推力的。比如说往侧面飞实际上就是往侧面倾,根据一些物理学的原理,飞行器的一部分升力会推着飞行器往侧面移动。为了能够调整自己的姿态,就必须有办法测量自己的姿态。姿态用三个角度表示,因此也是三维的。与三维位置、三维角度相对应的物理量是三维速度、三维加速度和三维角速度,一共是十五个需要测量的状态。
详解多旋翼飞行器上的传感器技术(上)-1.jpg


这十五个状态都对多旋翼飞行器保持稳定飞行有至关重要的作用。拿“悬停”这件看起来是多旋翼飞行器最基本的能力来说,实际上飞行器的控制器在背后做了一系列“串级控制”:在知道自己三维位置的基础上,控制自己的位置始终锁定在悬停位置,这里的控制量是一个目标的悬停速度,当飞行器的位置等于悬停位置时,这个目标悬停速度为0,当飞行器的位置偏离了悬停位置时,飞行器就需要产生一个让自己趋向悬停位置的速度,也就是一个不为零的目标悬停速度;飞行器要想控制自己产生目标悬停速度,就需要根据自己当前的三维速度,产生一个目标加速度;为了实现这个目标加速度,飞机需要知道自己的三维角度,进而调整自己的姿态;为了调整自己的姿态,就需要知道自己的三维角速度,进而调整电机的转速。

读者可能会想哇为什么这么复杂。其实我们身边的许多工程产品都在简单的表现背后藏着复杂的过程。比如汽车的油门也是类似的,踩下油门之后,有传感器测量汽油的流速、控制汽油的流速;然后有传感器测量发动机的转速、控制发动机转速……从踩油门到加速的过程中也有许许多多的传感器在测量汽车的各个状态量,并对这些状态量施加控制。

知道十五个状态量是多旋翼飞行器做任何动作的基础中的基础,但是让飞行器在任何情况下都准确知道这十五个状态量是非常困难的事情,因为现在的科技水平还没有能够实现让一个传感器同时测量这么多的物理量。几十年来,人们发展出了一套复杂的技术,叫做组合导航,用GPS加上惯性测量元件、气压计和地磁指南针来让飞行器测量自己的十五个状态量。

2. 组合导航

惯性测量元件是一种能够测量自身三维加速度和三维角速度的设备(实际上惯性测量元件有两种,一种加速度计,一种角速度计,为了行文方便,我们把这两种元件当做一种,统称为惯性测量元件)。根据物理学原理,加速度的积分是速度,速度的积分是位置,角速度的积分是角度,理论上单靠惯性测量元件,我们就可以知道十五个状态量。

人类的科技水平也的确实现了这一点:GPS还没被发明以前,导弹上通常都装着一个精密的惯性测量元件,导弹打出去以后靠这个装置测量自己的十五个状态量,然后控制自己飞越海洋和大洲。然而这种惯性测量元件会在测量的过程中慢慢累积误差,元件本身的工艺、技术、成本越差,积累误差的速度就越快。导弹上价值几百万的惯性测量元件飞几万公里后会积累十几米到几公里的误差,这种水平的导弹已经非常了不起了,毕竟不是每个国家都可以在背后竖着洲际导弹和国际社会讲道理。
详解多旋翼飞行器上的传感器技术(上)-2.jpg


人体内也有惯性测量元件,人的耳蜗充满液体,人运动的时候这些液体有惯性,可以被耳中的神经感受到,因此测出了运动的加速度。然而人的惯性测量元件非常差,闭上眼睛,也不摸周围的东西,只靠耳蜗感受的移动,人基本没法走直线。

而多旋翼飞行器上用的低成本MEMS惯性测量元件,精度就更差了,它测量的速度和位置在几秒钟内就会发散到几十米开外去,完全没法用来规划控制自己的飞行路线。

此外,惯性测量元件还会受到温度、制造工艺的限制,产生一些测量的偏差,比如说有时温度突然变化之后,一个静止的惯性测量元件会觉得自己转动了起来,虽然它静止着,但是会输出不为零的角速度。这类测量的偏差需要比较仔细的算法进行修正,而且往往不能单靠惯性测量元件自己的测量完全消除。

地磁指南针是一种测量航向的传感器。指南针在人们的生活中作用重大,在未知的环境中,不分南北可能寸步难行。飞行器的机身正方向朝南还是朝北这个状态量用导航的术语来说叫做航向,也就是飞行器姿态的三维角度中的一个,他在组合导航系统中是非常重要的一个状态量。

地磁指南针能够指南指北是因为地球表面空间中有看不见的横贯南北的地磁线,地磁指南针可以测量出穿过自身的地磁强度,从而指出当前自身相对于地磁线的偏转。同样地,这个理论虽然非常简单,但是地磁线的强度非常弱,很容易受到干扰。比如多旋翼飞行器通用的无刷电机,在运转的时候就会产生变化的磁场,和地磁场叠加之后,地磁指南针就找不到正确的方向了。地磁指南针的这个特性非常令人恼火,但是早期的多旋翼飞行器开发人员毫无办法,因为这是唯一的能够确定飞行器在空间中绝对航向的设备。如果不知道这个航向,就基本没办法进行组合导航。
详解多旋翼飞行器上的传感器技术(上)-3.jpg


气压计的原理最为简单。因为地球表面海拔越高,空气越稀薄,气压越低,因此气压就能够给出飞行器的海拔高度。不过,不出意料的是,尺寸和重量适合在多旋翼飞行器上使用的气压计有很大的缺陷,它的测量值会受到温度、湿度、空气流速、光照、振动等因素的影响,单靠气压计非常难实现对高度的稳定测量。

组合导航技术结合GPS、惯性测量元件、地磁指南针和气压计各自的优缺点,使用电子信号处理领域的很多技术,融合多种传感器的测量值,获得较为准确的飞行器十五个状态量的测量。前面说惯性测量元件的测量容易发散,这个发散可以通过GPS来抑制:GPS可以获得三维位置也可以获得三维速度,惯性测量元件可以获得三维加速度,加速度的积分也是速度。在通过地磁指南针获得航向的基础上,两种速度的观测就可以融合起来,通过GPS的测量值来发现并抑制惯性测量元件的发散。惯性测量元件的发散被抑制住之后,它也可以更准地测量三维角度和三维加速度。因此GPS和惯性测量元件在这些情况中互相取长补短。除此之外,气压计和GPS互相提高了高度测量的精度,地磁指南针、GPS和惯性测量元件一同提高了航向测量的精度,他们都是利用了相同的融合、“互补”的思想。

组合导航技术中传感器互补的原理直接源于1948年诞生的信息论。克劳德-香农总结归纳出的信息论提出了信息的概念以及如何从数学上度量信息,信息论可以说是现代人类文明的基石之一。解释清楚信息的本质之后,人们才能够用数学表示一个朴素而又深刻的原理:信息可以用来估计状态,越多的信息可以把状态量估计得越准。
详解多旋翼飞行器上的传感器技术(上)-4.jpg


(上图致敬信息论之父,克劳德-香农)

此后,控制论的奠基人诺伯特-维纳、鲁道夫-卡尔曼以及其他一大批工程师和科学家完善了通过信息进行状态估计的线性估计理论,进一步提出了传感器之间“互补滤波”,共同减小误差的理论。卡尔曼设计的卡尔曼滤波器还被实现在了阿波罗飞船的导航计算机当中,使用星座位置和惯性测量元件互补测量阿波罗飞船的十五个状态量。

信息论、线性估计理论以及卡尔曼滤波器允许人们把多个具有误差的传感器通过数学方程融合起来,利用传感器信息估计特定的状态量,而且越多传感器“互补”,可以获得越好的状态估计。这样,数学给工程学指出了发展方向:造更多牛逼的传感器进行互补,就能获得更好的状态估计能力。大疆飞控总工程师鱼大人也曾经说过:“最牛逼的工程师都是在搞传感器。”传感器技术的重要性可见一斑。

作为一种位置传感器,GPS具有诸多的问题,GPS信号只有在开阔的空间内才能给出比较好的测量值,因为GPS接收机需要从天上的卫星获得信号,这些信号要从太空传入大气层,这么远的距离,信号已经相对来说很微弱,所以必须要求接收机和卫星之间的连线上没有遮挡,一旦有建筑甚至是树木的遮挡,卫星发下来的信号就有噪声,GPS接收机就不能给出很好的位置和速度观测。在室内环境中,GPS甚至完全不能使用。组合导航技术要想进一步发展,就需要寻找其他能够在GPS不能使用的环境中使用的传感器。

一种较为简单的能够替代GPS测量高度的传感器是小型超声波模块。这种模块通常有一收一发两个探头,一个探头发出超声波,另一个探头测量回波的时间,能够算出导致声波反弹的物体离探头的距离。现在在淘宝上,只要10块钱就可以买到一个能够比较准确测量几米内物体距离的超声波模块,被广泛用在大学生制作的小机器人上。这种10块钱的传感器没有比气压计和MEMS惯性测量元件性能高多少,它发出的声波容易发散,探测到的物体不一定位于探头正前方,另外声波也容易被空气中的水雾、振动所影响,给出完全错误的观测。因此,超声波模块最好的使用场景是对着地面,测量自身和地面的距离。
详解多旋翼飞行器上的传感器技术(上)-5.jpg


3. 视觉感知系统

另外一种替代品是视觉感知系统。1970年之后,随着数字成像技术的发展,相机作为一种传感器开始被广泛研究。因为人可以通过自己的视觉估计视野中物体的位置、距离,而相机的原理模拟了人的双眼,所以研究者们模仿人的特点,利用相机的二维图像反推图像中物体的三维信息。这种和二维图像推算三维信息相关的技术和数学理论发展成了一个独立的学科——计算机视觉,也被称作机器视觉。

视觉感知系统是目前世界上最热门的机器人学和机器视觉领域研究课题。其原理是利用一个或者多个相机构成的视觉传感器系统,采用复杂的算法,通过二维的相机图像推算出视野中物体相对与视觉传感器系统的几何中心的运动信息,如果假设这些物体都是静止的,那么相对运动其实代表了视觉传感器本身的运动。理论上,计算机视觉技术能够单凭一个相机就可以准确测量十五个状态量,但是与其他传感器类似,相机也有很多的缺陷,包括无法恢复尺度、成像质量有限、计算量消耗巨大等等。幸好,我们还可以把视觉感知系统和其他传感器结合起来,互相提高测量精度。

聪明的读者肯定能够想到,把视觉感知系统和之前说的所有组合导航中用到的传感器融合起来,GPS信号质量高的时候用GPS组合导航,没GPS的时候用视觉感知系统替代GPS,不就解决问题了吗。这确实正是目前工程师和科学家们正在努力解决的问题,也是精灵4上初步实现的技术。在介绍精灵4是如何结合视觉感知系统和组合导航技术之前,我们先简单介绍两种已经比较成熟的视觉感知系统:光流测速模块和视觉里程计。

光流测速模块顾名思义,只能测速度。通常一个光流测速模块由一个相机、一个惯性测量元件、一个超声波模块构成,它的主要原理是计算机视觉技术中于1981年被发展出来的“光流追踪”算法。

“光流”的概念最早在1950年代由心理学家和生物学家提出,指的是一个观察者和他在观察的事物发生相对运动时,这些事物在他眼前成的像会产生“运动的模式”,人脑利用这种“运动的模式”能够更灵敏地感知周围什么东西在动。比如下图中,读者一看就可以直观理解“光流”的意义。
详解多旋翼飞行器上的传感器技术(上)-6.jpg


后来计算机科学家布鲁斯-卢卡斯和金出武雄在1981年发明了Lucas-Kanade算法,通过算法计算出连续拍摄的图片上的光流,并证明了光流可以反解出相对运动的速度。虽然三十多年来,Lucas-Kanade算法始终被公认为最好的“光流追踪”算法,但是它有比较大的局限性,它包含很多假设,比如假设连续图片的平均亮度相同,比如假设图片中的物体只发生平面运动等等。另外,光流算法算出的速度是没有尺度的,因为相机图像的单位是像素,所以光流算法只能给出“你现在的速度是10个像素每秒”,但是没法算出10个像素是1厘米还是1米。恢复尺度的方式是增加一个超声波模块测量平面运动离相机的距离,这样就能够把像素运动转换成真实的运动。最后,如果要让光流测速模块在晃来晃去的多旋翼飞行器上也能使用,通过惯性测量元件找出图像所代表的平面也是必不可少的,这一点需要在算法上进行两种传感器很好的配合。

光流算法原理上只可以测三维速度,不能直接测量三维位置。我们同样可以通过把光流测速模块测出的三维速度积分获得三维位置,但是就像惯性测量元件积分会发散一样,光流测速模块积分得到的位置也会发散。好在它不会天马行空地失去控制,和组合导航技术中除了GPS之外的传感器妥善融合之后,它可以做到悬停时测量的位置不发散。因此可以说光流测速模块只在有限的条件下能够替代GPS。

光流测速模块已经形成了非常标准的解决方案。大疆悟以及精灵3上都装载了自主研发的光流测速模块,另外著名的开源飞控产品Pixhawk中包含了一个叫做PX4Flow的光流测速模块,并且开源了所有的代码和硬件方案。所以光流测速模块目前已经广泛出现在了各大厂商的多旋翼飞行器产品上。
详解多旋翼飞行器上的传感器技术(上)-7.jpg

详解多旋翼飞行器上的传感器技术(上)-8.jpg


视觉里程计相比光流测速模块,增加了直接测量位置的能力,所以才叫“里程计”。视觉里程计比光流测速模块能力更强,性能更好。

读者可能会问,为什么听起来视觉里程计和光流测速模块参与的传感器数量差不多(光流测速模块甚至还多一个超声波模块),但是视觉里程计能力反而更强呢。这里的原因不在于传感器硬件,而在软件算法上。前面已经说到光流追踪算法有很多简化的假设,只能测量平面运动,增加其他传感器硬件一定程度上是为了把那些为了计算方便而简化掉的因素重新弥补起来。

而视觉里程计算法则复杂得多,它不仅要通过图像反推出视野中物体的平面运动,还要反推出这些物体的三维位置,并且基于这些物体的三维位置做很多次的优化计算,算法复杂度成倍于光流测速模块。有些视觉里程计的算法甚至包含完整的光流追踪的算法,但是仅仅把计算光流作为预处理图像的步骤。

视觉里程计能够直接测量位置,测量值也比较准确,不会像光流测速模块那样发散。通常比较优秀的视觉里程计飞100米之后只会积累十几厘米到几十厘米的误差,这个测量水平比起导弹上几百万的惯性测量元件还是差了不少,但是考虑到视觉里程计的价格极其低廉,对比起来它的性价比非常高。

视觉里程计有几个不同层次的难度,最简单的是两个相机构成的双目立体视觉系统加惯性测量元件,最难的是一个相机构成的单目视觉系统加惯性测量元件。如果视觉里程计和光流测速模块硬件一致,那么这里的视觉里程计采用的是单目视觉系统。目前,双目立体视觉系统加惯性测量元件实现自身状态观测已经是比较完善的技术,而单目视觉系统则是活跃的研究方向,世界上做这个研究方向较好的大学有美国的宾西法尼亚大学、瑞士的苏黎世联邦理工学院、英国的牛津大学、我国的香港科技大学和其他一些欧美院校。

单目视觉系统和双目立体视觉系统两者对比起来,他们的算法难度差别很大。视觉里程计的算法关键点是前面说的“通过连续的图像反推出视野中物体的三维位置”。对于和人眼结构类似的双目立体视觉系统,这一点比较容易,因为一个物体同时出现在左右两个相机的视野中时左右视野有视差,视差可以帮助解算物体的位置,只需要用简单的几何关系就可以实现,这已经是非常成熟的技术。

但是对于单目视觉系统,只有一个相机就没有视差,没法做简单的几何关系的解算,所以算法必须能智能地在局部范围内同时估计很多个物体的位置,然后在自身移动过程中通过位置移动产生视差,然后进行多个物体的位置的最大似然估计,从而推算出这些物体比较准确的位置。这个过程包括很多个环节,大部分环节在学术界都没有公认最优的方案,因此还没有成熟的技术。

因为原理相对简单,所以双目立体视觉系统构成的视觉里程计在三十年前就开始被研究了。1980年代早期,NASA工程师、著名机器人学家汉斯-莫拉维克就已经制造出了这种状态测量系统。关于汉斯-莫拉维克的另一个故事,我在知乎问题中“有哪些与控制、机器人等相关的 quotes? - YY硕的回答”也有提到。
详解多旋翼飞行器上的传感器技术(上)-9.jpg


(上图致敬汉斯-莫拉维克)

在经年累月的优化之后,2004年,NASA成功把视觉里程计和惯性测量元件构成的视觉定位系统装在“机遇号”和“勇气号”火星车主频仅有20MHz的特制芯片上,送上了火星,它可以帮助火星车通过一对双目相机非常准确地记录自己走过的路线。2007年,参与火星探测任务的计算机科学家和工程师们把这个激动人心的过程写成了一篇论文《计算机视觉在火星》(Computer Vision on Mars),这篇文章吸引了很多计算机视觉研究人员投身视觉里程计的研究,也极大推动了视觉里程计在机器人学中的应用。
您需要登录后才可以回帖 登录 | 加入联盟

本版积分规则

快速回复 返回顶部 返回列表