分享

自动驾驶之高精度地图(一)定位篇

 yeshuheng 2021-05-27

图片

    作者 / 阿宝

编辑 / 阿宝

出品 / 阿宝1990

图片

在讲解高精度地图之前,我们先把定位这个事情弄清楚,想明白,后面的事情就会清晰很多,自古哲学里面讨论的人生终极问题,无非就三个,我是谁,我从哪里来,我要去哪里,这里的位置定位就包含了人生哲学中的两个问题,可见其重要性。

图片

如果你有一个路痴女朋友,如果她在外面迷路了,如果是在10年前没有那么发达的导航手机,可能给你电话沟通是这样的。

——你在哪儿呢?

——啊?我在马路上啊。

——有什么特征?

——头顶有个月亮。

——你旁边有什么啊?

——有个路灯。

——有没有路牌啊?路牌上写的什么?

——我看看啊。还真的有,上边写着“禁止停车 违者罚款”。

——姑奶奶,我真是服了你了……

——哼,你是不是不爱我了,你肯定是不爱我了,你是不是喜欢上了新来的那个前台?

图片

说了现代人,再来说说我们古代的人对于导航的需求:朝辞白帝彩云间,千里江陵一日还。两岸猿声啼不住,轻舟已过万重山,看看李白当时由于没有导航,导致过了多少座山都数不清了。

我们身处何方?怎样到达目的地?多久可以到达?——这是自人类出现以来一直萦绕于心的问题。早在石器时代,“北京人”外出打猎时会在沿途留下痕迹,待捕获猎物之后,配合固定的坐标物来找到回家的路。天体导航时代,罗盘、指南针、六分仪等发明不断拓展着人类在地球上的足迹,人们开始远行,世界走向融合。

图片

普通定位

学过初中数学都知道,我们如果要在一个二维平面上定位的话,首先建立一个笛卡尔坐标系,通过坐标原点,就可以判定A点的具体位置(x,y)的坐标,如果要从A点到B点的绝对距离,也就是通过坐标系上的绝对位置的运算即可。

图片

这里的二维平面的定位比较准确,而且相对容易一些,是只有X/Y方向上的坐标,只要大家都遵循对应的原点坐标,或者哪怕原点坐标不同,轻易转换也可以得到,所以一般情况下在室内的一些平面定位会比较好做一些,比如扫地机器人的定位。

图片

图片

GPS三维定位

图片

我们先来看看地球上的某个位置的定位,其实对于对球上的某个点而言,正常情况下只需要知道经度和纬度,但是对于导航而言,一定还需要定位的高度,否则像重庆这样的魔幻8D城市,太多高架桥的位置,上桥和下桥的导航位置显示的经纬度都一样,只能通过高度来定位自己处于哪条道路上,否则导航分分钟让人在重庆高架桥上半日游,所以大家都说看一个地图准确不,来重庆立交桥溜溜就行。

有的这个概念后我们再来看GPS定位原理就会轻松很多。

首先明白一个事情,无论是GPS还是北斗,都是通过卫星来定位的,GPS 的全称是导航星测时和测距全球定位系统,简称全球定位系统(Global Position System,GPS),可以实现地球表面附近范围的全天候三维位置等信息的获取,其具有实时性好、准确度高的优点,是当前世界发展最完善、应用最广泛的全球卫星导航系统。

 图片

我们经常在文章中看到的GNSS,是全球卫星导航系统(GNSS)是卫星导航的统称,是除了GPS以外,还包含目前俄罗斯的GLONASS、中国的北斗,欧洲的伽利略这四大导航系统。

图片

GPS的工作的标准定义如下:

GPS由24颗工作星和4颗备用星组成。卫星工作在互成55度的6条高度为2.02万KM的非同步轨道上。如此一来,在全球的任何地方、任何时间都可观测到4颗以上的GPS卫星。GPS卫星向地球发射导航电文(系统时间、星历、历书、卫星时钟修正参数、导航卫星健康状况、电离层延时参数等内容),GPS终端收到卫星发送的数据,经解算即可确定当前位置,并以NMEA0183格式,WGS-84坐标系输出数据。

读起来很拗口吧,那我以一个专业理科生的理解方式来给你剖析剖析。

①为什么不使用同步轨道卫星呢?

图片

地球同步卫星轨道:卫星的轨道周期等于地球在惯性空间中的自转周期(23小时56分4秒),且方向亦与之一致,卫星在每天同一时间的星下点轨迹相同,当轨道与赤道平面重合时叫做地球静止轨道,即卫星与地面的位置相对保持不变。倾角为零的圆形地球同步轨道称为地球静止轨道,因为在这样的轨道上运行的卫星将始终位于赤道某地的上空,相对于地球表面是静止的。这种轨道卫星的地面高度约为 3.6万千米。它的覆盖范围很广,利用均匀布在地球赤道上的 3颗这样的卫星就可以实现除南北极很小一部分地区外的全球通信。

