amoBBS 阿莫电子论坛

 找回密码
 注册
搜索
bottom↓
查看: 571|回复: 11

无人机飞控相关的GPS知识小结

[复制链接]
发表于 2018-5-24 11:16:45 | 显示全部楼层 |阅读模式
转载过来的一篇文章
什么是GPS?
通常意义上讲GPS,其实应该是指Global Navigation
Satellite System全球导航卫星系统,即GNSS。主要是用来定位的系统。

GPS的种类?
目前全球定位系统有下面几种:
GLONASS           俄罗斯 格洛纳斯
Galileo-NES        欧洲 伽利略
BDS                    中国 北斗
GPS                    美国 全球定位系统
这里看到,其实GPS只是单指美国的全球定位系统,不过现在习惯上用GPS泛指其他定位系统。

为什么飞控需要GPS?
这是由无人机的操作要求和任务要求决定的。有了GPS后,无人机能够悬停飞行(定点),飞手操作的复杂性大大降低,同时,为了能够执行一些航迹飞行任务,定位信息也是必要的。
简单来说,如果只是姿态自稳的飞行,可以没有GPS,但是随着要求的提高,GPS对飞控、对无人机都是必要的部件。

GPS的工作原理?
首先,宇宙里的卫星会不停的向地面的GPS接收机(常用的GPS模块)广播当前的位置信息,包括该数据包的时间戳,当GPS模块接收到这些信息后,用当前时间减去时间戳的时间,就得到空中传输的时间,乘上传输速度,就得到卫星与GPS模块的距离。
理论来讲,为了确定GPS模块的坐标位置(NEH),3个参数,那只需要3颗卫星与GPS模块的距离就可以计算出来。
但是因为对时间差的要求特别高,由于GPS模块的时钟一般是石英钟,所以认为它的时钟时间与卫星的时间有同步误差,所以加上这个误差作为参数,这样就有4个参数待定,所以一般至少需要4颗卫星进行观测。

飞控上常用的GPS型号?
目前,用于多旋翼无人机中的GPS,常见的是Ublox的NEO-M8系列。
当然,还有其他厂家的高精度GPS模块,比如偌瓦泰,以及这两年广泛使用的差分GPS。

GPS的指标?
这里,有比较重要的几个指标:
速度数据的精度在0.05m/s;
水平的定位精度,如图所示,一般设置在GPS模式时,定位精度为2.5m左右;
输出频率,在GPS模式时,最大输出10hz。

GPS的输出协议?
以M8N模块为例,有NMEA、UBX、RTCM3种。默认NMEA、UBX两种协议都已使能,但是输出的只有NMEA协议,这个协议是ASCII码形式输出,如果与电脑上位机进行通讯时,用这种方式解析比较方便,但如果是嵌入式单片机(飞控一般属于此类)与GPS模块进行通信,一般用UBX协议,其输出格式是二进制。

UBX数据帧结构
前两个字节是同步头,接收模块通过查找这两个同步头,可以确定这包数据按照什么格式进行接收。
CLASS字节表明接收的数据组信息;
IP字节表明接收的数据组里的什么信息;
长度信息用两个字节表示,表明数据包里有多少个数据,且是小端模式(大小端模式,主要是说,比如一个16位的数据在传输过程中,将高8位的数据放在前面还是后面)。
PAYLOAD存放的即数据信息。
CK_A和CK_B是两个字节的校验位,对CLASS到PAYLOAD的数据进行校验,为了确保数据包在传输过程中数据的正确。

GPS模块的设置
为什么需要设置?
设置GPS模块,主要是为了让模块能够输出想要的信息,包括输出频率等。

设置的方法?
1.电脑端上位机设置
用USB转串口模块,将GPS模块与电脑相连,用官方给的u-center上位机进行设置。
优点:嵌入式程序不需要做相应的代码编写;
缺点:需要GPS模块能够保存设置信息,掉电不丢失;

2.嵌入式程序,在上电初始化的时候进行设置(常用方式)。
优点:对GPS模块没有要求,不要求其能够保存设置信息,方便使用;
缺点:飞控程序需要编写相应的初始化设置代码(代码可参考后面给出的链接);

