GPS学习文档 - 图文

更新时间:2023-10-05 18:00:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

GPS学习文档

一.GPS基本原理 1.1基础知识

GPS全球定位系统由在轨的24-28颗近地卫星环绕地球构成,亚洲半球可以收到12-13

颗卫星。GPS定位只要能接收到4颗卫星信号就可以定位,多出来的都是备份星。

GPS首次定位都需要一段较长的时间进行信号锁定和寻星,这个过程将无法正常接收

卫星信号,此过程相当于冷启动。所谓冷启动就是将GPS芯片中的频率表清空重新收集卫星信号频率锁定信号,这个过程可能4-10分钟不等。直到信号变得稳定,达到了最高,不再变化的时候就是“冷启动”完成了。冷启动后,手机就能很快进行定位了。

1.1.1 AGPS

辅助全球卫星定位系统(Assisted Global Positioning System,简称:AGPS)是一种GPS的运行方式。它可以利用手机基地站的资讯,配合传统GPS卫星,让定位的速度更快。

普通的GPS系统是由GPS卫星和GPS接受器组成。与普通的GPS不同,A-GPS在系统中还有一个辅助服务器。在A-GPS网络中,由于受到接收器工作功率和地理位置的影响而不能获得理想的定位效果,接受器往往与有着较高功率的辅助服务器通信并接入网络。虽然与蜂窝系统的覆盖范围有关,但由于A-GPS接收器与辅助服务器间的任务共享,所以A-GPS往往比普通的GPS系统处理速度更快,有更高的效率。

在蜂窝移动通信系统中,A-GPS系统通过手机定位服务器作为辅助服务器来协助GPS接收器完成测距和定位服务。辅助服务器有比GPS接收器强大得多的功率来接受GPS信号。在这种情况下,辅助服务器通过网络与手机的GPS接收器通信。由于有了移动网络的协助,接收器的效率比没有协助的时候有了很大的提高,因为有部分原本由接收器处理的任务被辅助服务器所处理。

通常情况下,一个标准的GPS设备需要一个清晰的视线传播并且需要至少4颗GPS卫

星才能定位。另外,还需要有足够的处理功率来把卫星的数据转换成坐标。而使用AGPS,接收GPS信号,计算定位的任务都由辅助服务器完成。

AGPS是结合GSM/GPRS与传统卫星定位,利用基地台代送辅助卫星信息,以缩减GPS芯片获取卫星信号的延迟时间,受遮盖的室内也能借基地台讯号弥补,减轻GPS芯片对卫星的依赖度。和纯GPS、基地台三角定位比较,AGPS能提供范围更广、更省电、速度更快的定位服务,理想误差范围在10公尺以内,日本和美国都已经成熟运用AGPS于LBS服务(Location Based Service,适地性服务)。

AGPS技术是一种结合了网络基站信息和GPS信息对移动台进行定位的技术,可以在GSM/GPRS、WCDMA和CDMA2000网络中使用。该技术需要在手机内增加GPS接收机模块,并改造手机天线,同时要在移动网络上加建位置服务器、差分GPS基准站等设备。

AGPS解决方案的优势主要在其定位精度上,在室外等空旷地区,其精度在正常的GPS工作环境下,可达10米左右,堪称目前定位精度最高的一种定位技术。该技术的另一优点为:首次捕获GPS信号的时间一般仅需几秒,不像GPS的首次捕获时间可能要2~3分钟。

虽然AGPS技术的定位精度很高、首次捕获GPS信号时间短,但是该技术也存在着一些缺点。首先,室内定位的问题目前仍然无法圆满解决。另外,AGPS的定位实现必须通过多次网络传输(最多可达六次单向传输),这对运营商来说是被认为大量的占用了空中资源。AGPS最主要的问题是用户对于使用移动定位业务必须更换手机难以接受。而且AGPS手机比一般手机在耗电上有一定的额外负担,间接减短了手机的待机时间。除此之外,就是使用有效性问题。由于GPS系统受美国政府拥有和控制,在非常时期(如战争、天灾等),民用GPS服务可能会受到影响,AGPS的定位业务更难以正常运作。总之这项技术就是在传统的GPS技术上改用GPRS线路进行数据传输,将原有GPS芯片直接找卫星改成找基站辅助,是一种更为先进的定位技术。

总之,传统GPS技术由于过于依赖终端性能,即将卫星扫描、捕获、伪距信号接收及定位运算等工作集于终端一身,从而造成定位灵敏度低及终端耗电量大等方面缺陷。AGPS技术将终端的工作简化,将卫星扫描及定位运算等最为繁重的工作从终端一侧转移到网络。

1.1.2 AGPS和普通GPS

传统GPS首次定位(冷启动)一般需要几分钟的时间,并且普遍受到所处定位环境的

影响,例如高楼林立会严重阻碍卫星信号的接受,同样在室内由于墙体的屏蔽作用GPS信号也难以接收。而AGPS开始首次定位的时间最快仅需几秒钟的时间,这也是相比传统GPS的最大优势。

