kaiyun官方注册
您所在的位置: 首页> 嵌入式技术> 设计应用> 基于Windows Mobile的个人移动导航系统
基于Windows Mobile的个人移动导航系统
来源:微型机与应用2013年第2期
丁晓明,刘伟永,李 瑾
(山东科技大学 信息与电气工程学院,山东 青岛266590)
摘要:借鉴现有导航产品优点,结合GPS、GIS以及嵌入式开发技术,开发了个人移动导航系统。导航系统以微软的Windows Mobile 6.5为操作系统,采用ST-92 GPS模块接收GPS数据。软件开发采用Visual Studio 2005开发环境,嵌入Mapx Mobile组件,通过RS232接口接收并处理模块数据,实现了实时定位、路径记录等功能。对地图匹配算法进行了分析,并对系统功能进行了验证。
Abstract:
Key words :

摘 要:借鉴现有导航产品优点,结合GPS、GIS以及嵌入式开发技术,开发了个人移动导航系统。导航系统以微软的Windows Mobile 6.5为操作系统,采用ST-92 GPS模块接收GPS数据。软件开发采用Visual Studio 2005开发环境,嵌入Mapx Mobile组件,通过RS232接口接收并处理模块数据,实现了实时定位、路径记录等功能。对地图匹配算法进行了分析,并对系统功能进行了验证。
关键词:Mapx Mobile;嵌入式;GPS

如今,随着交通工具的普及和交通状况的改善,人们的移动性逐渐增强,对于空间信息的依赖更大。全球定位系统GPS(Global Positioning System)能有效解决此类问题,为出行提供便捷服务[1]。目前车载导航产业蓬勃发展,然而车载GPS系统受到道路限制,不能随时随地提供位置信息。个人移动导航系统基于移动终端(如手机、掌上电脑等)设计,可以弥补车载GPS系统受地形限制的不足,为个人用户提供方便可靠的位置信息,帮助用户在陌生环境中快速地找到目的地,具有体积小、便于携带等优点。
1 系统构成与功能
个人移动地理信息系统GIS(Geographic Information System)是在传统GIS基础上利用空间定位手段结合嵌入式技术,以数字地图为显示背景、与个人手持设备相结合,通过无线通信网络提供移动目标实时位置及周围信息的系统。本文根据大多数用户需求及我国网络通信现状开发个人移动导航系统,系统主要由五部分组成,如图1所示。

系统从GPS模块获取数据,根据NMEA-0183协议对数据进行筛选处理;由地图匹配模块将获取的位置信息与电子地图进行匹配;位置显示模块在完成地图匹配的前提下,将位置信息实时地在地图上显示出来,它是路径记录模块的基础;路径记录模块将行进位置记录下来,将之前和当前位置同时显示出来,并不断更新,从而实现行进轨迹显示功能;将地图的缩放及移动功能设计于辅助功能模块中。
本系统可根据用户需求实现地图缩放、平移、实时定位、路径显示等功能,有效地适用于个人移动定位。
2 开发平台搭建
2.1 硬件平台

本系统采用Goeget公司生产的ST-92系列GPS模块,该模块使用SIFR III芯片组,可以同时追踪20个卫星信号,具有灵敏度高(-159 dBm)、定位坐标精度高(可达5 m(1 Ω))、体积小、支持NMEA-0183协议等特点。GPS数据通过RS232接口传递给搭载有Windows Mobile系统的开发板,进行数据提取利用。系统结构示意图如图2所示。

