查看: 859|回复: 20

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

[复制链接]

35

主题

745

帖子

1477

积分

金牌飞友

Rank: 6Rank: 6

积分
1477
飞币
730
注册时间
2017-9-19
发表于 2022-10-22 15:50:11 | 显示全部楼层 |阅读模式
转载请注明文章出处、专栏链接和作者信息,谢谢!
出自   知乎专栏  飞控那些事儿
作者   across
专栏链接

什么是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知识小结-1.jpg
当然,还有其他厂家的高精度GPS模块,比如偌瓦泰,以及这两年广泛使用的差分GPS。

GPS的指标?

无人机飞控相关的GPS知识小结-2.jpg
这里,有比较重要的几个指标:
速度数据的精度在0.05m/s
水平的定位精度,如图所示,一般设置在GPS模式时,定位精度为2.5m左右
输出频率,在GPS模式时,最大输出10hz

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

UBX数据帧结构

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

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

设置的方法?
1.电脑端上位机设置

无人机飞控相关的GPS知识小结-4.jpg
用USB转串口模块,将GPS模块与电脑相连,用官方给的u-center上位机进行设置。
优点:嵌入式程序不需要做相应的代码编写;
缺点:需要GPS模块能够保存设置信息,掉电不丢失;

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

飞控需要GPS哪些信息(即需要设置哪些参数)?
以开源飞控px4为例:

无人机飞控相关的GPS知识小结-5.jpg
实际应用中,我们可以不需要解码出这么多信息,常用的如下:
经纬度、海平面高度              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窗口

无人机飞控相关的GPS知识小结-6.jpg
2.点击UBX窗口,因为与飞控之间的通信都是用的UBX协议,所以我们要在UBX窗口进行配置

无人机飞控相关的GPS知识小结-7.jpg
3.设置模块输出的方式,选择串口,输入输出都选择UBX协议

无人机飞控相关的GPS知识小结-8.jpg
4.点击下方按钮,能够看到发出的命令具体是什么,在嵌入式代码编写中,最简单的笨办法就是通过电脑上位机将这些命令保存下来,直接在嵌入式代码中赋值给数组保存起来调用

无人机飞控相关的GPS知识小结-9.jpg
5.设置GPS模块的输出频率,如图,选择UTC时间,5Hz输出

无人机飞控相关的GPS知识小结-10.jpg
6.设置一些参数,比如动态模式小于2g(一般飞行不会超过该数值),fix类型为3d锁定等

无人机飞控相关的GPS知识小结-11.jpg
7.设置输出的数据消息类型,在m8n系列中,可以直接选择NAV-PVT输出,就包含了常用的一些信息,比如经纬度、高度、NED速度等

无人机飞控相关的GPS知识小结-12.jpg
如下图所示,GPS模块正在输出PVT数据包

无人机飞控相关的GPS知识小结-13.jpg
8.设置输出DOP数据包

无人机飞控相关的GPS知识小结-14.jpg
9.设置输出星数数据包

无人机飞控相关的GPS知识小结-15.jpg

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

无人机飞控相关的GPS知识小结-16.jpg
反之,由home点坐标与ned系下的距离,推算出当前点的坐标。

无人机飞控相关的GPS知识小结-17.jpg

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

无人机飞控相关的GPS知识小结-18.jpg
这里通过判定gps的噪声值、fix_type来判定gps是否可用。
在组合导航算法中,通过eph、epv和fix_type来判定。

无人机飞控相关的GPS知识小结-19.jpg

eph  epv在导航算法里的小应用
比如用来自适应调整GPS参与融合的权重值。

无人机飞控相关的GPS知识小结-20.jpg
如图所示,这里的min_eph_epv为2,也就是说,当GPS的eph、epv小于2的时候,gps
参与融合的权重为1,当GPS的eph、epv大于2的时候,这时候GPS的数据质量不佳,同时,权重值也小于1,达到自适应调整权重值的目的。

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

Dop是什么意思?
Dop分为以下几种:

