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

智能推荐

oracle 12c 集群安装后的检查_12c查看crs状态-程序员宅基地

文章浏览阅读1.6k次。安装配置gi、安装数据库软件、dbca建库见下:http://blog.csdn.net/kadwf123/article/details/784299611、检查集群节点及状态:[root@rac2 ~]# olsnodes -srac1 Activerac2 Activerac3 Activerac4 Active[root@rac2 ~]_12c查看crs状态

解决jupyter notebook无法找到虚拟环境的问题_jupyter没有pytorch环境-程序员宅基地

文章浏览阅读1.3w次,点赞45次,收藏99次。我个人用的是anaconda3的一个python集成环境,自带jupyter notebook,但在我打开jupyter notebook界面后,却找不到对应的虚拟环境,原来是jupyter notebook只是通用于下载anaconda时自带的环境,其他环境要想使用必须手动下载一些库:1.首先进入到自己创建的虚拟环境(pytorch是虚拟环境的名字)activate pytorch2.在该环境下下载这个库conda install ipykernelconda install nb__jupyter没有pytorch环境

国内安装scoop的保姆教程_scoop-cn-程序员宅基地

文章浏览阅读5.2k次,点赞19次,收藏28次。选择scoop纯属意外,也是无奈,因为电脑用户被锁了管理员权限,所有exe安装程序都无法安装,只可以用绿色软件,最后被我发现scoop,省去了到处下载XXX绿色版的烦恼,当然scoop里需要管理员权限的软件也跟我无缘了(譬如everything)。推荐添加dorado这个bucket镜像,里面很多中文软件,但是部分国外的软件下载地址在github,可能无法下载。以上两个是官方bucket的国内镜像,所有软件建议优先从这里下载。上面可以看到很多bucket以及软件数。如果官网登陆不了可以试一下以下方式。_scoop-cn

Element ui colorpicker在Vue中的使用_vue el-color-picker-程序员宅基地

文章浏览阅读4.5k次,点赞2次,收藏3次。首先要有一个color-picker组件 <el-color-picker v-model="headcolor"></el-color-picker>在data里面data() { return {headcolor: ’ #278add ’ //这里可以选择一个默认的颜色} }然后在你想要改变颜色的地方用v-bind绑定就好了,例如:这里的:sty..._vue el-color-picker

迅为iTOP-4412精英版之烧写内核移植后的镜像_exynos 4412 刷机-程序员宅基地

文章浏览阅读640次。基于芯片日益增长的问题,所以内核开发者们引入了新的方法,就是在内核中只保留函数,而数据则不包含,由用户(应用程序员)自己把数据按照规定的格式编写,并放在约定的地方,为了不占用过多的内存,还要求数据以根精简的方式编写。boot启动时,传参给内核,告诉内核设备树文件和kernel的位置,内核启动时根据地址去找到设备树文件,再利用专用的编译器去反编译dtb文件,将dtb还原成数据结构,以供驱动的函数去调用。firmware是三星的一个固件的设备信息,因为找不到固件,所以内核启动不成功。_exynos 4412 刷机

Linux系统配置jdk_linux配置jdk-程序员宅基地

文章浏览阅读2w次,点赞24次,收藏42次。Linux系统配置jdkLinux学习教程,Linux入门教程(超详细)_linux配置jdk

随便推点

matlab(4):特殊符号的输入_matlab微米怎么输入-程序员宅基地

文章浏览阅读3.3k次,点赞5次,收藏19次。xlabel('\delta');ylabel('AUC');具体符号的对照表参照下图:_matlab微米怎么输入

C语言程序设计-文件(打开与关闭、顺序、二进制读写)-程序员宅基地

文章浏览阅读119次。顺序读写指的是按照文件中数据的顺序进行读取或写入。对于文本文件,可以使用fgets、fputs、fscanf、fprintf等函数进行顺序读写。在C语言中,对文件的操作通常涉及文件的打开、读写以及关闭。文件的打开使用fopen函数,而关闭则使用fclose函数。在C语言中,可以使用fread和fwrite函数进行二进制读写。‍ Biaoge 于2024-03-09 23:51发布 阅读量:7 ️文章类型:【 C语言程序设计 】在C语言中,用于打开文件的函数是____,用于关闭文件的函数是____。

Touchdesigner自学笔记之三_touchdesigner怎么让一个模型跟着鼠标移动-程序员宅基地

文章浏览阅读3.4k次,点赞2次,收藏13次。跟随鼠标移动的粒子以grid(SOP)为partical(SOP)的资源模板,调整后连接【Geo组合+point spirit(MAT)】,在连接【feedback组合】适当调整。影响粒子动态的节点【metaball(SOP)+force(SOP)】添加mouse in(CHOP)鼠标位置到metaball的坐标,实现鼠标影响。..._touchdesigner怎么让一个模型跟着鼠标移动

【附源码】基于java的校园停车场管理系统的设计与实现61m0e9计算机毕设SSM_基于java技术的停车场管理系统实现与设计-程序员宅基地

文章浏览阅读178次。项目运行环境配置:Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。项目技术:Springboot + mybatis + Maven +mysql5.7或8.0+html+css+js等等组成,B/S模式 + Maven管理等等。环境需要1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。_基于java技术的停车场管理系统实现与设计

Android系统播放器MediaPlayer源码分析_android多媒体播放源码分析 时序图-程序员宅基地

文章浏览阅读3.5k次。前言对于MediaPlayer播放器的源码分析内容相对来说比较多,会从Java-&amp;amp;gt;Jni-&amp;amp;gt;C/C++慢慢分析,后面会慢慢更新。另外,博客只作为自己学习记录的一种方式,对于其他的不过多的评论。MediaPlayerDemopublic class MainActivity extends AppCompatActivity implements SurfaceHolder.Cal..._android多媒体播放源码分析 时序图

java 数据结构与算法 ——快速排序法-程序员宅基地

文章浏览阅读2.4k次,点赞41次,收藏13次。java 数据结构与算法 ——快速排序法_快速排序法