引言
目前,智能型3C(computer,communication,consumer)合一的类PC嵌入式系统与技术已进入一个崭新的智能化、网络化的发展阶段。GPS车载导航系统作为其中最具代表性的技术得到了空前的发展。人们经济生活的发展,使得对于信息技术的集成化雨来约有要求,集GPS、电子地图GIS技术以及移动通信技术为一体的嵌入式智能导航设备已成为必要,因而研究基于WinCE的嵌入式GPS车载导航系统具有重要的意义。
1 系统简介
1.1 GPS车载导航系统
GPS车载导航系统是安装在车辆上为驾驶者提供导航和引导服务的汽车电子设备。这种系统一般采用GPS与航位推算法(车速传感器+电子陀螺仪)组合方式实现定位,通过触摸显示屏或者遥控器进行相互操作,能够实现实时定位、目的地检索、路线规划、画面和语音引导等功能,帮助驾驶者准确、快捷地到达目的。
1.2 WinCE系统简介
Windows CE是Microsoft Windows公司出品的小型的、基于 ROM的、具有Win32子集API的操作系统。与其他嵌入式操作系统相比较,它具有较强的内存管理、文件管理和GUI功能。车载导航系统中,对于显示地图调度、用户交互界面都有很高的要求。因此,基于Windows CE开发应用程序是非常合适的。
2 导航系统硬件实现
系统硬件分为核心板与底板两部分,主要完成GPS串口数据的接收、点阵LCD触摸屏驱动、SD卡驱动、音频驱动等功能。核心板是实现CPU的最小系统,采用S3C2410ARM9芯片作为处理器,Flash采用64MB的K9F1208UDM—YC80芯片,主存采用32MB SDRAM HY57V561620CT—H芯片;底板用于实现外围功能电路。图1为整个系统的硬件结构框图,其中LCD显示屏与系统板之间采用并口通信,GPS模块与系统板之间通过RS—232串口通信,集成的专用GPS接收模块直接将GPS定位信息通过RS—232串口输出,实现GPS定位。
图1 系统硬件结构图
3 导航系统软件体系设计
系统根据图形化嵌入式产品的开发要求,结合软件开发的速度与效率的实际需要,选用背景超图公司的GIS二次开发平台Esupermap,摆脱了GIS底层一些基本操作的繁琐编程。
用户自定义的路径智能规划及GPS定位相结合的行车导航等整体功能模块。系统设计以图形界面为主导,将各主体功能模块划分为若干子功能,并根据模块划分和系统需求设计模块接口,将各个模块相互关联。系统软件体系结构如图2所示。
其中地图显示模块实现地图引擎,作为系统人机交互的的主要界面,同时为地理信息数据库与基于该数据库的功能性操作提供接口载体;地图数据库管理、路径分析器、文件管理器和导航模块共同组成软件内核。
图2 软件体系结构图
4 主功能模块设计及关键技术实现
4.1 数据查询
地理信息查询模块接收图形用户界面输入信息,在数据库中完成相关信息查询,并将查询结果反馈到用户界面,模块同时完成数据库中地理信息数据的基本管理。查询按查找方法的不同分为按地名查询、按类别查询、按周边设施查询和按经纬度坐标查询。程序根据不同的查询输入,调用Esupermap接口完成数据处理。其中输入经纬度坐标查询时,需要将地理坐标(Pg)和地图坐标(Pm)在经纬坐标系下进行转换。首先将其转换成1/1 000s为单位的值,此时对应的nUnits(坐标单位)为0,则以度为单位的地理坐标值为Pm/(3600×1000×dRadio)。其中dRadio表示坐标比例因子。程序在Esupermap的地图引擎上进行二次开发,以其工作空间(CSeWorkSpace类)为核心,用矢量数据集来组织和管理矢量数据。数据访问通过数据源、数据集、记录集、地图、图层,资源、线型库和符号库这三条主线实现。
4.2 路径规划
路径智能规划模块根据用户需求和地图数据库中的路径信息,在出发点与目的地点之间找出一条最优路径。系统路径规划分为模拟导航规划和实时导航规划。实时导航规划是指用户在车辆行驶过程中偏离预定路线时,系统根据GPS定位的当前位置重新完成到目的地的最优路径规划。系统基于Esupermap的路径分析功能,利用其提供的接口函数丰富了其路径分析能力。算法应用广泛的启发式搜索策略考虑权重,减少搜索空间、控制搜索规模,将多种启发式策略相结合可提高搜索效率,降低空间复杂度。
4.3 多线程语音导航
语音导航模块完成电子地图上车辆行驶动画模拟、行车道路信息提示和语音播报功能。系统导航类CSePathNavigator实现行车过程中的道路信息提示。根据GPS接收模块得到的定位点,对地图窗口进行刷新,完成车辆行驶的动画模拟,并利用 Windows CE提供的语音播放API函数playSound( )实现道路信息的语音播放。由于导航过程是离散的,采用定时器对导航控制,定时器每隔100 ms触发一次导航事件,系统调用一次导航函数完成一次道路信息的刷新,同时在地图窗口中完成车辆当前位置的刷新。图3描述了导航主功能函数的程序流程。
图3 语音导航函数流程图
语音播放效率直接影响到导航性能,为避免语音连续播放产生冲突,系统引入多线程机制。当车辆到达语音播放点时,销毁当前正在播放的语音线程同时开启一条新的线程播放语音信息,程序设计上采用线程管理类CThreadManager实现多线程的管理,包括线程的创建、销毁等,线程管理类对象在系统程序入口处构造。
4.4 双缓冲技术
导航软件界面的位图资源和电子地图显示需要消耗大量计算资源,在硬件资源紧张的嵌入式系统中,图形刷新受CPU主频限制明显。系统采用双缓冲技术(又称离屏技术)提高图形刷新速度,其基本思想是通过在内存中开辟一块与屏幕一样大小的存储区作为缓冲屏幕;同时将下一帧要显示的图像绘制到这个缓冲屏幕上面,在显示时将虚拟屏幕中的数据直接复制到可见视频缓存区里,即用空间换取时间的方法加快图形显示和刷新的速度。在EVC(embedded VC)下的实现方法是创建两个设备对象DC,一个为屏幕DC,另一个为屏幕DC,另一个为兼容的内存DC。先在内存DC上绘图,最后用bitBlt()方法把图形拷贝到屏幕上。
5 结语
本文给出了基于Windows CE的嵌入式车载GPS导航系统的分析、设计及具体实现。系统在城市主要干道上导航效果显着,系统根据GPS模块输出的先前车速信息来估计当前位置,精确度仍有待升级,正尝试用专门的测速模块确定当前位置。随着嵌入式智能平台的发展及交通需求,基于Win CE的GPS导航系统研发的现实意义将受到更广泛的关注。