汽车导航系统的应用技术

 汽车导航是近年兴起的一种汽车驾驶辅助设备,驾车者只要将目的地输入汽车导航系统,系统就会根据电子地图自动计算出最合适的路线,并在车辆行驶过程中(例如转弯前)提醒驾驶员按照计算的路线行驶。在整个行驶过程中,驾车者根本不用考虑该走哪条路线就能快捷地到达目的地。

  当前的汽车导航系统包括两部分:全球定位系统车辆自动导航系统。汽车导航设备一般是由GPS天线,集成了显示屏幕和功能按键的主机,以及语音输出设备(一般利用汽车音响系统输出语音提示信息)构成的。受车内安装位置的限制,一般汽车导航设备和汽车视像音响合成在一起,可以播放CD、VCD和DVD碟,其中DVD驱动器负责读取电子地图DVD光盘,因此,一些汽车导航系统又称为DVD导航系统。

  全球定位系统GPS 

  介绍汽车导航系统必然要涉及到全球定位系统,即GPS。GPS是英文Global Positioning System(全球定位系统)的缩写,它是由空间卫星、地面监控和用户接收等三大部分组成。空间卫星由24颗卫星组成一个分布网络,分别分布在6条离地面2万公里、倾斜角为55°的地球准同步轨道上,每条轨道上有4颗卫星。GPS卫星每隔12小时绕地球一周,使地球上任一地点能够同时接收7~9颗卫星的信号。

  地面共有1个主控站和5个监控站负责对卫星的监视、遥测、跟踪和控制。它们负责对每颗卫星进行观测,并向主控站提供观测数据。主控站收到数据后,计算出每颗卫星在每一时刻的精确位置,并通过3个注入站将它传送到卫星上去,卫星再将这些数据通过无线电波向地面发射。

  汽车导航系统 

  汽车导航系统中的GPS信号接收器接收卫星发送的信号,根据卫星信号计算出地面接收机的当前位置。如果地面接收机同时收到4颗以上的卫星信号,就能根据卫星的精确位置及发送信号的时刻,通过计算以求得当前地点的位置。
  
  汽车导航系统通过车轮传感器、地磁传感器和偏航传感器等三种传感器获取数据,确定汽车的速度和位置。车轮传感器记录车轮的速度,产生的脉冲信号用于定时计算行驶距离和方向变化。地磁传感器通过励磁绕组感应出电压脉冲,测量出沿途地磁场水平分量的大小与起始点磁场的比较,为车载电脑提供补偿数据。电子地图存储容量能够存储汽车运行区域的所有数据,车载电脑与存储道路网络数据不断比较判断,更正定位误差从而确定最佳行驶路径。

  目前先进的汽车导航系统多用单片机结构,嵌入式操作系统,软件代码存储于ROM中,代码简洁,运行可靠,启动及关闭迅速,具有几乎完整的PC组件和输入输出端口,适应汽车恶劣的工作环境,在高温或低温以及剧烈振动环境下工作可靠性高。

  自主导航 

  汽车自动导航系统的作用是根据GPS接收机提供的车辆当前位置和用户输入的车辆目的地、参照电子地图计算的行驶路线,并在行驶中将信息提供给驾车者。目前世界上应用较多的是自主导航,其主要特征是每套车载导航设备都自带电子地图,定位和导航功能全部由车载设备完成。它的工作过程主要有以下步骤:

  一、输入数据信息。出发前,车主将目的地输入到导航设备中,在系统显示的电子地图上直接点击选取地点,或者是借助某种输入方法,将目的地名称输入到系统中。根据输入设备的不同,可以有不同的地名输入方法,依靠按键或触摸屏可以实现几乎所有的操纵功能。为了便利,目前人们也在开发语音识别技术的产品。

  二、 显示电子地图。汽车导航系统中至关重要的一部分是存储在光盘或内置存储器(如硬盘)中的电子地图,电子地图中存储了一定范围内的地理、道路和交通管制信息,与地点对应存储了相关的经纬度信息。汽车导航主机从GPS接收机得到经过计算确定的当前点经纬度,通过与电子地图数据的对比,就可以随时确定车辆当前所在的地点。

  一般汽车导航系统将车辆当前位置默认为出发点,在用户输入了目的地之后,导航系统根据电子地图上存储的地图信息,就可以自动计算出一条最合适的推荐路线。在有的系统中,用户还可以指定途中希望经过的途径点,或者指定一定的路线选择规则(如不允许经过高速公路、按照行驶路线最短的原则等)。推荐的路线将以醒目的方式显示在屏幕上的地图中,同时屏幕上也时刻显示出车辆的当前位置,以提供参考。如果行驶过程中车辆偏离了推荐的路线,系统会自动删除原有路线并以车辆当前点为出发点重新计算路线,并将修正后的路线作为新的推荐路线。

  输出设备 

  汽车自动导航系统的输出设备包括显示屏幕和语音输出设备。显示屏幕一般是个100~150毫米(4~6英寸)的液晶显示屏(如果需要手写识别作为输入,显示屏表面还有一张透明的触摸屏做保护)它的屏幕可以由几十万个点阵组成,全屏幕有30多万个像素,常用分辨率有640×480或774×435,可以支持高清晰度图像和DVD放像功能。主要显示内容包括:地图(包括相应的道路名称、公路编号、重要地点名称等)、车辆的当前位置、推荐路线等,根据用户的设定还可以显示附近的维修站、加油站、停车场及其他公共服务单位的名称及地理位置等信息,以方便用户需要。

  汽车导航系统操作的简便性是设计者追求的目标,实际上这也涉及到一个安全的问题,因为驾车者不允许一边开车一边看电子地图。因此,设计者都考虑针对汽车导航系统应用需求开发语音及语音识别技术,使用者通过语音代替按键操作发出指令,使导航系统完成相应的工作,导航系统通过语音代替图象文字,向驾车者发出信号或指令。例如丰田威驰导航系统就是一种带有语音技术的导航系统,在转弯路口等地方可以用语音提示。

  电子地图 

  汽车导航系统的推广与应用关键是电子地图。用户购买装备有导航系统的车辆时,还能得到一张刻录了电子地图的CD-ROM光盘。用户在开启车辆导航系统之后,必须把这张CD-ROM插入导航设备的光盘驱动器中,系统需要道路信息时都会到CD-ROM上去获取。例如丰田威驰DVD导航系统就是这样,它在副驾驶座下面有一个DVD驱动器,专门读取电子地图DVD光盘。随着城乡建设及道路变化,电子地图光盘也会定期更换。

  但是,就是最新版的电子地图也不能保证准确无误。针对这种情况,汽车导航系统又需要增加一定的辅助支援系统。目前在应用汽车导航系统比较广泛的地区(例如欧美和日本),汽车公司或其他商业公司建立的呼叫中心或公共交通信息电台,通过GSM移动通讯形式发短消息或电台发送的最新的交通信息提供给汽车上的导航设备,可以对汽车上电子地图的信息随时进行修正。

  我国对于地图的出版有严格的规定,对于电子地图也不例外。因为它不同于一般的电子出版物,其标准性、政策性、保密性、技术性较强,是国家版图、行政区划界线的科学表达,因此电子地图一定要经国家测绘局审核后才能出版。目前威驰轿车的DVD语音电子导航系统,也特别注明电子导航系统是“经国家测绘局的支持和批准”。为了适应汽车自动导航设备需要根据行驶区域、路线、自动或人工改变地图比例尺的需求(即电子地图放大或缩小),所以,汽车导航系统所使用的地图必须是以向量方式记录的。

  目前国内一些汽车运营企业安装的“汽车导航系统”,主要功能是调度与监测,与前面说明的汽车导航系统不同,这些系统中的车辆上除GPS天线和接收机外,并不需要车辆自主导航设备(包括电子地图),车辆通过车载通讯设备和公司保持联系。因为这类系统的导航过程其实是人工完成,因此还不能算是汽车自动导航系统。