2.2 软件开发平台
Windows Mobile操作系统是微软专门为手持移动设备推出的“移动版Windows”,它将Windows桌面扩展到个人设备,使用Windows Mobile操作系统的设备主要有手机、PDA等[2]。导航系统采用微软的Windows Mobile 6.5操作系统以及Windows Mobile 6 Professional SDK。开发平台选用Visual Studio 2005,它针对.net开发,并且提供了智能设备模拟器,可真实地模拟物理机器代码,把软件安装在这个模拟器上运行,可使开发更加方便。
2.3 Mapx Mobile组件的嵌入
Mapx Mobile是Mapinfo公司提供的一种基于OLE(Object Linking and Embedding)的嵌入式GIS组件,可以嵌入在Pocket PC、Windows Mobile平台下的应用程序中,运用Mapx Mobile建立的软件可单独在设备上运行,并且可以与Pocket PC的Windows CE操作系统兼容[3]。
对Mapx Mobile组件的嵌入,首先需要在PC机安装Mapx Mbile,在VS2005工具箱选项窗口中,选择COM组件栏,勾选Mapinfo Mapx Mobile V5选项,然后在工具箱中可看到新增的Mapx工具。对地图操作时需要将组件拖到对话框窗口中,然后在VS2005界面中可对地图属性进行操作,选择载入需要的地图。
Mapx Mobile是移动GIS的高性能低成本的解决方案,具有标准用户控制功能,可有效地嵌入到个人移动导航系统中[4]。
3 系统实现过程分析
3.1 定位数据流获取与分析

GPS模块与应用程序间通过RS232接口交互信息,因此需要在VS2005平台上编写对串口的驱动。
m_hComm=CreateFile(Port,GENERIC_READ|GENERIC_WRITE,0,0,OPEN_EXISTING,0,0); //打开串口
dcb.BaudRate=9600; //设置波特率为9 600
dcb.ByteSize=8; //数据长度为8 B
dcb.Parity=0; //无校验位
dcb.StopBits=0; //无停止位
通过进入函数LRESULT CwindowsmobileDlg::OnData-
ArrivedMsg(WPARAM wParam,LPARAM lParam)来处理收到的数据。因为读到的数据不是CString型,所以需要做进一步处理。
unsigned char *data=(unsigned char*)wParam;
m_strDataReceived=CString(data).Left(length);
以下数据是GPS模块接收到的部分数据。
$GPGGA,014717.000,3600.1142,N,12007.3654,E,
1,06,4.7,-4.3,M,4.4,M,,0000*44
$GPGSA,A,3,27,15,26,02,09,29,,,,,,,6.7,4.7,4.8*39
$GPRMC,014717.000,A,3600.1142,N,12007.3654,E,
0.00,20.45,220410,,,A*5F
本系统只需要提取经度、纬度和时间数据,根据NMEA-0183协议,这里筛选接收GPGGA下的数据[5]。
3.2 定位点与路径线的建立
首先创建图层,并将其设置为动态图层,然后创建动态图元,对其进行初始化,将其与mapx插件建立关联。初始化中可设置定位点的大小、形状及颜色。
CMapX LayergpsLayer=m_ctrlMapX;
GetLayers().CreateLayer(_T("GPSLayer"),NULL,1);
//创建动态图层GPSLayer
m_ctrlMapX.GetLayers().SetAnimationLayer(gpsLayer);
//设置图层GPSLayer为动态图层
CMapXFeature mobileFtr;//动态点图元
mobileFtr.CreateDispatch(mobileFtr.GetClsid());//初始化
mobileFtr.Attach(m_ctrlMapX.GetDispatch());
//与m_ctrlMapX建立关联
通过语句mobile.GetPoint().Set(gpsLongitude, gpsLatitude)将当前坐标数据与电子地图进行关联,然后通过mobile.Update()更新到地图上并显示出来。
对于路径线的创建,需要对之前的定位点进行储存,获得定位点集[6]。通过CMapX Feature中的CreateLine函数将储存的点用直线连接起来,可利用CMapXStyle中提供的函数设置线的宽度、颜色等属性。
3.3 地图匹配算法分析
GIS基础数据主要来源于地形图、航片、卫片等。车载及个人导航系统主要数据源是地形图,地形图通过扫描矢量化将地图转换成矢量化数字地图。就扫描矢量化而言,除了原图质量影响数据经度外,在扫描过程中图像预处理、矢量化过程等各个环节对数据质量都有一定程度的影响[7]。为保证定位准确性,在实际应用中需要对地图进行匹配研究。
地图匹配需要确定在给定定位数据和地图信息的基础上获得最可能的路段,以及行人在该路段上最可能的位置。
本文采用最短距离匹配算法[8],该算法根据道路属性预先设置一个阈值,通过计算当前GPS数据与各路段间的距离以及该数据在该路段上最短距离点,将在阈值范围内的各路段匹配距离进行比较,得到一条最短路径。
图3表示基于投影的匹配算法基本原理,图中V点表示行人当前位置,L1和L2表示附近的两条路,V1、V2表示V点在两条路上的投影,投影距离表示为d1、d2。在候选道路中选择距离最短的作为匹配道路,并将在该条道路上的投影点认为是行人的当前位置。该算法可以在很大程度上消除地图匹配中的各种误差产生的影响。