飞控需要GPS哪些信息(即需要设置哪些参数)?
以开源飞控px4为例:
实际应用中,我们可以不需要解码出这么多信息,常用的如下:
经纬度、海平面高度              lat   lon   alt
锁定类型                              fix_type
水平/垂直精度估计               eph  epv
水平/垂直精度因子               hdop  vdop
GPS噪声值                          noise_per_ms
NED系速度                         vel_n_m_s    vel_e_m_s  vel_d_m_s
卫星数                                satellites_used

如何设置?
以电脑上位机设置示例:
1.连接相应的com口,打开Messages  View窗口
2.点击UBX窗口,因为与飞控之间的通信都是用的UBX协议,所以我们要在UBX窗口进行配置
3.设置模块输出的方式,选择串口,输入输出都选择UBX协议
4.点击下方按钮,能够看到发出的命令具体是什么,在嵌入式代码编写中,最简单的笨办法就是通过电脑上位机将这些命令保存下来,直接在嵌入式代码中赋值给数组保存起来调用
5.设置GPS模块的输出频率,如图,选择UTC时间,5Hz输出
6.设置一些参数,比如动态模式小于2g(一般飞行不会超过该数值),fix类型为3d锁定等
7.设置输出的数据消息类型,在m8n系列中,可以直接选择NAV-PVT输出,就包含了常用的一些信息,比如经纬度、高度、NED速度等
如下图所示,GPS模块正在输出PVT数据包
8.设置输出DOP数据包
9.设置输出星数数据包

GPS相关的坐标系
GPS的数据全部是在WGS-84坐标系下的,而飞控做定点控制,对位置进行解算、控制都在北东地NED坐标系下,所以要将GPS的数据进行转换(主要是位置数据经纬度)。
多说一句,GPS输出的高度一般不会用来进行高度推算,在大范围的高度变化情况下,具有一定的参考意义(相对变化),但是GPS的高度会随机漂移,所以一般不会使用这个数据(笔者自己的看法)。
有关坐标系转换的数学表达式这里不再进行推导,有兴趣的可以自行查找资料推导,以工程应用为主,直接给出ned系和WGS-84系互相转换的函数(参考px4代码),图中的ref为原点,即home点。
由home点坐标和当前点坐标,计算出NED系下当前点与原点的距离。
反之,由home点坐标与ned系下的距离,推算出当前点的坐标。

飞控中如何判定GPS可用?
标准不定,但是基本原则是根据精度来判定。
这里插入讲一下,笔者有次在某个群里看到有人问飞控算法里的eph epv表示什么意思,有人回答说是水平和垂直的精度因子,然后一大群人附和这个说法,但其实这个说法是错误的。
首先,水平/垂直精度因子是dop数据包解析出来的hdop  vdop。
这里的eph epv是pvt数据包里的hAcc vAcc,单位是mm,飞控中将其转换到m。简单理解就是水平和垂直方向的精度,这个数据是估计出来的。
在飞控算法中也更新这个数据。所以,参考开源代码的时候,要看的细致一些,不能想当然的认为,包括网络查找的答案不能尽信,要自己审核确认下。
这里通过判定gps的噪声值、fix_type来判定gps是否可用。
在组合导航算法中,通过eph、epv和fix_type来判定。

eph  epv在导航算法里的小应用
比如用来自适应调整GPS参与融合的权重值。
如图所示,这里的min_eph_epv为2,也就是说,当GPS的eph、epv小于2的时候,gps
参与融合的权重为1,当GPS的eph、epv大于2的时候,这时候GPS的数据质量不佳,同时,权重值也小于1,达到自适应调整权重值的目的。

为什么不用星数作为判定条件?
星数数据是离散变化的,很容易在设定的阈值上下跳变,这种情况下,飞行模式会不断的进行切换,导航算法也在不停的切换,程序容易出现问题,也不稳定。