既然同步轨道卫星数量这么少就可以实现定位,为什么不使用呢,这里涉及到一个发射的问题,地球同步轨道卫星的发射很困难,技术很复杂。但如果一个国家的卫星发射场建在地球的赤道上,那这种卫星的发射就简单多了,在赤道上由西向东发射,达到要求的轨道高度,在适当的位置定点,问题就解决了。可惜的是,许多发射卫星的国家不在赤道上,也不可能在赤道上建立卫星发射场。这样给卫星的发射带来了许多的困难,要经过几次的轨道变换才能成功。

但即使卫星已经定点很准了,当工作时间一长,由于地球形状的影响(地球不是正圆)、地磁场的影响,以及太阳甚至月亮的引力都使得卫星的位置发生变化 (轨道摄动),所以时不时的还要进行轨道修正,要随时控制它的状态和位置,这种修正我们称为卫星的轨迹保持。

简单来说,同步轨道卫星需要在轨道附件发射,如果不是的话,进入同步轨道是魔鬼般的困难,即是卫星到了同步轨道,随着工作时间一长,又要重新修正,花费的成本太大。

所以不用同步轨道卫星导航的根本原因是技术太难,成本太贵,吃不消。

②为什么需要接收到4颗以上的卫星才能定位

我们还是得从GPS的功能说起,除了定位,GPS还给我们提供一个精准的时间修正,这个时间比石英晶体的时间还准100倍,所以车里面的时间校准都基本上使用GPS的时间去校准。

图片

测量出已知位置的卫星到用户接收机之间的距离,然后综合多颗卫星的数据就可知道接收机的具体位置。

公式看起来有点费劲,我们就简单来理解,我们还是从坐标系的位置说起,正常情况下需要知道笛卡尔坐标系下的(X,Y,Z),三个坐标分量,同时还有一个时间t0的分量,那么这样算起来就有四个未知数,学过数学咱们都知道,四个未知数,至少需要4个方程才能解出来,那么就至少需要4颗卫星才能组成4个方程。

下面是接收机在搜到不同卫星数量的时候可以做的工作,在搜到1颗卫星的时候就可以更新时间和日期了,但是要实现经纬度和高度的定位至少也是需要4颗卫星以上才能有海拔信息的输出。

图片

有的人也许会担心,我家在遥远偏僻的小山村,怎么能保障头顶上有4颗以上的卫星呢?

图片

上面GPS的搜星说了,一定要收到4颗卫星以上才能定位,由于卫星一直是在运动的,所以每颗卫星大约5小时左右在地平线以上,同时位于地平线上的卫星至少有4颗,最多12颗,上图是用户可接收到卫星数量的概率分布图,7、8、9颗卫星概率最大了,此时定位是毫无压力。

卫星定位有点类似 古希腊唯物主义哲学家赫拉克利特的一句名言“人不能两次走进同一条河流”这句名言的意思是说,河里的水是不断流动的,你这次踏进河,水流走了,你下次踏进河时,又流来的是新水。河.水川流不息,所以你不能踏进同一条河流。同样的,卫星定位的时候,你早上搜到的那颗卫星和你傍晚搜到的那颗卫星都不是同一颗卫星了,但是不影响你最终的定位输出。

有的人说不对啊,为什么经常在桥下或者树林茂密的地方无法定位呢?

是因为卫星的发射功率并不大,信号到达地面时已经很弱。这种信号强度相当于1.6万公里外一个25瓦的灯泡发出的光。再做个比喻,它比电视机天线所接收到的功率还要低10亿倍,此时就和不同手机的接收模块有关系,有的手机GPS接收性能好一些,如果你恰好又在停车场或者天桥等遮挡信号的地方,此时不能定位也是正常的,所以这里埋下伏笔,GPS定位在一些信号恶劣的环境下是无法定位的。

同样都是使用GPS定位,为什么车载导航定位的时间要比手机定位的时间要慢很多呢?

常规情况下,定位模块上电开机后,通过天线搜索卫星,解析卫星发射的数据(导航电文),然后内部生成星历,再经过复杂的计算,从而得到当前精确的位置(3D Fix)。这个过程称之为“冷启动”。根据信号强度、芯片运算能力,通常耗时几十秒到几分钟不等。这个过程中,搜星+生成星历文件耗时最久,不同厂家的芯片算法能力不同,时间就会有差异,基本上目前都是30秒上下。

为什么有的时候定位模块只用了几秒就成功定位了呢?原因有二:
1、非“冷启动”方式,即“温启动”或“热启动”;

2、使用了AGPS辅助定位。

图片

