GPS定位信息采集和处理的软件实现
GPS定位信息采集和处理的软件实现
⽂章来源:本站原创作者:佚名
--------------------------------------------------------------------------------
该⽂章讲述了GPS定位信息采集和处理的软件实现.
GPS可提供连续、⾼精度、实时的时间基准、三维位置、三维速度、整周模糊度等数据,具有性能好、精度⾼的特点,因⽽⼴泛应⽤于GPS载波相位测姿、精确制导、SINS/GPS组合导航、嵌⼊式车辆导航监控等军事与民⽤领域。⽽嵌⼊式系统以其低功耗、⼩体积、⾼稳定性和便携等优势,在GPS的应⽤中占据重要的位置。本⽂研究基于arm920T内核的嵌⼊式微处理器S3C2440和WindowsCE 5.0(简称WindowsCE)的某型军车GPS定位信息的采集与处理。
1 系统硬/软件平台概述
车辆GPS定位信息采集系统的硬件平台结构如图l所⽰。
该平台可以分为3⼤模块:
1)微系统核⼼模块由基于arm920T的32位嵌⼊式微处理器S3C2440、SDRAM和Nand Flash构成和总线接⼝构成。2⽚32 MB 的HY57V561620构成64 MB的SDRAM存储器,⽤于运⾏系统主程序。存储容量为64 M×8 bit的Nand FlashK9F1208UOM,因其具有掉点保护功能,⽤于存储操作系统内核、Bootloader的启动代码和⽤户程序。
2)GPS原始数据接收模块由⼀台遵循NMEA-0183协议标准的GPS接收机和PS天线组成。通过外接GPS接收机,将接收到的GPS原始信息,送⼊到嵌⼊式微处理器进⾏数据解析,最终得出战车所在位置的位置、速度和海拔等信息。
3)外设控制模块包括LCD+触摸屏、USB主/从⼝、电源、JTAG调试接⼝、复位电路。选⽤东华的⾃带4线模拟电阻式触摸屏和硬件驱动的3.5#TFT型LCD,⽤于⼈机交互以及现实解析后的GPS信息。USB主⼝⽤于扩展U盘,⽤于数据存储,从⼝⽤于下载WinCE 内核⽂件以及与软件开发主机进⾏数据交互,JTAG调试接⼝⽤于硬件调试以及烧载Bootloader。
软件平台为微软公司的嵌⼊式操作系统WindowsCE,它界⾯友好,⽀持嵌套中断、更好的线程响应、更多的优先级别;⽀持串⼝和⽹络通信;具有丰富的API函数,具有强⼤的开发⼯具;多硬件平台⽀持,⽀持arm、MIPS等处理器。经过Platform Builder定制移植的WindowsCE操作系统如图2所⽰。
2 定位信息数据格式
GPS的输出数据遵循NMEA-0183协议标准,即美海军的电⼦设备标准。根据NMEA-0183协议,获取GPS定位信息,必须将串⾏⼝的波特率设置为4800b/s,数据位设置为8 bit,停⽌位设置为1 bit,校验为设置为⽆。该协议定义了GPS接收机输出的标准信息,最常⽤、兼容性最⼴的语句格式包括:$GPRMC、$GPGGA、$GPGSV、$GPGSA、$GPGLL 等。应⽤到的GPS数据格式包括$GPRMC、$GPGGA、$GPGSV三种。其中,⽤$GPRMC 语句获取时间、经纬度、速度、年⽉⽇信息,⽤$GPGSV语句获取海拔⾼度信息,⽤$GPGSV 语句获取可见卫星数信息及卫星的⽅位⾓和仰⾓信息,⽤以获取卫星的视图。各语句的数据段的含义,参考NMEA-0183协议标准。
3 GPS定位信息采集和处理的软件实现
本系统的软件开发在可视化开发⼯具Embedded VisualC++(简称EVC)中,采⽤MFC编程技术实现。
3.1 GPS数据处理状态转换
GPS与arm之间⽤RS232串⼝⽅式进⾏通信,串⼝对象负责接收数据,并把接收到的数据放置到串⼝缓冲区。GPS对象按照协议结构负责处理串⼝对象接收到的数据。图3为GPS数据处理之间的状态转换⽰意图。GPS数据处理状态共包括4个状态:开始状态、数据帧头状态、GPS数据正⽂状态和校验状态。
开始状态是⼀个数据帧的起始状态,它处理和判断数据帧的起始字符$。若起始符号不是其中的$,则⼀
直停留在开始状态,直到$到来位置,数据帧头状态⽤于判断数据帧的格式是否与我们⽬前需要的⽬标数据帧相匹配。如果相匹配,那么将退转到下⼀个状态:GPS 数据正⽂状态,开始进⾏数据处理。如果不匹配,则转移到开始状态。
数据处理中⽤到了缓冲区的概念,它⼀边累积计算接收的数据的异或和,⼀边把相应的数据域送⼊缓冲区。这样既降低了数据提取校验的复杂度,也提⾼了数据处理的延续性和正确性。当GPS数据正⽂状态完成,进⼊“*”字符的时候,将进⼊数据校验状态,它⽤于判断数据接收和处理的有效与否。若校验成功,则接收有效,收到CR,LF字符后⼜重新跳转到开始状态。若校验失败,则放弃处理的数据,直接跳转⾄开始状态。
本⽂来⾃: ⾼校⾃动化⽹(www.doczj/doc/ac9598362.html
) 详细出处参考(转载请保留本链接):www.doczj/doc/ac9598362.html
/html/arm/11640.html
3.2 完整GPS数据帧的截取
了解了GPS数据处理的四个状态之间的相互转换,下⾯论述⼀个完整的GPS数据帧的提取和处理,它是获取车辆GPS定位数据的关键。⼀个完整的GPS数据帧的提取流程如图4所⽰。
图4中,m_strRecDisp为⼀个CString变量,⽤于表⽰接收数据的字符串,该程序流程中,⽤到两个最重要的函数即:字符(串)查函数和字符串截取函数。
1)字符(串)查函数该函数CString∷Find()⽤于从⼀个已有的字符串当中查与⽬标字符(串)相匹配的⾸次出现的⼀个单字符或⼀个⼦字符串。⼀个重要的函数原型为:int Find(TCHAR ch,int nStart)const:其中,ch为要查的⽬标字符,nStart为开始查位置。
2)字符串截取函数该函数CString∷Mid()⽤于截取⼀个字符,也可从⼀个具体位置开始截取⼀个⼦字符串,返回值即为字符或字符串常量。函数原型为:Mid(int nFirst,intnCount)const;其中nFirst为字符串开始截取的位置,nCount为截取字符数⽬。3.3 GPS数据帧的处理
截取出⼀个完整的数据帧后,将数据帧赋值给CString变量data,data再将其字符内容渊源不断的送给缓冲pBuffer,解压缩数据帧后,进⼊到如图5所⽰的GPS数据帧处理流程。在处理GPS时间数据时,因为北京位于东⼋区,UTC时间与北京时间相差8 h,得到UTC 时间后,如果要得到标准的北京时间,应在此时间的基础上,加上8 h。
3.4 ⼆维卫星视图的获取
字符串截取20位卫星视图的获取⾸先要⽤到站⼼切平⾯坐标系。坐标系如图6所⽰,站⼼切平⾯以P 点的法线为Z轴且向上为正,X轴垂直于Z 轴并指向北极.Y轴垂直于Z轴并向东为正。
显然,若卫星P与观测点之间的距离为r,E为任意可见卫星P的仰⾓,B为卫星的⽅位⾓,则P的三维坐标为(X,Y,Z)满⾜:
因为绘制的是⼆维图形,故只能将半球坐标系压缩到观测者所在的平⾯内(称这个⾯为基础⾯),图上所表⽰出的卫星的位置实际为卫星在该平⾯的投影点,该坐标系的参数有2个,⼀个是表达卫星的投影点和观测者的⽅位关系的⽅位⾓;另⼀个是表达卫星真实所在位置以基础⾯为准与观测者所构成的仰⾓关系的仰⾓。有了这2个参数就能在该坐标系中唯⼀确定⼀个具有物理意义的点。本系统设计中,设计简单的坐标系,它有2个同⼼圆和4条直线组成。绘制出卫星视图之前进⾏的简单的坐标变换算法思想为:将卫星实际的⽅位⾓、仰
⾓⽴体坐标转换为平⾯内的横纵(PX、PY)坐标,具体表⽰如式(2)所⽰。其中,(POX,POY)分别为两同⼼圆原点(看作是观测点)在LCD上的像素坐标,⽽T为对话框窗体客户区长度的1/4
3.5 串⼝接收GPS数据帧
完成GPS定位信息的采集,需要实现的串⼝主要的API函数包括:
1)打开串⼝函数。原型为Open(LPT OpenPort(LPCTSTRPort,int BaudRate,int DataBits,int StopBits,int Parity)。其中,Port代表串⼝名,如COMl等,BaudRate为波特率,DataBits 为数据位;StopBits为停⽌位,Parity为奇偶校验。
2)关闭串⼝函数。该函数在程序操作串⼝发⽣错误时使⽤,⽤于关闭该串⼝。实现的主要⽅法是:先判断串⼝操作句柄hComm的值是否为INV ALID_HANDLE_V ALUE,如果是,则调⽤SetCommMask(),将上述代码段中的EV_RXCHAR改为0,然后清除缓冲区,再利⽤CloseHandle函数关闭串⾏⼝操作句柄。
3)添加打开串⼝单击事件代码,通过创建⼀个串⼝接收线程和显⽰线程来实现。
4)串⼝接收线程CommRecvTread()与回调函数OnCommRecv()。串⼝接收线程为⼀个⽆限循环,它不断查询串⼝接收线程退出事件m_Exit-ThreadEvent。如果退出事件有效,则该循环结束退出。如果调⽤读串⼝函数查询得知接收到数据,则调⽤串⼝接收成功回调函数0nCommRecv()。
4 实验数据及分析
设置好串⼝参数后,打开串⼝COMl,既可获取实验数据。图7为在某型军车上⼀次实测的数据。实测数据界⾯拍摄的时间为2009年11⽉10⽇晚上9点45分,地点为某训练场。数据在静⽌的状态下测得。该定位显⽰的数据包括“原始数据”和解析后“经纬度、时间、海拔”等信息。通过分析图7(a)界⾯的数据发现,$GPGSV语句有两条,⽽在“星数”对应的Edit框中显⽰的定位所⽤卫星数为8,由于每⼀条GPGSV最多能显⽰4颗卫星的信息,故$GPGSV语句为两条。这说明星数与$GPGSV语句数是吻合的。⽽获取有效的GPS定位信息,⾄少需要4颗定位卫星。这也说明此次数据是有效的定位数据。
该界⾯显⽰的经纬度信息分别为N:38°3.6788’,E:114°29.1765’;其中,N代表北纬,E代表东经。⽽⽤GoolgeEarth 软件查阅数据可知,⽯家庄军械学院南门的精确经度/纬度信息为:北纬38°3.1650’,东经114°29.0046’,军械学院西门的精确经度/纬度信息为:北纬38°3.394O’,东经114°28.5432’。通过与⼆者的经纬度信息⽐对发现,界⾯实时显⽰的精
度和纬度信息⾮常精确。通过实时⽐对标准的北京时间,说明时间和⽇期信息显⽰也完全正确。
速度信息在静⽌情况下测得,故理想的速度为0 k/s。⽽实际测得数据分别为0.060 00
k/s,前⽂已论述,1 k/s换算成标准的速度信息约0.514 444 m/s,故测得的速度误差分别约为O.030 867 m/s。可以看出,测量的速度误差相对⽽⾔是很⼩的。
界⾯显⽰的海拔信息为:68.800 00 m。⽽通过⽯家庄市规划局提供的资料可知:⽯家庄市区⼆环路内地势西北⾼,海拔⾼度为81.5 m,东南低,海拔⾼度为64.3 m。测得的海拔⾼度还是存在微⼩的误差。这可能跟接收的GPS信号的漂移有关。从图7(b)部分的卫星视图可以看出,卫星与观测点的⽅位关系能清晰的表⽰,⽽且卫星的编号也能实时显⽰,从上到下依次分别为:23、17、3、4、19、20、32、11。
5 结论
GPS定位为单点定位,⽤⼀台接收机观测卫星,独⽴定出观测点在WGS-84(地⼼坐标)中的绝对位置。系统以ARM9为嵌⼊式微处理器,以WindowsCE为嵌⼊式操作系统,通过串⾏⼝实现GPS接收机与arm之间的通信,构建了某型军车的GPS定位信息采集系统。实验表明:该系统能实时显⽰精度较⾼、持久有效的GPS定位数据,具有重要的实⽤价值和参考意义。
本⽂来⾃: ⾼校⾃动化⽹(www.doczj/doc/ac9598362.html
) 详细出处参考(转载请保留本链接):www.doczj/doc/ac9598362.html
/html/arm/11640_3.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。