普通GPS仅依靠接收卫星信号就可以了,是完全免费的。而AGPS除了要接收卫星信

号外,还要通过手机的GPRS网络下载星历资料,而GPRS上网是要额外花钱的。

A-GPS可以这么理解,就是传统GPS功能的基础上附加了一个辅助功能,这个辅助功

能是用来弥补传统GPS首次定位等待时间太长的缺点的,说白了就是在GPS没搜索到卫星信号之前,先在网上下载一个卫星信息,然后把这个信息告诉给GPS,GPS就可以据此直接找到卫星了。

只要有AGPS功能的手机都兼具普通GPS功能,因为AGPS功能只是对普通GPS的一

个辅助罢了,没有了GPS功能这个辅助就无从谈起了。

如果一款手机确实具有AGPS功能,那么它肯定也具有普通GPS功能。否则如果一款

手机只能依靠基站来定位的话,那就不能说成具有AGPS功能。

1.1.3 GPS启动

GPS接收机启动模式有三种:冷启动、暖启动和热启动。

1.1.3.1 冷启动

GPS接收器尝试定位并锁定卫星,由于没有先前信息(Almanac & Ephemeris),这将花去

很长的时间。GPS接收器采用类似于轮询的方法,从所有的卫星中锁定信号,这将比事前知道该搜索哪些卫星要慢不少。这一类重新获取锁定要花最长的时间。

1.1.3.2 暖启动

GPS接收器保存有最后计算的卫星的位置、历书和UTC时间,但保存的内容不是当前

可视卫星的数据。接收器基于其最后的位置和历书得以大概知道当前天空中的可视卫星,从

而尝试去获得当前卫星和信号并计算其新位置。

1.1.3.2 热启动

GPS接收器保存有其最后计算的可视卫星的位置、almanac(历书)和UTC时间,在重启以后,GPS接收器以保存的上述内容为基础获取和计算当前卫星的最新位置。

1.1.3.3 小结

热启动就是启动时可视的卫星信息和之前保存的信息是基本一致的。

暖启动和热启动的区别在于尽管也保存了之前的卫星信息,搜星的时候可视卫星(当前卫星)并不是以前记忆的信息的卫星,但是保存的历史信息仍然有利于快速定位当前卫星。

冷启动,最好理解,就是在没有历史信息的情况下一个一个轮询的方式搜星定位,所需时间最长。 注:

Almanac是反映所有卫星状况的比较粗略的轨道参数,每一个卫星都会广播所有卫星的Almanac 数据,这类数据不是十分精确,有效期长达几个月。

Ephemeris 数据相比之下是十分精确的轨道和时钟纠正信息,每一颗卫星只会广播自己的Ephemeris 数据,这类数据的有效期或许有几个小时(取决于广播信息的包含的内容)。Ephemeris 数据每隔30秒广播一次。

1.2.定位模式

定位模式分为:MS-Based、MS-Assist和Standalone。GPS定位均支持Standalone模式,这种模式下,定位过程不需要服务器进行辅助,因此,Standalone模式特别适用于需要快速定位和没有网络信号的场合。我们所说的AGPS(Assist GPS)包括MS-Based和MS-Assisited两种,定位过程均需要网络服务器端进行辅助。

1.2.1 MS-Based

MS-Based:服务器端捕获GPS卫星,并解析GPS信号,计算星历数据,存在服务器上。手机向服务器提供自身的基站地址(pilot phase),服务器端根据手机所在的基站地址,传输与该位置相关的GPS辅助信息(包含GPS的星历和方位俯仰角等),然后在手机计算位置信息。

1.2.2 MS-Assisted

MS-Assisted:AGPS手机首先将本身的基站地址通过网络传输到位置服务器,位置服务器根据该手机的大概位置传输与该位置相关的GPS辅助信息(包含GPS的星历和方位俯仰角等)到手机。该手机的AGPS模块根据辅助信息(以提升GPS信号的第一锁定时间TTFF(Time To First Fix)能力)接收GPS原始信号。手机在接收到GPS原始信号后解调信号,计算手机到卫星的伪距(伪距为受各种GPS误差影响的距离),并将有关信息通过网络传输到位置服务器;位置服务器根据传来的GPS伪距信息和来自其他定位设备(如差分GPS基准站等)的辅助信息完成对GPS信息的处理,并估算该手机的位置;位置服务器将该手机的位置通过网络传输到手机。

1.2.3 Standalone

Standalone:手机自身接受并解析GPS原始信号。不涉及和任何服务器之间的数据交换。

1.3 SUPL/Pre-SUPL

SUPL(secure user plane location)用于移动电话和定位服务器之间进行通信的协议标准,作为OMA的标准。具有独立于网络结构,对现有的网络的影响很小。设置在网络上的SUPL服务器可以使得移动终端定位速度更快。

Pre-SUPL是高通和其他公司共同制定的一种简化的SUPL标准。

1.4 CP/UP

CP: Control Plane是指3GPP定义的协议规范标准。(Protocols used in the signaling plane) UP: User Plane是通过Pre-SUPL和SUPL定义的。(Protocols used in a data call)

