谢剑锋,胡钢,马胜
(1.河海大学物联网工程学院,常州213022;2.常州市传感网与环境感知重点实验室)
Android移动终端操作系统自2007年发布以来,由于其开放性、应用程序无界限、高级图形显示、简单控制操作等性能已经被越来越多的用户所接受,在Android平台上开发车载导航应用,有利于开发人员理解平台框架,降低设备终端的成本。
系统以ARM11内核的S3C6410为中央处理器,配置7英寸触摸显示屏,外围设备还包括北斗/GPS接收模块、电源模块、数据存储模块、输入/输出模块等。设计思路是先开发Boothloader引导程序,然后下载Android文件系统,将裁剪过的Android操作系统内核成功移植到开发板后,进行北斗/GPS模块驱动的开发,最后在Android平台上通过编写的导航应用程序,实现对北斗/GPS模块接收到的经纬度信息的提取。经过相应的数据处理和解析获得所需的定位信息,并且通过电子地图配合Android系统软件的API接口,将定位的信息在地图上实时、准确地显示。系统整体结构如图1所示。
图1 北斗/GPS导航系统框图
北斗/GPS定位信号的接收采用的是和芯通公司的UM220双系统导航/授时模块,能够支持BD2B1、GPS L1两个频点,其集成度高,功耗低,重量轻,体积小,非常适合北斗系统大规模应用的需求。
GPS导航系统具有在海、陆、空进行全方位实时三维导航与定位能力[2],其定位的基本原理是:应用无线电测距交会的原理,卫星不断地发送自身的星历参数和时间信息,用户在收到该信号之后采用空间距离后方交会的方法,计算出接收机的三维位置,用户就在以该发射信号卫星为圆心,用户到卫星的距离为半径的球面上。原理上若用户同时接收来自3 个卫星的信号,就能确定用户的位置,但由于卫星接收机的时钟差,还需要第4颗卫星对时间进行更正,故GPS定位至少需要4颗以上的卫星。图2是以4颗卫星为例的GPS定位原理图,由图可确定下列方程组:
图2 GPS定位原理图
式(1)中已知的数据有卫星的空间坐标(xi,yi,zi),信号传播速度c,用户到卫星的距离di以及卫星发出信号的时间ti,ti为各卫星时间,t为用户接收时间。通过最小二乘法解以上非线性方程组可以计算出用户的坐标(x,y,z,t),从而实现定位。
北斗导航系统具有快速定位、简短通信和精密授时的三大功能,采用3球交会测星原理进行定位,分别以2颗定位卫星和地心为球心,当用户定位时,需要向两颗卫星发送申请服务的信息,卫星再将用户的申请信息转发到地面控制中心,地面控制中心解调出用户信号,并解算出用户到这两颗卫星的距离。
以这两颗卫星为球心,到用户的距离为半径作两个球面,由于卫星轨道面与赤道面重合,所以用户必定在球面相交的圆上,且相交圆和赤道面垂直。再以地心为球心,到地球表面高度为半径得到一个非均匀的球面,该球面和相交圆在地球南北半球各有一个交点,我国处于北半球,所以北半球的交点即是用户的位置。这样就解算出用户的三维坐标,地面控制中心将解算出的坐标信息通过卫星转发给用户。
北斗导航系统和GPS导航系统虽然是不同的两个系统,但它们之间仍有许多共性,这就为它们可以兼容成双模式导航系统提供了依据。相同点如下:
①两个系统的组成相同,都是由空间部分、地面中心控制系统、用户终端组成的。
②编码方式相同,北斗系统和GPS系统都是采用码分多址编码方式。
③定位原理相同,都是通过测量用户和卫星之间的伪距,解算出定位结果。
④发送的载波信号频率相近,北斗导航系统分别在1 159~1 610 MHz、1 209~1 300 MHz两个频段发送无线电载波信号,GPS则在1 575 MHz和1 227 MHz发送信号[4]。
北斗/GPS双模式定位原理如图3所示。
图3 北斗/GPS双模式定位原理图
UM220终端接收来自北斗和GPS两种频率的卫星信号,既可以北斗或GPS单系统定位,又可以北斗和GPS联合定位。在系统接收不到北斗信号或GPS信号时,采用的是单系统定位。当能接收到两种信号时,采用的是联合定位。
联合定位时将接收到的北斗信号的数据格式转换成GPS数据格式,用北斗导航系统的输出直接校正GPS系统的输出。模块通过相关器、快速傅里叶变换FFT(Fast Fourier Transform)和匹配滤波器混合应用以及算法优化,使系统在各种复杂环境下保持出色的跟踪能力和快速定位TTFF(Time To First Fix)功能;先进的多路径抑制技术,确保了定位导航的精度。
考虑到目前北斗导航系统相对于GPS导航系统而言并未成熟覆盖全球且用户容量的限制等因素,本设计采用联合定位而不采用北斗单独定位,作为车载导航设计的过渡阶段。图4是在PC 机上通过Unicore Control信号测试软件分别测试GPS模块和北斗/GPS模块的定位情况。GPS定位的接收模块采用SIRF StarⅢ芯片组,测试定位的位置是固定的。
图4 GPS定位和联合定位对比
从图4(a)、(b)中用户的历史定位轨迹可以看出GPS定位的历史轨迹没有北斗/GPS联合定位集中,说明GPS单独定位的误差较高;从图(c)、(d)可以看出,北斗/GPS联合定位相对于GPS定位除垂直精度因子(VDOP)、较高外,时间精度因子(HDOP)位置精度因子(PDOP)都有明显减小,而精度因子越小说明定位精度越高,北斗/GPS双模式定位精度相对于GPS定位有明显的改善。
设计是以Android操作系统为基础,在此平台上开发导航应用程序要通过Android SDK 中提供的代码和工具进行,而且还要搭建合适的开发环境。Android应用程序的开发通常使用Google提供的集成了编译器、调试器和模拟器的Android SDK 工具集,由于它是基于JAVA 底层的操作系统,因此需要JAVA 开发环境的支持,一般情况下使用Eclipse和ADT 插件作为集成开发环境,能方便快捷地开发所要求的应用软件。图5是北斗/GPS导航的软件功能结构图。
3.2.1 查询功能的实现
图5 北斗/GPS导航软件功能结构图
查询功能包括周边查询和驾车路线查询。周边查询可以是查询当前位置附近的餐厅、加油站、景点、酒店、超市等信息。系统可以根据用户输入的关键词在周边搜索,并将结果标记在地图上。所用的函数是百度地图提供的MKSearch函数。例如要搜索当前位置附近的餐厅,调用MKSearch.poiSearchInCity(editCity.getText().toString(),editSearchKey.getText().toString())即可。图6是查询结果。
图6 查询周边结果图
路线查询和查询周围相似,所用的函数仍然是MKSearch,系统可以根据用户输入的起点和终点,按时间最短的原则为用户寻找最优路径,并标注在地图上。如起点输入“常州”,终点输入“南京”,调用mSearch.driving-Search可得到常州到南京的时间最短线路。图7是查询的结果。
3.2.2 一键回家功能的实现
所谓一键回家,即只要一按键系统就能自动找到最优回家的路线。在已经设置目的地——家的经纬度基础上,系统可以根据当前用户所处的位置为起点,家的位置为终点,自动为用户寻找最优的回家线路。要实现该功能首先要确定终点家的位置。家的位置可以通过网络查询家的经纬度信息,手动输入并保存到Android自带的SQLite数据库中,如果不知道家的经纬度信息,也可以利用系统自动输入,在家的位置处系统软件可以定位得到家的位置信息,用户可以根据提示保存家的位置,完成终点确定。
图7 查询路线结果图
其次要确定起点,即当前定位的位置,由系统自动完成。根据起始点,完成路线标注。主要代码如下:
测试UM220模块的可用性,采用的是Unicore Control信号测试软件,通过串口将其连接到PC 上。图8是软件显示的效果。
左上是接收的北斗卫星的个数和信号强度,左下是GPS卫星的个数和信号强度,中间是卫星的星座图,显示接收机当前跟踪的所有卫星,右边是轨迹及精度因子。图中显示的当前经度为119.978 684 000,纬度为31.818 590 00,对应的是常州某高校实验室的位置。
将导航应用程序下载安装到OK6410开发板,保证开发板网络连通,程序运行效果略——编者注。通过验证,“查询周围”、“查询路线”、“一键回家”、“地图切换”、“重新定位”等功能基本达到了预定的工作效果,实现了双模式卫星定位的功能。
但也发现很多需要改进的地方,如定位精度没有理想的准确;由于地图数据涵盖范围的局限,使查询功能有一定的限制;路径选择的精度也需要提高。
图8 UM220模块在Unicore Control测试结果
将北斗和GPS结合起来服务于我国的车载导航事业,对于发展我国的国民经济和国家安全有重要的研究意义和实用价值。
编者注:本文为期刊缩略版,全文见本刊网站www.mesnet.com.cn。
[1]龙昌生.北斗_GPS 双模导航终端关键模块的设计与实现[D].重庆:重庆大学软件学院,2011.
[2]刘伟.基于“北斗一号”的车载导航终端系统设计与实现[D].成都:电子科技大学,2010.
[3]陈磊.车载GPS动态导航算法及其应用研究[D].北京:北京交通大学,2012.
[4]陈新保.北斗卫星导航系统民用市场建设的思考[J].中国航天,2010(1):17-19.
[5]郭宏志.Android应用开发详解全[M].北京:电子电子工业出版社,2010.
[6]关东升,赵志荣.Android开发案例驱动教程基[M].北京:机械工业出版社,2011.
[7]徐光侠,封雷,涂演,等.基于Android和Google Maps的生活辅助系统的设计与实现[J].重庆邮电大学学报,2012(2):243-245.
[8]Sun FuPing,Liu Shuai,Zhu XinHui.Research and progress of Beidou satellite navigation system[J].Science China(Earth Sciences),2012(12):2900-2904.
[9]吴想想.基于Android 平台软件开发方法的研究与应用[D].北京:北京邮电大学,2011.
[10]刘莉,战兴群,刘卫,等.北斗卫星导航系统和GPS兼容性评估(英文)[J].测绘学报,2011(S1):12-15.