来自:Fly high

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现简单的查询,各风景的查询,调用各函数,实现课程设计的目标。其中包含三个功能,一个是直接进入导航系统,利用主函数中已有的数据,进行查询:一个是进行创建数据,本程序中初始数据为农大的导航数据,如果需要也可以自己建立一个;最后一个是退出功能。设计该函数的目的是为了能够多次得应用dijkstra函数进行查询最短路径。同时该函数可以列出各景点的代号和对应的名称,这样大家只要输入代号就行了。方便进行查询。下面分别描述这些函数,建立它们函数原型。 1、主函数 函数原型:void main(void) 功 能:控制程序。 参 数:void 返 回 值:void 要 求:管理菜单命令并完成初始化。 2、菜单选择和处理函数 函数原型:int menu() 功 能:处理选择的菜单命令并接收用户选择的命令代码。 参 数:int 返 回 值:int 工作方式:返回命令代码的整数值,根据命令,调用相应函数。 要 求:只允许选择规定键,如果输入不合要求,则提醒用户重新输入。 3、建立邻接矩阵函数 函数原型:void createadj() 功 能:重新建立一个学生信息的记录。 参 数:void 返 回 值:void 工作方式:在需要的时候就可以有主菜单中调用 void createadj()函数。 要 求:必需输入信息记录,然后才能调用出search()函数进行查询。 4、dijkstra函数 函数原型:void dijkstra(intx,inty) 功 能:求两点间的最短路径 参 数:void 返 回 值:void 工作方式: 该函数被其它一些函数调用。 5、结束程序 函数原型:int Exit() 功 能:使程序正常结束运行 参 数:int 返 回 值:1 工作方式:在操作都完成后,可以调用int Exit()函数,使函数最终返回 1 运行exit(1),程序正常结束。 要 求:运行Exit()函数后可以选择是否要保存,选择y则先保存再返 回1值;如果选择n直接返回1值。详细的程序设计应从下到上,在本设计中就要先设计createadj函数;然后设计dijkstra函数;接着是search函数;menu函数;最后才是main函数。如此设计能大大提升设计速度,因为从下往上使编程时的高试过程简单许多,而做课程设计花费时间最多的就是调试过程。对于各函数的详细设计,各函数的N—S图如下: (1)Createadj函数 (2)Dijkstra函数          (3)Search函数          (4)Menu函数          (5)main函数          2.4 程序编码   把详细设计的结果进一步求精为程序设计语言程序。同时加入一些注解和断言,使程序中逻辑概念清楚;编写过程中参考各种的教材和材料,使程序编写的正确性大有提高,同时也许到许多实践知识,增加了实践经验。 2.5 程序调试与测试    程序编写总是出现各种各样的错误,但是难点不是修改错误,而是找出错误。在大量的源程序中找出错误难度很大,但有了一定的方法,就能节省大量的时间,在这次课程设计中我运用的调试方法主要有2种:     一是借助调试工具。利用Turbo C中提供的程序专门调试工具Debugger程序,可以很容易找出程序中的各种语法错误。但是遇到一些逻辑错误时却又无从着手。这时我就用下面一种方法。     二是在程序中插入打印语句。猜测出大致的错误位置,选则一些主要变量,在关键部位插入打印语句,打印出这个主要变量,看其是否与理论上的一样,在多个位置插入,如果有个位置的值与理论值一样,另一个位置与理论值不一样,则错误就落在这两个位置之间,然后再多测试几个位置缩小范围,直到找出错误。  例如;我在调试main()主函数时,程序能够运行,三个选项都能选择,创建函数能够正常运行,也能正常退出,但在选第一条进入校园导航后,打印出来的列表却是空的,源程序中的初始化数据没有显示出来,我又尝试输入两个结点进行查找,发现没有输出路线,所以我猜测初始化数据没有被正常写入。但不知道为何没有被正常写入,首先怀疑是初始化时附值发生错误,查阅各种资料进行校验,发现没有错误。后来经过综合分析,发现最有可能是n值在search()函数中发生错误,于是我在search()函数中插入打印n 的语句,运行后发现输出的n为0,初始化数据中有11个结点,n应该为11,所以n 在这个地方发生错误,我又在main()主函数中打印出n 的值,n=11,是正确的。所以错误就在search()函数中,也就说是当运行case1,运行到search()函数时,n从11变为0,针对这个错误,我把变量n改为宏定义,因为n 是代表结点个数,不管在哪个函数中它的值都是一样的才对。改完后运行程序,成功! 本设计文件的注释如上,已给出详细的说明,下面仅以文件为单位说明各个函数的作用和特点,在必要的地方给予一定说明。  3.1、guide.h文件 使用条件编译。以下是头文件中语句 /********************************************* *头文件(.h) ********************************************/ #include "stdio.h" #include "conio.h" #include "alloc.h" #define n0 100 #define infi 32767 /*“无穷大*/ int adjmatrix[n0+1][n0+1];     /*邻接矩阵*/ int n=11; struct node             /*表结点*/ { char name[20];       /*下一个表结点与它们之间的距离*/ }place[12]={{"ShiDiGongYuan"},   /*表结点初始化,即写各景点名称*/    {"CangRongGongYu"},    {"YinHuiLou"},    {"TuoHuanGuanChang"},    {"DiBaShiTang"},    {"XiaoYiYuan"},    {"TuShuGuan"},    {"TiYuGuan"},    {"ZhongHuaGuanChang"},    {"ChuangXinLou"},    {"YiFuTuShuGuan"},    {"BoXueLou"}};  void createadj()          /*建立邻接表*/  void dijkstra( int x,int y)     /*dijkstra求最小生树*/  void search()            /*搜索最短路径*/  menu()               /*菜单函数*/          /********************************************* *建立邻接表 ********************************************/ void createadj()  

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值