基于虚拟仪器智能小车仿真系统设计我的毕业设计.docx
《基于虚拟仪器智能小车仿真系统设计我的毕业设计.docx》由会员分享,可在线阅读,更多相关《基于虚拟仪器智能小车仿真系统设计我的毕业设计.docx(29页珍藏版)》请在冰豆网上搜索。
基于虚拟仪器智能小车仿真系统设计我的毕业设计
安徽大学江淮学院
本科毕业论文(设计)
(内封面)
题 目:
基于虚拟仪器技术的智能小车仿真系统设计
学生姓名:
谢玉兴 学号:
jk074117
系别:
计算机科学与电子技术系专业:
电子信息工程
入学时间:
2007 年 9 月
导师姓名:
廖素引职称/学位:
讲师/硕士
基于虚拟仪器技术智能车仿真系统设计
摘要
全国大学生智能汽车竞赛是教育部倡导的一种具有探索性工程实践活动的大学生科技竞赛,要求参赛者在飞思卡尔公司提供的模型车体及主控制器芯片基础上,设计制作具有自主道路识别能力的智能赛车,在赛道上以最快速度完成赛程者为优胜。
本课题以智能车比赛为背景,以缩短智能车开发周期为目的,利用虚拟仪器开发了智能车仿真软件,为智能车比赛提供可以离线验证控制算法的软件平台,该智能车虚拟系统可针对不同的赛车、赛道、路径识别方案、控制策略等内容进行相关分析和模拟,为节约智能车开发制作成本和提高开发成效提供了新的途径。
关键词:
虚拟仪器;仿真;LabVIEW;智能车
DesignofIntelligentVehicleSimulationSystem
BasedonVI-Technolog
Abstract
SmartCarCompetitionNationalUniversityMinistryofEducationinitiatedanexplorationprojectwiththestudentspracticescienceandtechnologycompetition,requiresparticipantstoprovideamodeloftheFreescalebodyandmaincontrollerchipbasedonthedesignwithindependentroadrecognitionintosmartcaronthetrackasquicklyasthosewhocompletetheraceforthewinner.Thetopicstomatchthebackgroundofthesmartcar,smartcartoshortenthedevelopmentcycleforthepurposeofusingvirtualinstrumentationdevelopedsimulationsoftwaresmartcar,smartcarcompetitionfortheprovisionofcontrolalgorithmscanbeverifiedoff-linesoftwareplatform,thevirtualsystemforintelligentvehicledifferentcars,track,pathidentificationscheme,controlstrategyandothercontentrelatedtoanalysisandsimulation,intelligentvehicledevelopmenttoconserveandenhancethedevelopmenteffectivenessoftheproductioncostsprovidesanewway.
Keyword:
Intelligentvehicle;simulation;LabVIEW;Virtualinstrument
目录
第一章引言1
1.1课题研究的背景及意义1
1.2本课题研究的内容3
1.3论文章节安排3
第二章智能车仿真系统的介绍4
2.1开发工具虚拟仪器简介4
2.2LabVIEW的介绍4
第三章智能车虚拟仪器仿真平台基本模块的设计7
3.1赛道功能模块的建立7
3.2智能车功能模块的建立9
3.3仿真程序设计10
第四章利用虚拟仪器平台进行智能车仿真12
4.1初始化程序12
4.2赛道和赛车信息的加载14
4.3发送命令18
4.4仿真结果20
结束语20
主要参考文献22
致谢23
基于虚拟仪器技术的智能车仿真系统设计
第一章引言
1.1课题研究的背景及意义
智能车辆技术是涵盖智能控制、模式识别等学科前沿的热点研究领域,其研究与应用具有巨大的理论和现实意义。
在交通安全方面,由无人驾驶车辆研究形成的辅助安全驾驶技术,可以通过传感器准确、可靠地感知车辆自身及周边环境信息,及时向驾驶员提供环境感知结果,从而有效地协助提高行车安全,同时也能降低驾驶员对车辆驾驶管理的复杂度,提高单个车辆的运行效率,可以缓解我国城市道路拥堵、交通系统运行效率较低的现状。
在汽车产业自主创新方面,通过对无人驾驶车辆理论、技术研究,突破国外汽车行业专利壁垒,掌握具有核心竞争力的关键技术,可以为我国汽车产业自主创新和产业发展提供强有力的支撑。
同时在国防科技方面,“快速、精确、高效”的地面智能化作战平台是未来陆军的重要力量,无人驾驶车辆将能代替人在高危险环境下完成各种任务,在保存有生力量、提高作战效能方面具有重要意义,也是无人作战系统的重要基础。
美国在无人驾驶技术上应该是全球走得最远的国家。
他们在2004年、2005年就已经举办过智能车挑战赛。
2004年,美国国防部高级研究项目局主办首届机器车挑战大赛。
“机器车挑战大赛”(GrandChallenge)吸引了众多民间机构的兴趣,冠军奖金100万美元,全程142英里(约合227公里),路程崎岖,看哪一辆无人驾驶的汽车能够最快地跑完全程,关门时间是10个小时。
那次大赛共有105支车队报名,15支车队参赛,但没有一辆车跑完7英里,也就是整个赛程的5%。
2005年9月,第2次比赛继续进行,冠军奖金也提高到了200万美元。
斯坦福大学的“斯坦利”获得了第1名,所用时间是6小时53分58秒,时速达到19.1英里。
参加挑战赛的车队,有几个共同点,一是赞助商中都有英特尔的影子,他们的处理器来应对各种传感器上的数据;二是都用体量较大的SUV车型进行改装,只有大车才能在车顶、车轮上大动手脚,后备箱里才放得下大个儿的电脑;三是车队里的人都不把这些车当做汽车,而是叫机器人。
2006年5月15日,德国举办了欧洲陆地机器人竞赛,这个比赛是由德国军方组织的。
与美国的“挑战赛”不同,欧洲赛事更强调自主性。
德国的比赛只有8公里赛程,但参赛车辆必须通过影像处理来寻找道路,周围景物会被处理成3D影像,由光学定向与测距系统对所收集的信息进行导航决策,分析哪里是行人哪里是树木。
据介绍,其中一辆参赛车途锐在通过关键的十字路口时还是得靠手动驾驶,它自主行驶了90%的赛程。
飞思卡尔”智能车竞赛是由教育部高等学校自动化专业教学指导分委员会主办,飞思卡尔半导体公司协办的全国性的比赛。
比赛要求参赛队伍研究并设计一款能够自主辨识路线并能够自主行驶的智能车,在专门设计的封闭跑道上行驶,跑完整个赛程用时越短的参赛队伍成绩越好。
智能车的设计要求参赛队伍首先对汽车动力学有一定的研究和了解,从而设计合理的机械结构。
同时要求参赛队伍自行设计控制器系统电路、图像采集模块电路、电机驱动电路、电源模块电路等多个部分的电路。
在硬件平台搭建完成后,参赛队伍要对智能车系统的路线辨识以及控制算法进行开发和调试,为了后期的调试方便,很多队伍还开发了用于调试的上位机监控程序。
智能车大赛以迅猛发展的汽车电子为背景,涵盖了控制、模式识别、传感技术、电子、电气、计算机、机械等多个学科交叉的科技创新比赛。
随着赛事的逐年开展,不仅使参赛学生自主创新能力的提高,对于高校相关学科领域的学术水平的提升也有一定的帮助。
目前,此项赛事己经成为各高校展示科研成果和学生实践能力的重要途径,同时也为社会选拔优秀的创新人才提供了重要平台。
“飞思卡尔”杯智能车竞赛于2000年在韩国首次举办,我国于2006年8月举办第一届“飞思卡尔”杯全国智能车竞赛,当时吸引了来自全国50所高校的112支代表队的参与。
在2007年的第二届智能车竞赛中,来自全国26个省(自治区)、直辖市的130余所院校的242支队伍分为5个赛区进行角逐,比赛场面空前激烈
我国大学生设计的智能车如下图
图1:
智能车模型
在智能车的实际设计过程中,经常面临如下几个问题:
第一,制作出各种形式的赛道来测试赛车的性能,但是在实际中,很难为智能车的测试设计各种各样的比赛赛道,在经济上和效率上也是不能被接受的;第二,控制算法的实现和验证也需要一定时间,在比赛设计的有限时间里,要选择出合适的控制算法,并且试验它的有效性,也是一个比较艰巨的任务,如何快速验证我们所设计的控制算法,缩短开发周期,在有限的时间里尽可能开发出最好最优的控制算法,对我们提出了挑战;第三,分析车的运行过程进而分析车的控制方法是分析和优化控制算法的一个有效途径,实际上车的运行是一个快速的过程,是转瞬即逝的,很难把车的实际运行过程复现出来的,这样就缺失了有效的分析方法。
这些问题都是能够顺利完成比赛的不可避免的障碍。
全国大学生智能汽车竞赛是教育部为了加强大学生实践、创新能力和团队精神的培养,在己举办的全国数学建模、电子设计、机械设计、结构设计等4大专业竞赛的基础上而设立的第五项大学生设计竞赛。
该竞赛与已举办的教育部4大专业竞赛不同,是以迅猛发展的汽车电子为背景,涵盖了控制、模式识别、传感技术、电子、电气、计算机、机械等多个学科交叉的科技创意性比赛,这对进一步深化高等工程教育改革,培养本科生获取知识、应用知识的能力及创新意识,培养硕士生从事科学、技术研究能力,培养博士生知识、技术创新能力具有重要意义。
1.2本课题研究的内容
基于以上的问题,为了能够快速的验证智能车的设计方案,缩短其开发周期,要求在短时间内开发出为团队提供可离线/在线智能车仿真及理论实验平台。
本文首先利用了虚拟仪器软件LabVIEW为智能车比赛开发了一个比赛仿真以及理论实验平台,以此实现以下几个部分的功能:
1)赛道与赛车环境建模对比。
2)赛车设计。
3)控制算法的仿真验证。
4)后期分析,以及不足与改进。
最后对赛车转弯时间最优问题进行了研究,提出三种转弯策略,通过仿真比较给出了缩短比赛时间,提高比赛成绩的较好的转弯策略。
1.3论文章节安排
第一章,引言部分。
主要介绍了课题研究的背景、意义和内容。
第二章,智能车仿真系统的介绍。
这章介绍了虚拟仪器仿真工具—LabVIEW。
第三章,智能车虚拟仪器仿真平台基本模块的设计。
包括赛道功能模块、赛车功能模块、仿真程序模块的设计
第四章,仿真过程
第二章智能车仿真系统的介绍
2.1开发工具虚拟仪器简介
虚拟仪器(VirtualInstrumentation)是基于计算机的仪器。
计算机和仪器的密切结合是目前仪器发展的一个重要方向。
粗略地说这种结合有两种方式,一种是将计算机装入仪器,其典型的例子就是所谓智能化的仪器。
随着计算机功能的日益强大以及其体积的日趋缩小,这类仪器功能也越来越强大,目前已经出现含嵌入式系统的仪器。
另一种方式是将仪器装入计算机。
以通用的计算机硬件及操作系统为依托,实现各种仪器功能。
虚拟仪器主要是指这种方式。
虚拟仪器实际上是一个按照仪器需求组织的数据采集系统,虚拟仪器的研究中涉及的基础理论主要有计算机数据采集和数字信号处理。
目前在这一领域内,使用较为广泛的计算机语言是美国NI公司的LabVIEW。
利用LabVIEW,可产生独立运行的可执行文件,它是一个真正的32位编译器。
像许多重要的软件一样,LabVIEW提供了Windows、UNIX、Linux、Macintosh的多种版本[4]。
2.2LabVIEW的介绍
LabVIEW(LaboratoryVirtualInstrumentEngineeringWorkbench)是一种图形化的程序开发环境,由美国国家仪器(NationalInstrument)公司研制开发的,类似于C和BASIC开发环境,但是LabVIEW与其他计算机语言的显著区别是:
其他计算机语言都是采用基于文本的语言产生代码,而LabVIEW使用的是图形化编辑语言来编写程序,产生的程序是框图的形式。
在开发过程中,用图标就可以代替应用系统的硬件部分,这样就可以省去了很多购买硬件的资金,以节省大量的研发资金。
LabVIEW中尽可能的利用了工程师们所熟知的术语、图标和概念,是一个工业标准的开发环境。
它结合了图形化编程方式的高性能和灵活性以及专为测试、测量与自动化控制应用设计的高端性能和配置,能为数据采集、仪器控制、测量分析与数据显示等各种应用提供必要的开发工具,这能帮助工程师们提高工作效率[4]。
图形化的程序语言,又称为“G”语言。
使用这种语言编程时,基本上不写程序代码,取而代之的是流程图或框图。
它尽可能利用了技术人员、科学家、工程师所熟悉的术语、图标和概念,因此,LabVIEW是一个面向最终用户的工具。
它可以增强你构建自己的科学和工程系统的能力,提供了实现仪器编程和数据采集系统的便捷途径。
使用它进行原理研究、设计、测试并实现仪器系统时,可以大大提高工作效率。
2.2.1VI的概念
用LabVIEW开发出的应用程序被称作VI(VirtualInstrument的英文简写,即虚拟仪器),它的表现形式和功能类似于实际的仪器,也很容易改变设置和功能。
VI是由图标、连线以及框图构成的应用程序,有FrontPanel(前面板)、BlockDiagram(后面板)以及图标/连结器(IconConnector)三部分构成。
前面板是应用程序的界面,是人机交互的窗口,主要由Controls(控制量)和Indicators(显示量)构成。
当程序运行时,用户通过控制量(例如用户输入数据的文本框以及一些按钮、开关灯)输入数据和控制程序的运行,而显示量(例如显示波形的示波器控件灯)则主要用于显示程序运行的结果。
如果将VI程序比作一台仪器的话,那么,控制量就是仪器的数据输入端口和控制开关,用于给程序提供输入数据和控制信号,而显示量则是仪器的显示窗口,用于显示经过程序分析、处理后的结果,如图2.1所示,显然,并非简单地画两个控件就可以运行,在前面板后还有一个与之配套的流程图。
图2:
面板界面
流程图提供VI的图形化源程序,在流程图中对VI编程,以控制和操纵定义在前面板上的输入和输出功能。
流程图中包括前面板上的控件的连线端子,还有一些前面板上没有,但编程必须有的东西,例如函数、结构和连线等。
图3是一个随机信号发生器的流程图,从中可以看到流程图中包括了前面板上的开关和随机数显示器的连线端子,还有一个随机数发生器的函数及程序的循环结构。
随机数发生器通过连线将产生的随机信号送到显示控件,为了使它持续工作下去,设置了一个WhileLoop循环,由开关控制这一循环的结束。
如果将VI与标准仪器相比较,那么前面板上的东西就是仪器面板上的东西,而流程图卜的东西相当于仪器箱内的东西。
在许多情况下,使用VI可以仿真标准仪器,不仅在屏幕上出现一个惟妙惟肖的标准仪器面板,而且其功能也与标准仪器相差无几。
图3:
随机信号发生器的流程图
2.2.2子VI与子程序
和其他编程语言一样,在LabVIEW中也存在子程序的概念,在LabVIEW中的子程序被称作子VI。
在程序中使用子VI有以下优点:
1.将一些代码封装成为一个子VI(即一个图标),可以使程序的结构变得更加清晰、明了。
2.将整个程序划分为若干模块,每个模块用一个或者几个子VI实现,易于程序的编写和维护。
3.将一些常用的功能编制成一个子VI,在需要的时候可以直接调用,不用重新编写这部分程序,因而子VI有利于代码复用。
2.2.3Labview平台的特点
LabVIEW平台的特点可归结为以下几个方面:
1.基于图形化的编程方式,其编程十分简洁方便,是真正的工程师
的语言;
2.提供丰富的数据采集、分析及存储的库函数;
3.提供传统的程序调试手段,如单步执行、设置断点,同时提供设置探针、显示数据流动画等独具特色的调试方法;
4.继承传统编程语言结构化和模块化的优点,这对于建立复杂应用和代码的可重用性来说是至关重要的;
5.囊括了PCI,GPIB,PXI,VXI,RS232/485,USB等各种仪器通信总线标准的所有功能函数,使不懂总线标准的开发者也能驱动不同总线标准接口设备与仪器;
6.提供大量与外部代码或软件进行链接的机制,诸如DLL(动态链接库)、DDE(共享库)、ActiveX等;
7.具有强大的Internet功能,支持常用的网络协议,方便网络、远程测量仪器的开发。
第三章智能车虚拟仪器仿真平台基本模块的设计
3.1赛道功能模块的建立
仿真系统提供赛道设计赛道功能模块,可以快速地建立起赛道,很好地解决了实际中设计不同赛道的经济性和效率性的问题,赛道设计功能模块就是为所要对智能车比赛的真实赛道建模。
用户可以在系统中自行设计不同的赛道,然后保存为文件,在仿真时将其调用即可[8]。
在仿真软件的设计过程中,赛道设计是以简化了的赛道为模型,即在软件的制作过程中,以点的形式存储赛道,两个相关联的点之间的距离定义为分辨率,分辨率是连续赛道的数字量化的量度,赛道的具体体现是认为两个相连的点之间是直线连接的,在分辨率设置很低的情况下,软件设计中限定了最大分辨率为0.5厘米,这样,即使是曲线的赛道也可以近似为直线,不会对仿真精度产生多大的影响[10]。
赛道的生成是以赛道段为单位的,所谓赛道段就是具有同种形状的赛道,比如,只是直线赛道,那就认为为一个赛道段,一个直线末端连一个半径为0.5米的角度为180的弧,则认为为两个赛道段,对于弧线,不同的半径认为是在不同的赛道段上。
当然也可以把一个赛道段划分为多个赛道段。
赛道段总体上分为两类,直线段和弧线段,直线段信息为端点,弧线段信息为俯视旋转方向、角度和半径信息。
用户首先要根据实际赛道的工程图纸,在不同的赛道段连接点建立起平面直角坐标系下的坐标,然后可以根据图纸,从起点开始依次输入各个赛道段信息,直到终点。
这样就可以在仿真环境里建立起一个虚拟赛道
利用了LabVIEW可视化的优势,为用户提供了友好的交互方式,方便了赛道设计,赛道设计界面包括:
起始设置、操作和赛道显示三个部分:
1)起始设置为设置生成赛道的分辨率,以及赛道的起始坐标点;
2)操作部分的功能有赛道的生成方式、直线、弧线、撤销、保存赛
道和停止;
3)赛道的生成方式有两种,分别为创建赛道和调入赛道,选择调入
赛道是从磁盘文件中调入已经保存好的赛道文件,用来查看已有的赛道。
选择创建赛道就要求用户自行定制新的赛道[1]。
图4是已完成的Plastid的赛道设计图,用户可以使用“点”来精确设定赛道曲线的下一点位置,使用“弧”则可以以圆心坐标、角度来绘制想要得到的弧线,更可以直接采用“手绘”用鼠标在屏幕上绘制赛道或从数据文件中导入曲线。
其操作界面友好,修改方便,且易于上手和操作。
图4中的赛道即根据韩国汉阳大学2004年智能车大赛采用的赛道设计而成
图4:
赛道界面图
3.2智能车功能模块的建立
智能车体也是整个仿真的基本要素之一。
该模块是对智能车的基本参数进行设置,在软件环境中建立起智能车的外观模型,这些参数包括车的长度,车的宽度,轮距,轴距,转向参数,对于给定的智能车,这些基本参数是相同且不可改变的,为了使软件更通用,软件也对这些基本参数进行了可写操作,为了在更换了智能车的情况下也可以用它来仿。
下图给出了赛车设计的界面。
图5:
智能车参数设计图
为了仿真方便,我们将赛车简化为一个四轮刚体模型,除了一些基本的尺寸参数之外,在前轮转向系统,根据赛车的实际情况,我们用“转向速度”与“最大转向角”两个参数来模拟。
对于路径识别系统,Plstid给予使用者至多8个的光感传感器的坐标设定,使用者可以任意地安排传感器的个数和相对于车的排列坐标(将传感器安排成一条直线,或者弧线等方案),从而达到自己想要的识别效果。
图6即赛车设计的操作界面,左边为赛车的基本参数,右边为传感器坐标设定、试验赛道生成以及传感器值的即时显示(试驾时用)
图6:
智能车设计操作界面
使用者除了可以设定赛车参数外,还可以对所设定好的赛车进行“试驾”,当场检验所设计参数的优劣,并可将赛车信息保存于文件,供仿真时调入使用
3.3仿真程序设计
仿真界面是软件的核心部分,它是模拟智能车的真实赛道运行的环境,包括控制台和显示屏两部分。
首先,赛道文件调入程序对赛道数据文件的读取,加载赛道数据到仿真环境,成为智能车仿真运行的基础,然后调入智能车文件程序,程序会根据赛道的起始点自动调整智能车,使其以最佳的姿态停在赛道上[2]。
仿真程序是仿真软件的核心,它主要为模拟传感器检测赛道功节点、控制算法功能节点、智能车运动模型模拟节点和智能车的显示功能节点。
仿真程序的设计步骤如图7所示。
图7:
仿真程序设计步骤
仿真程序块的运行流程图如图,程序在赛道和智能车都调入仿真环境中后,主要在赛道检测,得到赛道信息,通过赛道信息和智能车当前的状态控制智能车的运行,根据运动模型的到下一个仿真周期智能车位置,输出显示智能车几个环节中循环,直到完成比赛。
数据分析模块是用来完成对仿真数据的后期处理,在实际的仿真运行过程中,虽然可以看见智能车的仿真运行状态,但是,由于智能车的运行速度很快,这些状态在以相当高的频率变化,特别是速度表所指示的速度,和实际测试一样,也不能的对运行过程进行分析,但是,在仿真的结束,可以把仿真数据存放在文件中,这里就是对仿真数据的处理程序[5]。
在完成仿真程序的设计步骤后,剩下的就是利用程序进行仿真,下面给简单介绍了仿真流程。
图8:
仿真流程图
第四章利用虚拟仪器平台进行智能车仿真
智能车仿真系统的开发主要分为前面板设计和程序框图设计。
完成该系统的开发,首先要对系统的功能进行总体分析,罗列出该系统应该具备的功能,然后进行前面板设计,进而完成程序框图设计,最后经过反复的调试和不断的完善,来最终实现该系统。
在智能车仿真系统的软件设计中,仿真的大体流程是:
先完成初始化设置,然后设置赛道信息,即黑线数据,加载赛车信息并发送命令,最终在黑线图像上显示结果[6]。
4.1初始化程序
初始化设置主要包括开关串口,串口的选择,波特率的设定,数据比特的设定,奇偶位选择,停止位的选择。
其前面板如图9所示。
图9:
初始化设置前面板
1.串口选择是VISA资源的名称指定要打开的资源,该控件也指定了会话句柄和类。
2.波特率是指数据信号对载波的调制速率,它用单位时间内载波调
3.制状态改变的次数来表示,其单位是波特(Baud)。
波特率与比特率的关系是比特率=波特率*单个调制状态对应的二进制位数。
4.奇偶校验位是一种校验代码传输正确性的方法。
根据被传输的一组二进制代码的数位中“1”的个数是奇数或偶数来进行校验。
通常专门设置一个奇偶校验位,用它使这组代码中“1”的个数为奇数或偶数。
若用奇校验,则当接收端收到这组代码时,校验“1”的个数是否为奇数,从而确定传输代码的正确性。
初始化设置的程序框图如图10所示。
图10:
初始化设