无人机飞控相关的GPS知识小结-21.jpg
常用的有:
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语言
百度云盘
链接: https://pan.baidu.com/s/1BCS4n_g_CZQDdxbLgu-s_A
密码: rysu

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数据质量会受到很大影响,因此不建议在这种状态下飞行。

后记:
本文笔者从飞控的角度去理解总结gps相关的知识点,当然,关于gps的知识有很多,从飞控来说,不需要面面俱到,有错误的地方还请指出,谢谢!
另外,笔者对于专栏最近的安排,打算对之前文章的内容进行更新,修改其中不合时宜甚至错误的地方,读者们留意!

26

主题

776

帖子

1587

积分

金牌飞友

Rank: 6Rank: 6

积分
1587
飞币
746
注册时间
2017-9-3
发表于 2022-10-22 15:59:27 | 显示全部楼层
好的融合算法,能够使得估计出来的数据相比GPS原始数据,频率提升,且具有相位超前(GPS的数据一般较实际反应,延迟150ms左右)。 请问为什么融合算法还能超前估计呢?您能给一些相关资料的链接或者关键字么?

35

主题

786

帖子

1552

积分

金牌飞友

Rank: 6Rank: 6

积分
1552
飞币
764
注册时间
2017-9-4
发表于 2022-10-22 16:12:20 | 显示全部楼层
超前估计是相对于gps原始数据来说的~超前效果主要由加速度给的~

32

主题

746

帖子

1475

积分

金牌飞友

Rank: 6Rank: 6

积分
1475
飞币
727
注册时间
2017-8-23
发表于 2022-10-22 16:17:58 | 显示全部楼层
https://blog.csdn.net/u011992534  观测传感器延时修正处理,惯导相位超前数据波形见CSDN博客

308

主题

346

帖子

963

积分

高级飞友

Rank: 4

积分
963
飞币
614
注册时间
2017-7-3
发表于 2022-10-22 16:30:10 | 显示全部楼层
环形缓冲区的技巧好棒。

37

主题

739

帖子

1474

积分

金牌飞友

Rank: 6Rank: 6

积分
1474
飞币
731
注册时间
2017-8-28
发表于 2022-10-22 16:35:48 | 显示全部楼层
如果一个完整的数据包已经放进缓冲区了,缓冲区还有空间,继续接收一部分数据,如果这部分数据把之前缓冲区帧头和一些数据覆盖掉,且这部分也有帧头,导致数据错位,该怎么来进行解析呢?

27

主题

776

帖子

1523

积分

金牌飞友

Rank: 6Rank: 6

积分
1523
飞币
745
注册时间
2017-9-12
发表于 2022-10-22 16:49:54 | 显示全部楼层
您好,我想问下水平精度因子hdop与水平精度hacc区别是什么?我觉得他们表征的是一个东西,只是计算方法不同。还有我想知道利用hdop进行量测噪声选取可行么?谢谢啦

39

主题

795

帖子

1582

积分

金牌飞友

Rank: 6Rank: 6

积分
1582
飞币
785
注册时间
2017-9-20
发表于 2022-10-22 16:55:51 | 显示全部楼层
您好,我觉得文章写的超棒,也很详细。希望能快点看到关于gps的数据滞后估计方法的内容,最近也在研究这方面的内容,也参考apm的ekf,大体上能明白他的思路,只是不知从何去理论分析。

34

主题

818

帖子

1636

积分

金牌飞友

Rank: 6Rank: 6

积分
1636
飞币
802
注册时间
2017-8-21
发表于 2022-10-22 17:04:36 | 显示全部楼层
可以交流交流,最近也遇到这个问题

303

主题

337

帖子

944

积分

高级飞友

Rank: 4

积分
944
飞币
605
注册时间
2017-7-13
发表于 2022-10-22 17:19:18 | 显示全部楼层
如果队列满了,这个时候是不会进数据的,一直等解析开始才会有空位置放进去。你可以网上搜搜环形缓冲区的讲解,包括我那个视频教程第9课里有讲,你可以看下课件里的那个图。