Dop是什么意思?
Dop分为以下几种:
常用的有:
PDOP(position dilution of precision ) 三维位置精度因子:为纬度、经度和高程等误差平方和的开根号值
HDOP(horizontal dilution of precision )水平分量精度因子:为纬度和经度等误差平方和的开根号值
VDOP(vertical dilution of precision )垂直分量精度因子
GDOP(Geometric Dilution Precision)几何精度因子:是衡量一个定位系统精度的重要标准之一
它们之间的简单关系为:
HDOP2+VDOP2=PDOP2
DOP值的大小与GPS定位的误差成正比,DOP值越大,定位误差越大,定位的精度就低。PDOP则直接反映GPS卫星的分布情况,当PDOP较大时,表明空中的4颗GPS卫星几何分布不是太理想,他们构成的图形周长太短,定位精度就低,反之亦然。小于等于4的PDOP产生最佳位置。5到7之间的PDOP可接受,大于等于7的PDOP较差。

GPS解码与环形缓冲区
网上有些源码,gps解码采用的是串口中断方式。当然,源码只实现gps解码的话,这种方式问题不大,但是在整个飞控工程中,采用这种方式并不好。
原因:
嵌入式实时响应系统的中断使用,有一个原则,就是快进快出。在进入中断的时候,这个中断执行函数就必须尽可能快地执行完毕,然后跳出这个中断,使得比它优先级低的中断能够得到响应。所以在遇到一些接收数据量大,然后数据同时需要进行计算解析的时候。如果不使用缓冲队列进行管理数据,那必然需要在中断执行函数里面完成,接收同时完成解析。这样解析的时间如果过长,就势必会影响中断的执行长短,然后从而影响着整个系统的实时性。如果系统的任务比较多的时候,这个中断的执行时间太长,从而引起其他的任务无法正常的运行,有可能会导致整个系统的崩溃。所以,采用了缓冲队列的方式,将数据进行保存下来。然后在主控制器中解析这些数据,这样既保证了中断的实时性,又保证了我所接收到的数据能够完整的进行解析。
举个例子:假设这样一种情况,我们在中断里面去接收数据前,同时解析数据。当接收到一个字节的数据的时候,再进行一些计算,如果这个时候有更高优先级的中断发生了,那系统肯定要跳到中断优先级高的执行函数里面去执行,如果这个高执行函数执行时间过长。在还未跳到低优先级的中断的时候,这个时候来了几组新的数据,这样就会新数据会覆盖之前的数据,引起丢桢。

所以为什么要用环形缓冲区ringbuffer?
用于接收不定时、量大、数据,且数据需要分析处理。
还有一个优点,做解码的时候,并不会去判断我是不是接受了一完整的数据包。一般的做法是,把gps的数据接收下来,保存在缓冲区。主函数里面一有空就去解析这个缓冲区里面的数据。因为一个完整格式的数据帧,里面还有数据头和检验,根据这个,就能够识别出这个数据包头。所以并不需要等到一个完整的数据包接收完全之后再去解析。

参考源码(移植pixhawk GPS解码代码):
硬件平台:Pixhawk v2硬件 F4主芯片
软件环境:mdk stm32 cube HAL库  C语言
百度云盘

GPS数据在飞控中如何使用?
首先,在做定点飞行控制时,如果直接使用GPS反馈的数据,也是能够实现功能的。但是需要注意的是,前面讲到GPS模块的输出频率,最大10hz,而通常做定点控制时,控制频率是达到50hz以上(px4在100~200hz左右),反馈的数据频率带宽过低,这样控制增益不能加大,控制效果偏弱,甚至出现不稳定的现象(抖动、电机声音抽搐)。

说到控制,插入两个知识点:
什么是控制带宽?
简单来说一句话,控制带宽决定了系统的快速性。
以飞行器这个对象来说,高带宽意味着高性能,飞机的快速响应能力,但高带宽是建立在高成本的基础上的。比如飞行器的机体材料需要刚性强的,动力系统的响应能力要快,飞控的芯片处理能力快,传感器延迟小等等条件。
一般来说,飞行器的带宽在30hz左右,所以传感器的低通滤波的截止频率一般设置在30hz。某些震动大的飞行器,可以设置更低一些,一般震动大的,轴距也大,所以快速性要求没那么高。

