毕业设计(论文)-LABVIEW在智能车上的应用.doc_第1页
毕业设计(论文)-LABVIEW在智能车上的应用.doc_第2页
已阅读5页,还剩73页未读 继续免费阅读

下载本文档

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

文档简介

labview在智能车上的应用摘要清华大学承办的第五届“飞思卡尔”杯全国大学生智能车大赛,要求参赛者在提供的模型车体及主控制器芯片基础上,设计制作具有自主道路识别能力的智能赛车,在赛道上以最快速度完成赛程者为优胜。本课题以智能车比赛为背景,以缩短智能车控制算法的开发周期为目的,基于虚拟仪器labview开发了智能车仿真软件,为智能车比赛提供可以离线验证控制算法的软件平台。本文首先对智能车仿真模拟系统的运行模型进行了分析,主要包括赛道设计、赛车设计、进行仿真和结果回放四个部分,然后根据这几部分进行软件开发,但在实际开发中并没有完成所有功能,只完成了其中智能车仿真系统的一部分,并对该部分的开发过程进行了详细的分析。关键词:labview 仿真 智能车 虚拟仪器abstract tsinghua university hosted the firth college student competition, the freescale cup. the participants are required to provide the intelligent vehicle model capacity of the self-road-recognize based on the designed model-car and the micro-controller chip. the winner was the first one finished the race on the right road.based on this competition, this paper, aims at reducing the development period of the control algorithm, provides the software platform for the off-line test of the race car control algorithm by using labview.this paper firstly intelligent vehicle simulation system operation model are analyzed, a simulation analysis system has four functions, namely the circuit design, the car carries on the simulation, and design, and then according to the results of playback software development, but the framework in developing and not finished all the functions of intelligence, only completed the car mode, and the system in the development process of parts are analyzed in detail.key word: labview; simulation; intelligent vehicle; virtual instrument目录摘要iabstractii1.绪论11.1课题研究的背景11.2本课题研究的内容和意义11.3中国大学生智能车设计竞赛32.智能车仿真系统的开发软件52.1 开发工具labview概述52.2 labview的基本概念62.3 labview的操作模板92.4 labview中的基本数据类型及其相互转换172.5 labview平台的特点213.仿真软件的设计233.1建立赛道功能模块233.2建立智能车功能模块253.3仿真功能模块263.4数据分析功能模块284.智能车仿真系统程序294.1 流程图介绍294.2程序代码及注释305.总结与展望515.1本文主要研究成果515.2下一步的研究方向525.3展望53参考文献54致谢56附录57741.绪论1.1课题研究的背景近年来,随着经济的发展和社会的进步,道路的通行能力、交通的安全性、能源的损耗、环境污染等问题越来越突出。车辆在交通拥挤的市区行使驾驶人员必须完成大量的换档和踩离合器的工作,大约在每分钟完成2030个手脚协调动,繁重的驾驶工作和驾驶人员的疲劳是交通事故频发的重要原因。随着经济的发展,车辆拥有量的增加,非职业驾驶人员的人数增多,是导致交通事故频繁发生的又一重要原因。交通问题已经成为全球范围令人困扰的严重问题,因此,如何提高交通安全性己经成为急需解决的社会性问题。道路偏离系统、疲劳检测系统、自动巡航控制等都可以大大减轻驾驶人员的驾驶工作,提高交通系统的安全性。这些问题的解决引发了新的研究和应用的热点,比如自动车辆驾驶,通过计算机控制、人工智能和通信技术实现更好的通行能力和更安全的行驶12。从汽车出现的时候起,人们就有了汽车自动驾驶的设想。随着相关学科的不断发展,使得人类的这一梦想逐渐成为现实。上海交大的cyberc3项目组,开展了面向城市环境的无人自动驾驶车辆研究,目的是为未来的城市提供一种灵活、高效、安全、环保的新型公共交通工具。另外,美国国防远景研究规划局从2004年开始,每年举办无人车大奖赛,赛车需要自主地穿越沙漠地带,总行程达240公里。2006年8月在清华大学举办的智能车大赛就是在这样的背景下应运而生的。1.2本课题研究的内容和意义在智能车的实际设计过程中,面临着如下几个问题:第一,为了测试赛车在不同的赛道上都有稳定的发挥,就不得不制作出各种形式的赛道来测试赛车的性能,但是在实际中,不可能为智能车设计各种各样的比赛赛道来试验智能车的比赛效果,在经济上和效率上都是不能被接受的;第二,一个控制算法的实现和验证也需要有一个周期,在比赛设计的有限时间里,选择合适的控制算法,并且试验它的有效性,是一个比较艰巨的任务,如何快速验证我们所设计的控制算法,缩短开发周期,在有限的时间里尽可能开发出最好最优的控制算法,对我们提出了挑战;第三,分析车的运行过程进而分析车的控制方法是分析和优化控制算法的一个有效途径,实际上车的运行是一个快速的过程,是转瞬即逝的,很难把车的实际运行过程复现出来的,这样就缺失了有效的分析方法。这些问题都是能够顺利完成比赛的不可避免的障碍。基于以上的问题,为了能够快速的验证智能车的设计方案,缩短其开发周期,让参赛队伍有充足的时间来研究更合适的方案和策略,需要有一个软件仿真平台。本文对智能车的运行过程进行分析,研究了智能车整体运动过程,对其运动过程的各环节建立了数学模型,并且利用了虚拟仪器软件labview为智能车比赛开发了一个比赛仿真以及理论实验平台,以此实现以下几个部分的功能:1) 赛道建模:可以根据实际赛道的尺寸大小建立起软件的比赛赛道。2) 赛车建模:对赛车基本参数的设置以及路径检测方案的设计。3) 控制算法的仿真实验:可以设计好自己的控制算法对赛车进行运行仿真。4) 比赛仿真的后期分析:可以根据运行过程中保存的数据对运行过程分析,可以对控制算法进行优化。最后对赛车转弯时间最优问题进行了研究,提出三种转弯策略,通过仿真比较给出了缩短比赛时间,提高比赛成绩的较好的转弯策略。1.3中国大学生智能车设计竞赛在学习韩国大学生智能汽车竞赛后,我国也组织了自己的大学生智能汽车竞赛,以加强大学生实践能力、创新能力和团队精神的培养。飞思卡尔半导体公司作为比赛的协办单位,从而成立里“飞思卡尔”杯大学生智能汽车设计竞赛。所设计的智能车模型如图1.1所示。图1.1智能车模型1.3.1中国大学生智能车设计竞赛简介我国大学生“飞思卡尔”杯智能汽车竞赛,是在统一汽车模型平台上,使用飞思卡尔半导体公司的8位、16位微控制器作为核心控制模块,自主构思控制方案进行系统设计,包括传感器信号采集处理、动力电机驱动、转向舵机控制以及控制算法软件开发等,完成智能车工程制作及调试,于指定日期与地点参加各分赛区的场地比赛,在获得决赛资格后,参加全国决赛区的场地比赛。参赛队伍之名次(成绩)由赛车现场成功完成赛道比赛时间为主、技术报告和制作工程质量评分为辅来决定3。 1.3.2中国大学生智能车设计竞赛的意义全国大学生智能汽车竞赛是教育部为了加强大学生实践、创新能力和团队精神的培养,在己举办的全国数学建模、电子设计、机械设计、结构设计等4大专业竞赛的基础上而设立的第五项大学生设计竞赛。该竞赛与已举办的教育部4大专业竞赛不同,是以迅猛发展的汽车电子为背景,涵盖了控制、模式识别、传感技术、电子、电气、计算机、机械等多个学科交叉的科技创意性比赛,这对进一步深化高等工程教育改革,培养本科生获取知识、应用知识的能力及创新意识,培养硕士生从事科学、技术研究能力,培养博士生知识、技术创新能力具有重要意义。2.智能车仿真系统的开发软件2.1 开发工具labview概述labview(laboratory virtual instrument engineering workbench)是一种图形化的程序开发环境,由美国国家仪器(national instrument)公司研制开发的,类似于c和basic开发环境,但是labview与其他计算机语言的显著区别是:其他计算机语言都是采用基于文本的语言产生代码,而labview使用的是图形化编辑语言来编写程序,产生的程序是框图的形式。在开发过程中,用图标就可以代替应用系统的硬件部分,这样就可以省去了很多购买硬件的资金,以节省大量的研发资金。labview中尽可能的利用了工程师们所熟知的术语、图标和概念,是一个工业标准的开发环境。它结合了图形化编程方式的高性能和灵活性以及专为测试、测量与自动化控制应用设计的高端性能和配置,能为数据采集、仪器控制、测量分析与数据显示等各种应用提供必要的开发工具,这能帮助工程师们提高工作效率4。labview广泛地被工业界、学术界和研究实验室所接受,视为一个标准的数据采集和仪器控制软件。labview集成了与满足gpib、vxi、rs-232和rs-485协议的硬件及数据采集卡通讯的全部功能。它还内置了便于应用tcp/ip、activex等软件标准的库函数,这是一个功能强大且灵活的软件。利用它可以方便地建立自己的虚拟仪器,其图形化的界面使得编程及使用过程都生动有趣。图形化的程序语言,又称为“g”语言。使用这种语言编程时,基本上不写程序代码,取而代之的是流程图或框图。它尽可能利用了技术人员、科学家、工程师所熟悉的术语、图标和概念,因此,labview是一个面向最终用户的工具。它可以增强你构建自己的科学和工程系统的能力,提供了实现仪器编程和数据采集系统的便捷途径。使用它进行原理研究、设计、测试并实现仪器系统时,可以大大提高工作效率。虚拟仪器(virtual instrumentation)是基于计算机的仪器。计算机和仪器的密切结合是目前仪器发展的一个重要方向。粗略地说这种结合有两种方式,一种是将计算机装入仪器,其典型的例子就是所谓智能化的仪器。随着计算机功能的日益强大以及其体积的日趋缩小,这类仪器功能也越来越强大,目前已经出现含嵌入式系统的仪器。另一种方式是将仪器装入计算机。以通用的计算机硬件及操作系统为依托,实现各种仪器功能。虚拟仪器主要是指这种方式。虚拟仪器实际上是一个按照仪器需求组织的数据采集系统,虚拟仪器的研究中涉及的基础理论主要有计算机数据采集和数字信号处理。目前在这一领域内,使用较为广泛的计算机语言是美国ni公司的labview。利用labview,可产生独立运行的可执行文件,它是一个真正的32位编译器。像许多重要的软件一样,labview提供了windows、unix、linux、macintosh的多种版本4。 它主要的方便就是,一个硬件的情况下,可以通过改变软件,就可以实现不同的仪器仪表的功能,非常方便快捷,是相当于软件即硬件。2.2 labview的基本概念2.2.1 vi的概念 用labview开发出的应用程序被称作vi (virtual instrument的英文简写,即虚拟仪器),它的表现形式和功能类似于实际的仪器,也很容易改变设置和功能。vi是由图标、连线以及框图构成的应用程序,有front panel(前面板)、block diagram(后面板)以及图标/连结器(icon connector)三部分构成。前面板是应用程序的界面,是人机交互的窗口,主要由controls(控制量)和indicators(显示量)构成。当程序运行时,用户通过控制量(例如用户输入数据的文本框以及一些按钮、开关灯)输入数据和控制程序的运行,而显示量(例如显示波形的示波器控件灯)则主要用于显示程序运行的结果。如果将vi程序比作一台仪器的话,那么,控制量就是仪器的数据输入端口和控制开关,用于给程序提供输入数据和控制信号,而显示量则是仪器的显示窗口,用于显示经过程序分析、处理后的结果,如图2.1所示,显然,并非简单地画两个控件就可以运行,在前面板后还有一个与之配套的流程图。图2.1前面板界面流程图提供vi的图形化源程序,在流程图中对vi编程,以控制和操纵定义在前面板上的输入和输出功能。流程图中包括前面板上的控件的连线端子,还有一些前面板上没有,但编程必须有的东西,例如函数、结构和连线等。图2.2是一个随机信号发生器的流程图,从中可以看到流程图中包括了前面板上的开关和随机数显示器的连线端子,还有一个随机数发生器的函数及程序的循环结构。随机数发生器通过连线将产生的随机信号送到显示控件,为了使它持续工作下去,设置了一个whileloop循环,由开关控制这一循环的结束。如果将vi与标准仪器相比较,那么前面板上的东西就是仪器面板上的东西,而流程图卜的东西相当于仪器箱内的东西。在许多情况下,使用vi可以仿真标准仪器,不仅在屏幕上出现一个惟妙惟肖的标准仪器面板,而且其功能也与标准仪器相差无几。图2.2随机信号发生器的流程图2.2.2子vi与子程序和其他编程语言一样,在labview中也存在子程序的概念,在labview中的子程序被称作子vi。在程序中使用子vi有以下优点:1) 将一些代码封装成为一个子vi(即一个图标),可以使程序的结构变得更加清晰、明了。2) 将整个程序划分为若干模块,每个模块用一个或者几个子vi实现,易于程序的编写和维护。3) 将一些常用的功能编制成一个子vi,在需要的时候可以直接调用,不用重新编写这部分程序,因而子vi有利于代码复用。2.3 labview的操作模板在labview的用户界面上,应特别注意它提供的操作模板,包括工具(tools)模板、控制(eontrols)模板和函数(funetions)模板5。这些模板集中反映了该软件的功能与特征,对labview程序的创建、设计和调试具有重要的作用。2.3.1工具模板(tools palette)具模板如图2.3所示,该模板包含各种用于创建、修改labview中的对象,并可对vi程序进行调试。一般在启动labview时,该模板就会出现,如果该模板没有出现,则可以在windows菜单下选择show tools palette命令以显示该模板。当从模板内。选择了任一种工具后,鼠标箭头就会变成该工具相应的形状。图2.3工具模板当从windows菜单下选择了show helpwindow功能后,把工具模板内选定的任种工具光标放在流程图程序的子程序(subvi)或图标上,就会显示相应的帮助信息。工具模板中各种不同工具的图标及其相应的功能如表2.1所示。表2.1工具模板图标、名称及功能图标名称功能1operate value(操作值)用于操作前面板的控制和显示。使用它向数字或字符串控制中键入值时,工具会变成标签工具2position/size/select (选择)用于选择、移动或改变对象的大小。当它用于改变对象的连框大小时,会变成相应形状。3edit text(编辑文本)用于输入标签文本或者创建自由标签。当创建自由标签时它会变成相应形状。4connect gyre(连线)用于在流程图程序上连接对象。如果联机帮助的窗口被打开时,把该工具放在任一条连线上,就会显示相应的数据类型。5object shortcut menu(对象菜单)用鼠标左键可以弹出对象的弹出式菜单。6scroll windows (窗口漫游)使用该工具就可以不需要使用滚动条而在窗口中漫游。7set/clear breakpoint(断点设置/清除)使用该工具在vi的流程图对象上设置断点。8probe data(数据探针)可在框图程序内的数据流线上设置探针。通过控制窗口来观察该数据流线上的数据变化状况。9get color(颜色提取)使用该工具来提取颜色用于编辑其他的对象。10 set color(颜色设置)用来给对象定义颜色。它也显示出对象的前景色和背景色。2.3.2控制模板(controls palette)该模板用来给前面板设置各种所需的控制量(controls)和显示量(indicators),主要用来创建前面板中的对象,构建程序的界面。每个图标代表一类子模板。如果控制模板不显示,可以用城windows菜单的show controls palette功能打开它,也可以在前面板的空白处,点击鼠标右键,以弹出控制模板,如图2.4所示。图2.4控件模板控件模板包括如下所示的一些子模板。子模板中包括的对象,在功能方面用文字简要介绍6,如表2.2所示。表2.2控件面板的图标、名称及功能图标子模板名称功能1numeric(数值量)数值的控制和显示。包含数字式、指针式显示表盘及各种输入框。2boolean(布尔量)逻辑数值的控制和显示。包含各种布尔开关、按钮以及指示灯等。3string&path(字符串和路径)字符串和路径的控制和显示。4array&cluste(数组和簇)数组和簇的控制和显示。5 list&table(列表和表格)列表和表格的控制和显示6 graph(图形显示)显示数据结果的趋势图和曲线图。7ring&enum环与枚举)环与枚举的控制和显示。8vo(输入/输出功能)输入/输出功能。于操作ole, activex等功能。9refnum参考数10digilog controls(数字控制)数字控制11classic controls(经典控制)经典控制,指以前版本软件的面板图标。12actlvex用于activex等功能。13decorations(装饰)用于给前面板进行装饰的各种图形对象。14select a controls(控制选择)调用存储在文件中的控制和显示的接口。15user controls(用户控制)用户自定义的控制和显示。2.3.3函数模板(functions palette)函数模板是创建流程图程序的工具,包含了编写程序的过程中会用到的函数和vi程序,主要用于构建后面板的对象。该模板上的每一个顶层图标都表示一个子模板。若函数模板不出现,则可以用windows菜单下的show functions palette功能打开它,也可以在流程图程序窗口的空白处点击鼠标右键以弹出功能模板。函数模板如图2.5所示。 图2.5函数面板其子模块函数模板包括如下所示的一些子模板。子模板中包括的对象,在功能方面用文字简要介绍(个别不常用的子模块未包含)6,如表2.3所示。表2.3函数面板的图标、名称及功能图标子模板名称功能1structure(结构)包括程序控制结构命令,例如循环控制等,以及全局变量和局部变量。2vumeric(数值运算)包括各种常用的数值运算,还包括数制转换、三角函数、对数、复数等运算, 以及各种数值常数。3boolean(布尔运算)包括各种逻辑运算符以及布尔常数。4string(字符串运算)包含各种字符串操作函数、数值与字符串之间的转换函数,以及字符串)常数等。5array(数组)包括数组运算函数、数组转换函数,以及常数数组等。6cluster(簇)包括簇的处理函数,以及群常数等。这里的群相当于c语言中的结构。7comparison(比较)包括各种比较运算函数,如大于、小于、等于。8time&dialog(时间和对话框)包括对话框窗口、时间和出错处理函数等。9file i/o(文件输入/输出)包括处理文件输入/输出的程序和函数。10data acquisition(数据采集)包括数据采集硬件的驱动,以及信号调理所需的各种功能模块。11waveform(波形)各种波形处理工具12analyze(分析)信号发生、时域及频域分析功能模块及数学工具。13instrument i/o(仪器输入/输出)包括gpib(488, 488.2)、串行、vxi仪器控制的程序和函数,以及visa的操作功能函数。14motion&vision(运动与景像)15mathematics(数学)包括统计、曲线拟合、公式框节点等功能模块,以及数值微分、积分等数值计算工具模块。16communication(通讯)包括tcp, dde. activex和ole等功能的处理模块。17application control(应用控制)包括动态调用vi,标准可执行程序的功能函数。18graphics&sound(图形与声音)包括3d、opengl、声音播放等功能模块。包括调用动态连接库和cin节点等功能的处理模板。19tutorial(示教课程)包括labv1ew示教程序。20report generation(文档生成)21advanced(高级功能)22select a vi(选择子vi)23 user library(用户子vi库)2.4 labview中的基本数据类型及其相互转换与visual c+等基于文本模式的编程语言一样,labview的程序设计中也要涉及常量、变量、函数的概念以及各种数据类型,这些是用labview进行程序设计的基础,也是构建labview应用程序的基石。2.4.1 labview中的基本数据类型据类型。 labview中的数据被分为控制量和显示量,前者用于用户控制程序运行和向程序传递数据,后者主要负责数据的显示和表达。根据数据类型的不同,控制量和显示量划分为数值型,布尔型、字符串型、数组型、簇型、波形数据以及动态数据类型等多种数据类型,各种类型之间可以通过一些函数和vi进行类型转换,以使用程序的需要。 在labview中,各种不同的数据类型,其变量的图标边框的颜色不同。因而,从图表边框的颜色就可以分辨其数据类型7。1) 数值型数据类型按照精度和数据的范围,数值型数据可以方程以下几类:字节型:以一个字节(8位)的空间来存储整数数据。又可以分成有符号字节(取值范围为-128127)和无符号字节型(取值范围为0255 )。字型:以一个字(由两个字节组成,共16位)的空间来存储整数数据。又可以分成有符号字节(取值范围为-3276832767)和无符号字节型(取值范围为065535 )。双子型(即长整型):以一个双字(由两个字节组成,共32位)的空间来存储整数数据。又可以分成有符号长整型(取值范围为-2147483648 2147483647)和无符号长整型(取值范围为04294967295 )。单精度浮点型:用32位ieee标准格式存储单精度浮点型数据。又分成实数单精度浮点型数据和复数单精度浮点型数据两种。双精度浮点型:用64位ieee标准格式存储双精度浮点型数据。又分成实数双精度浮点型数据和复数双精度浮点型数据两种。扩展精度的浮点数类型:分成实数扩展精度的浮点数类型数据和复数扩展精度的浮点数类型数据两种。该数据类型的精度和占用内存的大小因操作系统而异。上述的数值型数据类型,随着精度的提高和数据类型所表示数据范围的扩大,其消耗的系统资源也随之增长,因而,为了提高程序运行的效率,在满足使用要求的前提下,我们应该尽量选择精度和数据范围相对小的数据类型。2) 布尔型数据类型在labview中,布尔型数据采用一个字节(c8位)的空间来存储数据。如果数据为0,则布尔型数据为false,否则为true 。3) 数组数据类型在labview中,数组的概念是一组相同数据类型数据的集合。不同数据类型的数组的图标是在原有数据类型图标外面加上方括号。 4) 路径数据类型在labview中,以包含数据类型成员及其数量的句柄来存储数据。5) 字符串数据类型在labview中,字符串数据类型是以整型数组形式来存储的。6) 簇数据类型和数组不同的是,在labview中“簇”可以用来存储不同数据类型的数据。空簇(里面没有任何对象的簇)和混合型簇的表示图标是不一样的。7) 波形数据类型波形数据类型是labview中用来存储波形数据的一种数据类型。8) 句柄数据类型在labview中,句柄的含义是作为某一个对象如文件、设备的标志,在程序中可以通过句柄实现对这一对象的访问。9) v0通道号数据类型用来指明labview中设备的v0通道号。10)动态数据类型labview支持一种新的数据类型动态数据类型,这种类型的数据在于应用时不必具体指定其数据类型,在程序运行过程中,根据需要,对象被动态赋予各种数据类型。2.4.2数据类型间的转换由于程序设计的具体需要,有些时候需要进行数据类型间的转换,将一种数据类型转换为另一种数据类型。在labview中的数据类型转换主要依赖于数据类型转换函数来完成,这些函数按照功能被安排在函数模板的各个子模板中。例如用于数值型对象与其他对象之间进行数据类型转换的函数位于函数模板中的numeri子模板中,如图2.6所示。在函数模板中的string子模板中,也有用于字符串与数值型对象之间数据类型进行转换的函数,也有用于字符串、数组以及路径对象之间数据类型转换的函数7。 图2.6用于数值型对象与其他类型对象之间数据类型转换的函数2.4.3局部变量和全局变量 labview通过数据流驱动的方式来控制程序的运行,在程序中用连线连接多个控件以交换数据。这种驱动方式和数据交换方式在某些情况下可能会遇到麻烦,例如程序复杂时,连线会非常混乱,其结果是导致程序的可读性变得很差,有些时候甚至影响程序的正常工作以及程序员的调试和管理。另外,仅仅依靠连线也无法进行两个vi程序之间的数据交换。labview中的局部变量和全局变量在某种程度上可以解决这个问题,因而在labview程序设计中具有重要的意义。局部变量主要用于在程序内部传递数据,它既可以作为控制量向其他对象传递数据,也可以作为显示量接收其他对象传递过来的数据。在labview中,建立局部变量的方式有两种。第一种方式是直接在函数模板中的structure子模板中选择local variable,并放置在后面板上,形成一个还没有被赋值的局部变量,图标为回。第二种方式是在后面板中已有的对象上面单击鼠标右键,从弹出的快捷菜单中选择create local variable,构成这个对象的局部变量。从某种意义上讲,局部变量是它所代表的对象的替身,可以用于传递这个对象的数据。局部变量既可以是控制量也可以是显示量,如果想要将一个显示量的局部变量变成控制量,只需要在局部变量上单击鼠标右键,从弹出的快捷菜单中选择change to read;反之,则需要在快捷菜单中选择change to write。局部变量通常用于程序内部的数据传递,对于程序之间的数据传递就无能为力了,而全局变量可以解决在labview的程序间数据传递的问题。创建全局变量的方法有两种,第一种方法是在labview的新建菜单中选择global variable,单击“ok”按钮后可以打开设计全局变量窗口,这时形成的一个没有后面板的labview程序,也就是说它仅仅是一个盛放前面板中控件的容器,没有任何代码,编辑后保存成一个vi,便建立一个全局变量;第二种方法是用labview函数模板的structur。子模板,从中选择global variable并放置在程序的后面板上,在后面板上生成图标,双击图标便可以打开编辑窗口,在这里可以编辑该全局变量。全局变量既可以是控制量也可以是显示量,如果想要将一个显示量的全局变量变成控制量,只需要在全局变量上单击鼠标右键,从弹出的快捷菜单中选择change to read;反之,则需要在快捷菜单中选择change to write。2.5 labview平台的特点labview平台的特点可归结为以下几个方面:1) 基于图形化的编程方式,其编程十分简洁方便,是真正的工程师的语言;2) 提供丰富的数据采集、分析及存储的库函数;3) 提供传统的程序调试手段,如单步执行、设置断点,同时提供设置探针、显示数据流动画等独具特色的调试方法;4) 继承传统编程语言结构化和模块化的优点,这对于建立复杂应用和代码的可重用性来说是至关重要的;5) 囊括了pci, gpib, pxi, vxi, rs232/485, usb等各种仪器通信总线标准的所有功能函数,使不懂总线标准的开发者也能驱动不同总线标准接口设备与仪器;6) 提供大量与外部代码或软件进行链接的机制,诸如dll(动态链接库)、dde(共享库)、activex等;7) 具有强大的internet功能,支持常用的网络协议,方便网络、远程测量仪器的开发。3.仿真软件的设计3.1建立赛道功能模块仿真系统提供赛道设计赛道功能模块,可以快速地建立起赛道,很好地解决了实际中设计不同赛道的经济性和效率性的问题,赛道设计功能模块就是为所要对智能车比赛的真实赛道建模。用户可以在系统中自行设计不同的赛道,然后保存为文件,在仿真时将其调用即可8。3.1.1仿真设计方法 在仿真软件的设计过程中,赛道设计是以简化了的赛道为模型,即在软件的制作过程中,以点的形式存储赛道,两个相关联的点之间的距离定义为分辨率,分辨率是连续赛道的数字量化的量度,赛道的具体体现是认为两个相连的点之间是直线连接的,在分辨率设置很低的情况下,软件设计中限定了最大分辨率为0.5厘米,这样,即使是曲线的赛道也可以近似为直线,不会对仿真精度产生多大的影响10。 赛道的生成是以赛道段为单位的,所谓赛道段就是具有同种形状的赛道,比如,只是直线赛道,那就认为为一个赛道段,一个直线末端连一个半径为0.5米的角度为180的弧,则认为为两个赛道段,对于弧线,不同的半径认为是在不同的赛道段上。当然也可以把一个赛道段划分为多个赛道段。赛道段总体上分为两类,直线段和弧线段,直线段信息为端点,弧线段信息为俯视旋转方向、角度和半径信息。 用户首先要根据实际赛道的工程图纸,在不同的赛道段连接点建立起平面直角坐标系下的坐标,然后可以根据图纸,从起点开始依次输入各个赛道段信息,直到终点。这样就可以在仿真环境里建立起一个虚拟赛道。3.1.2赛道功能模块介绍 赛道设计功能模块,利用了labview可视化的优势,为用户提供了友好的交互方式,赛道设计方便,赛道设计界面包括:起始设置、操作和赛道显示三个部分:1) 起始设置为设置生成赛道的分辨率,以及赛道的起始坐标点;2) 操作部分的功能有赛道的生成方式、直线、弧线、撤销、保存赛道和停止; 3) 赛道的生成方式有两种,分别为创建赛道和调入赛道,选择调入赛道是从磁盘文件中调入已经保存好的赛道文件,用来查看已有的赛道。选择创建赛道就要求用户自行定制新的赛道10。3.1.3程序的运行及仿真效果软件创建赛道的流程,首先提取初始设置值,根据输入的赛道段命令及赛道段信息,进入各自的量化处理程序,赛道量化后数据暂时保存在临时的数组中,并且在赛道界面显示面板中显示,或者撤销创建,取消临时数组中的数据前一次量化得到的所有数据,或者继续选择相应的赛道段输入命令,继续输入,直到赛道输入结束11。创建赛道的流程图如图3.1所示。直线n选择撤销终点获得初始设置获得直线段信息量化处理保存撤销处理获得弧线段信息弧线ny图3.1创建赛道流程3.2建立智能车功能模块智能车体也是整个仿真的基本要素之一。该模块是对智能车的基本参数进行设置,在软件环境中建立起智能车的外观模型,这些参数包括车的长度,车的宽度,轮距,轴距,转向参数,对于给定的智能车,这些基本参数是相同且不可改变的,为了使软件更通用,软件也对这些基本参数进行了可写操作,为了在更换了智能车的情况下也可以用它来仿真。3.3仿真功能模块仿真界面是软件的核心部分,它是模拟智能车的真实赛道运行的环境,包括控制台和显示屏两部分。首先,赛道文件调入程序对赛道数据文件的读取,加载赛道数据到仿真环境,成为智能车仿真运行的基础,然后调入智能车文件程序,程序会根据赛道的起始点自动调整智能车,使其以最佳的姿态停在赛道上12。仿真程序是仿真软件的核心,它主要为模拟传感器检测赛道功节点、控制算法功能节点、智能车运动模型模拟节点和智能车的显示功能节点。仿真程序的设计步骤如图3.2所示。yn开始调入赛道调入赛车界面显示运动模型控制检测赛道停止保存运行数据结束图3.2仿真程序设计步骤仿真程序块的运行流程图如图,程序在赛道和智能车都调入仿真环境中后,主要在赛道检测,得到赛道信息,通过赛道信息和智能车当前的状态控制智能车的运行,根据运动模型的到下一个仿真周期智能车位置,输出显示智能车几个环节中循环,直到完成比赛。3.4数据分析功能模块利用软件对智能车进行仿真,可以把仿真中记载智能车运行过程的主要数据记录出来,这是软件比实际运行调试的另一个好处,在实际运行过程中,我们只能通过观测智能车是否能够完成比赛任务和完成比赛时间的长短来定性的判断控制算法的好坏,不能精确的分析智能车的设计方案中出现的问题,如控制参数设置不当的问题。此模块是用来完成对仿真数据的后期处理,在实际的仿真运行过程中,虽然可以看见智能车的仿真运行状态,但是,由于智能车的运行速度很快,这些状态在以相当高的频率变化,特别是速度表所指示的速度,和实际测试一样,也不能的对运行过程进行分析,但是,在仿真的结束,可以把仿真数据存放在文件中,这里就是对仿真数据的处理程序13。4.智能车仿真系统程序智能车仿真系统的开发主要分为前面板设计和程序框图设计。前面板设计是视觉上最为直接的设计,主要是利用labview添加一些系统所需的功能按钮,并需要我们尽可能的简单实用。前面板上添加的按钮在程序框图中都有图标显示,程序框图设计则是为前面板上添加的按钮赋予其应有的功能,并且将各个按钮的功能联系起来,使其能够完成我们所需要的功能。本文主要运用labview g语言完成控制程序的编写14。完成该系统的开发,首先要对系统的功能进行总体分析,罗列出该系统应该具备的功能,然后进行前面板设计,进而完成程序框图设计,最后经过反复的调试和不断的完善,来最终实现该系统。4.1 流程图介绍 在智能车仿真系统的软件设计中,仿真的大体流程是:先完成初始化设置,然后设置赛道信息,即黑线数据,加载赛车信息并发送命令,最终在黑线图像上显示结果15。1) 初始化初始化主要包括串口选择,波特率设置,数据比特设置,奇偶位设置和停止位设置。2)设置赛道信息赛道信息在系统显示为黑线数据,这个需要根据自身需要进行设定。主要包括宽度,高度,放大倍数,黑线的掩码和色码。修改黑线的色码后黑线将不再是黑色,而是自己设定的颜色。3)加载赛车信息系统已经设定好加载功能,我们可以在数据加载选项中选择自己的赛车信息并加载到系统中。4) 发送命令 这是进入仿真的命令,设定好之后即可按照已经设定好的命令进行仿真,并能够在黑线图像上显示出仿真结果。系统仿真流程图如图4.1所示。进入仿真加载赛车信息命令设置赛道信息初始化设置显示结果发送命令图4.1仿真流程图4.2程序代码及注释4.2.1初始化程序初始化设置主要包括开关串口,串口的选择,波特率的设定,数据比特的设定,奇偶位选择,停止位的选择。其前面板如图4.2所示。图4.2初始化设置前面板其中:1)串口选择是visa资源的名称指定要打开的资源,该控件也指定了会话句柄和类。2) 波特率是指数据信号对载波的调制速率,它用单位时间内载波调制状态改变的次数来表示,其单位是波特(baud)。波特率与比特率的关系是比特率=波特率*单个调制状态对应的二进制位数。3) 数据比特是输入数据的位数。4) 奇偶校验位是一种校验代码传输正确性的方法。根据被传输的一组二进制代码的数位中“1”的个数是奇数或偶数来进行校验。通常专门设置一个奇偶校验位,用它使这组代码中“1”的个数为奇数或偶数。若用奇校验,则当接收端收到这组代码时,校验“1”的个数是否为奇数,从而确定传输代码的正确性。5) 停止位是指定用于表示帧结束的停止位的数量。初始化设置的程序框图如图4.3所示。 图4.3初始化设置程序框图其中:启用终止符使串行设备做好识别终止符的准备。如值为true(默认),vi_attr_asrl_end_in属性将被设置为识别终止符。如值为false,vi_attr_asrl_end_in属性将被设置为0(无)且串行设备不识别终止符。终止符通过调用终止读取操作。从串行设备读取终止符后读取操作将终止。 0xa是换行符(n)的十六进制表示。消息字符串的终止符由回车(r)改为0xd。超时设置读取和写入操作的超时值,以毫秒为单位。默认值为10000。visa资源名称指定要打开的资源。该控件也可指定会话句柄和类。波特率是传输速率,默认值为9600。数据比特是输入数据的位数。 数据比特的值介于5和8之间,默认值为8。奇偶指定要传输或接收的每一帧所使用的奇偶校验。4.2.2 黑线数据及黑线图像显示黑线数据即赛道信息,因为赛道在实际中就是一条黑线,所以在此用黑线表示。在前面板中可以设定赛道的高度,宽度及图像放大倍数,色码和掩码。其前面板如图4.4所示。 图4.4黑线数据及黑线图像显示的前面板其中:1) 掩码是字节数组,其中的每一位都描述了一个像素的掩码信息,第一个字节描述饿了前八个像素,第二个字节描述了后八个像素,依次类推。2) 色码表是与数据数组映射的两种颜色。黑线数据及黑线图像显示程序框图如图4.5所示。图4.5黑线数据及黑线图像显示程序框图其中:1) 截取字符串字符串是输入字符串。偏移量是起始位置并且必须为数值。 字符串中第一个字符的偏移量为0。如没有连线或小于0,则默认值为0。长度必须为数值。如长度没有连线,则默认值为字符串长度减去偏移量。子字符串如偏移量大于字符串的长度,或长度小于等于0,则值为空。如长度大于或等于字符串长度减去偏移量,则子字符串是从偏移量开始的剩余部分。2) 重排数组维数n维数组可以是任何类型的n维数组。维数大小0.m-1指定m维数组的维数,必须为数字。如维数大小为0,函数将创建空字符串。m维数组的数组大小接线端必须为m。m维数组如维数大小的乘积大于输入数组元素的数量,函数将用n维数组的默认数据类型填充新数组。如维数的乘积小于输入数组元素的数量,函数将对数组进行剪切。3) 捆绑簇是要改变值的簇。如该输入端没有连线,函数将返回簇。连线簇接线端时,“捆绑”。函数将用元素0.n-1替换簇。输入接线端的数量必须匹配输入簇中元素的数量。元素0.n-1可接收任意类型的数据。输出簇是作为结果的簇。4) 平化像素图左上角指定图像左上角在坐标系中的位置。x是右侧增加的水平坐标。y是底部增加的垂直坐标。24位像素图是要转换为图像数据的二维数据数组。图像数据的维数应与数组的维数一致。8位像素图是要转换为图像数据的二维数据数组。图像数据的维数应与数组的维数一致。vi将该数据作为颜色数组的索引。4位像素图是要转换为图像数据的二维数据数组。图像数据的维数应与数组的维数一致。vi将该数据作为颜色数组的索引。1位像素图是要转换为图像数据的二维数据数组。图像数据的维数应与数组的维数一致。在颜色列表中,false对应于颜色表中的元素0。true对应于颜色表中的元素1。颜色是rgb颜色的数组,与连接至像素图的值对应。连接的像素图可确定labview如何读取输入的值。如连接数据至24位像素图,labview将忽略该输入。如连接数据至8位像素图,数组有256个元素。如连接数据至4位像素图,数组有16个元素。如连接数据至1位像素图,数组有2个元素。掩码该一维数组用于说明每个像素的掩码信息。图像数据返回像素图的信息,可用绘制平化像素图vi将其绘制为图片,或用各种图形格式vi将图像保存至文件。 图像深度指定图像的颜色深度,即图像中各像素的位数。有效值包括每像素1位、4位、8位和24位(默认)。 图像深度确定labview如何解析图像和颜色

温馨提示

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

评论

0/150

提交评论