百度Apollo源码学习之定位系统介绍

2020-05-29 14:59:19 浏览数 (2)

什么是GNSS

GNSS的全称是全球导航卫星系统(Global Navigation Satellite System).

它是泛指所有的卫星导航系统,包括全球的、区域的和增强的,如美国的GPS、俄罗斯的Glonass、欧洲的Galileo、中国的北斗卫星导航系统,以及相关的增强系统,如美国的WAAS(广域增强系统)、欧洲的EGNOS(欧洲静地导航重叠系统)和日本的MSAS(多功能运输卫星增强系统)等,还涵盖在建和以后要建设的其他卫星导航系统。

image.png

三边测量定位算法(Trilateration)

image.png

Trilateration(三边测量)是一种常用的定位算法:

已知三点位置 (x1, y1), (x2, y2), (x3, y3) 已知未知点 (x0, y0) 到三点距离 d1, d2, d3 以 d1, d2, d3 为半径作三个圆,根据毕达哥拉斯定理,得出交点即未知点的位置计算公式:

image.png

这样就可以算出来位置点的坐标.

在2维平面,一个固定点用已知的半径长确定一个圆,两个固定点用已知的半径确定两个点,三个固定点可以确定一个点。这个原理映射到3维,两个球相交确定一个圆,三个球相交确定两个点。远离地球的点舍弃,另一个点就是你的位置了。

但是实际上真正应用比这个复杂,首先就要想,原理上三颗卫星可以解决的问题问什么一定要4颗。因为前面的简单解释是已知卫星和接受机/使用GPS 的人)的距离。在实际应用中这距离是不知道的,这个距离需要去计算。就是常说的伪距(pseudorange)。

卫星定位的组成

卫星是有三个成分组成的分别是空间部分,控制部分和用户部分。

用户部分

image.png

只要能使用卫星定位的仪器都是用户部分,比如专业接收机,手机,智能手表等等能收到GNSS信号的都可以。

空间部分

image.png

最直接的就是天上的卫星了。这些卫星是在中轨道上运行,大概有20200km那么高。平均是6个平面,一个平面上有四个点,每个点上至少一个卫星,也就是说也许有多个。之前是是24颗卫星, 这种安排基本上全球大部分地区可以看到至少4颗卫星。

控制部分

image.png

这个分为三个,1个主要控制站,1个备用控制站,11个地面的天线,16个地面的监测站。主要用于跟踪,监测,接收和传输一些数据和命令。监测站的主要功能是当卫星从头顶飞过时,收集数据(载波和伪距)然后穿给控制站。

GPS

GPS是70年代规划,80年代实施,90年代运营,耗资300亿美元,仅次于阿波罗登月计划和航天飞机计划的美国第三大航天工程。其主要目的是为陆、海、空三大领域提供实时、 全天候和全球性的导航服务,并用于情报收集、核爆监测和应急通讯等一些军事目的。其次,也为民用、商用提供导航、定位、测速和授时等服务。1994年3月,全球覆盖率高达98%的24颗GPS卫星星座己布设完成。

数据格式

GPS 上电后,每隔一定的时间就会返回一定格式的数据,数据格式为:

代码语言:javascript复制
$信息类型,x,x,x,x,x,x,x,x,x,x,x,x,x

每行开头的字符都是'$',接着是信息类型,后面是数据,以逗号分隔开。

GPS信息类型:

类型

解释

GPGSV

可见卫星信息

GPGLL

地理定位信息

GPRMC

推荐最小定位信息

GPVTG

地面速度信息

GPGGA

GPS定位信息

GPGSA

当前卫星信息

GPGSV 可视卫星状态

标准格式:

代码语言:javascript复制
$GPGSV,(1),(2),(3),(4),(5),(6),(7),…(4),(5),(6),(7)*hh(CR)(LF) 

含义为:

  • (1)总的GSV语句电文数;2;
  • (2)当前GSV语句号:1;
  • (3)可视卫星总数:08;
  • (4)PRN码(伪随机噪声码)也可以认为是卫星编号
  • (5)仰角(00~90度):33度;
  • (6)方位角(000~359度):240度;
  • (7)信噪比(00~99dB):45dB(后面依次为第10,16,17号卫星的信息); *总和校验域hh 总和校验数:78; (CR)(LF)回车,换行。 注:每条语句最多包括四颗卫星的信息,每颗卫星的信息有四个数据项,即: (4)-卫星号,(5)-仰角,(6)-方位角,(7)-信噪比。
GPRMC 最小定位信息

标准格式:

代码语言:javascript复制
$GPRMC,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,<12>*hh

含义为:

  • <1> UTC 时间,hhmmss(时分秒)格式
  • <2> 定位状态,A=有效定位,V=无效定位
  • <3>纬度ddmm.mmmm(度分)格式(前面的0也将被传输)
  • <4> 纬度半球N(北半球)或S(南半球)
  • <5>经度dddmm.mmmm(度分)格式(前面的0也将被传输)
  • <6> 经度半球E(东经)或W(西经)
  • <7>地面速率(000.0~999.9节,前面的0也将被传输)
  • <8>地面航向(000.0~359.9度,以真北为参考基准,前面的0也将被传输)
  • <9> UTC 日期,ddmmyy(日月年)格式
  • <10>磁偏角(000.0~180.0度,前面的0也将被传输)
  • <11> 磁偏角方向,E(东)或W(西)
  • <12>模式指示(仅NMEA01833.00版本输出,A=自主定位,D=差分,E=估算,N=数据无效)
GPGGA GPS定位数据

标准格式:

代码语言:javascript复制
$GPGGA,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,M,<10>,M,<11>,<12>*xx<CR><LF>

含义为:

  • <1> UTC 时间,格式为hhmmss.sss;
  • <2> 纬度,格式为ddmm.mmmm(第一位是零也将传送);
  • <3> 纬度半球,N 或S(北纬或南纬)
  • <4> 经度,格式为dddmm.mmmm(第一位零也将传送);
  • <5> 经度半球,E 或W(东经或西经)
  • <6> 定位质量指示,0=定位无效,1=定位有效;
  • <7>使用卫星数量,从00到12(第一个零也将传送)
  • <8>水平精确度,0.5到99.9
  • <9>天线离海平面的高度,-9999.9到9999.9米M指单位米
  • <10>大地水准面高度,-9999.9到9999.9米M指单位米
  • <11>差分GPS数据期限(RTCMSC-104),最后设立RTCM传送的秒数量
  • <12>差分参考基站标号,从0000到1023(首位0也将传送)。
GPVTG 地面速度信息

标准格式:

代码语言:javascript复制
$GPVTG,<1>,T,<2>,M,<3>,N,<4>,K,<5>*hh

含义为:

  • <1> 以正北为参考基准的地面航向(000~359度,前面的0也将被传输)
  • <2> 以磁北为参考基准的地面航向(000~359度,前面的0也将被传输)
  • <3> 地面速率(000.0~999.9节,前面的0也将被传输)
  • <4> 地面速率(0000.0~1851.8公里/小时,前面的0也将被传输)
  • <5> 模式指示(仅NMEA0183 3.00版本输出,A=自主定位,D=差分,E=估算,N=数据无效
GPGSA 当前卫星信息

标准格式:

代码语言:javascript复制
$GPGSA,A,3,01,20,19,13,,,,,,,,,40.4,24.4,32.2*0A

北斗定位

参考

Trilateration三边测量定位算法 GPS数据包格式 数据解析

0 人点赞