38

主题

838

帖子

1678

积分

金牌飞友

Rank: 6Rank: 6

积分
1678
飞币
830
注册时间
2017-8-15
发表于 2022-10-22 17:30:53 | 显示全部楼层
对GPS这块理解也不深,我的理解是:dop表示的定位精度是与接收模块几何配置关系的一个参数,也就是表征了天上卫星分布程度的好坏,而hacc这一类,是算法估计出来的定位精度,表示认为自身现在的定位好坏,而且是有单位的,其可以量化表示。所以两者不算一个东西,只是都能一定程度反映定位好坏。
至于hdop选取量测噪声,本人没有试过,不清楚是否可行。但是可以反映两者之间的联系,比如hdop差,那相应的量测噪声应该调大调小,理论上是会有效果。

36

主题

786

帖子

1557

积分

金牌飞友

Rank: 6Rank: 6

积分
1557
飞币
762
注册时间
2017-9-7
发表于 2022-10-22 17:38:35 | 显示全部楼层
gps数据滞后估计?不太明白什么意思?跟滞后有关的,一般处理思路是在进行算法融合时,考虑gps的数据滞后,并认为是一个固定的周期,进行量测更新。

303

主题

339

帖子

951

积分

高级飞友

Rank: 4

积分
951
飞币
605
注册时间
2017-7-19
发表于 2022-10-22 17:46:09 | 显示全部楼层
我关注专栏很长时间了,文章写的非常到位,您有没有意向做成专业视频课程,更直观的分享给大家呢,如有,可联系我哦

39

主题

755

帖子

1505

积分

金牌飞友

Rank: 6Rank: 6

积分
1505
飞币
743
注册时间
2017-9-14
发表于 2022-10-22 17:59:19 | 显示全部楼层
大神,我是猎头Daisy,在各个论坛上面寻迹找来的,能留个联系方式吗?或者私信一下?

29

主题

837

帖子

1659

积分

金牌飞友

Rank: 6Rank: 6

积分
1659
飞币
820
注册时间
2017-9-3
发表于 2022-10-22 18:09:11 | 显示全部楼层
有人知道怎么买么

33

主题

763

帖子

1514

积分

金牌飞友

Rank: 6Rank: 6

积分
1514
飞币
749
注册时间
2017-8-20
发表于 2022-10-22 18:17:14 | 显示全部楼层
问下m8n可以输出东北天坐标系下的各个分速度吗?

306

主题

346

帖子

956

积分

高级飞友

Rank: 4

积分
956
飞币
608
注册时间
2017-7-17
发表于 2022-10-22 18:24:14 | 显示全部楼层
可以

46

主题

788

帖子

1573

积分

金牌飞友

Rank: 6Rank: 6

积分
1573
飞币
783
注册时间
2017-9-5
发表于 2022-10-22 18:38:04 | 显示全部楼层
NEO-M8N,  可同步运行GPS+GLONASS或者GPS+北斗;功耗较低,比第六代的产品或者绝大多数的国产模块(比如UM220-III)要低很多。但比第7代的模块比如MAX-7C,NEO-7M要高一些。 相比于MTK3333芯片的模块,其功耗差别并不大。

35

主题

785

帖子

1552

积分

金牌飞友

Rank: 6Rank: 6

积分
1552
飞币
758
注册时间
2017-9-30
发表于 2022-10-22 18:46:08 | 显示全部楼层
大牛您好;咱们现在飞控用的是单GPS板卡就够,还是用的组合导航的形式,用到的什么精度级别的?

23

主题

774

帖子

1534

积分

金牌飞友

Rank: 6Rank: 6

积分
1534
飞币
758
注册时间
2017-9-25
发表于 2022-10-22 18:51:09 | 显示全部楼层
您好,您给出的gps参数设置的程序具体位于哪个位置呢,能否告知
您需要登录后才可以回帖 登录 | 加入联盟

本版积分规则

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