这次学习的主题是GPS,主要任务是将GPS集成到手机上。
其实,智能手机早就具备了A-GPS和GPS功能,但是对于功能机来说,GPS还是一个相当奢侈的设备——据说GPS传感器本身并不贵,1~2刀吧,如果采购量大还能有至少40%的discount。但是由于GPS本身的复杂性,以及对硬件平台的要求,继承GPS的成本有可能在100刀以上——现在功能机售价都基本在100刀左右,放上GPS,那得多贵啊?不看好。可是,GPS可以不集成到产品里,但code line上必须有,也必须具备量产的能力,所以还是得做啊。
为什么集成GPS到手机会带来这么高的成本呢?首先,硬件平台需要支持A-GPS和GPS,这是第一部分成本;其次,定位引擎(Position Engine)硬件需要成本,这部分可以用于导航;再次,由于需要使用美国的GPS卫星,这里面涉及到一些授权费用;最后,由于一些定位和导航算法是专利,需要付一定的专利费。——其实这些费用只是一个大概,而且我对于成本和硬件这部分并不熟悉,因此上面提到的成本因素可能并不准确。
GPS工作原理就不多说了,专业性太强,一时半会也说不清楚,但大体上如下:
- ~30颗距地20200km左右的在轨GPS卫星以固定的频率发送信号(但对于在地面的接收设备来说信号太弱)
- 在三维空间中,三个固定点以及到它们的距离可以确定一条曲线段上的两个端点,因此至少需要4颗卫星才能确定一个点的位置
- 由于存在信号的传输时间(Time of Flight,ToF),为了确定该点位置,还需要另一个维度,那就是时间
- 由于ToF,所计算出来的距离称为伪距(Pseudorange)
- 信号传输速度为光速,因此,GPS卫星信号传输到接收器的时间大概为67~80ms
- 由于卫星在运动,且其绕地球旋转一周的时间固定,因此在一定的时间内可以将卫星发送来的数据视为有效,超出该时间便需要重新获取数据。这个时间段为2小时。
- 为了计算接受器的位置,需要星历(Ephemeris)、同步时间等信息。
- 为了确定GPS接收器的海拔,需要定义一个重力基准平面
- GPS卫星以50Hz的频率发送数据,即每一比特数据需要20ms。数据以帧(页)的形式组织。由于一个完整的数据有26帧(第一帧有5个子帧,4、5帧包含25帧数据),因此每次接收完整数据需要13分钟。这对于GPS用户来说不可接受,为了尽快的捕获GPS卫星,就需要A-GPS来提高TTFF(Time to First Fix,首次捕获时间)。
- 通常由于电离层对信号的散射、地面建筑物对GPS卫星的遮挡等都能造成信号的接收和解析的误差,因此需要专门的统计学公式来进行校正
- 根据伪距、星历、时间等数据计算出GPS接收器所处的经度(Longitude)、纬度(Latitude)和海拔(Altitude),还可以预测接收器的运动及方向。
A-GPS工作原理:
- 最基本两种:基于MS(Mobile Station)的以及MS辅助的。第一种是由MS进行方位计算,第二种是由通信网络或GPS服务器进行计算。但许多厂家提供了各自不同的A-GPS的工作原理。
- GPS卫星发送的信号由地面的控制中心接收,经过计算后将星历、时间等数据传递到通信网络
- A-GPS接收器向通信网络请求数据,初步计算位置。在精度上,最坏的情况是定位的位置范围为基站的覆盖范围
- A-GPS通常使用手机的无线通信模块(RF)来收发数据。可以通过Control Plane或者User Plane或者两者一起使用来接收数据
为了支持GPS,需要针对硬件平台和操作系统开发GPS模块及PE的驱动,并根据JSR-179定义其API以便应用程序来使用。同时,需要支持A-GPS和BT GPS(即外接的蓝牙GPS接收器)。其中,A-GPS和GPS的协同工作将会是一个难点,另外,PE的集成也将成为一个难点。软件所需完成的功能主要包括:
- 激活GPS传感器和PE
- 电源管理——GPS的耗电量非常大
- 为应用提供定位和导航数据(包括满足JSR-179)
- 处理并发的数据请求
- 提供A-GPS和BT GPS的支持
- 提供产品测试以及产品确认功能
目前只是零零散散学习了一个星期,对于很多GPS的原理,比如信号处理、多普勒频移等一系列的概念和术语,以及错误校正、数据补偿等方面并不涉及。这些原理性的东西,对于GPS传感器和PE的硬件设计、开发人员有重大的意义,但是对于软件开发人员来说,理解起来困难,而实际的开发工作中用到这些原理知识的可能性为0。对于我来说,首要任务是在手机上开发GPS的最基本功能,而非学习这些原理——相信如果先学习这些原理的话,等学明白了,项目也就结束了。
挺糙的一篇文章。就这样吧,谁也不能指望刚开始就是专家不是?都得一点一滴积累不是?