也许大家会以为,这里的“X启动”和电脑的开机、待机(睡眠)、重启近似吧?实际上并非如此哦。由于卫星所处空间位置、终端设备所处地表位置是不固定的,所以此处的“X启动”都是以最后一次定位时间和位移距离作为判断依据的:比如温启动,指的是距离上次的定位时间超过2小时,不足4小时,没有较大距离的位移发生,这样就可以实现秒定位,为什么呢

因为定位模块要搜星,生成星历,比如我在深圳,头上有某一颗卫星,假如我不移动,这颗卫星要经过4个小时后才会移动到搜不到的地方,更换为其他卫星,如果我没有发生较大位置移动,不足四小时的话,可以使用上次的搜星的星历,就会节省很多时间,就会秒定位,热启动也是一样的原理。

怎么实现AGPS秒定位呢?

那么,什么又是“AGPS辅助定位”呢?在传统GPS定位方式中,定位模块需要全频段搜索以找到可用卫星,因而耗时较长。而“AGPS辅助定位”方式,是通过网络直接下载当前地区的可用卫星星历数据,并将之发送给定位模块,定位模块只搜索特定的卫星,从而提高了搜星速度,减少设备耗电。

想想网络下载当前地区可用星历,那么有好几种方法,比如使用2G/3G/4G网络,中控车上带有TBOX就可以,比如通过WIFI,WIFI连接某个热点也可以下载星历。这里简单说说2G怎么一个AGPS的过程。

图片

1、设备从蜂窝基站获取到当前位置的小区信息;

2、设备通过蜂窝网络,将当前蜂窝小区信息传送给网络中的AGPS位置服务器;

3、APGS位置服务器根据当前小区信息查询该区域当前可用的卫星信息(包括卫星的频段、方位、仰角

等相关信息),生成对应星历文件,并返回给设备;

4、通信模块通过串口把收到的星历文件传输给定位模块;

5、定位模块根据星历文件,得到的可用卫星信息,快速找到当前可用的GPS卫星,针对性的搜星,大大提升定位时间。

冷启动像是多项选择题,要把所有选项计算一遍,才能找到正确答案;而“AGPS辅助定位”就像是作弊器,排除掉了很多错误答案,只要计算少数几个即可。从而提高效率和准确率。

所以大家可以明白,都是通过GPS导航,手机的定位时间会比车载中控的快很多,也就是这个AGPS辅助快速定位的区别,比较老的车载中控导航很少有4G模块,都是通过GPS,第二天开车就属于冷启动方式,至少要30秒左右才能定位了。

想想如果此时是老式的导航机器,没有4G,没有WIFI,只有蓝牙怎么做到快速定位呢,其实有可以通过手机的4G信号下载星历,然后通过手机蓝牙和车机蓝牙相互连接,此时通过连接后把对应的信息传输过来就可以做到快速定位,这个已经有手机厂商写了相关专利。

图片

GPS定位精准度问题

1983 年,韩国007 号客机导航系统故障误入苏联领空被击落,时任美国总统里根旋即宣布一旦GPS 建成将开放给公众使用,GPS 民用的大门就此开启。

美国政府在GPS设计中,计划提供两种服务。一种为标准定位服务(SPS),利用粗码(C/A)定位,精度约为100m,提供给民用。另一种为精密定位服务(PPS),利用精码(P码)定位,精度达到10m,提供给军方和特许民间用户使用。

GPS 卫星将发射两种不同的测距码,即军用的P 码和民用的C/A 码,分别对应精密定位服务(PPS)和标准定位服务(SPS)。由于C/A 码无法用双频技术消除电离层折射影响,美国技术人员预测定位精度会在百米级别。不过,测试表明C/A 码定位精度远高于预测值,能达到14 米左右,,这就是实力,本来以为设计的精度有100米左右,结果竟然达到了14米,哎,他们的工程师太保守了,这和我们国内某些领域的“叫兽”经常说我们某项技术国际领先,国内一流的技术相比还是too yong to simple。

由于多次试验表明,SPS的定位精度已高于原设计,美国政府出于对自身安全的考虑,对民用码进行了一种称为“选择可用性SA(Selective Availability)”的干扰,以确保其军用系统具有最佳的有效性。由于SA通过卫星在导航电文中随机加入了误差信息,使得民用信号C/A码的定位精度降至二维均方根误差在100米左右。 

图片

1993年11月美国一个叫做詹尼弗·库恩的女孩遭绑架之后被杀害,在这个过程当中,库恩用手机拨打了911电话,但是911呼救中心无法通过手机信号确定她的位置。由于这个事件,导致美国的FCC(美国通信委员会)在1996年推出了一个行政性命令E911,要求强制性构建一个公众安全网络,即无论在任何时间和地点,都能通过无线信号追踪到用户的位置。 