二.高通平台各种接口及关系

高通平台上层目前支持两种接口:IPosDet和IPosDetExt。其中IPosDet是BREW的标准接口。IPosDetExt是用来测试GPS功能的扩展接口,已经集成进代码中,但高通不提供对此接口的维护。如果需要,可以直接调用PDAPI,见Pdsm.h。

2.1 IPosDet接口说明

2.1.1 IPOSDET_AddRef()

此函数用于增加 IPosDet 接口对象的引用计数,使得多个调用程序能够共享对象。 引

用计数为 0(零)时将释放对象。 原型:

uint32 IPOSDET_AddRef

(

IPosDet * pIPosDet ) 参数:

pIPosDet: [in]: 指向 IPosDet 接口对象的指针。

返回值:

已增加的对象引用计数。 备注:

有效对象返回正的引用计数。

2.1.2 IPOSDET_Release()

说明:

此函数用于减少 IPosDet 接口对象的引用计数。 引用计数为 0(零)时,该对象将从内存中释放且不再有效。 原型:

uint32 IPOSDET_Release (

IPosDet * pIPosDet ) 参数:

pIPosDet: [in]: 指向 IPosDet 接口对象的指针。

返回值:

已减少的对象引用计数。 如果对象已释放,且不再有效,则返回 0(零)。

2.1.3 IPOSDET_GetGPSConfig()

说明:

此函数用于获取 GPS 引擎的当前 GPS 配置。 原型:

int IPOSDET_GetGPSConfig (

IPosDet *pIPosDet, AEEGPSConfig *pConfig ) 参数:

pif: [in]: 指向 IPosDet 对象的指针。 pConfig: [out]: 指向 GPS 配置的指针。请参阅 AEEGPSConfig。

返回值:

SUCCESS: 此函数成功

EPRIVLEVEL: 调用程序没有足够的权限级别 (PL_POS_LOCATION) 调用此函数 EBADPARM: pConfig 为 NULL EUNSUPPORTED: 不支持该函数。

2.1.4 IPOSDET_SetGPSConfig()

说明:

此函数用于设置 GPS 引擎将要使用的 GPS 配置。

详情

原型:

int IPOSDET_SetGPSConfig (

IPosDet *pIPosDet, AEEGPSConfig *pConfig ) 参数:

pIPosDet: [in]: 接口指针。 pConfig: [in]: 指向 GPS 配置的指针。 详情请参阅 AEEGPSConfig。

返回值:

SUCCESS: 函数成功

EPRIVLEVEL: 调用程序没有足够的权限级别 (PL_POS_LOCATION) 调用此函数 EBADPARM: pConfig 为 NULL 或传入 *pConfig 的数据无效。 (检查 mode、server.svrType、optim 的有效性) EUNSUPPORTED: 系统不支持此配置。 备注:

在调用此函数前,定位引擎将使用默认设置配置。 默认设置可以使用 IPOSDET_GetGPSConfig 获取。 只有跟在 IPOSDET_SetGPSConfig() 调用后的定位请求才使用新配置。

2.1.5 IPOSDET_GetGPSInfo()

说明:

此函数用于返回 GPS 定位信息。 它将返回纬度、经度、海拔高度以及向量信息,如水平和垂直速度、方向及水平信息的误差。 该函数为异步调用,完成时将调用 pcb 指定的回调

函数。 如果定位请求未得到合适的回应,AEEGPSInfo 的状态成员将为带有某个 AEEGPS_ERR_* 值的非零值。

该函数可以执行网络运营商建议的保密策略。 在设备上执行保密策略时可能会提示用户使用对话框。 调用此函数应用程序必须准备交出屏幕以便让对话框提示用户。 应用程序在调用此函数后必须挂起事件 EVT_DIALOG_START 对屏幕的着色,必须在事件 EVT_DIALOG_END 中重绘。 原型:

int IPOSDET_GetGPSInfo (

IPosDet *pif, AEEGPSReq req,

AEEGPSAccuracy accuracy, AEEGPSInfo *pGPSInfo, AEECallback *pcb ) 参数:

pif: [in]: 指向 IPosDet 对象的指针。 req: [in]: 请求类型(

AEEGPS_GETINFO_LOCATION

AEEGPS_GETINFO_VELOCITY

AEEGPS_GETINFO_ALTITUDE、AEEGPS_GETINFO_NONE)。 以上标记

(AEEGPS_GETINFO_NONE除外)可以组合使用以获取多种信息。 accuracy: [in]: 此请求所需的精确度级别。 pGPSInfo: [out]: 输入时,该参数必须是指向 AEEGPSInfo 结构的有效指针。 回调时,此结构的成员包含 GPS 信息。 调用程序必须确保此结构有效,直到调用 pcb 指定的回调。 pcb: [in]: 完成定位后调用的回调函数。

返回值:

SUCCESS: 此函数成功

EPRIVLEVEL: 调用程序没有足够的权限级别 (PL_POS_LOCATION) 调用此函数

