这篇未完成的文章写于2016年初,两年后翻到了,贴出来。。
1.1. 课题的来源
随着近年来Android手机的大量使用,设备中附带的GPS也得以大规模的应用,位置服务从一个附加功能成长为基础的服务。但是Android设备和GPS设备的多样性造成了适配的困难,例如有的Android设备并没有内置的GPS芯片,有的Android设备无法连接外置的GPS,本文试图用统一的架构解决多样性的问题。
1.2. 课题的目的
设计一种基于Android的低耦合、可替换模块的定位服务系统,能够使用不同精度,不同接入方式的GPS,并给各种终端导航App提供定位服务。使用方式包括以下几种:
Android手机内置GPS芯片,效果受环境影响大,耗电快。
Android设备外接蓝牙GPS,可以提高定位效果,耗电较少。
Android车机可以接入更高精度的的DGPS设备。
Android设备在局域网内可以通过网络获取GPS和其他数据。
1.3. 课题的意义
用统一的方法使不同设备获取到位置信息。
使位置信息获取更加便捷。
使以前无法获得位置信息的设备也可以使用位置信息。
1.4. 国内外概况
基于位置的服务(LBS)随着终端设备和定位技术的发展,已经迎来了爆发增长期。
2009年3月,基于用户地理位置信息的手机社交服务网站Foursquare在美国上线。并掀起了一股Foursquare模式的模仿热潮。美国本土涌现出了Loopt、Bright Kite、Yelp、Where、Gowalla和Booyah等LBS社交网络服务商。Google、Apple、Facebook、Twitter等更具竞争力的领先企业也加入到LBS市场的角逐之中。
之后国内也涌现出了诸多新兴的LBS服务提供商,他们专注于基于手机的LBS服务,利用LBS手机软件或Web站点向用户提供个性化的LBS服务。已经形成几大模式:休闲娱乐模式,活服务模式,社交模式,商业团购模式,渗透到人们生活的方方面面。
近年来,LBS技术也有一些创新的方向,如签到服务,周边搜索服务,基于地理位置的游戏,即时信息推送等。
1.5. 预测
LBS的关键点不是在于L(位置),而在于L上提供的S(服务),什么样的服务能够吸引人,粘住人,给人提供价值,这才是最关键的。 LBS很多,同质化应用严重,缺乏用户粘性......不过这也是发展的一个阶段,因为现在大家都是在积累用户数据的初级阶段,仍然在不断摸索合适的商业盈利模式。个人认为还是要把LBS的以位置为中心转变成以用户为中心。
而Android作为通用LBS终端平台,近几年也是不可动摇的。毕竟是人手一机,是和人关联最紧密的设备。
2016年中的现象级手游Pokemon Go(精灵宝可梦Go)就是LBS和AR相对成熟后结合在一起的产物,LBS和其他领域的结合十分的令人期待。
2.1. 需达到的要求
Android手机可以接受蓝牙GPS的信号,定位效果应优于自带的GPS芯片
没有GPS芯片的Android平板可以接收蓝牙GPS信号,并快速定位
Android车机设备可以接受DGPS信号,并有较高的定位精度
可以接受WiFi的位置信息,并定位
可以给主流的导航App(百度,高德)提供定位服务
2.2. 技术关键
Android LocationService的原理研究
GPS相关技术
蓝牙读取的技术
串口读取的技术
模拟位置信息的技术
DGPS 串口和网络访问的组合
使用LCM实现局域网高带宽低延时的UDP广播
2.3. 试验研究方案
在同一系统中可以替换不同的GPS接入模块
在同一系统中可以替换不同导航App
比较不同的GPS接入模块的精度和延迟,比较它们的利弊
3.1. GPS相关资料的搜集
全球定位系统(英语:Global Positioning System,通常简称GPS),又称全球卫星定位系统,是美国国防部研制和维护的中距离圆型轨道卫星导航系统。它可以为地球表面绝大部分地区(98%)提供准确的定位、测速和高精度的时间标准。全球定位系统可满足位于全球任何地方或近地空间的军事用户连续精确的确定三维位置、三维运动和时间的需要。
系统构成:
该系统包括太空中的24颗GPS卫星;地面上1个主控站、3个数据注入站和5个监测站以及为用户端的GPS接收机。最少只需其中4颗卫星,就能迅速确定用户端在地球上所处的位置及海拔高度;所能收联接到的卫星数越多,解码出来的位置就越精确。
定位精度:
GPS提供了民用的标准定位服务(SPS)和军用的精密定位服务(PPS),GPS的精密定位服务接入通过加密而受控。控制方法是通过反欺骗干扰(Antispoofing, AS)和选择可用性(SelectiveAvailablity, SA)两种加密特性来实现。
SA通过使卫星时钟发生“颤动”,以及在广播的导航参数中已入误差,有意地降低民用用户精度。
SA已于2000年5月1日停用,当前美国政府的政策是保持其关闭状态,如果SA被激活,军用用户可以通过密码机制去除SA的影响。
标准定为服务(SPS)对世界用户可以免费使用。该服务预测精度为: 水平精度13m(95%), 垂直精度22m(95%), UTC时间广播精度 40ns (95%)
SPS已是当今主导地位的卫星导航服务。
当今覆盖全球的卫星定位系统是GPS和格洛纳斯,以后还会有北斗和伽利略
|
GPS 全球卫星定位系统 |
GLONASS 格洛纳斯系统 |
Galileo 伽利略定位系统 |
BDS 北斗卫星导航系统 |
所属国家 |
美国 |
俄罗斯 |
欧盟 |
中国 |
开发立项 |
1973年
|
1984年 |
1999年 |
1994年 |
发展 |
1993年覆盖全球 |
1995年投入使用 2011年起服务范围拓展到全球 |
2014年 太空中已有的6颗正式的伽利略系统卫星,可以组成网络,初步发挥地面精确定位的功能 |
2003年完成了区域导航功能(北斗一代) 2012年起向亚太大部分地区正式提供服务 |
未来 |
目前正在试验下一代卫星导航系统 |
差分增强系统 |
计划30颗卫星覆盖全球 |
计划至2020年完成全球系统的构建 |
表1 GNSS对比
其他GNSS系统介绍
GLONASS
格洛纳斯系统(GLONASS) 是由俄罗斯维护的卫星导航系统,1976年组建,1982年开通,2010年补齐了系统需要的24颗卫星,现在市场上的主流手机都已经支持GLONASS定位
Galileo
伽利略定位系统(Galileo),是一个正在建造中的卫星定位系统,该系统由欧盟(EU)通过欧空局(ESA)和欧洲导航卫星系统管理局(GSA)建造, 伽利略系统的目的之一是为欧盟国家提供一个自主的高精度定位系统,该系统独立于俄罗斯的格洛纳斯系统(GLONASS)和美国的GPS系统,在这些系统被关闭时,欧盟就可以使用伽利略系统。该系统的基本服务(低精度)是提供给所有用户免费使用的,高精度定位服务仅提供给付费用户使用。伽利略系统的目标是在水平和铅垂方向提供精度1米以内的定位服务,并且在高纬度地区提供比其他系统更好的定位服务。
该系统计划发射30颗卫星,截止2016年5月,已有14颗卫星发射入轨。
北斗
北斗卫星导航系统(BDS )是中国正在实施的自主发展、独立运行的全球卫星导航系统,致力于向全球用户提供定位、导航、授时服务。中国在2003年完成了具有区域导航功能的北斗卫星导航试验系统,之后开始构建服务全球的北斗卫星导航系统,于2012年起向亚太大部分地区正式提供服务,并计划至2020年完成全球系统的构建。
QZSS
准天顶卫星系统(英文:Quasi-Zenith Satellite System;缩写:QZSS)是以三颗卫星透过时间转移完成全球定位系统的区域性功能的卫星扩增系统。这个计划为日本研发的,第一颗卫星Michibiki已于2010年9月11日发射,原预计到2013年可以释出完整的功能 。在2013年3月,日本内阁府宣布准天顶卫星系统的卫星将由三颗扩增为四颗。 预定在2017年结束前建造和发射三颗卫星
QZSS被视为是全球导航卫星系统扩增服务,这是一个类似美国联邦航空管理局的广域增强系统。
3.2. Android GPS的应用
以下是2016年8月的各个发行版本活动的数据, 大多为Android 4.0 以上 (Android4.X / 5.X/ 6.0)
当前最近的正式发行版是2015年的6.0 Marshmallow
所以我们针对Android4.0以上的机器可以覆盖大部分机型
当前主流手机都自带卫星定位功能的芯片,能够接受来自GPS/GLONASS/BeiDou 的卫星信号
手机自带的GPS模块,和车载的GPS并无本质的不同,其工作原理如下:
GPS采用无线电导航定位技术,即用户只要有一台接收机同步接受GPS卫星发射的测距信号,测定接收机至卫星的距离即可定位,定位点到卫星的距离可以通过传输时间与光速C的乘积来获取.
要确定GPS接受机的三维空间的位置,本来只需要3颗卫星: 即是已知3颗卫星的距离,3颗卫星的坐标,则三维空间接收机位置就可以算出,但事实上还需要做时间同步 , 仅传输时间1µs(微秒,百万分之一秒)的误差,将造成位置计算上300米的误差。因此实际上是要计算4个未知数:经度(X) 纬度(Y) 高度(Z) 时间误差(Δt),需要4个独立的方程,最终是4个卫星的信息。可见全球定位的要求是:在地球上任何时候任何一个点上,同时能接受到至少4颗卫星的信号。
GPS的坐标系统是WGS-84 (World Geodetic System 1984,世界测地学系统1984)是相对于地球中心的位置系统,它是一个三维的,右手定测的笛卡尔坐标系统,其坐标原点地球椭圆体的中心。
GPS除了计算接收器的坐标位置外,还能计算出接收器的移动速度,这是基于多普勒效应来实现的。当GPS卫星与接收器之间存在相对运动时,接收器一端收到的GPS信号的频率和GPS卫星实际发送的信号的频率并不相同,二者之差称为多普勒频移。由于GPS卫星的速度可根据其导航电文中的信息推算出来,所以接收器根据多普勒频移的相关公式就能计算出自己的移动速度了。
从以上原理可以知道GPS定位的一些特性:
优点:全球,全天候,连续实时的导航定位
缺点:
1. 首次定位慢:首次定位时间(Time To First Fix,TTFF)是衡量GPS接收设备性能的一个重要指标
GPS接受设备有3种启动模式:
冷启动模式(也叫出厂模式):在这种模式下,GPS接收器没有保存有效星历、时间及位置等信息,所以它需要从周围可搜索到的GPS卫星那接收信号并获取用于定位的数据(星历、历书、时间等信息)。前面曾介绍,传输一个完整的GPS导航电文需要12.5分钟。在这种模式下,TTFF至少为12.5分钟。
暖启动模式:在这种模式下,GPS接收器保存有历书数据(不超过180天)、旧时间信息(不超过20秒)及旧位置信息(不超过100千米范围),但星历数据失效(超过4小时)。如此,在计算位置时,GPS接收机需要从GPS卫星那接收星历数据。所以,在这种模式下,TTFF至少为30秒。
热启动模式:在这种模式下,GPS接收机具有有效星历数据、时间及位置等信息,这样,GPS接收器就无须解码GPS导航电文中的星历数据,它只要利用GPS信号进行测距计算就可以了。热启动模式下,TTFF速度很快,能做到10秒以内。
2. 耗电量大,由于连续实时定位,对手机的电池提出了挑战。
3. 室内信号弱无法使用,GPS接收机是基于卫星发射的信号,接收机面对空旷的天空才有较好的信号接收,而一些室内的定位如商场、办公场所、有顶棚的停车场等地方对GPS接收机来说接收信号是有困难的,因为GPS信号传播进入室内时有很大的衰减。民用L1信号到达地面的功率不低于-158.5dBW(-128.5dBm)。而室内信号可能衰减到-160dBW 到-200dBW,这使得GPS不可能工作。
3.3. Android的AGPS辅助定位
为了解决快速定位问题,出现了下面的APGS技术, AGPS GPRS辅助定位
辅助全球卫星定位系统(英语:Assisted Global Positioning System,简称:AGPS)是一种在一定辅助配合下进行GPS定位的运行方式。它可以利用手机基站的信号,配合传统GPS卫星信号,让定位的速度更快。
上节GPS的缺点中说明:TTFF的瓶颈主要在星历、历书数据等信息的获取上。为了解决此问题,人们设计了AssistedGPS(辅助GPS)方法。AGPS使得GPS接收机能通过移动通信网络(如2G/3G等,传输速度远超GPS卫星信号的传输速度)下载星历数据等信息,从而加快首次定位时间。
手机上使用AGPS一定要打开流量开关,当前AGPS标准,对于CDMA要求TTFF不大于16秒,GSM 的TTFF不大于20秒
AGPS是一个复杂的系统,它首先需要在全球建造一个用于收集GPS卫星数据的参考网络(Global Reference Network)。目前比较知名的参考网络由IGS(International GNSS Service)组织建造,它在全球80多个国家设有300多个GPS卫星跟踪站。IGS的官方网站(http://igscb.jpl.nasa.gov)提供GLONASS和GPS的卫星数据下载服务。
AGPS可分为MSB(Mobile Station Based)和MSA(MobileStation Assisted)两种运行模式。
MSB模式下,手机从AGPS位置服务器上下载辅助数据,然后手机再结合GPS卫星信号进行定位计算。这种方式需要手机下载辅助数据,同时它还需要利用其自身的CPU、内存等资源进行最终的定位计算。MSB模式的优点是网络负担小且定位延时小,适合短时间内的连续定位。
MSA模式下,手机接收并解调GPS卫星信号,然后将这些伪距信息传给AGPS位置服务器。AGPS位置服务器根据手机所发送的数据、自己所保存的卫星数据以及其他一些信息(例如手机当时通信的基站位置)计算出手机所在位置,然后将该信息返回给手机。
如果接收器只使用GPS卫星信号进行定位,这种工作模式称为Standalone(也叫Autonomous)模式。MSA或MSB都需要手机接收GPS卫星信号。对于无法接收GPS卫星信号的地区(如办公室等)就需要借助其他方法了。
AGPS必须和GPS结合使用,无法单独使用。
3.4. Android的基站和Wi-Fi定位
基站 Cell-ID 定位
Cell-ID是全球使用的识别码,每个基地台都有一个唯一的 ID,地区识别码 Location AreaIdentity (LAI) 以及基地台识别码 Cell Identity (CI),完整的 Cell-ID 包含 MCC(MobileCountry Code) + MNC (Mobile Network Code) + LAC + CI。
当设备位置更新,设备会向当前服务小区报告当前位置信息。 Cell ID定位的精度随着小区的覆盖范围而变化,从几十米到上百米不等。Cell ID是目前最容易使用的定位方式。只要获取手机访问的基站编号,再通过后台服务得到基站的坐标那就能获得手机的大体位置了。
得到了这些Cell ID信息,如果没有基站信息表(基站的CellID对应的经纬度),得到了这些信息也不知道在哪里,因为只有移动运营商才拥有每个基站的经纬度数据。但Google凭借Android系统,还有路上测试的信息收集车辆,却可以收集到每个基站的大概经纬度。
早期Google可以采用车辆收集这些信息,车上装载GPS定位,可以准确拿到经纬度信息,与此同时,利用手机,可以获取到周边的基站Cell ID,于是 Cell ID-经纬度这样的对应关系就可以建立起来。要全部利用车辆来收集这些信息是个庞大的工程。Android的智能手机,大多数拥有GPS硬件定位,于是大家的手机在查询Google定位的同时,也给Google提供了很好的定位数据,这些数据通过Google内部的算法,就可以建立非常完善的基站定位数据库了。
在4G手机刚刚普及的时候,出现过部分4G用户无法定位,而2G 3G信号却可以定位的情况,这是因为4G的CellID还没有上传足够的关联数据,而2G /3G 的基站数据已经很完备了。
Wi-Fi定位
1.每一个无线AP都有一个全球唯一的MAC地址,并且一般来说无线AP在一段时间内是不会移动的。
2.设备在开启Wi-Fi的情况下,即可扫描并收集周围的AP信号,无论是否加密,是否已连接,甚至信号强度不足以显示在无线信号列表中,都可以获取到AP广播出来的MAC地址。
3.设备将这些能够标示AP的数据发送到位置服务器,服务器检索出每一个AP的地理位置,并结合每个信号的强弱程度,计算出设备的地理位置并返回到用户设备。
4.位置服务商要不断更新、补充自己的数据库,以保证数据的准确性,毕竟无线AP不像基站塔那样基本100%不会移动。
这样的位置服务商现在来说只有Skyhook和Google两家.他们收集位置数据的方式也是相似的。
1.主动采集
Google的街景拍摄车还有一个重要的功能就是采集沿途的无线信号,并打上通过GPS定位出的坐标回传至服务器。
2.用户提交
Android手机用户在开启“使用无线网络定位”时会提示是否允许Google的定位服务手机匿名地点数据。
手机定位方式对比
|
GPS |
GPS + AGPS |
Cell ID |
Wi-Fi |
精度 |
小于10m |
小于10m |
基站覆盖范围 大于 100m |
小于 90m |
依赖 |
GPS |
GPS 2G/3G/4G |
2G/3G/4G |
Wi-Fi 2G/3G/4G |
耗电 |
大 |
大 |
小 |
小 |
优势 |
室外 |
室外 定位快 |
定位快 室内可用 |
定位快 室内可用 |
限制 |
室内,高楼遮挡无法使用 初次定位慢 |
室内,高楼遮挡无法使用 没有信号无法使用 |
没有信号无法使用 精度差 |
没有信号无法使用 没有WiFi无法使用 |
表2 手机定位方式对比