GNSS全球导航定位系统_gagsv-程序员宅基地

技术标签: 硬件工程  智能手机  人工智能  

1 GNSS概述

        GNSS(Global Navigation Satellite System),是全球导航卫星系统的英文缩写,泛指所有的卫星导航系统,包括全球系统、区域系统的和增强系统。如美国GPS、俄罗斯Glonass、欧盟Galileo、中国北斗卫星导航系统,以及相关的增强系统,如美国的WAAS(广域增强系统)、欧洲的EGNOS(欧洲静地导航重叠系统)和日本的MSAS(多功能运输卫星增强系统)等,还涵盖在建和以后要建设的其他卫星导航系统。GNSS系统是个多系统、多层面、多模式的复杂组合系统,如下图所示。

        GNSS全球导航卫星系统能在地球表面或近地空间的任何地点,为用户提供全天候的三维坐标、速度以及时间信息。由空间星座部分、地面控制部分和用户设备部分组成。 

 2 GNSS定位原理

        

        地球表面的任何一个位置,都有它的三维坐标,也就是经度、纬度和高程。它头顶上的 GNSS 卫星,也有自己的三维坐标。我们把整个空间看成一个坐标系,可以画一个立方体。立方体的两个对角,分别是用户和卫星。卫星坐标(x',y',z')由地面控制部分测算,为已知量;用户坐标(x,y,z)为需要测算的未知量。根据几何知识可以计算卫星和用户之间的距离△L如下:

        同时,卫星可以给用户终端发信号,信号的传输速度几乎等同于光速c。而卫星上面有精度极高的原子钟,所以知道自己的时间是t'。假设用户终端的时间是t,那么,卫星和用户之间的距离△L,又可以通过下面这个公式算出:

        两个公式合并后,得如下公式: 

        最后这个公式里就有4个未知数:x,y,z,t。

        当然这个公式是解不出来的,大家可以想想怎样才能解出这4个未知数呢?

        方法很简单,就是再列三个公式!

        也就是说,再找3个卫星的坐标值,组成4个四元方程,就OK了。

        讲到这里,应该大家也就明白了为什么说GPS定位成功至少需要4颗星可用!     

3 GNSS频段及双频GNSS

        下图为全球GNSS频段信息表

        简单了解一下就可以了,但需要知道普通的智能手机搭载的GPS都是单频GPS接收芯片,这里的单频一定是L1频段。

        近几年也有很多双频GPS手机上市,双频GPS就是搭载了L1+L5两个频段的接收芯片。

        那么,单频GPS和双频GPS到底有何区别?L5频段既然比L1更牛逼那为何不直接取代L1?请往下看!……

        由前面GNSS定位伪码测算公式可以看出,GPS定位的关键是要获得用户和卫星之间的距离。而要计算距离,必须知道信号的传播时间,这一数据由用户(假设为手机)计算得出,关键就在于GPS信号发射后到达手机需要的时间是多少。而影响GPS信号到达手机的时间,最主要的一个因素就是该信号的所在频段带宽。

  •         L1频段带宽远小于L5频段
    •         在目前市面上的手机中,绝大部分都使用的是L1频段1575.42MHz的GPS信号,它的带宽较小,只有1MHz。也就是一个最小周期的传输时间是1μS,乘以光速3*10e8 M/S就是300米。这就意味着,只使用L1频段进行定位,理论误差会达到半径300米的一个范围。必须结合多颗卫星的数据同时比对,才能减少误差到一个可以接受的范围。这也是为什么手机的“搜星”能力如此重要的原因。
      •         而L5即1176.45MHz频段GPS信号的带宽高达10MHz,是L1频段的10倍,最小周期传输时间为0.1μs,单颗卫星定位测距误差也随之降至30米。

        L1频段信号易受到城市建筑干扰

        手机除了从GPS卫星发射后经直线传播的信号外,还会接收到一个或多个经过周围地形反射后的信号。这样,手机接收的多个信号会叠加起来,导致距离最短的直射信号变得不明显,连续使用中的手机无法判断出哪条信号才是最接近真实定位的信号,从而降低了卫星和手机之间距离计算的准确度,严重时甚至会导致卫星信号“失踪”。

        L5频段GPS信号不易受反射干扰,在高楼大厦等多径效应影响严重的场景中,L5频段信号波峰差异很明显,直射和反射很难叠加,从而提高定位精度。

         L1频段GPS信号易受电离层影响

        在空旷地带,定位不准的主要原因则是大气中电离层导致的GPS信号折射,从而增加传输时间。大气中电离层在太阳光的照射下充满了离子和电子,对GPS信号这种电磁波的影响严重。研究发现,电离层造成的折射效应与信号带宽的平方成反比。也就是说,带宽越低,电离层造成的影响越大。

        而L5频段GPS信号受到电离层的影响是L1频段的百分之一。其次,由于电离层对L1、L5两个频段信号的影响不同,双频GPS设备可以不依赖于其他因素,通过对比两路信号的延迟,用计算来消除电离层带来的误差,将GPS定位精度进一步提高。

        如下是小米8发布会宣传其双频GPS时,与其他单频GPS手机测试对比图 

        那么L5频段可以取代L1频段吗?目前来说肯定不能。

        虽然L1频段有着众多劣势,但是它的低码率相较于L5频段要更容易被捕获,也就是说用L1频段来定位的时间要更短。如果只是使用L5频段的话,可能出现满天卫星但需要很长的时间才能定位的问题。

        所以,用L1频率捕获信号节省时间,用L5频率来提高信号精度,才能获得更好的效果。

 4 GNSS重要指标

        衡量GNSS性能的指标有很多因素,比如搜星数量、接收灵敏度、信噪比、定位时间、定位精度、时间精度、时钟偏移量及功耗等。

        概括起来最重要的有三个指标:速度、精度和灵敏度。

        定位时间TTFF 

        GNSS定位时间(TTFF)分为冷启动、温启动及热启动定位时间。

        冷启动(Cold Start):GPS接收机清空了所有历史信息并重启,然后它尝试定位并锁定卫星,由于没有先前信息,这将花去很长的时间。GPS接收机采用类似于轮询的方法,从所有的卫星中锁定信号,这将比事前知道该搜索哪些卫星要慢不少。这一类重新获取锁定要花最长的时间,一般冷启动TTFF在30S~60S。

        冷启动条件:①初次使用时; ②电池耗尽导致星历信息丢失时;③关机状态下将接收机移动1000公里以上距离。

        暖启动(Warm Start):GPS接收机保存有最后计算的卫星的位置、星历和UTC时间,但保存的内容不是当前可视卫星的数据。GPS接收机重启以后尝试去获得当前卫星和信号并计算其新位置。接收机基于其最后的位置和历书得以大概知道当前天空中的可视卫星。

        暖启动条件:距离上次定位的时间超过两个小时的启动。

        热启动(Hot Start):GPS接收机保存有其最后计算的可视卫星的位置、星历和UTC时间,在重启以后,GPS接收机以保存的上述内容为基础获取和计算当前卫星的最新位置,一般热启动TTFF小于5S。

        热启动条件:距离上次定位的时间小于两个小时的启动。

        定位精度

        GNSS接收机输出的经纬度信息与当前实际地点经纬度信息的接近程度,主要测试GNSS接收机的时钟精度、抗干扰能力及接收机算法精度。测试方法一般如下:

        第一种是将接收机放置到一个固定且已知经纬度信息的地点,接收机定位成功后返回的定位信息与之对比计算,即得出单点静态定位误差。这个方法一般要GNSS芯片厂商支持,因为他们一般会有这样一个已知经纬度信息的参考地点。

        第二种就是用GPS信号发生器模拟经纬度信息,Cable先连接GPS天线或者用天线耦合方式测试手机定位成功且稳定后的经纬度,抓出NEMA Log的定位信息与之对比。

接收灵敏度

        GNSS接收灵敏度是指GNSS接收机能够追踪到一个卫星的输入最小信号强度。

        GNSS定位灵敏度是指GNSS接收机在工作时间内完成位置定位时天线端的最低信号强度。

        手机GPS定位灵敏度测试一般是通过GPS信号发生器连接GPS天线,GPS信号发生器模拟卫星,逐步调节降低信号发生器的输入信号强度,直到手机刚好能定位成功的最低输入功率。

        接收灵敏度则是处于能接收与接收不到信号的最低输入功率。

        对于一般设备或者GPS测试软件所能看到的GPS信号强度是以信噪比CN0来衡量的,也就是GPS接收机通过NMEA LOG的相关语句输出的信噪比的值,一般在35~45;数值越大表示信号强度越好。

5 NMEA解析

        NEMA,是美国国家海洋电子协会为统一海洋导航规范而制定的标准,该格式标准已经成为国际通用的一种格式,是GNSS接收机应当遵守的标准协议,也是目前GNSS接收机上使用最广泛的协议,大多数常见的接收机、数据处理软件、导航软件都遵守或者至少兼容这个协议。它其实就是GNSS接收机从底层输出的包含所有底层数据信息的一种报文。如右图,是在我自己手机上使用GNSS测试软件抓取到的NEMA LOG。

        下面就逐条解析一下NEMA语句的含义!

$GPGGA:定位信息

$GPGGA,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,M,<10>,M,<11>,<12>*hh<CR><LF>

<1> UTC时间,hhmmss(时分秒)格式

<2> 纬度ddmm.mmmm(度分)格式(前面的0也将被传输)

<3> 纬度半球N(北半球)或S(南半球)

<4> 经度dddmm.mmmm(度分)格式(前面的0也将被传输)

<5> 经度半球E(东经)或W(西经)

<6> GPS状态:0=未定位,1=非差分定位,2=差分定位,6=正在估算

<7> 正在使用解算位置的卫星数量

<8> HDOP水平精度因子(0.5~99.9)

<9> 海拔高度(-9999.9~99999.9)

<10> 地球椭球面相对大地水准面的高度

<11> 差分时间(从最近一次接收到差分信号开始的秒数,如果不是差分定位将为空)

<12> 差分站ID号0000~1023(前面的0也将被传输,如果不是差分定位将为空)

 

$GNGSAGNSS可用卫星信息(包含GPSBDGLONASSGALILEO等所有星座系统 

$GNGSA,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,<12>,<13>,<14>,<15>,<16>,<17>*<18><CR><LF>

<1> 模式2:M = 手动, A = 自动

<2> 模式1:定位型式1 = 未定位,2 = 二维定位,3 = 三维定位

<3> 第1信道正在使用的卫星PRN码编号

<4> 第2信道正在使用的卫星PRN码编号

<5> 第3信道正在使用的卫星PRN码编号

<6> 第4信道正在使用的卫星PRN码编号

<7> 第5信道正在使用的卫星PRN码编号

<8> 第6信道正在使用的卫星PRN码编号

<9> 第7信道正在使用的卫星PRN码编号

<10> 第8信道正在使用的卫星PRN码编号

<11> 第9信道正在使用的卫星PRN码编号

<12> 第10信道正在使用的卫星PRN码编号

<13> 第11信道正在使用的卫星PRN码编号

<14> 第12信道正在使用的卫星PRN码编号

<15> PDOP综合位置精度因子(0.5 - 99.9)

<16> HDOP水平精度因子(0.5 - 99.9)

<17> VDOP垂直精度因子(0.5 - 99.9)

<18> 校验值 

$**GSA:各星座系统可用卫星信息

GPGSA为GPS可用卫星信息、GLGSAGLONASS可用卫星信息

BDGSA为BD可用卫星信息、GAGSAGALILEO可用卫星信息

QZGSA为QZSS可用卫星信息、PJGSAIRNSS可用卫星信息

$**GSA,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,<12>,<13>,<14>,<15>,<16>,<17>*<18><CR><LF>

<1> 模式2M = 手动, A = 自动

<2> 模式1:定位型式1 = 未定位,2 = 二维定位,3 = 三维定位

<3> 1信道正在使用的卫星PRN码编号

<4> 2信道正在使用的卫星PRN码编号

<5> 3信道正在使用的卫星PRN码编号

<6> 4信道正在使用的卫星PRN码编号

<7> 5信道正在使用的卫星PRN码编号

<8> 6信道正在使用的卫星PRN码编号

<9> 7信道正在使用的卫星PRN码编号

<10> 8信道正在使用的卫星PRN码编号

<11> 9信道正在使用的卫星PRN码编号

<12> 10信道正在使用的卫星PRN码编号

<13> 11信道正在使用的卫星PRN码编号

<14> 12信道正在使用的卫星PRN码编号

<15> PDOP综合位置精度因子(0.5 - 99.9

<16> HDOP水平精度因子(0.5 - 99.9

<17> VDOP垂直精度因子(0.5 - 99.9

<18> 校验值 

 

$**GSV各星座系统可见卫星信息

GPGSV为GPS可见卫星信息、GLGSVGLONASS可见卫星信息

BDGSV为BD可见卫星信息、GAGSVGALILEO可见卫星信息

QZGSV为QZSS可见卫星信息、PJGSVIRNSS可见卫星信息

$**GSV,<1>,<2>,<3>,<4>,<5>,<6>,<7>,...,<4>,<5>,<6>,<7>*<8><CR><LF>

<1> 总的GSV语句电文数

<2> 当前GSV语句号(第几条GSV语句)

<4> 卫星编号,01<3> 可视卫星总数,0012

<5> 卫星仰角,00至90度

<6> 卫星方位角,000至359度实际值

<7> 信噪比(C/No),00至99dB;无表未接收到讯号

<8> 校验

注:每条**GSV语句最多包括四颗卫星的信息,其他卫星的信息将在下一条$**GSV 语句中输出

$GPRMC推荐定位信息

$GPRMC,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,<12>*<13><CR><LF>

<1> UTC时间,hhmmss(时分秒)格式

<2> 定位状态,A=有效定位,V=无效定位

<3> 纬度ddmm.mmmm(度分)格式

<4> 纬度半球N(北半球)或S(南半球)

<5> 经度dddmm.mmmm(度分)格式

<6> 经度半球E(东经)或W(西经)

<7> 地面速率(000.0~999.9节)

<8> 地面航向(000.0~359.9度)

<9> UTC日期,ddmmyy(日月年)格式

<10> 磁偏角(000.0~180.0度,前导位数不足则补0)

<11> 磁偏角方向,E(东)或W(西)

<12> 模式指示(A=自主定位,D=差分,E=估算,N=数据无效)

<13> 校验和

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_40693786/article/details/134315254

智能推荐

c# 调用c++ lib静态库_c#调用lib-程序员宅基地

文章浏览阅读2w次,点赞7次,收藏51次。四个步骤1.创建C++ Win32项目动态库dll 2.在Win32项目动态库中添加 外部依赖项 lib头文件和lib库3.导出C接口4.c#调用c++动态库开始你的表演...①创建一个空白的解决方案,在解决方案中添加 Visual C++ , Win32 项目空白解决方案的创建:添加Visual C++ , Win32 项目这......_c#调用lib

deepin/ubuntu安装苹方字体-程序员宅基地

文章浏览阅读4.6k次。苹方字体是苹果系统上的黑体,挺好看的。注重颜值的网站都会使用,例如知乎:font-family: -apple-system, BlinkMacSystemFont, Helvetica Neue, PingFang SC, Microsoft YaHei, Source Han Sans SC, Noto Sans CJK SC, W..._ubuntu pingfang

html表单常见操作汇总_html表单的处理程序有那些-程序员宅基地

文章浏览阅读159次。表单表单概述表单标签表单域按钮控件demo表单标签表单标签基本语法结构<form action="处理数据程序的url地址“ method=”get|post“ name="表单名称”></form><!--action,当提交表单时,向何处发送表单中的数据,地址可以是相对地址也可以是绝对地址--><!--method将表单中的数据传送给服务器处理,get方式直接显示在url地址中,数据可以被缓存,且长度有限制;而post方式数据隐藏传输,_html表单的处理程序有那些

PHP设置谷歌验证器(Google Authenticator)实现操作二步验证_php otp 验证器-程序员宅基地

文章浏览阅读1.2k次。使用说明:开启Google的登陆二步验证(即Google Authenticator服务)后用户登陆时需要输入额外由手机客户端生成的一次性密码。实现Google Authenticator功能需要服务器端和客户端的支持。服务器端负责密钥的生成、验证一次性密码是否正确。客户端记录密钥后生成一次性密码。下载谷歌验证类库文件放到项目合适位置(我这边放在项目Vender下面)https://github.com/PHPGangsta/GoogleAuthenticatorPHP代码示例://引入谷_php otp 验证器

【Python】matplotlib.plot画图横坐标混乱及间隔处理_matplotlib更改横轴间距-程序员宅基地

文章浏览阅读4.3k次,点赞5次,收藏11次。matplotlib.plot画图横坐标混乱及间隔处理_matplotlib更改横轴间距

docker — 容器存储_docker 保存容器-程序员宅基地

文章浏览阅读2.2k次。①Storage driver 处理各镜像层及容器层的处理细节,实现了多层数据的堆叠,为用户 提供了多层数据合并后的统一视图②所有 Storage driver 都使用可堆叠图像层和写时复制(CoW)策略③docker info 命令可查看当系统上的 storage driver主要用于测试目的,不建议用于生成环境。_docker 保存容器

随便推点

网络拓扑结构_网络拓扑csdn-程序员宅基地

文章浏览阅读834次,点赞27次,收藏13次。网络拓扑结构是指计算机网络中各组件(如计算机、服务器、打印机、路由器、交换机等设备)及其连接线路在物理布局或逻辑构型上的排列形式。这种布局不仅描述了设备间的实际物理连接方式,也决定了数据在网络中流动的路径和方式。不同的网络拓扑结构影响着网络的性能、可靠性、可扩展性及管理维护的难易程度。_网络拓扑csdn

JS重写Date函数,兼容IOS系统_date.prototype 将所有 ios-程序员宅基地

文章浏览阅读1.8k次,点赞5次,收藏8次。IOS系统Date的坑要创建一个指定时间的new Date对象时,通常的做法是:new Date("2020-09-21 11:11:00")这行代码在 PC 端和安卓端都是正常的,而在 iOS 端则会提示 Invalid Date 无效日期。在IOS年月日中间的横岗许换成斜杠,也就是new Date("2020/09/21 11:11:00")通常为了兼容IOS的这个坑,需要做一些额外的特殊处理,笔者在开发的时候经常会忘了兼容IOS系统。所以就想试着重写Date函数,一劳永逸,避免每次ne_date.prototype 将所有 ios

如何将EXCEL表导入plsql数据库中-程序员宅基地

文章浏览阅读5.3k次。方法一:用PLSQL Developer工具。 1 在PLSQL Developer的sql window里输入select * from test for update; 2 按F8执行 3 打开锁, 再按一下加号. 鼠标点到第一列的列头,使全列成选中状态,然后粘贴,最后commit提交即可。(前提..._excel导入pl/sql

Git常用命令速查手册-程序员宅基地

文章浏览阅读83次。Git常用命令速查手册1、初始化仓库git init2、将文件添加到仓库git add 文件名 # 将工作区的某个文件添加到暂存区 git add -u # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,不处理untracked的文件git add -A # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,包括untracked的文件...

分享119个ASP.NET源码总有一个是你想要的_千博二手车源码v2023 build 1120-程序员宅基地

文章浏览阅读202次。分享119个ASP.NET源码总有一个是你想要的_千博二手车源码v2023 build 1120

【C++缺省函数】 空类默认产生的6个类成员函数_空类默认产生哪些类成员函数-程序员宅基地

文章浏览阅读1.8k次。版权声明:转载请注明出处 http://blog.csdn.net/irean_lau。目录(?)[+]1、缺省构造函数。2、缺省拷贝构造函数。3、 缺省析构函数。4、缺省赋值运算符。5、缺省取址运算符。6、 缺省取址运算符 const。[cpp] view plain copy_空类默认产生哪些类成员函数

推荐文章

热门文章

相关标签