EBADPARM: pGPSInfo 或 pcb 为 NULL EUNSUPPORTED: 不支持该函数。 EFAILED: 常规失败 备注:

成功时,请求会在在处理,并响应会使用回调得到异步通知。 应用可以在 pcb 中调用 CALLBACK_Cancel() 以取消请求。 小结:

进行定位时,首先调用接口:IPOSDET_SetGPSConfig()进行GPS设置,设置完毕后,

调用IPOSDET_GetGPSInfo()进行定位。由于GPS引擎一次只能处理一个定位请求,多次定位时,所以需要在一次定位结束返回后再进行下一次定位。两次定位的间隔要尽量接近于设置的nInterval的大小。

2.2 PD API接口介绍

PD API 是一个接口集,应用程序可以利用PD API来确定手机的当前位置。PD API是

仿照CM API制定的,它分为两类:Requests 和 Callbacks。其中Requests又包括同步请求和异步请求。

2.2.1 Requests

同步请求:此时应用程序将被禁止运行,直到此请求被处理完,应用程序才继续运行。

其接口包括:

pdsm_client_init():客户端初始化,LCS代理客户端ID为PDSM_CLIENT_TYPE_NI。 pdsm_client_pd_reg():注册与呼叫相关的回调函数和事件。 pdsm_client_pa_reg():注册用来接收PD参数变化事件。

pdsm_client_lcs_reg ():注册用来接收来自LCS agent的事件(LCS agent是用来通知和验证的)

pdsm_client_act():激活注册的回调

pdsm_client_deact():禁止注册的回调 pdsm_client_release():释放客户端的引用

异步请求:接口包括:

pdsm_get_position():确定移动的位置 pdsm_end_session():取消PD请求 pdsm_set_parameters():设置PD NV参数 pdsm_get_parameters():获得NV参数的当前值

pdsm_lcs_agent_client_request():通知/验证请求;LSM调用此函数来发notification提醒任何已注册的客户端

pdsm_lcs_agent_client_response():来自客户端的通知/验证响应,已注册的客户端调用这个函数来发送用户响应给LSM。

2.2.2 Callbacks

回调函数:是客户端应用程序提供给PD API的函数。PD API利用这些回调函数返回

error,event和notification。

回调函数分为3种类型:

1、命令回调:用来返回异步请求的状态,例如,位置报告。 2、事件回调:用来返回: (1)与位置确定相关的事件; (2)与参数变化相关的事件; (3)与用户通知相关的事件。

3、其他客户端命令错误回调:用来返回其他客户端请求的命令状态

2.2.3 主要功能函数 2.2.3.1 pdsm_get_position()

函数功能:获取位置信息。 主要参数: 1. session type:

typedef enum pdsm_pd_option_e{ PDSM_PD_SESS_TYPE_MIN = -1, PDSM_PD_SESS_TYPE_LATEST, PDSM_PD_SESS_TYPE_NEW, PDSM_PD_SESS_TYPE_UPDATE, PDSM_PD_SESS_TYPE_TRACK, PDSM_PD_SESS_TYPE_TRACK_IND, PDSM_PD_SESS_TYPE_DATA_DLOAD, PDSM_PD_SESS_TYPE_MAX, }pdsm_pd_session_e_type;

2. operation mode: typedef enum {

PDSM_SESSION_OPERATION_MIN = 0,

PDSM_SESSION_OPERATION_STANDALONE_ONLY, PDSM_SESSION_OPERATION_MSBASED, PDSM_SESSION_OPERATION_PDE_CALC_ONLY, PDSM_SESSION_OPERATION_OPTIMAL_SPEED, PDSM_SESSION_OPERATION_OPTIMAL_ACCURACY, PDSM_SESSION_OPERATION_OPTIMAL_DATA, PDSM_SESSION_OPERATION_BESTPOSITIONMODE, PDSM_SESSION_OPERATION_MAX = 0x10000000 } pdsm_pd_session_operation_e_type;

AEE层和Service层GPS模式对应关系:

IPosDet相关接口中:AEEGPSMode对应的session type和operation mode:

GPS mode AEEGPS_MODE_DLOAD_FIRST Session type PDSM_PD_SESS_TYPE_DATA_DLOAD AEEGPS_MODE_TRACK_LOCAL AEEGPS_MODE_TRACK_STANDALONE AEEGPS_MODE_TRACK_NETWORK AEEGPS_MODE_TRACK_OPTIMAL/ AEEGPS_MODE_ONE_SHOT PDSM_PD_SESS_TYPE_NEW Optim AEEGPS_OPT_SPEED AEEGPS_OPT_NONE AEEGPS_OPT_PAYLOAD others Operation mode PDSM_SESSION_OPERATION_OPTIMAL_SPEED PDSM_SESSION_OPERATION_MSBASED PDSM_SESSION_OPERATION_OPTIMAL_DATA PDSM_SESSION_OPERATION_OPTIMAL_ACCURACY

IPosDetExt相关接口中:AEEGPSMode对应的session type和operation mode:

