嵌入式车载导航系统应用软件的设计与实现❋

2014-12-31 12:08李庭贵
机械工程与自动化 2014年2期
关键词:宿主机功能模块导航系统

李庭贵

(1.泸州职业技术学院,四川 泸州 646005;2.四川省泸州市工程机械智能优化设计重点实验室,四川 泸州 646005)

0 引言

车 载 导 航 系 统[1-3](Vehicle and Navigation System,简称VNS)通过将定位技术、地理信息系统、通讯技术以及嵌入式计算机技术结合在一起,为汽车用户提供导航、地理信息及其他服务。所谓车载导航[4],就 是 在 应 用GIS(Geographic Information System,地理信息系统)技术构造的路网数字化地图的基础上,运用GPS[5](Global Position System,全球定位系统)、DR(Dead Reckoning,推算定位)等定位技术进行车辆定位,确定最优行驶路线,为出行者提供动态的或实时的最优出行路线信息,并在出行过程中对驾驶员适时地做出路线指引。本文主要讨论嵌入式车载导航系统应用软件的设计和具体实现[6-8]。

1 嵌入式导航应用软件的开发流程

相对于Windows环境下的应用程序开发,嵌入式系统软件开发有着很多的不同。在嵌入式开发过程中有宿主机和目标机的角色之分:宿主机是执行编译、链接、定址过程的计算机;目标机是指运行嵌入式软件的硬件平台。把应用程序转换成可以在目标机SB-810C上运行的二进制代码这一过程包含4个步骤:编译、链接与定址、移植、调试,如图1所示。

1.1 编译

编译过程由Embedded Visual C++交叉编译器实现,在PC机上用Embedded Visual C++4.0编辑好应用程序后,进行交叉编译,在编译中进行如下设置:

设备类型:STANDARDSDK(利用Platform Builder创建的SDK,它为平台上其他应用程序的开发提供支持)。

CPU类型:Win32(WCE X86)Debug。

运行环境:STANDARDSDK Emulator。

图1 嵌入式导航应用软件的开发流程

1.2 链接和定址

编译过程产生的所有目标文件被链接成一个目标文件,称为链接过程。定址过程会将物理存储器地址指定给目标文件的每个相对偏移处,该过程生成的文件就是可以在嵌入式平台SB-810C上执行的二进制文件。

1.3 移植

由于在Windows CE系统下运行的程序不仅与设备类型有关,还与具体的CPU类型有关,不同的CPU类型,需要不同的编译代码,因此在编码和调试过程中,应注意选择对应的设备类型、CPU类型和运行环境。经过交叉编译后,将生成的可执行文件、执行程序所依赖的库函数SeRSFC50.lib以及地图数据通过串行口或者以太网口下载到目标板SB-810C上,即可调试运行。

1.4 调试

嵌入式开发过程中另一个重要步骤是调试目标机上的应用程序。嵌入式调试采用交叉调试器,一般采用宿主机-目标机的调试方式,它们之间由串行口线或以太网或JTAG口或BDM(Background Debug Mode,背景调试模式)线相连。交叉调试有任务级、源码级和汇编级的调试。

调试时需将宿主机PC上的应用程序和操作系统内核NK.bin下载到目标机SB-810C的RAM中或DOC中。目标监控器是调试器对目标机上运行的应用程序进行控制的代理(Debugger Agent),它事先被固化在目标机的Flash、ROM中,当目标机上电后自动启动,并等待宿主机方调试器发来的命令,配合调试器完成应用程序的下载、运行和基本的调试功能,将调试信息返回给宿主机。

2 导航应用软件功能模块设计

根据系统需求分析,运用“软件工程”的思想,将车载导航应用软件划分为几个基本功能模块,如图2所示。

图2 车载导航系统软件功能模块结构图

3 导航应用软件的具体实现

在课题中,利用Embedded Visual C++和eSuperMap软件开发工具完成了电子地图的操作(包括地图放大、缩小、漫游、图层控制等基本功能)以及路径优化、数据查询、车辆定位显示等多种功能。开发工程具体步骤如下:

(1)启动Embedded Visual C++,创建一个新工程MyeSuperMap。

(2)配置开发环境:① 设置头文件搜索路径;②设置库文件搜索路径;③ 设置连接MFC库方式;④在StdAfx.h中包含eSuperMap 5.0类库头文件。

(3)添加工作空间、地图窗口实例:① 在“CMyeSuperMapApp.h”中 定 义 变 量; ② 在“CMyeSuperMapView”中定义成员变量。

(4)设置菜单项并生成消息响应函数。

(5)实现消息映射函数。

(6)交叉编译、链接、调试程序,生成可执行程序。

(7)下载程序所依赖的库和数据到目标设备中,运行程序。

3.1 图形显示功能模块

图形显示功能模块不但提供了地图放大、缩小、漫游以及查看全图、鸟瞰图等图形显示的基本功能,而且还可以任意角度地旋转地图,以不同角度查看地图,同时可以查看前视图和后视图。打开并操作地图的过程如图3所示。

图3 打开并操作电子地图的过程

3.2 空间分析功能模块

空间分析是管理和应用数据的一个重要组成部分,通过距离和面积量算,可方便了解点间的距离、路程的长短和区域的面积大小。空间分析模块还实现了最短路径分析,只需在地图上点击选择起点和终点,系统会自动突出显示这两点间的最短路径。专题图是分析同类对象最有效的途径,系统通过多种专题图制作,以可视化、直观的方式表现分析结果。

3.2.1 计算长度和面积

eSuperMap内部的长度和面积也是以内部单位来存储的,与实际相比存在一个转换关系。

