车载导航毕业设计论文_第1页
车载导航毕业设计论文_第2页
车载导航毕业设计论文_第3页
车载导航毕业设计论文_第4页
车载导航毕业设计论文_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Denso 车载导航系统 -道路限制和收费站 导航 子系统的设计与实 现 Denso Navigation System -Design and Implementation of Road Restrictions and Toll Station Navigation Subsystems 毕业设计(论文)任务书 毕业设计(论文)题目: Denso 车载导航系统 道路限制和收费站子系统的设计与实现 基本内容: 本课题将要完成的内容是在 Denso车载导航系统已有的导航机制基础上,完成道路限制和收费站导航子系统的设计与实现,需要完成的功能是对某些时间段禁止通行的道路和行驶道路上的收费站进行提示(包括文字、图示和声音)。 为此,需要学习 Denso 车载导航系统实现的基本原理和总体框架。在此基础上学习取得地图数据(包括读取和解析),对道路属性信息进行处理和判断等内容。在完成本课题期间还需要掌握 ITRON系统在 windows系统下模拟实现, cygwin编译环境和 .net 编译器等工具的使用。 毕业设计(论文)专题部分: 题目: 基本内容: 学生接受毕业设计(论文)题目日期 第 1 周 指导教师签字: 2011 年 2 月 28 日 摘要 -I- Denso 车载导航 道路限制和收费站导航子系统的设计与实现 摘 要 随着社会的发展, 车辆不断增多,道路状况日渐复杂,拥有一个好的车载导航系统对于驾驶员来说变得十分重要。同时,导航系统 与车内的空调、视听娱乐、电话等功能的结合也将给驾驶员带来极大方便与享受。 这就对 车载 导航技术产生了巨大的市场需求。因此车载导航软件的开发是非常具有现实意义的工作。 本文主要论述了 Denso 车载导航系统导航功能中的两个功能,对具有时间限制的道路和收费站进行导航。所谓的时间限制就是在特定的一段时间内某条道路不允许车辆通行。完成本系统首先需要 研究 Denso 车载 导航系统的整体框架,了解系统的运行环境,通信机制以及掌握开发过程中需要用到的技术。在此 基础上深入研究导航模块的实现,然后实现上述的两个功能。通过对已有导航系统的研究,确定了需要在系统 Task 中进行修改以实现的两个模块的功能。全文按照软件的开发流程进行描述,首先对本导航系统所用的 ITRON系统和 KIWI 地图数据格式两项关键技术进行简要介 绍,然后针对导航模块进行系统分析,接下来是深入到所需实现的功能模块中进行系统 Task 级的设计。 依据系统分析和系统设计完成系统实现。最后在模拟导航 机 PCNavi 上进行了系统测试工作,确保正确性。 经过系统测试,完成了道路限制和收费站导航子系统设计与实现的工作,正确的实现了导航功能,即汽车行驶时,当前方道路上路上存在收费站或者时间限制的道路时,对用户进行文字、图片和语音提示以达到导航目的。 关键词 : 车载导航系统, ITRON,时间限制, Task Abstract -II- Denso Navigation System -Design and Implentation of Road Restrictions and Toll Station Navigation Subsystems Abstract With the development of society, increasing traffic and road conditions more and more complex, to have a good car navigation system become very important to drivers. Meanwhile, car navigation systems combine with air-conditioning, entertainment, telephone and other functions will also bring great convenience and enjoyment to the driver.This has created an enormous market demand for navigation technology. Therefore, to develop car navigation software is of great significance. This paper mainly discusses two functions of Denso car navigation system, they are toll station navigation and time restricted road navigation. Time restricted means vehicles are not allowed on this road within a specific period of time. Research on the framework of Denso navigation system, system environment, communication mechanism and other technology, which is the basis of the paper, are necessary. The two modules should be implemeted by means of modifing system task.The paper is base on software development process.It begins with introduction of ITRON system and KIWI map data. Then, the paper will give system analysis of navigatioin module.The system design, which concentrates on system task, comes after. System implementation is based on system analysis and system design. Finally, system testing is excuted on the simulated navigation system PCNavi to ensure the accuracy. Design and implementation of time restricted navigation and toll station navigation subsystems are completed after system testing, the navigation is correct.When the car meet with time restricted road or toll station on its way, the text, pictures and voice prompts should be provided in order to achieve the purpose of navigation. Key Words: car navigation, ITRON, time restricted, Task 目录 -III- 目 录 摘 要 . I Abstract . II 第 1 章 绪 论 . 1 1.1. 车载导航发展简介 . 1 1.2. 国内外发展现状 . 1 1.3. 车载导航的发展趋势 . 2 第 2 章 关键技术介绍 . 3 2.1. ITRON 系统 . 3 2.1.1. 系统综述 . 3 2.1.2. 任务及通信 . 3 2.2. KIWI 格式地图数据 . 5 第 3 章 系统分析 . 7 3.1. 系统功能 . 7 3.1.1. 道路限制导航模块 . 7 3.1.2. 收费站导航模块 . 8 3.1. 系统结 构 . 9 3.1.1. 系统功能框架 . 9 3.1.2. DG 模块概要 . 10 3.2. 信息流程 . 错误 !未定义书签。 3.2.1. 信息输入 . 11 3.2.2. 信 息处理及输出 . 11 3.3. 开发环境 . 12 第 4 章 系统设计 . 13 4.1. 架构概述 . 13 4.2. 系统 Task 级设计 . 14 4.3. 道路限制导航模块 . 15 4.3.1. 功能点及对应 Task 分析设计 . 15 4.3.2. 重要函数设计 . 20 4.4. 收费 站导航模块 . 21 4.4.1. 功能点及对应 Task 分析设计 . 21 4.4.2. 重要函数设计 . 25 目录 -IV- 第 5 章 系统实现 . 27 5.1. 系统 Task 级实现 . 27 5.2. 道路限制导航模块 . 28 5.2.1. 系统实现概要 . 28 5.2.2. 重要函数实现 . 29 5.3. 收费站导航模块 . 33 5.3.1. 系统实现概要 . 33 5.3.2. 重要函数实现 . 33 第 6 章 系统测试 . 41 6.1. 道路限制导航模块 . 41 6.1.1. 测试方案 . 41 6.1.2. 测试结果 . 42 6.2. 收费站导航模块 . 44 6.2.1. 测试方案 . 44 6.2.2. 测试结果 . 45 第 7 章 结 论 . 47 参考文献 . 48 致 谢 . 49 第 1 章 绪论 -1- 第 1章 绪 论 近年来,随着我国的汽车销售总量和私人购车数量逐年上升、人们出行频率的增加,以及人们对生活质量和信息服务质量要求的不断提高,车载导航系统正逐渐显示出其强大的生命力、广阔的应用前景和巨大市场潜力 1。因此研究探索车载导航技术,使之更好的为人们服务是一项长远、具有重要意义,而且很有前景的工作。本文是在已有导航机制的基础上进行部分功能的更新,旨在于了解熟悉车载导航 系统的相关知识,并希望对车载导航功能的发展有所作用。 1.1. 车载导航发展简介 最初的汽车导航系统是在单画面 CRT(阴极射线管)的前面贴上印刷了地图的透明封条,在 CRT 画面上显示自车位置的系统。 1989 年汽车导航第一次采用了地图匹配技术。就是把通过推测导航法计算出来的车辆的行驶轨迹和存放在 CD-ROM 里的道路形状相比较,找出自车的行驶道路,确定自车位置。到 1990 年第一次采用了 GPS 定位技术。 1994年出现了具有真正意义上导航能力的导航系统 2。到了 1996 年, VICS 设备被引入到导航系统,有了有交通信息支持的数 据库实现了动态导航 3。 至此,汽车导航系统的导航功能已基本成熟。现今的导航系统除了具有动态导航的功能外,还有检索功能、网络功能、电话功能、检索周边环境、目的地经由地信息、计算最优路径、自动检索硬件环境等功能 4。 1.2. 国内外发展现状 在发达国家,车载 GPS 导航系统技术已经非常成熟,从全球来看,日本和美国 GPS导航产品是领先的。日本的车载 GPS 导航系统技术和使用覆盖率均处于全球霸主地位,日本导航软件和地图数据还在不断发展和更新版本 5。近几年日本的车载导航软件很多是基于 ITRON 系统的 6,本文第二章会 具体介绍此系统。现在主流的导航电子地图数据也是由日本 KIWI 协会 (KIWI-W Consortium)制定的标准 KIWI 地图数据格式。 它是专门针对汽车导航的电子数据格式,旨在提供一种通用的电子地图数据的存储格式,以满足嵌入式应用快速精确和高效的要求。该格式是公开的,任何人都可使用 7。 我国 GPS 车载市场还处在发展初期 ,从系统的技术水平与产品的质量和成熟程度来说,都是比较落后的。实时交通信息发布和完善的导航电子地图的提供与更新机制, 第 1 章 绪论 -2- 均缺乏实际的解决方案和途径 8。国内从事导航软件开发的公司也比较少,大部 分也是在做外包的工作。 1.3. 车载导航的发展趋势 导航技术发展的动态和趋势主要体现在以下几个方面 9: ( 1) 硬件平台多样化 目前的导航产品已经形成了包括 CAR-PC、车载 CD-ROM/DVD、掌上电脑和其他多种多样的平台。 ( 2) 导航电子地图的标准化 日本的导航电子地图标准 KIWI、欧盟等国家和地区的 GDF 地理数据文件等都制定了相应的导航用电子地图的规范与标准,为导航系统及智能交通系统的建设提供了基础。 ( 3) 无线通信技术的加入 通过无线通讯可以实现行进中的信息查询及导航电子地图下载,使得导航系统向 LBS服务(基于位置的服 务)方向转化。 ( 4) 导航语音识别与合成技术 如果采用语音接口,对计算机的访问时间就可以缩短,而像触摸按钮和键盘等都可以取消了,这很大程度上提高了导航的效率。 ( 5) 地图表现形式多样化 传统的二维平面式地图正在被新的更具表现力的三维地图所取代。 第 2 章 关键技术介绍 -3- 第 2章 关键技术介绍 本导航系统采用的是 ITRON 嵌入式系统,所用的地图数据是 KIWI 格式的 10。因此有必要对这两项技术作简要介绍。 2.1. ITRON 系统 2.1.1. 系统综述 ITRON( Industrial the Real-Time Operation System Nucleus)工 业实时操作系统中心 提出的实时多任务系统规范。它具有标准的实时内核,适用于任何小规模的嵌入式系统。 ITRON 系统具有以下特点 11: ( 1) 多任务支持 ( 2) 事件驱动基于优先级的调度 ( 3) 任务间的通信与同步 ( 4) 实时时钟控制 ( 5) 完全可抢占内核硬实时响应 ITRON 规范中定义了一系列 C 语言接口库,应用系统可以利用这些接口库实现应用与操作系统的相连。 2.1.2. 任务及通信 ( 1) Task 任务是一个具有独立功能的无限循环的程序段的一次运行活动。任务具有动态性、并行性、异步独立性的特点。 动态性任务的状态是不断变化的,一般分为休眠态 (dormant), 就绪态 (ready),运行态(running),挂起态 (suspended) ,睡眠态 (sleep)等 12。 并行性是指系统中同时存在多个任务,它们宏观上是同时运行的。 异步独立性任务是系统中独立运行的基本单元也是内核分配和调度的基本单元每个任务各自按相互独立的不可预知的速度运行,走走停停。 第 2 章 关键技术介绍 -4- 每个任务都要安排一个决定其重要性的优先级,都有一个无限循环的程序段规定其功能,并相应有一个数据段、堆栈段及一个任务控制块 (保存 CPU 的现场、状态等 )。 ( 2) Event Flag 在多任务处理系统中,需要等到一个任 务终了后,其他任务再开始启动的等候功能,这个时候,需要拥有对其他任务是否终了进行判断的能力, ITRON 系统中提供了 Event Flag来实现这个机能。 ITRON 系统中,一个 Event Flag 是 ITRON 工作区中的一个 32 位的变量。 32 位中的每一位都是表示一个事件标志,事件标志有两种状态,设置( 1)和清除( 0)。当一个标志处于设置状态时,表示相关的事件已经发生了,任务可以使用事件标志来向其他任务发送信号,表示事件已发生 13。 一般来说, Event Flag 为任务之间的等待操作提供了场所,下面是其操作 方法。 图 2.1 表示了两个 Task 通过 32Bit Event Flag 传递信息的。 3 2 B i t E v e n t F l a gT a s k W a i t QT a s k A T a s k Bs e t _ f l a gw a i t _ f l a gS t a t e m i g r a t i o n 图 2.1 32Bit Event Flag 使用方法示意图 任务间的等候需要能够传达 Event 的任务和等待 Event 发生的任务,传达 Event 任务通过发行 set_flag 调用来传递信息,另一方面等待 Event 任务对事件发行等待调用,并且参照等候模式。 因为 Event Flag 是一个 32Bit 的位群,所以在进行 Event Flag 的设定的时候可以按照条件的逻辑进行设定 ,主要的逻辑有 And 和 Or 两种,需要根据实际情况进行有选择的使用。 And:多个条件同时存在的时候,才满足任务的运行条件。 Or:当设定的多个条件有一个满足的时候,运行条件成立。 ( 3) MailBox 第 2 章 关键技术介绍 -5- 为了实现任务之间的通信功能, ITRON 提供了邮箱。邮箱包含有多任务应用的等待队列和邮箱专用的信息等待队列,除了任务之间的通信功能使用,也作为任务之间的协作功能使用。 当一个任务执行发送原语时,有两种可能性,一种可能是接收者已经处于等待状态;另外一种可能是消息发送时,接收者没有处于等待收信状态。 消息等待方式的实现方 法是为 Message 提供等待队列作为缓冲,并且对于从队列中取得信息的方式提供了两种方式作为支持:基于 FIFS 的等待机制和基于优先级的等待机制。 ITRON 系统提供的方法是为任务提供等待队列,并且系统分配消息的方式是基于 FIFS方法的,不区分任务的优先级别。 图 2.2 表明了 Task 之间通过 MailBox 传递信息的使用示例。 T a s k W a i t QT a s k A T a s k Bs n d _ m s gr c v _ m s gM e s s a g e QT a s k Br c v _ m s gT a s k Br c v _ m s gF C F Sm s g _ m a keFIFO 图 2.2 Task 利用 MailBox 进行通信示意图 在任务之间的信息通信里,需要给邮箱分配送信的任务(发报任务)和接受这个信息的任务(接受任务)。这时如果邮箱里已经有任务被排列在队列里,信息就会被传递给等待队列里的任务中。任务专用队列的先头任务将会从 Wait 状态迁移到 Ready 状态。但是如果邮箱中还没有任务被排列在队列中,信息就会被排列到信息专用的队列中。发行 snd_msg调用的任务不进行状态迁移 13。 2.2. KIWI 格式地图数据 本文描述的导航系统是用 KIWI 数据格式来存储地图信息的, KIWI 数据的分类主要由 第 2 章 关键技术介绍 -6- 以下几部分构成 14: Parcel 数据:主要用于描画,也被称作描画数据,数据的存储主要的一些坐标的记录,和相关的属性。根 据所存的点、线、面的信息,进行显示其中包括背景、道路、文字。这些数据是构成地图的基本元素。 Region 数据:主要用于径路探索,这些数据的组织形式也是为了方便最优路径的探索。region 数据中主要强调了道路的接续,交通限制,通行方向等属性,因此能够应用于径路探索中。 导航数据:主要用于道路提示导航,就是在车行驶过程中提供一些信息,比如交叉点名称,道路名称,前方交叉的道路的目的地,等等。 画像数据:提供高速道路上主要交叉点的一些情况,表示各个方向上的目的地。 声音数据:保存在道路导航过程中所能提供的所有的声音 信息。 检索数据:保存了地图数据中主要的点的信息,能够提供这个点上具有的地图要素的详细信息。 描画参数数据:保存地图描画时各种要素描画的参数信息,比如某某道路需要描画多宽,某个背景需要使用什么颜色来描画,某种文字需要描画成什么颜色等等。 在 KIWI 数据的存储方面,地图采用了分层和分块处理。为了满足对于不同比例尺条件下数据处理或检索的需要,把地图分层( Level)存储。一般在最底层存储最详细的数据,而上层逐渐进行数据的抽取,在进行数据处理或检索时,按从上向下的顺序处理,以最快的速度对数据进行处理。在分层数据的 基础上对数据进行分块存储,便于数据的取得和管理,从而达到了快速读取数据的目的 15。 第 3 章 系统分析 -7- 第 3章 系统分析 3.1. 系统功能 车载导航系统的功能有很多,包括定位,地图显示,导航,查询和娱乐等功能。本文只是针对导航部分的功能。 本文将在汽车导航系统的导航模块中添加两个扩展功能,功能名称分别是“收费站导航”和“道路时间限制导航”:在驾驶者行驶过程中,当自车前面有收费站或有时间限制的道路等情况时,给以文字、图示和声音的提示,起到预警的作用。 3.1.1. 道路限制导航模块 在道路时间限制功能的需求文档中规定的新增功能为: 当自车处于 on route 状态, 进入时间限制区间时,进行导航。 ( 1) 概要导航提示: 如果行车路线含有时间限制的道路,在概要导航提示的时候提示:在导航屏幕上弹出文字(以下简称为 ONS, on screen 的缩写)“ Time restricted roads on this route.”。 ( 2) 时间限制 Mark 表示: 时间限制道路进入点的导航点 Mark 表示为 。 ( 3) 时间限制 ONS 警告: 当汽车进入时间限制的道路时,进行警告。弹出 ONS:“ You will reach time restricted roads. Please respect the local traffic regulations.”;并且进行语音提示:“ Traffic restrictions may apply. Please respect the local traffic regulations.”。 ( 4) 时间限制扩大图 Mark 表示: 车辆进入具有时间限制的道路上时正常为其导航,但是在导航屏幕左侧的扩大图中岔路点的 Mark 更改为 。 ( 5) TurnList 表示: 行车线路含有时间限制道路,在导航屏幕左侧提示岔路场合如何转向的列表(以下称为 TurnList)中将含有时间限制道路的岔路场合 Mark 显示 为 灰色 的 箭头 。 第 3 章 系统分析 -8- 3.1.2. 收费站导航模块 根据项目需求说明书,收费站导航的新增功能为: ( 1) Turnlist 中收费站导航提示 : 把行车路线上存在的收费站作为 TurnlistPoint 进行 List 化。即 在 Turnlist 中添加收费站信息,进行导航提示。 导航提示内容: 收 费站名称 ,当该收费站没有名称时,显示文本 TOLL BOOTH 车辆到收费站的距离 /收费站到 TurnlistPoint 的 距离 收费站图标 ( 2) 收费站扩大图提示 : 行车线路上存在的收费站以扩大图的形式进行提示。 导航提示内容:收费站设计图片如图 3.1 所示。 图 3.1 收费站 mark 图片 ( 3) 辅助导航中收费站提示 : 在辅助导航中添加收费站的导航提示 。 文本 TOLL BOOTH 车辆到收费站的距离 收费站图标 ( 4) 收费站声音提示 当车辆到收费站的距离为 L时,发声。 L 满足声音提示条件如表 3.1 所示。 第 3 章 系统分析 -9- 表 3.1 声音输出时间 进入道路种别 输出时机 一般道 Residential L=400m Non-residential L=400m 高速进出道 (SA.PA 道 ) L=800m 都市间高速 L=2000m 其中 SA 代表 Service Area; PA 代表 Parking Area。 3.1. 系统结构 3.1.1. 系统功能框架 导航系统功能结构如图 3.2 所示。本文所论述的内容在其中的 DG 模块。 导 航 系 统V PM A PD GR PN O T EV I C S V I 图 3.2 系统功能结构图 ( 1) HMI (Human & Machine Interface) HMI 实现的是用户的操作界面,是用户与导航系统交互的纽带。用户通过 HMI 告诉导航系统想要进行的操作, 导航系统再通过 HMI 显示出来。达到人机交互的目的。 ( 2) DG (Driver Guidance) DG 在司机需要的时候,提示正确的行进方向,能够准确到达目的地的动态和静态信息等。其主要功能是:交叉点扩大图和声音提示。 第 3 章 系统分析 -10- ( 3) MAP MAP 即地图描画,导航系统中的地图描画是指、根据应显示的地点位置从地图 Data base 读入地点信息,并根据描画算法进行描画及显示。 ( 4) NOTE NOTE 组件为用户提供信息的检索和管理功能。包括导航信息和用户自定义信息两部分。导航信息是导航系统提供的数据,例如 Disc 数据、 Vics 数据等,而 用户自定义信息是用户自己设定的信息,例如 Mark 等。 用户检索时可以检索所有两种信息,提供信息列表,详细情报等功能。而管理只是针对用户自定义信息,主要是提供了登录,删除,修改等功能 ( 5) RP (Route Production/Route Planning) RP 就是在给定自车位置和目的地的情况下,按照用户设定的不同条件,计算出一条或多条从自车位置到目的地的花费 (根据用户的设定,可能是指时间,费用等 )最少的最优路以供用户使用。 ( 6) VP (Vehicle Position) VP 即车辆定位,即:车行过程中,实时计算 出车辆位置。车辆定位方法有自行定位法、 GPS 全球卫星定位法、复式定位法、地图匹配法等。 3.1.2. DG 模块概要 DG(Driver Guidance)即对驾驶员的引导。对用户来说,是整个导航系统中最重要,最基本的功能。本文研究论述的内容就是这个模块中的一部分,在此进一步的分析导航模块和其它模块的联系,如图 3.3 所示。 H M I ( 画 面 表 示 )A P I导 航径 路 描 画检 索 D S 声 音现 在 地 图 3.3 导航模块与其它模块的关系图 第 3 章 系统分析 -11- 导航模块主要是从径路、现在地、检索、 DS 四个模块中取得信息,做成相应功能所需要的数据,然后发送给描画,声 音,和 API 模块。最终直接体现给用户信息的是 HMI和声音这两个模块。 3.2. 信息流程 现在的导航系统主要是通过处理接收到的位置、道路、自身信息等,计算并表示出用户要求的道路,从而起到引导用户的作用。并能够根据用户的选择来完成一些其他的动作。下面将分以下几部分来介绍导航系统的数据。 3.2.1. 信息输入 信息的输入主要有以下几部分来组成: GPS 信息、 KIWI 数据、 VICS 情报、用户操作要求。 ( 1) GPS 信息 GPS 卫星定期地发送时刻情报和卫星轨道情报。导航系统实时接收 GPS 的信息,来确定自车位置、速度等信息,通过这些信息的进一步处 理,做成为下一步的计算提供的有效数据。 ( 2) KIWI 数据 包括导航数据、画像数据、声音数据、检索数据。 ( 3) VICS 情报 VICS 是 Vehicle Information and Communication System 的简称。在 VICS Center 收集并编辑交通信息,将阻塞和交通限制等的道路交通信息实时发送出去,由车载导航系统以文字和图形表示。 VICS 信息 24 小时 365 日提供。它的目的很明确:保证行车的快速,安全。 ( 4) 用户操作要求 用户对导航系统的设置,功能使用等信息。在 HMI 中通过 API 和导航系统交互,将信息发 送过去。 3.2.2. 信 息处理及输出 通过导航系统的处理,会得到驾驶者要求的功能。输出是处理的结果表示,这里把处理和输出合在一起来阐述。 汽车导航系统功能庞大,本文选取几个相关的功能点来阐述。 1) 车辆定位 第 3 章 系统分析 -12- 获得自车位置情报,包括 On Road / Off Road 情报、经纬度、方向、行进 /停止、速度、道路上的位置、 GPS 等。如果由于种种原因产生汽车偏离的现象,导航仪还会进行补正,包括距离补正、感度补正、安装角度补正。同时还会进行修正,主要有位置修正、方位修正。最终取得车辆位置的结果。 2) 径路计算 为了提高速度,向用户提供良 好的交互界面,探索径路分别从自车位置和目的地位置双方向进行道路的扩展。一直到两侧的扩展道路有一定数量的重合后,方可确定一条最优的道路。 3) 导航计算及显示功能 导航提供了交差点、目的地、经由地、收费站、交通限制等具体地点的导航。比如当前方有交叉点时,会显示交叉点扩大图、 Real 3D 交叉点扩大图、车线情报、方面看板等信息,同时也会有声音提示,从而完成导航功能。 3.3. 开发环境 汽车导航系统是基于 Itron 系统开发的,本系统同样是基于 Itron 系统,但要求在windows 系统下模拟实现,到的编译器主要有两个: cygwin 编译环境和 .net 编译器。由于整个工程的文件很多,利用 .net 编译器的 make 命令能很方便的编译多个工程文件。本设计利用 cygwin 编译环境来产生库文件,用 .net 来整合编译整个工程。另外需要在 PCNavi 上进行测试。 第 4 章 系统设计 -13- 第 4章 系统设计 4.1. 架构概述 从系统层次的角度看,本系统分为四层,从下到上依次为 PF(Platform)、 Server、Application 和 UI。 HMI 层负责显示, Application 层为功能层,本文论述的内容处于Application 层中的 DG 模块。系统的框架图如图 4.1 所示。 H M IP e r i S e r v e rL i b r a r yV P M A P D G R PN O T EV I C SV S SV o i c eG P S C I SO S D D F S G U IC l o c kI n sUIApplicationServerPlatformN a v i S e r v e rF r a m e 图 4.1 系统框架图 本导航系统是基于 Itron 操作系统开发的,和一般的嵌入式操作系统类似, Itron 操作系统是支持多任务、事件驱动、基于优先级调度、完全可抢占内核硬实时响应的操作系统。基于 Itron 的机制,整个导航系统划分为多个 Task,形成多进程的系统,所以我们才可以在系统完成导航的同时可以听音乐、看电影。从系统的具体实现方式看,导航系统中的每一个大功能,例如导航,径路,检索等都是有许多 Task 协作实现的。整个导航系统中不同的 Task 之间的通信采取的是 message 和 Event 等机制进行通信的。由于本文是在已有导航系统基础上进行部分功能模块的更改,因此以下将着重于系统 Task 级的设计。 第 4 章 系统设计 -14- 4.2. 系统 Task 级设计 本文论述的主要内容位于系统的导航模块,该模块在导航系统框架中的位置在图 3.2中有过介绍。下面具体介绍本文对该模块的 Task 级设计内容。图 4.2 是导航模块系统的 Task级设 计图。 H M IA P IR P V P数 据 整 合 导 航 控 制数 据 提 取描 画 V I11123 456 789107 图 4.2 系统 Task 级设计 其中 RP、 VP、 VI、 API 和 HMI 是已有导航系统系统已经实现了的,不需要改变。本文 涉及到的需要改变的地方为矩形线框内的部分。比较重要的数据整合,导航控制,数据提取这三个任务。数字代表 Task 之间发送的信息。具体说明参照表 4.1。 表 4.1 Message 说明表 序号 Message 说明 序号 Message 说明 1 径路计算结果通知 6 Turnlist 送信通知 2 现在地信息 7 导航输出信息通知 3 导航信息取得要求 8 声音再生要求 4 导航信息取得应答 9 event 通知 5 导航 Point 通知 10 API 函数调用 径路计算结果通知是径路模块 ( RP) 发送给数据 整合任务的信息,这个信息是在用户 第 4 章 系统设计 -15- 设定了目的地后,径路模块接收 GPS、 VICS、 KIWI 等信息,然后通过相应的算法计算出来的从现在车辆所在位置到目的地的一条最佳路线。经过 3、 4 过程数据提取任务会把从数据整合任务接收到的信息经过处理再进行返回。 6、 7、 8 则关系到导航屏幕上的输出和声音上的输出。 4.3. 道路限制导航模块 本文论述的道路限制导航模块遵循的上述设计方式。在具体细节方面有一些不同。在道路限制导航模块中,导航控制任务需要向 API 层发送 ONS 警告的表示通知,另外在描画任务中,还需要有一个地图数据取得的过程。其余部 分都与 4.1 中论述的一样。 完成此模块的关键点是在取得地图数据整合必要的导航数据的处理中,要添加对取得的数据中的道路属性信息进行判断和处理。在导航控制中,增加相应的对时间限制导航的控制,以达到对新增内容的要求。 4.3.1. 功能点及对应 Task 分析设计 在对 Task 间的关系设计完成后 ,需要设计出道路限制模块实现的功能点与系统 Task 的对应关系。具体如表 4.2 所示 。 表 4.2 道路限制模块功能点与系统 Task 对应关系 功能点 序号 功能任务 对应 Task 时间限制道路 mark的表示 1 区分时间限制道路和普通道路 数 据整合 2 根据 导航 交叉点 mark 的表示 种别来分别表示普通道路 mark 和 时间限制道路 mark 描画 时间限制道路声音提示 3 区分时间限制道路和普通道路 数据整合 4 在 进 入 时间限 制道路 时 , 发出提示声音 。 导航控制 5 根据导航控制发送过来的声音 ID 列,进行发声 VI 时间限制制道路扩大图的表示 6 区分时间限制道路和普通道路 数据整合 7 在进入时间限制道路时和进入后,扩大图表示 导航控制 8 进行扩大图表示和扩大图上限制 mark 的表示变更 地图描画 第 4 章 系统设计 -16- 续表 4.2 道路限制模块 功能点与系统 Task 对应关系 功能点 序号 功能任务 对应 Task 开始导航时限制道路 警告 ons表示 9 向 HMI 提供函数接口,用来判断当前径路上是否有时间限制道路 API 10 根据 API 返回的信息,表示警告 ons HMI 初期 导航时限制道路警告 ons表示 11 区分时间限制道路和普通道路 数据整合 12 进入时间限制道路时,向 API 发送 限制警告ons 的表示通知 导航控制 13 向 HMI 提供函数接口,用来判断当前径路上是否有时间限制道路 API 14 根据 API 返回的信息,表示时间 限制道路警告 ons HMI 限制道路turnlist 表示 15 区分时间限制道路和普通道路 数据整合 16 根据 导航类型 设定 turnlist 的 node 种别,向API 发送 turnlist 信息通知 数据整合 17 将时间限制道路 turnlist 的分歧箭头置灰 HMI 由上表可见数据整合 Task 的任务就是区分时间限制道路和普通道路,这也是该模块的核心任务所在,导航控制 Task 的任务是向 HMI、 VI、 API 和描画任务发送通知让他们进行语音或文字的提示。 HMI 和 VI 的任务就是最终体现给用户文字或声音 提示。具体实现时, VI 模块需要根据导航控制发送过来的声音 ID 到存储模块中提取声音进行发声,描画模块在进行扩大图标是的时候需要从地图 Database中提取更细化的地图数据进行局部地图的放大表示。 Turnlist 表示与本模块的关系不是很大,此项功能的完成是改变 TURN_INF全局变量, HMI 会具体做处理。 根据功能点的对应任务,在 Task 之间的 Msg 时序中进行设计。 ( 1) 时间限制道路 Mark 表示,如图 4.3 所示。 第 4 章 系统设计 -17- 现 在 地 导 航 控 制1 . 现 在 地 信 息 7 . 导 航 输 出 信 息 通 知 6 . 描 画 时 机 判 定数 据 整 合2 . n o d e 信 息 取 得 要 求 3 . n o d e 信 息 取 得 应 答 4 . 导 航 数 据 整 合5 . 导 航 p o i n t 通 知 数 据 提 取8 . 描 画 处 理导 航 数 据 整 合 时需 区 分 时 间 限 制道 路 和 普 通 道 路地 图 描 画 图 4.3 时间限制道路 Mark 表示时 序图 需要注意的是导航控制需要对描画时机进行判定,决定何时输出导航信息。最后交由描画任务进行处理。时间限制道路 Mark 表示就是严格按照上述的时序实现的。 ( 2) 时间限制道路声音提示,如图 4.4 所示。 导 航 控 制2 . 声 音 发 生 要 求 1 .声 音 p h r a s e 做 成 和 时 机 判 定3 .发 声 处 理 处 理声 音 控 制4 .声 音 发 生 应 答 图 4.4 时间限制道路声音提示时序图 第 4 章 系统设计 -18- 时间道路限制声音提示在数据提取、数据整合两个任务的实现方式上和 Mark 表示是一样的。只是在导航控制和提示方式上有一些区别。导航控制任务接收到数据整合发送来的信息,需要进行声音 phrase 做成和进行时机判定在正确的时候将声 音发声要求发送给声音控制处理。 ( 3) 时间限制道路 turnlist 表示 时序图如图 4.5 所示。 现 在 地 数 据 整 合1 . 现 在 地 信 息 5 . T u r n l i s t 送 信 通 知 2 . n o d e 信 息 取 得 要 求 3 . n o d e 信 息 取 得 应 答 4 . 导 航 数 据 整 合A P I数 据 提 取在 T U R N L _ I N F 的 n d _ k i n d 中 增 加时 间 限 制 道 路 的 n o d e k i n d 。对 于 相 应 的 n d _ k i n d , 在 h m i 侧会 分 别 做 相 应 的 处 理 。数 据 整 合 时需 区 分 时 间 限 制道 路 和 普 通 道 路 图 4.5 时间限制道路 turnlist 表示时序图 时间限制道路 turnlist 表示 同样需要数据整合和数据提取任务协作得出必要的导航数据,不同的是,数据提取任务向 API 发送 Turnlist 送信通知,在 TURNL_INF 的 nd_kind中增加时间限制道路的 nodekind。对于相应的 nd_kind,在 hmi 层会分别做相应的处理。 ( 4) 时间限制道路扩大图表示。 扩大图表 示功能点在数据整合和数据处理任务上的设计与 Turnlist 表示相同,因此下面不再赘述,图 4.6表示的内容是扩大图表示在时序图设计上与 Turnlist表示上的不同之处。主要体现在导航控制、地图描画和 API 三个部分。导航控制模块需要先将导航输出信息通知发送给 API,由 API 将导航图的表示要求发送给地图描画模块。 第 4 章 系统设计 -19- 导 航 控 制地 图 描 画1 .导 航 图 准 备 要 求2 .导 航 图 准 备 应 答3 . 导 航 图 时 机 判 定A P I4 . 导 航 输 出 信 息 通 知5 . 导 航 图 表 示 要 求6 . 扩 大 图 表 示时 间 限 制 道 路在 初 期 导 航 时表 示 扩 大 图 图 4.6 时间限制道路扩大图表示时序图 ( 5) 时间限制道路 初期 导航警告 ons 表示 ,如图 4.7 所示。 导 航 控 制6 . 声 音 发 声 要 求 7 . 声 音 发 声 应 答 7 . 导 航 输 出 信 息 通 知 现 在 地 数 据 整 合1 . 现 在 地 信 息 2 . n o d e 信 息 取 得 要 求 3 . n o d e 信 息 取 得 应 答 4 . 导 航 数 据 整 合5 . 导 航 p o i n t 通 知 数 据 处 理声 音 控 制 A P I7 . 发 声 处 理8 . O N S 处 理6 . 导 航 控 制 图 4.7 时间限制道路 初期 导航警告 ons 表 示时序图 第 4 章 系统设计 -20- ONS 警告比较复杂,如上图所示。 ONS 的文字显示需要导航控制给 API 发送导航输出信息通知。由 API 进行 ONS 处理。 ONS 的声音提示需要导航控制给声音控制发送发声要求,声音控制进行发声处理。在道路限制导航模块前期的工作都是有数据整合和数据提取这两个任务完成的,导航控制起到了一个桥梁作用,同样也是一个时机决策的关键任务。然后根据具体功能由 API、描画、 HMI 和声音控制实现。 4.3.2. 重要函数设计 接口函数分为模块间接口函数和模块内接口函数。模块间接口函数 主要来完成不同模块之间的信息接收和发送的功能,而模块内接口函数是实现同一模块中的不同 Task 的信息接收和发送的功能。本设计主要在原有函数中保证原有功能不变的情况下,为了不改变此模块和其他模块通信接口,在原有函数基础上来添加新增的功能点。从而达到正确接收和发送所要求信息的功能。 ( 1) lmk_ginf_regu_pp() 在本函数设计中,通过影响 acs_kpinf , gdlst -regu_cont 等全局变量的标志位或者值,触发模块的函数判定条件,对全局变量的内容进行更改。表 4.3 为函数设计表。 表 4.3 lmk_ginf_regu_pp 函数说明 ( 2) dsp_gdcrs_inf_kind_gc() 表 4.4 为 dsp_gdcrs_inf_kind_gc 的函数设计表 函数名 lmk_ginf_regu_pp 文件名 Lmk_guide_set.c 功能概要 道路导航内容设定处理 记述形式 I4 lmk_ginf_regu_pp (ACS_KPNT_INF_PP *acs_kpinf, U1 *gdlst ) 参数 类型 变量名 I/O 说明 ACS_KPNT_INF_PP *acs_kpinf I 导航点数据首地址信息 U1 *gdlst I 导航 list地址 返回值 类型 I4 说明 值 PP_OK 正常结束 PP_NG 异常结束 详细说明 对全局的导航数据的内容进行设置,追加了对时间限制导航的数据的更新部分。对时间限制道路的信息,及时保存到变量中。 第 4 章 系统设计 -21- 表 4.4 dsp_gdcrs_inf_kind_gc 函数说明 在本函数中 ,根据径路导航内容的取得结果,对导航 Pattern 进行判断,对不表示为交差点 mark 的导航对象不做处理。需要表示的将标志位置 1。从而返回导航交差点专用信息( u4kind)给上级函数使用。 4.4. 收费站导航模块 本文中的收费站导航模块遵循 4.1 中论述系统设计方式。具体细节有所不同。在此模块中,导航控制和描画之间需要发送导航图准备要求和导航图准备应答的信息。描画内部需要有一个 Image 请求的过程。另外 API 层需要向描画任务发送导航图表示要求。 完成此模块的关键点是对收费站的判断和处理的增加,需要在全局结构体中添加新的标志位,以便在导航数据整合的时候,能够识别并正确作成收费站的相应数据。另外,在对 Package 外部的交互中,也要对 Package 之间的 Message 增加相应的附加信息。只有这样才能正确实现收费导航。 4.4.1. 功能点及对应 Task 分析设计 在对 Task 间的关系设计完成后,需要设计出收费站导航模块实现的功能点与系统 Task的对应关系,具体如表 4.5 所示。 函数名 dsp_gdcrs_inf_kind_gc 文件名 Dsp_gdcrs.c 功能概要 导航交差点专用信息设定 记述形式 U2 dsp_gdcrs_inf_kind_gc ( T_GUD_PT_GC *_gui_pnt, GPT_KRDT *_p_krdt) 参数 类型 变量名 I/O 说明 T_GUD_PT_GC *_gui_pnt I 导航交差点的基本数据的address GPT_KRDT *_p_krdt I 径路数据的 address 返回值 类型 U4 说明 值 u4kind 导航交差点专用信息 详细说明 对局部变量 u4kind进行设定, return给上级函数使用。对时间限制部分的处理在 switch中的 PATT_ID_DD处。 第 4 章 系统设计 -22- 表 4.5 收费导航功能点与系统 Task 对应关系 功能点 序号 功能任务 相关 Task Turnlist中收费站mark的表示 1 增加收费站标志位判断,处理收费站 数据 数据整合 2 根据设定 turnlist 的 node 种别,向 API 发送turnlist 信息通知 。 数据整合 3 在 turnlist 中显示收费站 mark HMI 收费站扩大图的表示 4 增加收费站标志位判断,处理收费站数据 数据整合 5 在交差点导航中,对收费站的 Pattern 进行判断和导航控制 导航控制 6 进行扩大图表示 地图描画 辅助 导航上的收费站显示 7 增加收费站标志位判断,处理收费站数据 数据整合 8 根据收费站的导航类型和该对应的导航时机设定 Message 中的信息, 发送 Message 导航控制 9 在 辅助 导航区域显示收费站信息 HMI 收费站声音导航 10 增加收费站标志位判断,处理收费站数据 数据整合 11 根据收费站的导航类型和该对应的导航时机设定 Message 中的信息,发送 Message 导航控制 12 根据导航控制发送过来的音声 ID 列,进行发声 VI 上表中很重要的一点是数据整合 Task 中增加收费站标志位判断,处理收费站数据。这一点是其它 Task 工作的基础和依据。另外比较特殊的一点是 HMI 中的次导航区域显示收费站信息。其它的与道路限制导航的设 计都一样遵循 4.1 中所论述的。 根据功能点及其相对应的系统 Task,在 Task 之间的 Msg 时序中进行设计 。 ( 1) Turnlist 中收费站 mark 的时序 表示 如图 4.8 所示。 需要注意的是在导航数据整合时增加对收费站 Pattern 的判断,作成收费站导航数据。本文主要设计的是导航数据做成的部分,前期的数据处理仍然是由数据整合和数据提取任务完成的。由于此功能是在一开始的 Turnlist 显示的,所以不需要有导航控制任务进行时机判定。 第 4 章 系统设计 -23- 现 在 地 数 据 整 合1 . 现 在 地 信 息 5 . T u r n l i s t 送 信 通 知 2 . n o d e 信 息 取 得 要 求 3 . n o d e 信 息 取 得 应 答 4 . 导 航 数 据 整 合A P I数 据 提 取在 T U R N L _ I N F 的 n d _ k i n d 中 增 加时 间 限 制 道 路 的 n o d e k i n d 。对 于 相 应 的 n d _ k i n d , 在 h m i 侧会 分 别 做 相 应 的 处 理 。增 加 对 收 费 站P a t t e r n 的 判 断 ,整 合 收 费 站 导 航 数 据 图 4.8 Turnlist 中 收费站 mark 的表示时序变更图 ( 2) 辅助导航上的收费站显示时序设计如图 4.9 所示。 导 航 控 制3 . 导 航 输 出 信 息 通 知A P I2 . 导 航 时 机 判 定增 加 对 收 费 站 的辅 助 导 航 的 提 示 时机 判 定1 . 导 航 P o i n t T a b l e作 成 图 4.9 辅助导航上的收费站显示时序图 第 4 章 系统设计 -24- 次导航上的收费站显示和 Turnlist 提示的区别在于需要进行时机判定,因为 Turnlist提示是在开始导航时就提示的,而次导航上的收费站提示是在车辆行驶的过程中提示的。如上图,导航控制 Task 需要进行导航时机判定。 ( 3) 收费站声音导航 Task 时序设计。 此部分设计和时间道路限制声音导航的 Task 时序设计只在数据整合任务和导航控制任务的 小细节上中有所不同,因此不再详细论述。本功能的数据做成任务是对收费站 Pattern的判断,并且在导航控制中对发生时机的判断需要依据表 3.1 中的内容。 ( 4) 收费站扩大图的表示如图 4.10。 现 在 地 数 据 整 合1 . 现 在 地 信 息 5 . 导 航 P o i n t 通 知 2 . n o d e 信 息 取 得 要 求 3 . n o d e 信 息 取 得 应 答 4 . 导 航 数 据 整 合数 据 提 取增 加 对 收 费 站P a t t e r n 的 判 断 ,整 合 收 费 站 导 航 数 据导 航 控 制 地 图 描 画6 . 导 航 图 准 备 要 求7 . 导 航 图 准 备 应 答A P I8 . 导 航 图 时 机 判 定9 . 导 航 输 出 信 息 通 知1 0 . 导 航 图 表 示 要 求1 1 . 扩 大 图 表 示增 加 对 收 费 站P a t t e r n 的 判 断图 4.10 收费站扩大图的表示时序图 针对收费站扩大图表示这一个功能点,主要的工作是在导航数据整合,导航图时机判定以及扩大图表示部分。整体设计思路与道路限制导航的扩大图标是功能有所相似。 第 4 章 系统设计 -25- 4.4.2. 重要函数设计 ( 1) set_gptn_common_pp( ) 在本函数设计中,根据交 差点 node 进行识别和条件判断对导航 Pattern 进行设定。取得导航 Pattern 后,进行判断。条件符合时,则取得全局变量 node 附加信息数据。表 4.6为该函数设计表。 表 4.6 set_gptn_common_pp 函数说明表 根据现在地信息中的交差点 mode 的类型进行判断,取得导航 Pattern 的值。然后根据*gui_ptn 的值进行判断和处理。取得 acs_kpinf 中的 node_info,根据 node_info 设定 gui_ptn。达到更新 gui_ptn 的内容,以提供给上级的调用函数使用。 ( 2) set_toll_dsp_dist_gc( ) 表 4.7 set_toll_dsp_dist_gc 函数说明 函数名 set_gptn_common_pp 功能概要 收费站开始表示的距离的设定处理 记述形式 I4 set_gptn_common_pp(LMK_LOCAL_EXT_PP *p_lext, ACS_KPNT_INF_PP *acs_kpinf,U2 *gui_ptn ) 参数 类型 变量名 I/O 说明 LMK_LOCAL_EXT_PP *p_lext I 现在地附属信息 ACS_KPNT_INF_PP *acs_kpinf I 导航 Point 数据地址 U2 *gui_ptn I 导航 Pattern 返回值 类型 I4 说明 值 PP_OK 正常结束 PP_NG 异常结束 函数名 set_toll_dsp_dist_gc 功能概要 收费站开始表示的距离的设定处理 记述形式 U4 set_toll_dsp_dist_gc( TOLL_ANNAI_DATA_GC *toll_inf ) 参数 类型 变量名 I/O 说明 TOLL_ANNAI_DATA_GC *toll_inf I 收费导航数据 address 返回值 类型 U4 说明 值 dsp_dist 开始表示的距离 0xffffffff 无效距离(初始化用) 第 4 章 系统设计 -26- 表 4.7 为该函数的设计表。具体就是根据全局的导航数据的内容进行判断,追加对收费站导航的判断和处理。如果导航点类型为收费站,作成收费站的导航时机距离数据。对于一个收费站,最多有 3 个提前导航的时机距离。 第 5 章 系统实现 -27- 第 5章 系统实现 5.1. 系统 Task 级实现 本文主要论述的两个功能均属于导航模块中的内容,现对导航模块的具体实现作简要论述。图 5.1 为导航模块的 Task 实现图。 D r a wA n n a iL O CR IG CN SP PA P IG MH M IG D现 在 地 信 息径 路 计 算 结 果 通 知N O D E 信 息 取 得 应 答导 航 输 出 信 息 通 知N O D E 信 息 取 得 要 求导 航 点 通 知【 e v e n t 】导 航 图 表 示 要 求导 航 图 描 画 要 求导 航 图 描 画 应 答D S导 航 信 息 要 求 导 航 信 息 应 答图 5.1 导航模块 Task 实现图 上图表示的是导航模块内 Task 之间的协同工作机制,其中比较重要的是 NS、 PP、 GC这三个 Task。 NS Task 的任务是 Node 信息提取,主要职能是与 DS 交互,取得地图数据和与 PP 交互,提供给 PP 某个 Node Link 对的详细信息; PP Task 为导航模块中最重要的控制Task,主要职能是 ON/OFF ROUTE 判定、各种通过判定,到达判定、获得导航数据以及导航点的数据做成; GC Task 为导航控制任务,职能是 做成 详细的表示导航数据和声音数据 控制导航提示的时机,通知上位模块进行导航。 Task 间的通信是通过底层的 PF(Platform)实现的。 PF 是 Application 与 Itron 系统之间的接口,同样可以视作 Task 通信的桥梁。两个 Task 之间的通信如图 5.2 所示。 T a s k A T a s k BP F1 .请 求 2 .请 求3 .应 答4 .应 答 图 5.2 Task 间通信示意图 第 5 章 系统实现 -28- TaskA 如果要想和 TaskB 通信 ,TaskA 必须先将请求信息发送给 PF,由 PF 发送信息请求给 TaskB,然后 TaskB 再将应答经由 PF 返回给 TaskA。 另 外,简单的来说道路是由 NODE 和 NODE 之间的 LINK 组成的,比如 NODE A 和NODE B 之间的道路是时间限制道路,那么 NDOE A 和 NODE B 的信息中就会有一个变量标志出来。理解这一点是论述下面内容的基础。 5.2. 道路限制导航模块 5.2.1. 系统实现概要 图 5.3 为该模块 Task 实现示意图。 G CP PH M I导 航 点 通 知M s g 接 受处 理导 航 点数 据 解 析时 间 限 制道 路 导 航数 据 更 新V O I C E G发 声 要 求导 航 输 出 信 息 通 知导 航 输 出 信 息 状 态 通 知时 间 限 制导 航 表 示描 画 要 求描 画图 5.3 道路限制导航模块 Task 实现示意图。 GC Task 是关键任务,包括 Msg 接受处理,导航点数据解析,时间限制导航数据更新和时间限制导航表示四个功能块。 Msg 接 受处理主要是将来自 PP 的导航点信息更新到总的全局的导航点总信息中。导航点数据解析将 Msg 接受处理任务发送来的信息进行判定和提取再发送给时间限制道路导航信息更新和时间限制导航表示。 时间限制导航表示主要是决定了导航提示时机的判定。 第 5 章 系统实现 -29- 5.2.2. 重要函数实现 在此功能模块中有两个关键函数,在系统设计中有过论述,下面具体介绍函数的实现由于是在 base 代码上进行修改,首先需要对相应结构体及其它变量进行增加或者修改。 ( 1) 结构体修改 NODE_INFO: 此新增结构体变量来存储导航 Point 的数据。具体新增成员已用加粗字体显示。新增的 标志位表示了时间限制道路有无的信息等。 各条件判断位采用位运算的方式,按照预先约定好的顺序表示当前状态。这样的设计最大程度上节约了内存使用量和运算时 间。表 5.1 显示了 NODE_INFO 的部分信息。 表 5.1 NODE_INFO 结构体(部分) 数据类型 成员名 成员功能 U2: 1 no_guide 是否导航 0:导航 /1:不导航 U2: 1 time_kisei Node 时间限制信息 0:无 /1:有 U2: 1 sapa_enter SAPA 入口 U2: 1 etc 其他 U2: 1 kakudai_flg 扩大图信息 0:无 /1:有 U2: 1 u_turn_flg U Turn 判定结果信息 0:无 /1:有 GUIDT_PNT_INF:此结构体存储 Node 的共通信息,其中的 pnt_add 成员是标志判断用, bit4 用来判断有无时间规则道路。表 5.2 显示了 GUIDT_PNT_INF 的部分信息。 表 5.2 GUIDT_PNT_INF 结构体(部分) 数据类型 成员名 成员功能 GUIDT_LNK_ND node Node 信息 U2 pnt_add 点附加信息: BIT0:行驶车线 0=左侧行驶、 1=右侧行驶 BIT4:时间限制道路行驶 0:无 /1:有 BIT5:常时限制道路行驶 0:无 /1:有 第 5 章 系统实现 -30- ( 2) 函数流程图 lmk_ginf_regu_pp:图 5.4 为 lmk_ginf_regu_pp 的函数流程图。 开 始初 始 化 处 理 导 航 列 表 的 地 址判 断 导 航 数 据是 否 有 效判 断 a c s _ k p i n f 中 的 信息 是 否 有 效相 应 数 据 处 理是 否 为入 口 场 合设 定 全 局 变 量r e g u _ c o n t - k i n d 为R E G _ K I N D _ I NYYY是 否 为出 口 场 合N设 定 全 局 变 量r e g u _ c o n t - k i n d 为R E G _ K I N D _ I NY是 否 为P o i n t 场 合N设 定 全 局 变 量r e g u _ c o n t - k i n d 为R E G _ K I N D _ P O I N TYR e t u r n P P _ N G R e t u r n P P _ O KNNN结 束 图 5.4 lmk_ginf_regu_pp 流程图 第 5 章 系统实现 -31- 本函数主要是通过影响 acs_kpinf , (*gdlst).regu_cont 等全局变量的标志位或者值,触发模块的函数判定条件,对 全局变量的内容进行更改和对全局的导航数据的内容进行设置,首先判断导航点数据首地址 acs_kpinf 是否有效,若无效返回 PP_NG(异常结束 )。如果是有效的则再进行相应数据处理之后继续判断是否为入口场合、出口场合或者 Point 场合。根据以上判断确定 regu_cont 的值。最后返回 PP_OK(正常结束)。 dsp_gdcrs_inf_kind_gc:图 5.5 为 dsp_gdcrs_inf_kind_gc 的函数流程图。 开 始初 始 化 处 理u 4 k i n d = 0c h k _ r e s i _ m o d e _ g c径 路 导 航 内 容 容 取 得 成 功 ?YS w i t c h ( 导 航P a t t e r n )R e t u r n ( U 2 ) u 4 k i n dNP A T T _ I D _ B BP A T T _ I D _ W A Y P N TP A T T _ I D _ D D其 它 P t t e r nd e f a u l t导 航 对 象 点 m a r k 表 示 为 交差 点 的 场 合 ?u 4 k i n d | = B I T 0 ;YN相 应 数 据 处 理 图 5.5 dsp_gdcrs_inf_kind_gc 流程图 第 5 章 系统实现 -32- 本函数主要是对局部变量 u4kind 进行设定,返回给上级函数使用。对时间限制部分的处理在 switch 中的 PATT_ID_DD 处。在本函数中,根据径路导航内容的取得结果,对导航Pattern进行判断,对不表示为交差点 mark的导航对象不做处理。需要表示的将标志位置 1 。从而返回导航交差点专用信息( u4kind)给上级函数使用。 ( 3) 代码编写 lmk_ginf_regu_pp() I4 lmk_ginf_regu_pp (ACS_KPNT_INF_PP *acs_kpinf, U1 *gdlst ) /*- variables -*/ GDLIST_PP *prgd; /* 导航 list结构体地址 */ GPT_KDRT_REG *regu_cont; /* 规制 道路 导航 内容 */ NODE_INFO *node_info; /* node附加信息 data */ /* 初始化处理 */ prgd = (GDLIST_PP*)gdlst; /* 取得全局变量地址 */ if ( (prgd-valid & BIT_VALID_REGU_CONT) = 0 ) /* 导航数据有效 */ return ( PP_OK ); /* 处 理対象判定 */ /* 入口 场 合 */ if ( (lattr_sl.time_kisei = FLAG_OFF)& (lattr_tl.time_kisei = FLAG_ON ) ) regu_cont-kind = REG_KIND_IN; /* 出口 场 合 */ else if ( (lattr_sl.time_kisei = FLAG_ON ) & (lattr_tl.time_kisei = FLAG_OFF) ) regu_cont-kind = REG_KIND_OUT; /* 时间限制 Point 场 合 */ else if ( ( lattr_sl.time_kisei = FLAG_OFF) & ( lattr_tl.time_kisei = FLAG_OFF) & (node_info-time_kisei = FLAG_ON) regu_cont-kind = REG_KIND_POINT; return ( PP_OK ); /* 结束处理 */ dsp_gdcrs_inf_kind_gc()的代码编写相对比较简单,主要就是对导航 Pattern 的判定,在此不贴出代码。 第 5 章 系统实现 -33- 5.3. 收费站导航模块 5.3.1. 系统实现概要 本模块的重点同样是在 GC Task,具体示意图与道路导航限制模块大致相似,此处不再给出。收费站导航数据更新的任务是 根据导航中对应径路导航信息中的收费站导航使用的区间距离信息进行设定,检索到第一 个收费站导航有效径路数据时,将对应的信息设定到全局导航点所对应的收费站导航 data 中; 收费站导航表示完成了收费站导航表示内容的作成,表示时机的取得。还有设定导航输出信息通知对应的 Event。 5.3.2. 重要函数实现 此模块同样有两个重要函数,以下论述具体实现,首先对相关结构体变量进行修改。 ( 1) 结构体修改 此部分涉及到三个已有结构体的修改和一个新增结构体,结构体 MNG_GUID_PNT_PP用来保存综合的 Point 信息, MNG_GUID_PNT_PP 中的变量 MNG_KEIRO_PNT_PP 是径路导航 Point 管理 Table, MNG_KEIRO_PNT_PP 中的变量 GPT_KRDT 结构体用来保存具体导航点信息,在 GPT_KRDT 中新增 GPT_KRD_TLL 结构体来 存储收 费站相关信息表 5.3为 GPT_KRD_TLL 结构体的部分构成。 表 5.3 GPT_KDRT_TLL 结构体(部分) 数据类型 成员名 成员功能 U1: 1 kind 数据有无 0:无 /1:有 U2: 1 unit 货币单位 U4: 1 fee 收费金额 U2: 1 car_kind 车种 U1: 1 ttxt_add_flg 收费站名称信息有无 0:无 /1:有 ( 2) 函数流程图 set_gptn_common_pp:图 5.6 为该函数的流程图。根据现在地信息中的交差点 mode的类型进行判断,取得导航 Pattern 的值。然后根据 *gui_ptn 的值进行判断和处理。取得acs_kpinf 中的 node_info,根据 node_info 设定 gui_ptn。达到更新 gui_ptn 的内容,以提供给上级的调用函数使用。 第 5 章 系统实现 -34- 开 始初 始 化 函 数 局 部 变 量取 得 p _ l e x t 中 的 交 差 点 m o d eL o o p ( c n t )循 环 F O R _ L O O P _ C N T 1 次c n t F O R _ L O O P _ C N T 1( 未 完 成 循 环 次 数 )交 差 点 m o d e 为 目 的 地 ?Y* g u i _ p t n = P A T T _ I D _ D E S T I N ;交 差 点 m o d e 为 通 过点 ?NY* g u i _ p t n = P A T T _ I D _ M I T I N AR I ; ( 各 交 差 点 m o d e 判 断 和 处 理 )NL o o pN其 他 非 共 通 的 m o d e 设 定对 g u i _ p t n 进 行 判 断是 否 需 要 诱 导Y取 得 n o d e 附 加 信 息 数 据R e t u r n P P _ O KN结 束Y 图 5.6 set_gptn_common_pp 函数流程图 set_toll_dsp_dist_gc:该函数流程比较复杂。其中图 5.7 为 set_toll_dsp_dist_gc 的函数主流程图。图 5.8、图 5.9、和图 5.10 分别表示了函数主流程图中的三个重要组成部分,单独画出流程图。 第 5 章 系统实现 -35- 开 始局 部 变 量 声 明 初 始 化 处 理收 费 站 导 航数 据 是 否 有 效取 得 导 航 点 索 引 的 A d d r e s sA以 上 两 个 P o i n t 信 息取 得 成 功B导 航 点 D a t a 设 定CR e t u r n d s p _ d i s t结 束导 航 点 T a b l e 数 据 置 0YYN 图 5.7 set_toll_dsp_dist_gc 主流程图 首先对局部变量进行初始化处理,然后取得导航点索引地址,经过下面三个过程达到设定导航距离的目的。具体就是根据全局的导航数据的内容进行判断,追加对收费站导航的判断和处理。如果导航点类型为收费站,作成收费 站的导航时机距离数据。对于一个收费站,最多有 3 个提前导航的时机距离。 图 5.8 为 A 过程,具体是从径路数据取得径路 Point 索引中第一个与收费站导航 Point的下一个交叉点信息一致的导航 Point,同时保存收费站导航 Point将相应值赋给 gui_pnt1,gui_pnt0。 第 5 章 系统实现 -36- AL o o p( l o o p = 0 ; l o o p ( I 4 ) n u m I d x ; l o o p + + )l o o p = 0 ; C n t - -c n t = 0Yw k _ p n t = g e t _ G u i P u t _ g c ( )取 得 导 航 点 的基 本 数 据 地 址 有 效 ?Yg u i _ p n t k r _ p n t n o = w k _ p n t ;保 存 到 导 航 点 T a b le 中( k r _ p n t n o + 1 ) T O L L _ B F R _ P N T _ M AXYL o o pNNd s t _ g e t _ d o u b l e _ g c ( )连 续 导 航 距 离 的 取 得到 前 一 个 导 航 点 的 距 离 = 连 续 导 航 距 离k r _ p n t n o = 1 ;结 束k r _ p n t n o = 0 ;NY 图 5.9 set_toll_dsp_dist_gc B 流程图 需要注意的是最后一个判断条件,如果连续的导航距离较短,需要在一次导航中完成提示。例如两个需要转向的地方相距 50 米,那么就需要在一次导航提示中显示出来,如果分两次导航提示,司机可能在第一个导航点过去之后来不及按照第二次的导航提示行 第 5 章 系统实现 -38- 驶,导致行驶错误。 C 过程是对收费站表示区间距离的设定,简单的 说就是在收费站前多少米处进行提示。具体过程如图 5.10 所示。 Ck r _ p n t n o = = 0Yd s t _ g e t _ a u t o _ d s t _ g c ( )d s p _ d i s t 设 定取 得 自 动 发 声 距 离N自 动 发 声 距 离 有 效Y设 定 收 费 站 导 航 距 离要 加 上 发 声 距 离收 费 站 导 航 距 离 为 全 局 变 量 中的 收 费 站 导 航 数 据 中 的 距 离N结 束Y 图 5.10 set_toll_dsp_dist_gc C 流程图 在导航系统进行声音提示时车辆仍然在行驶,这段时间车辆行驶的距离需要计算在内,另外全局变量中收费站导航数据中的距离在表 3.1 中有介绍。 ( 3) 代

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论