GPS mode Session type PDSM_PD_SESS_TYPE_NEW PDSM_SESSION_OPERATION_MSASSISTED PDSM_PD_SESS_TYPE_NEW PDSM_PD_SESS_TYPE_NEW PDSM_SESSION_OPERATION_STANDALONE_ONLY PDSM_SESSION_OPERATION_MSBASED Operation mode PDSM_SESSION_OPERATION_MSASSISTED AEEPOSDETEXT_GPS_MODE_ONE_SHOT AEEPOSDETEXT_GPS_MODE_DLOAD_FIRST AEEPOSDETEXT_GPS_MODE_TRACK_LOCAL AEEPOSDETEXT_GPS_MODE_TRACK_NETWORK AEEPOSDETEXT_GPS_MODE_TRACK_OPTIMAL AEEPOSDETEXT_GPS_MODE_TRACK_PDSM AEEPOSDETEXT_GPS_MODE_LATEST AEEPOSDETEXT_GPS_MODE_DLOAD_PERIODIC PDSM_PD_SESS_TYPE_NEW PDSM_PD_SESS_TYPE_DATA_DLOAD PDSM_PD_SESS_TYPE_TRACK_IND PDSM_PD_SESS_TYPE_TRACK_IND PDSM_PD_SESS_TYPE_TRACK_IND PDSM_PD_SESS_TYPE_TRACK PDSM_PD_SESS_TYPE_LATEST PDSM_PD_SESS_TYPE_DATA_DLOAD AEEPOSDETEXT_GPS_MODE_TRACK_STANDALONE PDSM_PD_SESS_TYPE_NEW

IPosDetExt相关接口中:optim对应的operation mode: Optim Operation mode AEEPOSDETEXT_OPERATION_OPTIMAL_ACCURACY PDSM_SESSION_OPERATION_OPTIMAL_ACCURACY AEEPOSDETEXT_OPERATION_OPTIMAL_DATA AEEPOSDETEXT_OPERATION_NETWORK_ONLY AEEPOSDETEXT_OPERATION_MSBASED AEEPOSDETEXT_OPERATION_STANDALONE_ONLY AEEPOSDETEXT_OPERATION_OPTIMAL_SPEED

PDSM_SESSION_OPERATION_OPTIMAL_DATA PDSM_SESSION_OPERATION_PDE_CALC_ONLY PDSM_SESSION_OPERATION_MSBASED PDSM_SESSION_OPERATION_STANDALONE_ONLY PDSM_SESSION_OPERATION_OPTIMAL_SPEED 2.1.3.2 pdsm_set_parameters()

函数功能:设置定位参数,所进行的设置会保存到对应的NV项中。 主要参数:

PDSM_PA_IP_ADRS:服务器IP地址 PDSM_PA_PORT_ID:服务器端口号 PDSM_PA_GPS_LOCK:GPS是否被锁定

PDSM_PA_PTLM_MODE:默认传输模式,TCP或HTTP PDSM_PA_URL:服务器默认URL

PDSM_PA_KEEP_WARM:开启或关闭keep warm模式

2.3 LSM介绍

LSM是Location Service Manager的缩写

LSM和PDAPI的关系:

LSM的主要功能: 1.控制MGP接收机

(1)开始定位时开启GPS接收机,此时电量的消耗最大。

(2)在等待下一次定位时,将接收机设置为空闲状态(IDLE),此时射频端(RF front

end)关闭,电量的消耗将减少1/2。

(3)定位请求结束后关闭GPS接收机,此时电量消耗最少。 (4)设置或恢复GPS接收机设置信息,例如设置模式等参数。

2.维护辅助数据库信息

(1)LSM数据库保留了当前MGP辅助数据信息的一个映像(image),其中包括解码

的卫星数据(decoded satellite data)和externally injected data, accepted by MGP

3.维护时间信息

(1)Coarse time:实时时钟计数信息,用来更新RTC和GPS时间的关系。 (2)More precise time:建立GSM/UMTS时间和GPS时间之间的联系。

(2)MGP决定何时接收新数据,更新LSM数据库。

(3)当需要从服务器获取辅助信息时,会使用到数据库中的信息。

4.筛选位置信息和GPS测量信息

(1)对于MS-Based模式,一旦打开MGP接收机,每秒钟都会产生定位信息(例如位

置信息、当前还没有进行新的定位等相关信息)。LSM会对这些信息进行筛选,根据调用流程,确定何时返回对应的信息,确定在何种状态下,返回失败的状态。

(2)对于MS-Assisted模式,一旦打开MGP接收机,每秒钟都会产生GPS测量信息

(测量完毕信息或当前没有新的测量请求的状态信息)。LSM会对这些信息进行筛选,直到测量的结果满足一定的精度标准,此时将位置信息返回。

LCS Agent和LSM以及PDAPI关系:

LCS Agent是LSM task的一部分,不同的对象使用不同的LCS Agent。 LCS Agent的主要功能包括: 1.管理调用流程