传感器采样频率、控制频率之间的关系?
一般来说,传感器的采样频率尽可能越高越好,比如gyro数据1000hz采样,实际在姿态估计算法中是200hz读取,这样多出来的数据点能用来做滤波处理,尽可能的保存真实信息。
控制器频率则一般根据系统的带宽决定,一般来说,控制频率是带宽的5倍左右(理论推导不详述了,请自行查阅书籍)。
在多旋翼飞行器中,一般包含了4个控制回路,角速度控制、角度控制、速度控制、位置控制。以角速度控制为例,前面gyro滤波器设置的截止频率为30hz,所以最好角速度控制达到150hz以上。当然,这些没有标准的设置,基本合理就可以,底层的角速度控制频率尽可能高些,200~400左右即可。

如果反馈的数据频率低于控制频率怎么样?
常见的,以飞行器的定点控制为例,如直接使用GPS数据作为速度、位置反馈,GPS的数据频率可设置到10hz,但一般速度位置的控制频率在50hz以上。这样做,也是可以的,飞行器能够实现定点功能,但是存在一些问题,比如控制参数不能设置过大(与高频率的反馈数据相比),飞行过程中出现细微的不稳定现象等。
综上:传感器采样频率越高越好,控制频率低于反馈数据的采样频率,同时尽量保证控制频率大于带宽5倍以上。

所以,飞控解码得到GPS的数据之后,会做数据融合,简单来讲,就是通过与加速度计数据、姿态数据、气压计数据进行组合导航,估计出所需的惯性导航数据。
好的融合算法,能够使得估计出来的数据相比GPS原始数据,频率提升,且具有相位超前(GPS的数据一般较实际反应,延迟150ms左右)。
有关组合导航的估计算法,后面会单独写文章进行描述,这里不再赘述。

GPS数据质量不佳会有什么影响?
前面提到,需要用GPS的数据进行数据融合,如果GPS原始数据质量不佳(满足可用条件,但是不够好),会对融合算法产生影响,实际飞行时,比如GPS模式下飞行时,打杆操作不正常,返航精度不够等,总而言之,增大了炸机的风险。

补充:
Ø GPS第一次在一个地方上电的时候,搜星时间比较长一些,一般需要1min左右,如果在同一地点,上电间隔时间短的话,搜星很快,20s内就能搜星成功,达到GPS可用状态。
Ø 一般空旷环境下,星数在15颗以上,就认为GPS质量相对较好了,大部分人都是通过星数判定GPS的数据质量。
Ø 阴雨天气,楼层之间等环境下,GPS数据质量会受到很大影响,因此不建议在这种状态下飞行。
发表于 2018-5-24 13:40:03 | 显示全部楼层
没有点赞的图,写文字吧
发表于 2018-5-24 13:58:11 | 显示全部楼层

文字说的挺详细,只是图片显示不出来
发表于 2018-5-24 14:04:08 | 显示全部楼层
图片不显示
 楼主| 发表于 2018-5-24 14:05:18 | 显示全部楼层
3466756555 发表于 2018-5-24 13:58
文字说的挺详细,只是图片显示不出来

奇怪了,我复制过来的时候看到能显示图片的~那直接上链接吧
https://zhuanlan.zhihu.com/p/37063724
发表于 2018-5-24 14:15:20 | 显示全部楼层
好文章,mark一下
发表于 2018-5-24 19:19:10 来自手机 | 显示全部楼层
好文章。多谢多谢
发表于 2018-5-24 19:30:32 | 显示全部楼层
好文章。多谢多谢
发表于 2018-5-24 20:21:15 | 显示全部楼层
图片好像打不开,文章不错
发表于 2018-5-31 16:51:01 | 显示全部楼层

非常不错啊,赞一个,可惜图片打不开。
发表于 2018-6-12 20:57:34 | 显示全部楼层
图挂了,楼主
发表于 2018-6-12 21:49:01 来自手机 | 显示全部楼层
不错,学习!
友情提示:标题不合格、重复发帖,将会被封锁ID。详情请参考:论坛通告:封锁ID、获得注册邀请码、恢复被封ID、投诉必读
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|阿莫电子论坛(原ourAVR/ourDEV) ( 工信部备案:粤ICP备09047143号 公安备案:44190002001997(交互式论坛) )

GMT+8, 2018-8-21 17:51

阿莫电子论坛, 原"中国电子开发网"

© 2004-2018 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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