引言
随着我国经济水平的快速发展,汽车行业也蓬勃发展起来。汽车的增长速度远远超过公路的增长速度,汽车拥有量的急剧增加和城市现代化交通建设的相对滞后导致城市交通情况不断恶化。同时,现代物流对运输车辆和货物安全与准时调运的要求、公交与出租车的运营管理、大型的企事业单位日常车辆管理也都对车辆的监控与导航有迫切的需求。面且随着旅游行业的发展,人们急需要一种可以随时随地知道自己方位和目的地的方便设备。
GPS(全球定位系统)具有全球、全天候工作,定位精度高,功能多,应用广的特点,通过GPS接收机可以实现精确的自主定位,这为实现车辆的定位和导航奠定了基础。伴随ARM处理器、嵌入式操作系统、路径优化控制算法和GPS网络的成熟,车辆定位导航系统有了新的发展,可以在短时间内实现定位和最优路径导航。
1 方案简介
1.1 功能简介
该嵌入式GPS导航系统由GPS系统获得当时所在的位置的经纬度,通过换算和地图匹配在地图上得到当时的实际位置,然后由用户输入目的地,通过最短路径算法计算最短路径并在矢量地图上显示,同时提取GPS提供的速度,时间等信息显示在屏幕上。
1.2 硬件实现
本嵌入式GPS导航系统的硬件核心是意法半导体ARM7系列中的16/32位RISC处理器STR710FZ2T6芯片,该芯片强大的实时处理能力和丰富的外围接口非常适合嵌入式系统的开发,本系统正是基于该芯片的这些特点面设计的。系统框图如图1所示。
图1 硬件框图
系统以STR710FZ2T6微处理器为核心,与2片512KB的SDRAM(IS61LV25616)、一片8MB的NAND Flash和一片2MB NOR FLASH(SST39LF160)组成。外部添加了用于接收GPS信号的GPS模块,用于显示的液晶面板以及键盘输入模块。
2 软件设计
2.1 软件数据设计
导航软件中的数据主要是导航地图的空间数据,主要由与导航需求相关的一些信息组成,包括道路网几何形状、道路等级、道路特征、交规限制、地理政治边界、感兴趣的点、路标和服务设施等。这些数据主要分为两大类:道路网数据和非道路网数据。道路网数据包括基本的道路网的地理数据以及道路上与车辆行驶相关的数据。道路网数据的主要特征是有较强的拓扑关系。非道路网数据主要包括能反映区域的基本地理面貌的地物信息(如河流。湖泊。边界等)以及与出行信息相关的单位信息。整个导航数据的获取和录入可以通过转换通用的地图为矢量图,并且以点代替具体的路面实况。
2.2 软件系统设计
导航软件是以导航数据库为数据基础的。针对导航数据库的操作行为。从功能上将导航软件分为具有导航功能的部分和具有浏览功能的部分。导航功能部分是在动态行进过程中进行导航规划服务的,可分为导航定位、地图匹配、路径规划和路径引导等模块。主要通过导航界面与用户实现交互、浏览功能主要是在静态过程中对导航的地理信息提供浏览查询服务的通过浏览界面与用户实现交互。软件系统结构如图2所示。
图2.软件系统框图
2.2.1 导航功能模块设计
该方面的设计中主要包括以下4个模块的设计:
(1)导航定位模块实时地从通信端口读取数据。然后进行分析处理,得到可以进行地图匹配的经、纬度数据并将其传给地图匹配模块。
(2)地图匹配模块根据导航定位模块输入的经纬度在导航数据库中进行匹配。
(3)路径规划模块主要是根据用户指定的出发地和目的地在导航数据库中的道路网络中规划出一条最佳路径。
(4)导航引导模块将地图匹配的结果和规划好的路径结合导航地图数据库的数据以地图的方式显示出来。这样就可以直观、无误地引导用户行进。
2.2.2 浏览功能模块设计
该方面的设计中主要包括以下2个模块的设计:
(1)地图浏览模块主要是在浏览界面中实现对地图的缩放、平移等基本浏览操作。
(2)地图查询模块主要是根据用户的要求在导航地图数据库中进行查询操作并通过浏览界面显示出来。
2.3 嵌入式软件设计
该嵌入式系统采用uC/OSII操作系统,由于MCU的处理功能有限,所以在具体的软件实现过程中采用多线程技术,如图3所示。
图3.线程图
主控线程主要实现界面功能、导航功能中的地图匹配和导航引导模块、浏览功能中的地图浏览模块以及这些模块间的消息派送、接收和处理,同时协调各个工作线程异步运行。
导航定位线程主要完成导航定位模块中的接收当前位置数据(经、纬度)的功能。在导航过程中运行线程,线程处理函数把接收到的经、纬度数据实时通过消息发到主线程,由主线程调用地图匹配模块作处理。
路径规划线程主要完成在道路网中求解最佳路径的任务。在用户要求提供最佳路径时根据用户的出发地和目的地求出一条最佳路径。在最佳路径求解算法中采用A*算法。
2.3.1 软件的导航功能由主控线程控制实现
其基本实现流程如下(可见图4)
图4.导航功能流程图
2.3.2 GPS数据提取
GPS板只要处于工作状态就会源源不断地把接收并计算出的GPS导航定位信息通过串口传送到嵌入式系统中。由于从串口接收的数据帧是一长串ASCII码字节流,在没有经过分类提取之前是无法加以利用的。因此,必须通过程序将各个字段的信息从接收到的字节流中提取出来,将其转化成有实际意义的,可供高层决策使用的定位信息数据。对GPS信息进行提取必须首先明确其帧结构,数据帧主要由帧头、帧尾和帧内数据组成。对于不同的数据帧,其帧头是不同的,主要有“$GPGGA”、 “$GPGSA”、“$GPGSV”以及“$GPRMC"等。这些帧头标识了后续帧内数据的组成和结构特点。各帧均以回车符<CR>和换行符<LF>作为帧尾,标识一帧的结束。
对数据帧处理,是先对帧头进行判断,然后只对感兴趣的帧进行数据的提取处理。由于帧内各数据段被逗号分割,因此在处理接收数据时一般是首先通过搜寻ASCII码“$”来判断是否是帧头,接着对帧头的类别进行识别,然后再根据识别出来的帧类型以及逗号‘,’个数来确定当前正在读取的是哪个定位导航参数,并作出相应的提取和存储。流程图如图5所示。
图5.GPS数据接收与提取流程图
2.3.3 显示与查询
通过GPS和人工输入接收到的数据,经过MCU的处理,在地图上用醒目的颜色显示出来流程图如下:
图6.显示流程图
3 结论
在导航定位系统中GPS系统是口前世界上应用得最为广泛的,其功能作用已广为人所接受,加之GPS的接收模块的种类也很多,选择余地很大,可根据系统要求的精度、体积、定时标准加以选择。而且,GPS是一个全天候的系统,极少有工作盲区,除非在有着较为严重的空间遮挡的情况下,一般GPS天线都可以较为顺利的接收到GPS信号。同时,国内外相关行业的产品己大量运用该技术,因此,将GPS定位系统应用于本导航系统不仅具有很高的可行性,还具有相当的可靠性。