(1)格式化输出要发送到定位服务器的信息 (2)处理从定位服务器获取的信息 (3)PDAPI初始化

2.多请求冲突处理 3.协议的编码和解码 4.不同对象的设置参数解析

六.备注

提给高通的sr:

00327309:GPS的一些基本设置问题,standalone定位模式的设置。

00335821:将测试卡号注册到高通定位服务器上,高通提供了定位服务器的地址和端口号。 00344571:MS-Based定位模式的设置问题。

00345577:下载软件版本后,第一次进行定位一直失败的问题。 00350856:GPS启动模式、设置GPS模式时的定位次数和间隔问题

七.测试结果 7.1高通GPS设置测试

以高通的参考设计代码为基础,对高通GPS设置项进行了基础测试,现将测试结果汇总如下:

1 service options 1.1 Location and altitude 测量经度,纬度及海拔 1.2 Location and velocity 测量经度,纬度及速度 1.3 Location 只测量经度,纬度 1.4 All 全部测量

目前,此选项下所有测试项均有效。 2

Session type

2.1 single shot

单点测试,只测试一次当前位置信息。 2.2 Tracking Mode(App-Driven)

2.3 Tracking Mode(PDSM-driven)

以fix rate设置的速率进行连续定位,ME-BASE模式 目前,此选项下所有测试项均有效。 3

Operation mode

3.1 Speed Optimal

星历由网络下载,MS-BASE计算位置失败后,进入MS-ASSISTED 3.2 Accuracy optimal

星历由网络下载,MS-ASSISTED失败后,MS-BASE计算位置。 3.3 Data optimal

星历由网络下载,MS-BASE计算位置失败后,进入MS-ASSISTED,但是优化数据,使得网络数据传输最小。 3.4 Net work only

全部通过服务器来计算并传输数据。 3.5 Standalone

标准的MS-BASE方式。

目前,此选项下,Accuracy optimal和Net work only方式无法使用。 4

Quality of service

4.1 Performance

用来设置搜索窗时间长度。目前测试此选项在信号较差的室内环境时,如设置过小,会造成无法定位的问题。 4.2 Threshold

用来设置ME-BASE的时长,超过设置值,如ME-BASE计算失败,则进入ME-ASSISTED模式。 5

Fix Rate

5.1 Number of Fixes

在Tracking Mode模式下,定位的总点数。目前设置值为1~99999999; 5.2 Time Between Fixes

在Tracking Mode模式下,定位点的时间间隔。以秒为单位,目前设置值为1~9999。 目前此选项下,所有测试项均能正常工作。

7.2本地测试

1. Standalone模式

其中:

mode:AEEGPS_MODE_TRACK_STANDALON nFixes:1 nInterval:1

optim:AEEGPS_OPT_DEFAULT qos:255

测试结果:

2. MS-Based模式

其中: nFixes:1 nInterval:1

optim:AEEGPS_MODE_TRACK_LOCAL qos:255 测试结果:

可以成功定位。测试三次,定位时间分别为:48s 40s 和45s 目前,本地只针对Standalone模式和MS-Based模式进行定位测试。

可以成功定位。测试三次,定位时间分别为:172s 73s 和60s

小结:

Standalone模式下定位时间和是否能获取到卫星数据有关,初始获取不到卫星数据时,、

定位需要的时间较长,一旦获取卫星数据,进行下一次定位时,通常需要较短的时间。从QXDM分析,至少要成功close track 4颗GPS卫星才能成功定位。

MS-Based模式除了和卫星信号有关,还和是否成功建立网络连接有关。当网络繁忙,

无法建立网络连接时,定位需要的时间会比较长。

2.4 GPS Core Software

MGP是Multimode GPS的缩写。Core SW包括一个GPS接收机,一个运行在ARM7

上的task,和四个运行在ARM9上的task。MGP的软件部分由库函数来提供。MGP和LSM之间使用Air-Interface-Independent(AI2)协议进行交互。此外,MGP还控制GPS射频部分和GPS时钟。

MGP主要由测量引擎,定位引擎和AI task组成。

测量引擎包含两个task,测量控制task(MC)和信道控制task(CC)。测量引擎的主要功能包括测量GPS信号、维护时间和频率。

定位引擎包含两个task,导航定位task(Navigational Fix task: NF)和星座数据task(Constellation data task:CD)。定位引擎的主要功能是根据导航数据,计算位置信息。

AI task应用AI2协议控制GPS接收机的运转:接收和发送GPS数据,例如星历表、位置信息、时间和频率等。

以上各任务关系架构如下:

三.GPS 定位NV设置

参考文档:80-V8983-1_B_gpsOne_A-GPS_NV_Items_AMSS-Based_UE.pdf 常用NV设置:

3.1支持的定位模式

ID-01920 Type-U32 Units:

Bit 0 - standalone Bit 1 - UP MS-based Bit 2 - UP MS-assisted Bit 3 - CP MS-based (2G) Bit 4 - CP MS-assisted (2G) Bit 5 - CP UE-based (3G) Bit 6 - CP UE-assisted (3G)

