登录
加入联盟
找回密码
航空人生
新一代连飞客户端下载
空管人生
中国航空运动协会推荐
WEFLY
模拟飞行玩家聊天工具
门户
文章
商城
二手市场
外包服务
模飞软件
硬件设备
飞行体验
学院
云课堂
问答
资料下载
论坛
模拟飞行
低空飞行
太空探索
航圈
资源
素材
下载
企业
无人机论坛
»
论坛
›
无人机DIY专区
›
飞控开发区
›
无人机飞控相关的GPS知识小结
返回列表
发新帖
查看:
2102
|
回复:
20
无人机飞控相关的GPS知识小结
[复制链接]
—飞狐—
—飞狐—
当前离线
积分
1628
窥视卡
雷达卡
47
主题
820
帖子
1628
积分
金牌飞友
金牌飞友, 积分 1628, 距离下一级还需 1372 积分
金牌飞友, 积分 1628, 距离下一级还需 1372 积分
积分
1628
飞币
808
注册时间
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模块,比如偌瓦泰,以及这两年广泛使用的差分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语言
百度云盘
链接: 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的知识有很多,从飞控来说,不需要面面俱到,有错误的地方还请指出,谢谢!
另外,笔者对于专栏最近的安排,打算对之前文章的内容进行更新,修改其中不合时宜甚至错误的地方,读者们留意!
无人机
相关帖子
•
请问无人机和机器人是一个概念吗?
•
我想问问中国无人机有哪些
•
保姆级教程!AirSIM+PX4+QGC从零开始搭建无人机仿真环境。
•
无人机输电线路巡检存在哪些问题
•
深圳哪里飞无人机不需要报备
•
【低空经济】百篇研报领取,20分钟全盘梳理低空经济/无人机/evtol
•
eve手游无人机控制数量怎么提升介绍_eve手游无人机控制数量怎么提升是...
•
低空无人机团体标准立项报告
•
2025 年俄罗斯国际无人机设备及技术博览会
•
寻求帮助开发无人机协同运输
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
加入联盟
本版积分规则
发表回复
回帖后跳转到最后一页
浏览过的版块
视频专区
快速回复
返回顶部
返回列表