在非经纬度坐标系中,坐标单位是以0.1mm来存储的,计算的结果当然也是以0.1mm(长度,如圆的周长)或者0.1mm*0.1mm(面积,如圆的面积)来存储,故实际的长度应该是L实=L图/(nUnits*dRadio),对于面积相应地也变为:S实=S图/(nUnits*dRadio)2。

对于经纬度坐标系而言,坐标单位是以1/1 000s来存储的,但是计算的长度和面积单位不是秒或秒*秒,在CSePJSysInfo中有一个变量nDistUnits表示坐标系统采用的距离单位。故实际的长度应该是L实=L图/(nDistUnits*dRadio),对于面积相应地也变为:S实=S图/(nDistUnits*dRadio)2。

3.2.2 路径分析

在车载导航系统中,推荐最优路径是不可缺少的关键功能,这里给出了几种最优路径推荐方案(如出行距离最短路径、出行时间最短路径、出行费用最省路径、综合费用最低路径以及基于实时交通状况的动态时间最短路径)和它们的实现结果。

路径分析是对网络数据进行分析,包括进行最短路径分析,以及扩展的网络分析如最短时间分析等。eSuperMap路径分析功能主要采用CSePathAnalyse对象,调用CSePathAnalyse的Analyse方法,根据起始节点数组(arrNodeIDs),生成一个弧段数组(nArcIDs),并把这个弧段数组显示出来。

3.3 信息查询功能模块

系统把图形数据及其属性数据、地图数据整合到一个PMF文件中,逻辑结构清晰,不依赖于任何数据库技术,可移植性强,实现了空间数据与属性数据的一体化管理,具有强大的图文互查能力。系统查询包括注记查询、点或对象缓冲查询等,并且把查询的结果突出显示在地图上。

查询是系统的重要功能,查询的方式分为点击图查询属性和根据一定的属性查询。(矢量)数据集、记录集和选择集之间的关系非常密切。空间查询的结果也通常会以高亮的方式以选中的状态突出地显示出来,以便进行下一步的操作。

3.4 输入输出功能模块

系统可以载入PMF(Portable Map File)文件和遥感图像,接收GPS定位信息,并可输入定位点的相关信息,编辑对象属性等。系统输出主要是将采集的数据转换为新的地图对象或新的图层保存,同时通过eSuperMap的桌面工具及其他地理信息系统软件转换为可以为多种桌面地理信息系统软件所利用的文件格式,实现数据的重复利用。

3.5 GPS定位导航功能模块

GPS定位导航的基本思路如下:①指定起点和终点,使用CSePathAnalyst∷Analyse()方法进行路径分析,假设得到路径A;②如果是模拟导航,则需要通过CSeGeoLine∷ResampleEquidistantly()方法将路径A等距重采样,并将结果坐标点串保存在一个数组B中;如果是实际导航,需要打开GPS设备端口;③实现导航的方法主要由CSePathNavigator提供,使用之前需要通过Init()方法初始化;④调用CSePathNavigator∷MakePath()方法在路径A上生成控制点;⑤以上是准备工作,准备完毕后,则调用SetTimer(),让Timer定时去读取需要定位的点坐标,在此步骤中,对于模拟导航和实际导航会有所区别,如果是模拟导航,则依次从数组B中读取点的坐标;如果是实际导航,则从GPS设备端口读取当前位置的坐标;⑥导航,首先需要判断Timer读取点的有效性,可通过CSePathNavigator∷IsValid()判断,如果有效,则调用CSePathNavigator∷Navigate()方法进行纠偏,并获取其返回值,不同的返回值给出不同的语音或者文字提示。

4 结束语

运用Embedded Visual C++和eSuperMap软件平台开发应用程序,实现了车载导航系统电子地图的基本操作、路径优化和路径引导等功能,并将应用程序调试、移植、下载到硬件平台SB-810C上,完成了车载导航系统软件平台的设计和具体实现。对ITS交通诱导系统、出行者信息服务系统等与车辆运输和管理相关的领域具有一定的参考价值。

[1]高超.车载导航系统的研究及其软件设计[D].哈尔滨:哈尔滨工程大学,2004:10-38.

[2]陈明杰.车载定位导航系统的设计与实现[D].哈尔滨:哈尔滨工程大学,2002:10-14,36-44.

[3]张可.车辆导航系统关键技术研究[D].北京:北京工业大学,2001:6-7,29-43,115-148.

[4]张其善,吴今培,杨东凯.智能车辆定位导航系统及应用[M].北京:科学出版社,2002.

[5]邓铭辉.基于GPS的车辆自主导航系统的研究[D].哈尔滨:哈尔滨工程大学,2002:1-8.

[6]潘爱民,王国印.Visual C++技术内幕[M].北京:清华大学出版社,2002.

[7]侯俊杰.深入浅出MFC[M].第2版.武汉:华中科技大学出版社,2002.

[8]刘刀桂,孟繁晶.Visual C++实践与提高——数据库篇[M].北京:中国铁道出版社,2001.

猜你喜欢
宿主机功能模块导航系统
说说“北斗导航系统”
嵌入式计算机软件测试关键技术研究
“北斗”导航系统是怎样炼成的
虚拟网络实验室在农村职校计算机网络技术教学中的应用研究
一种GNSS/SINS容错深组合导航系统设计
解读全球第四大导航系统
基于ASP.NET标准的采购管理系统研究
输电线路附着物测算系统测算功能模块的研究
M市石油装备公服平台网站主要功能模块设计与实现
功能模块的设计与应用研究