在GPS 民用逐渐广泛背景之下,SA 政策显得尤为显眼,美国GPS 工业委员会也一直大力推动关闭SA。1996 年,克林顿正式发布了国家GPS 政策(PDD),明确表示美国在保护国家安全和对外政策利益的同时,推动GPS 全球卫星导航系统的应用,增强美国民用卫星导航系统工业的竞争力,为此美国政府还承诺10 年内中止使用选择可用性技术(SA)。 

取消SA 干扰信号:为保持GPS 的国际领先地位,基于商业利益考虑,2000 年美国取消了对GPS 卫星民用信道的SA 干扰信号,民用GPS 的定位精度达到平均6.2 米的实用化水平。同年,GPS 被写入《美国法典》,以法律的形式将GPS 的两用性质予以保障,以在维护国家安全利益的前提下推动民用。

目前GPS的实际绝对精度在5米左右,而军队使用的精度是0.3米。

图片

GPS地图坐标系转换

俗话说的好,国有国法,家有家规,每个行业都有自己输出的格式标准。

GPS数据遵循NMEA-0183协议,该数据标准是由NMEA(National Marine Electronics Association,美国国家海事电子协会)于1983年制定的。统一标准格式NMEA-0183输出采用ASCII 码,其串行通信的参数为:波特率=4800bps,数据位=8bit,开始位=1bit,停止位=1bit,无奇偶校验。

数据传输以“语句”的方式进行,每个语句均以“$”开头,然后是两个字母的“识别符”和三个字母的“语句名”,接着就是以逗号分割的数据体,语句末尾为校验和,整条语句以回车换行符结束。

我们就以公司的地址通过GPS接收机,接收到的代码为例子。

我们再来看一下NEMA-0183中的定位GGA格式:

格式:


$--GGA,hhmmss.ss,llll.ll,a,yyyyy.yy,a,x,xx,x.x,x.x,M,x.x,M,x.x,xxxx*hh

创维大厦公司阳台定位搜下来的代码示例:

$GPGGA,065545.789,2232.3526,N,11357.0576,E,1,9,0.85,18.1,M,8.0,M,,*5E

图片

GGA输出格式:ddmm.mmmm(度-分)

日常使用格式:dd.dddddd(度)

那么如何把GGA 输出的数据转换为我们日常使用的格式呢?学霸看一眼就会说, 这个问题很简单嘛,balabala~~~作为学渣的我,一头雾水;

公式如下:

ddmm.mmmm → 小数点前移两位 → dd.mmmm → dd + 0.(mmmm/60) = dd.dddddd

举例:

11357.0576 → 113.570576 → 113 + 0.(570576÷60) = 113.95096

此时把这个经纬度放到百度地图里面会发现有问题,根本不准。

实际我们所在位置是创维大厦,当时把搜下来的经纬度放到百度地图中的时候,就胡发现已经偏离到软件园那边去了,预计有3公里左右的偏差。

图片

之所以会产生“偏差”,这就涉及到一个有关坐标系转换的问题:GCJ-02 火星坐标系统纠偏。上面提到GSP模块输出数据的格式为NMEA-0183,使用的坐标系是WGS-84。通常,国际上其他国家的地图软件也都是使用WGS-84,相安无事。

不过,中国国家测绘局要求所有从事地理测量、地图绘制的公司、单位机构、个人必须使用GCJ-02坐标系(G表示Guojia国家,C表示Cehui测绘,J表示Ju局)。也就是说,国内的地图软件大都是使用的GCJ-02坐标系。所以开发者/用户如果将WGS-84的经纬度填入国内的地图软件,就会产生极大的偏差。

(所有的电子地图、导航设备,都需要使用GCJ-02坐标系。第一步,地图公司测绘地图,测绘完成后,送到国家测绘局,将真实坐标WGS-84的电子地图,加密成“GCJ-02火星坐标”,这样的地图才是可以出版和发布的。第二步,所有的面向客户的设备厂商,要在软件中加入该转换算法,将定位模块输出的真实WGS-84坐标,转换成GCJ-02的坐标。这样一来,“以偏治偏”,坐标系才可以完全匹配,也就没有“偏差”了)

那么,是不是所有的国内陆图都使用了GCJ-02坐标系呢?非也……百度、搜狗又自成体系,自立坐标了。

图片

大家使用一下经纬度查询这个小程序,你会发现只有百度地图和谷歌、高德、腾讯地图的经纬度有不同。

其中百度较为特殊,需要 WGS-84 → GCJ-02 → BD-09 两次转换,因为它使用的是自己的坐标系,此时的经纬度就会同其他地图厂家有经纬度有区别,从上面地图定位来看,最终定位的效果来看,如果直接把其他地图坐标的GPS的经纬度放到百度地图中去,会有2-3公里的偏差,这个完全是不能使用的。

—END— 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多