Default value - 1 (standalone)

通常设置为127

注意:此NV项必须进行设置,否则GPS不能正常工作

3.2 GPS开关控制

ID-01924 Type-U8

Range: 0 - unlocked 1 - locked Units - enumeration Default value - 0 (unlocked)

通常设置为0

注意:调用IPOSDETEXT_SetParameters()设置GPS状态后,会对改变NV项

3.3传输模式

ID - 01927 Type - U8 Range: 0 - TCP 1 - HTTP 2 - control plane Units - enumeration Default value - HTTP

注意:此项的默认设置为HTTP,在实际应用中我们通常设置为‘TCP’。在参考

设计M6246AKPRZL220180上,使用的是Generation6。在Generation7以及以后的版本上,取消了此项NV设置。

3.4默认IP地址

ID - 01926 Type - U8[16] Range - full Units - n/a Default value – 0

注意:只有当传输模式设置为TCP/IP时,此项才有效。

3.5默认端口号

ID - 01959 Type - U16 Range - full Units - n/a Default value - 0

注意:只有当传输模式设置为TCP/IP时,此项才有效。

当GPS工作方式为Standalone时,只需要设置定位模式和GPS开关。当GPS工作方式为MS-Based时,需要额外设置传输模式、默认IP地址和默认端口号。 (参考高通sr:00344571)

根据高通sr:00335821,使用IP地址: http:// 207.114.133.116,端口号:59910

或59921。(此服务器只对卡号13910107747有效)

设置IP地址:

Nv_write_item 1926 0xCF 0x72 0x85 0x74 设置端口号:

Nv_write_item 1959 0xEA 0x06 或(Nv_write_item 1959 0xEA 0x11)

四.GPS工作模式及相关配置 4.1 GPS工作模式

1.1 AEEGPS_MODE_ONE_SHOT

此模式为默认模式,仅可进行一次位置测定请求,因此对nFixes和nInterval的设置

会被忽略。此种模式下的定位请求和引擎的定位设置无关,定位引擎会根据设置的optim

决定以何种最优方式定位。

1.2 AEEGPS_MODE_DLOAD_FIRST

此模式适用的应用程序可能需要重复进行多次位置测定请求,从服务器上下载初始数据后,在本地移动设备上计算结果。

此种模式下定位,初始时,辅助定位信息(星历数据)会从服务器上下载,之后,手机会去计算最终的定位结果。此外,用户可以通过参数来控制从定位服务器上下载已有的星历数据,还是让服务器重新获取最新的星历数据,然后再下载到手机上。此时调用接口获取位置信息时,需要设置参数:AEE_GPSINFO_NONE。底层会底层通过pdsm_set_parameters(),设置

PDSM_PA_KEEP_WARM

来进行控制。见

80-V8350-1_E_gpsOne_PD-API.pdf,Page 17。

1.3 AEEGPS_MODE_TRACK_LOCAL

此模式适用于打算执行跟踪,并需要频繁快速的位置/速度/海拔信息的应用程序。在获取位置测定信息时,此模式需向网络发出的请求最少。这种模式会使用从本地服务器上下载的辅助卫星数据,例如星历表,在移动设备上进行位置计算。如果不能正常获取辅助数据或是辅助数据获取不正确,移动设备会自动从本地服务器中直接获取信息。这种模式不支持连续的跟踪,应用程序需要每隔一段时间,自己调用IPOSDET_GetGPSInfo()获取位置信息。

1.4 AEEGPS_MODE_TRACK_NETWORK 尚未对此模式进行测试。

1.5 AEEGPS_MODE_TRACK_OPTIMAL

此种模式下的定位请求和引擎的定位设置无关,定位引擎会根据设置的optim决定以何种最优方式定位。

1.6 AEEGPS_MODE_TRACK_STANDALONE

这种模式不借助于任何定位服务器,由移动设备自发获取位置信息。特别适用于无线移动设备不能使用的情况。在这种模式下,移动设备通过解析GPS信号获取GPS星历数据。这种工作模式和AEEGPS_MODE_TRACK_LOCAL不同,因为AEEGPS_MODE_TRACK_LOCAL模式会通过TCP/IP从定位服务器上获取星历数据。

1.7 AEEGPS_MODE_DEFAUL

默认的操作模式,被设置为AEEGPS_MODE_ONE_SHOT

当上层将GPS工作模式设置为AEEGPS_MODE_TRACK_OPTIMAL或AEEGPS_MODE_ONE_SHOT时,底层会根据optim的设置,将定位模式进行转化。见Pdsm.h中定义的pdsm_pd_session_operation_e_type。

4.2 GPS相关配置

调用接口:int IPOSDET_SetGPSConfig(IPosDet *pIPosDet,AEEGPSConfig *pConfig)

其中:

typedef struct _AEEGPSConfig { AEEGPSMode mode; uint16 nFixes; uint16 nInterval; AEEGPSOpt optim; AEEGPSQos qos;

AEEGPSServer server; } AEEGPSConfig;