地图匹配算法具体实现过程如图4所示。

3.4 地图缩放及平移
地图缩放及平移包括地图的缩小、放大及平移。实现函数为SetCur2rentTool( )。
m_ctrlMapX.SetCurrentTool(miZoomOutTool);//缩小
m_ctrlMapX.SetCurrentTool(miZoomInTool);//放大
m_ctrlMapX.SetCurrentTool(miPanTool);//平移
m_ctrlMap为Map对象设定了以上工具,分别是缩小、放大和平移工具,点击鼠标即可进行地图浏览。
4 系统验证
在开发板(手机)上安装MapX组件,该组件位于PC机的MapX安装目录下,将开发的软件和对应的地图拷贝到开发板中的maps文件夹中,双击运行即可。拷贝过程使用的是微软的ActiveSync同步工具,它允许PC机与设备之间传输数据文件。
系统验证时采用青岛市区地图,软件运行界面示意图如图5所示。测试中端口号选择为COM1,波特率为9 600 b/s,单击右下角按钮后启动系统。GPS数据通过RS232接口进入开发板中,软件进行处理后将位置坐标与电子地图进行匹配,将该点位置以红色五星符号在地图上显示出来,同时用户可在界面下方看到经度及纬度数据。随着位置的改变,定位点在地图上会随之实时移动,可准确地进行实时定位显示。

经过如上测试,系统可正确地、实时地获取显示位置信息并记录行进轨迹,可满足用户基本导航需求。
本文利用Visual Studio平台,嵌入MapX Mobile地图化组件,设计了一款基于Windows Mobile系统的导航软件,并结合ST-92 GPS模块,开发了一个移动导航定位系统,同时对其具体实现过程进行了阐述。本系统搭载青岛市地图进行测试,通过串口获取GPS数据,完成了数据与电子地图匹配,完成了地图的显示、缩放、平移,实现了定位导航功能。
参考文献
[1] 孙兵.基于AGPS的智能导航系统软件开发与研究[D]. 北京:北京邮电大学,2010.
[2] 凌泽军,魏文娟,孙震强.智能终端的主流平台——Windows Mobile分析[J].移动通信,2010(9):78-82.
[3] MapInfo Corporation.MapInfo MapX Mobile production introduce[S].2003.
[4] 李凯锋,吕志平.基于MapX Mobile开发的个人移动导航系统[J].海洋测绘,2006,26(9):99-103.
[5] 钱恭斌,尹文涛,王文富.基于WM6.0操作系统的智能手机定位监控系统设计[J].电子技术应用,2009,35(12):24-30.
[6] 马红皎,胡永辉,张志武.使用Mapx Mobile开发Pocket PC上导航软件[C].全国时间频率学术交流会,2005.
[7] 曾波,江资斌.GPS车载导航系统的地图匹配算法[J].测绘工程,2004,13(3):65-67.
[8] 吴忻.基于GPS定位和电子地图的最佳路径搜索[D].西安:西安电子科技大学,2006.

此内容为AET网站原创,未经授权禁止转载。
Baidu
map