我国GPS车辆导航系统受国内汽车工业发展现状、电子地图配套限制等诸多综合因素制约,仍处于初始发展阶段。在功能上,大部分GPS车辆导航系统还只有车辆跟踪、数字地图查询、路径简单规划等基本功能。本文对嵌入式车载导航信息系统体系结构进行研究,给出一个完整系统结构。并重点讨论导航电子地图的实现方法。
1 嵌入式车载导航信息系统结构
车载导航信息系统借助于定位、地理信息处理和通信等技术,通过处理车辆状态数据。配合地理信息系统和导航数据库处理信息,并与服务中心交流信息交流,可提供定位、电子地图、路径规划和引导、信息查询、历史行驶状态详细记录、通信等功能。图1为该导航信息系统功能各模块关系。
图1中,定位系统包括定位模块和地图匹配模块,可得到系统的实时姿态数据,如经度、纬度、高度、速度、运动方向等;数字地图数据库包含预先定义好存储格式的数字地图信息,提供计算机处理与地图有关信息,如辨别场所、公路等级、交通规则和旅行信息等:路径规划和路径引导模块功能是根据地图数据库模块所提供的地图数据,加上从无线通讯网络收到的实时交通信息,按照某个指标(如最小时间或者最小旅行代价)帮助用户在行驶前或运行中规划路线;人机接口允许用户与定位和导航计算机及装置进行人机交互;无线通讯模块进一步改进系统性能并增加系统功能。
传统的导航信息系统主要有2种实现方法:基于单片机的简易导航系统和基于移动PC的导航系统。前者结构简单,价格便宜,但功能有限,仅仅实现定位、简易位置指示以及简单通讯功能;而后者以PC操作系统为软件平台,应用专业软件包或自主开发软件包,配以相应外围模块(如定位、通讯等)能够实现导航所有复杂功能,但价格高,且难以适应车载环境。因此,采用嵌入式系统作为现代车载导航系统的运行平台是必然选择。
选用PCM-5820作为嵌入式车载信息系统的硬件平台,Windows CE作为嵌入式系统的操作系统平台。PCM-5820完全满足系统在存储容量、处理速度、通信接口、功耗、体积等方面的要求。Windows CE具有方便定制、移植简单、实时性强、可靠性高、体积小等优点,且具有与PC操作系统一致界面风格和操作方式,实现丰富的API,便于开发。基于以上平台,图2给出嵌入式车载导航系统的软件结构。
该系统的定位模块和无线通讯模块需借助相应装置,导航信息系统直接收发这些装置数据,处理后为系统所用;路径规划和路线引导模块功能的实现算法研究已相当深入,这里不再赘述。而对于导航电子地图模块,为便于功能实现和后期扩展,按其功能分为矢量图形系统和导航数据库系统,前者是按特定要求显示矢量图形,后者是存储和管理图形元素的几何数据(如坐标等)、属性数据(如道路等级等)以及其他相关数据(如交通信息等)。
2 导航矢量图形系统
2.1 基于EVC的矢量图形系统
分析地图发现,地图矢量化后矢量图形的元素类型有:点(Point)、线(Line)、连续折线(Polyline)、区域(Region)、弧线(Arc)、文本(Text)、矩形(Rectangle)、圆角矩形(Rounded Rectangle)、椭圆(Ellipse)、圆(Circle)、符号(Symbol)等11个类型。导航电子地图中,符号只用于显示,而且类型有限,该系统采用栅格方式在矢量图形上透明显示。其余10种图形元素并非独立分类,比如,元素点可用其他若干个元素组合表达:矩形元素(在嵌入式C++中有直接函数支持)实质是一个特殊区域。
考虑以上每个对象类都有如线型、颜色等的公共数据,可抽象一个基类。本文共建立了15对象类及结构:基类Class CDraw、线类Class Cline:public CDraw、多线类Class CPline:public CDraw、区域类Class CArea:public CDraw、椭圆弧类Class CEarc:public CDraw、圆类伪代码描述Class CCirele:public CDraw、矩形类Class Crectangle:public CDraw、圆角矩形类Class CroundedRectangle:public CDraw、椭圆类Class CEllipse:public CDraw、文本类Class CText:public CDraw、符号类Class CSvmbol:public CDraw、绘制矢量图形参数类Class CgraphPara、图层属性结构typedef struct、当前画面属性结构tvoedef struct、导航目标属性结构typedef stmct
车载导航电子地图一般采用小液晶显示屏显示。为了实现导航,显示的画面内容应尽可能简单明了,所以矢量图形将数据分层组织,在图形元素的基类中设有表示元素所处图层的信息。除了将元素分类为不同的显示图层,简化显示内容,基类还可设置该元素是否显示标志位,这样可提高显示速度,节省资源。例如。在同一图层元素,如果有些元素不在当前显示窗口,可以不进行与显示有关的后台操作(坐标变换等)。DPtoVP和VPtoDP方法是实际坐标(地理坐标)和图形坐标相转换。通过矢量化得到的图形元素的位置数据一般是某种坐标系下的坐标值,而本系统用户可见的显示坐标范围为从(0,0)至(640,480),所以需进行坐标变换。每个图形元素都需Draw(绘制)方法,但不同元素的绘制方法各不相同,为了方便Draw方法使用,在基类中将Draw定义为纯虚函数,在子类中重载时再具体赋以不同绘制内容。
2.2 矢量图形系统优化
嵌入式车载导航系统硬件平台一般采用低功耗设计,运算能力有限。但导航电子地图显示画面往往含有大量图形元素,图形显示一次需花费大量时间。如果采用每次全部绘制所有电子地图内容并直接输出到画面,则会导致画面刷新慢和重绘闪烁明显。因此需优化矢量图形的绘制方法。
2.2.1 提高图形的显示速度
一般绘图方法是绘制所有图形元素,而这样严重影响绘图速度。为了加快绘图速度,在显示一个图形元素前,先判断该图形元素是否在当前视图屏幕中,如果不在,则无需绘制,从而节省绘制时间州。而判断一个图形元素是否在当前视图屏幕.需计算判断图形元素与当前视图屏幕矩形是否相交,但此方法需大量计算,影响显示速度。采用的判断图形元素是否需要绘制的方法应允许不太严密,但要计算简单。在每次重绘图形元素前,首先判断元素是否显示,并只绘制所需部分。这样就大大加快绘图速度,并能满足导航电子地图系统显示要求。
2.2.2 解决画面闪烁问题
窗口图形绘制包括:上次绘制、本次擦除、本次重绘。其中本次擦除操作是必须的。如果重绘时未清除原来绘制图形,将导致新图形和原图形相叠加。而在新图形绘制出前,在极短时间内屏幕显示一个空的矩形区域,图形重绘完成后,窗口显示区才开始有内容显示。所以擦除屏幕会出现闪烁,这与图形复杂程度无关。采用双缓存机制解决重绘闪烁。双缓存就是在内存中新开辟一个缓冲区,原来的显示缓冲区作为前台缓冲区.新开辟的缓冲区作为后台缓冲区。如图3所示,绘图时先把输出内容写入后台缓冲区,绘图完成后再把屏幕的当前显示缓冲区切换到这个包含新内容的缓冲区。一旦把屏幕显示缓冲指向后台缓冲区,下一帧的输出内容就可写入原缓冲区,再通过屏幕显示。因为是非常规整的内存拷贝,所以前后台的缓冲区切换速度非常快,几乎看不到图形的擦除过程。因此使用双缓冲区取代单缓冲区可成功隐藏绘图过程.避免闪烁。
3 导航数据库管理系统设计
所谓数据库即格式化(结构化)的文件,用户完全可自行设计所需格式文件,并提供操作函数。这里使用.dbf文件格式。因为该格式被众多数据库管理系统接受,处理方便。这样实现的数据管理系统是一种平面文件数据库。这种数据库系统实现简单经济,开发周期短,但速度较慢。实践表明,车载导航系统采用这种方法完全可以满足要求。
本文使用16进制阅读工具hex32.exe分析dbf文件结构。经分析dbf文件具有以下特征:文件由文件结构说明区和文件数据区构成;文件的结束标志为lAH。文件数据区存放记录(类似表格的一行),每条记录是等长的;每条记录以20H开始,按字段顺序存放,没有字段分隔符,也没有记录终止符;若删除该记录,则记录的第1个字节标记为2AH。文件结构说明区包括数据库参数区和记录结构区。文件的前32个字节为数据库参数区。记录结构区包括各个字段参数,其中每个字段占32个字节。本系统基本表的组织形式与dhf文件组织形式相同。
数据库管理系统实现的主要函数与普通关系数据库接口类似,选择使用必要的函数可以实现车载导航所需的基本操作。实现通用数据库所支持的全部操作,系统具备较丰富的操作功能。用户还可开发实现特定功能的其他操作,作为系统扩展。
4 结束语
针对嵌入式车载导航信息系统体系结构进行研究,并重点讨论导航电子地图的实现。利用GIS组件实现导航电子地图和导航数据库的传统方发法,以EVC(嵌入式VC)为开发工具,设计了电子地图矢量图形系统,并自主设计能满足车载导航需要的基于文件系统的导航数据库管理系统。实践表明,本文建立的导航电子地图系统具有较强的灵活性和可扩展性,能方便移植于不同的软硬件平台,运行可靠,适合嵌入式系统应用,有一定的应用和推广价值。