nFixes:将使用此接口进行的位置测定请求的大概数量。

此参数的设置会告知定位引擎用户大概的定位请求次数,使其可以根据当前的电池电量和每次定位需要的时间去优化自身性能。每一次定位请求,IPOSDET接口都会把nFixes的值减1,直到nFixes=1,nFixes的值会一直等于1直到使用IPOSDET_SetGPSConfig()接口对其进行新的设置。设置nFixes的值大于1,不会导致IPOSDET_GetGPSInfo()接口被多次调用。当只进行一次定位时,需要将nFixes的值设置为1。设置数值为0时,表示定位次数未知。

在之前的版本上pdsm_get_position()会根据nFixes的值被多次调用。详见文档:gpsOne Application-based Tracking.pdf

nInterval:两次定位之间大致的时间间隔(秒)。

和nFixes相似,此参数的设置会告知定位引擎客户定位请求时间间隔,使引擎可以根据电池电量和每次定位需要的时间去优化自身性能。

用户进行连续定位时,需要多次调用IPOSDET_GetGPSInfo(),但是两次定位的间隔不一定严格等于nInterval。

Optim:此接口所需的优化。

此参数的设置,会告诉定位引擎如何去优化自身的性能。

AEEGPS_OPT_NONE:不使用任何优化方法。

AEEGPS_OPT_SPEED:以最快的方式定位。

移动设备会根据当前的状态,选取最优的方法,在最短的时间内定位。这种优化方式和AEEGPS_MODE_TRACK_OPTIMAL或者 AEEGPS_MODE_ONE_SHOT定位模式共同使用时,定位最快。

AEEGPS_OPT_ACCURACY:以最精确的方式定位。

这种方式需要比较长的时间计算位置信息,同时,还有可能引入网络连接从而获取更多的信息。这种优化方式和

AEEGPS_MODE_TRACK_OPTIMAL

或者

AEEGPS_MODE_ONE_SHOT定位模式共同使用时,定位最精确。

AEEGPS_OPT_PAYLOAD:以和远程服务器最少的数据交换进行定位。

例如,如果移动设备是以standalone方式定位,这种优化方式会使移动设备和定位服务器之间的数据交换最少。

AEEGPS_OPT_DEFAULT:默认的优化设置。

被设置为AEEGPS_OPT_NONE。

Qos:服务质量。

应用程序限定的定位引擎搜索卫星的最长时间。在野外,即使Qos设置值较大,搜索卫星可能也只需要几秒的时间。此值的有效范围介于 0-255 之间,设为 255 时,服务质量最高。然而,服务质量越高,意味着定位需要的时间越长。

将Qos设置为0,意味着不花费时间去寻找卫星。此时,移动设备会依赖服务器提供的信

AEEGPS_MODE_TRACK_LOCAL

AEEGPS_MODE_TRACK_STANDALONE模式下,不能将Qos设置为0。

将Qos设置为0时的定位精度会受到定位服务器的基站星历数据的精确度等因素影响。

Server:服务器配置。

此结构用于指定服务器类型和配置。可能的服务器类型为: AEEGPS_SERVER_DEFAULT AEEGPS_SERVER_IP AEEGPS_SERVER_DBURST

如果服务器类型设置为AEEGPS_SERVER_IP,需要设置IP地址和端口号。如果端口号设置为0,连接时会使用设备默认的端口号。

参考代码: {

stGPSConfig.mode = AEEGPS_MODE_TRACK_STANDALONE; // AEEGPS_MODE_TRACK_LOCAL //AEEGPS_MODE_ONE_SHOT stGPSConfig.nFixes = 1; stGPSConfig.nInterval = 1;

stGPSConfig.optim = AEEGPS_OPT_DEFAULT; stGPSConfig.qos = 255;

IPOSDET_SetGPSConfig(pMe->m_pIPosDet,&stGPSConfig);

CALLBACK_Init(&pMe->m_cbGPSInfo, (PFNNOTIFY)PPlayer_PositionNotify,

AEEGPSConfig stGPSConfig = {0};

pMe); }

IPOSDET_GetGPSInfo(pMe->m_pIPosDet,

(AEEGPS_GETINFO_LOCATION | AEEGPS_GETINFO_VELOCITY | AEEGPS_GETINFO_ALTITUDE), AEEGPS_ACCURACY_LEVEL5, &pMe->m_stGPSInfo, &pMe->m_cbGPSInfo);

五.GPS功能调试

使用QXDM进行调试,主要使用GPS Measurement界面和GPS Clock/Position界面。 参考80-V8352-1_G_gpsOne_Troubleshooting.pdf

5.1 GPS Measurement

Sv列为卫星的编号。

Stat列为卫星的状态,当值等于0x7F时,表明正在使用该卫星进行定位。 Snr列为信噪比。一般为20~30之间。 CNo列为载噪比。一般为20~30之间。

5.2 GPS Clock/Position

定位成功后,position部分会显示定位结果。

本文来源:https://www.bwwdw.com/article/m0pd.html

Top