Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1715698
  • 博文数量: 177
  • 博客积分: 9416
  • 博客等级: 中将
  • 技术积分: 2513
  • 用 户 组: 普通用户
  • 注册时间: 2006-01-06 16:08
文章分类

全部博文(177)

文章存档

2013年(4)

2012年(13)

2011年(9)

2010年(71)

2009年(12)

2008年(11)

2007年(32)

2006年(25)

分类: 嵌入式

2012-08-16 21:38:47

又开始集中学习阶段了,感觉真的老了,隔两三个月来一次大规模集中学习真的有点受不了了,累啊。

这次学习的主题是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的最基本功能,而非学习这些原理——相信如果先学习这些原理的话,等学明白了,项目也就结束了。

挺糙的一篇文章。就这样吧,谁也不能指望刚开始就是专家不是?都得一点一滴积累不是?
阅读(3812) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~