光电组-中南大学比亚迪双鱼座2012技术报告(卢红海)_第1页
光电组-中南大学比亚迪双鱼座2012技术报告(卢红海)_第2页
光电组-中南大学比亚迪双鱼座2012技术报告(卢红海)_第3页
光电组-中南大学比亚迪双鱼座2012技术报告(卢红海)_第4页
光电组-中南大学比亚迪双鱼座2012技术报告(卢红海)_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

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

文档简介

第七届“飞思卡尔”杯全国大学生 IX第七届“飞思卡尔”杯全国大学生智能汽车竞赛技术报告学校:中南大学队伍名称:比亚迪双鱼座2012参赛队员:熊凯邵明明卢红海带队教师:王击徐德刚关于技术报告和研究论文使用授权的说明 本人完全了解第七届“飞思卡尔”杯全国大学生智能汽车竞赛关保留、使用技术报告和研究论文的规定,即:参赛作品著作权归参赛者本人,比赛组委会和飞思卡尔半导体公司可以在相关主页上收录并公开参赛作品的设计方案、技术报告以及参赛模型车的视频、图像资料,并将相关内容编纂收录在组委会出版论文集中。参赛队员签名: 带队教师签名: 日期:

目录第一章引言 -1-1.1背景介绍 -1-1.2整车设计思路 -1-1.3文章结构 -2-第二章机械结构设计 -3-2.1总体思路 -3-2.2前轮的调节 -4-2.3底盘调节 -4-2.4传感器的安装 -5-2.3舵机的安装 -5-2.4测速传感器的安装 -6-2.5差速机构调整 -7-2.6硬件电路板的安装 -8-第三章硬件电路设计 -9-3.1硬件设计总体方案 -9-3.2电源管理模块 -10-3.3主控制器电路 -11-3.4激光传感器电路 -11-3.5电机驱动电路 -12-3.6人机交互电路 -13-第四章软件设计 -14-4.1总体设计 -14-4.1.1层次设计 -14-4.1.2总体流程 -14-4.2位置确定 -15-4.3舵机控制 -16-4.3.1摇头舵机变结构控制 -16-4.4速度控制 -18-4.4.1电机控制 -18-4.4.2速度给定策略 -19-4.5特殊情况处理 -20-4.5.1十字弯 -20-4.5.2坡道 -20-4.5.3起跑线 -21-5.2调试 -22-5.2.1系统硬件调试 -22-5.2.2传感器调试 -23-5.2.3软件系统调试 -23-第六章赛车具体参数 -25-第七章总结与展望 -26-7.1总结 -26-7.2展望 -26-参考文献 -28-致谢 -28-HYPERLINK附录:程序代码 Ⅰ第一章引言1.1背景介绍全国大学生智能汽车竞赛是以智能汽车为竞赛平台的多学科专业交叉的创意性科技竞赛,是面向全国大学生的一种具有探索性的工程实践活动,该竞赛是在规定的模型汽车平台上,使用飞思卡尔半导体公司的8位、16位和32位微控制器作为核心控制模块,通过增加道路传感器、电机驱动电路以及编写相应软件,制作一个能够自主识别道路的模型汽车,按照规定路线行进,以完成时间最短者为优胜。[1]全国大学生智能汽车竞赛已成功举办了六届,得到了高校师生的高度评价,已发展成全国30个省市自治区170余所高校广泛参与的全国大学生智能汽车竞赛。已被教育部批准列入国家教学质量与教学改革工程资助项目中9个科技人文竞赛之一。该竞赛激发大学生从事科学研究与探索的兴趣和潜能,倡导理论联系实际、求真务实的学风和团队协作的人文精神。[1]1.2整车设计思路智能车竞赛要求设计一辆以组委会提供车模为主体的可以自主寻线的模型车,根据比赛规则和要求,本智能汽车采用光电方案,用650nm激光发射、180KHz接收模块作为路径检测传感器,飞卡尔公司32位微控制器MK60DN512[2]为系统控制核心,通过光电编码器检测速度,由微控制器通过数据处理得出赛道信息并根据当前情况给出舵机转角和电机转速,使智能车能在赛道上快速平稳的行驶。系统由电源模块、控制模块、激光传感器模块、测速模块、电机驱动模块、舵机模块、无线模块等组成。系统总体结构框图如图1-1。路经检测路经检测微控制器模块PC机无线模块速度检测舵机指示灯及拨码开关电机图1-1系统总体结构框图1.3文章结构技术报告分七个章节:第一章节主要是对模型车设计制作的主要思路以及实现的技术方案概要说明,提出技术报告的行文框架。第二章介绍了赛车机械改造的总体思路,并详细说明了机械结构调整情况。第三章说明系统的硬件实现。第四章说明方向控制和速度控制算法设计。第五章介绍仿真和调试的方法。第六章是赛车的具体参数。第七章总结了整个制作过程中的创新点和不足之处,提出了下届备赛过程的努力方向。第二章机械结构设计随着智能车的速度不断提升,智能车的机械结构越来越被重视,智能车机械结构的好坏对车的速度有着很大的影响。本智能车如图2-1。图2-1智能汽车外貌2.1总体思路关于赛车机械结构的调整,我们主要从以下几个方面考虑:车体重量:比赛规则规定,智能车的驱动电机和传动机构不允许更改,意味着赛车的最大驱动能力是一定的。要想提高赛车的平均速度,必须提高其加速和制动性能,在驱动力一定的情况下,尽量减轻车体的重量会提高赛车的加减速性能。另外,更轻的重量也会使赛车转向更加灵活。重心高低:导引线弯道的最小半径为0.5米,要使得智能车能在弯道上高速通过,必须防止侧滑和侧翻,尤其是侧翻。重心位置是影响侧翻的最关键的因素,所以设计中应尽量降低智能车的重心。为此,我们采用了低位电路板的布局,同时设计了强度高质量轻的合金材料作激光传感器安装架,且前尽量减轻前排管的重量。转向灵活性:转向的灵活性会直接的影响到智能车的性能,由于舵机具有机械延时,另外加上控制舵机的周期,舵机要转到给定的目标角度会有一定的延时,要使转向快,就要尽量减小舵机的延时。另外,后轮的差速的性能对转向性能的影响也很大。2.2前轮的调节光电组使用的是组委会规定的B车模,这种车模前轮只有三个可调部位:Camberlink,前束及前悬挂。 Camberlink是指上摇臂(或者推杆)两端的固定位置。Camberlink决定了车轮的Camber角度,以及悬挂移动时Camber角度的改变量,和悬挂系统的几何特性(假设下摇臂不变)。Camberlink位置会影响车辆的稳定性和抓地力。Camber角度极大地影响小车的弯道性能。调节时要配合地盘左右高度进行还有主销倾角进行调节。以四分之一或更小的步进调节连杆,每调整一次,正反跑十字弯一次,直到过弯半径最小为止。Toe角度(束角)是描述从车的正上方看,车轮的前端和车辆纵线的夹角。车轮前端向内束(内八字),称为Toe-in;车轮前端向外张(外八字),称为Toe-out。少量的前轮Toe-in(内八字)可以使车在加速时保持稳定。但这样做也会减少车子在进入弯角时的转向反应,同时增加加速出弯时的转向反应。如果需要在进入弯角时获得更多的转向,可以使用Toe-out(外八字)。但这样做会使车子在加速时、或者通过起伏路面时,变得不稳定,偏离直线。越大角度Toe-in或Toe-out,越会减低车辆在直线行走的速度。为了使车辆行驶稳定我们将束角调成Toe-in。前悬挂的松紧和前轮的抓地力有一定关系。在调车过程中,我们发现将悬挂弹簧拧松一点,可以解决车辆转弯前轮跳的问题。2.3底盘调节为了降低重心,防止车辆在高速行驶时出现侧翻,侧滑等失控现象,我们将底盘尽可能的降低,刚好过坡道不擦跑道。底盘调节还要注意前后的高低配合和左右高度的平衡。适当的高低配合有利于增加前轮的抓地力,防止甩尾。左右高度平衡可以改善车辆的过弯性能。一般来讲,底盘向那边倾斜,该方向的过弯性能就好,这也是左右不对称的原因。很多队伍利用这种现象,在尾部加装悬挂舵机来提高车辆的过弯性能,我们也试过,确实效果很明显,特别是以前的A车。但有利就有弊,目前出现的主动悬挂装置都是开环的,其适应性不是很好,不同的赛道,参数差异可能很大,而且一旦挂开得不合理,带来的后果是致命的。2.4传感器的安装 我们的智能车采用激光作为路径检测传感器。为了提高其前瞻性,我们采图2-2智能车传图2-2感器架设用了高架式架设方法,这种方法会一定程度上使智能车的重心靠上,所以我们尽量命使用质量轻又结实的合金材料作为支架。传感器的有效检测距离和它离地的高度及水平面的夹角直接相关,架设的越高,夹角越大,理论上检测距离越远,但是考虑到车的整体结构稳定性和重心,所以其架设高度和角度只能在一定范围内调节,我们前排传感器高度为50CM,和水平面夹角为10°左右。2.3舵机的安装舵机响应速度是整车过弯速度的一个瓶颈。为了加快车轮转向速度,我们设计并安装了舵机转向机构。在并非改变舵机本身结构的条件下,改变了舵机的安装位置,安装更长的舵机输出臂。采用杠杆原理,在舵机的输出舵盘上安装一个较长的输出臂,将转向传动杆连接在输出臂末端。这样就可以在舵机输出较小的转角下,取得较大的前轮转角,从而提高了整个车模转向控制的速度[2]。如图2-3所示,这种方法是通过机械方式,利用舵机的输出转距余量,将角度进行放大,加快了舵机响应速度。图2-3转向舵机连接2.4测速传感器的安装本智能车采用光电编码器作为测速传感器,它能提供较高的精度并且通过一定的处理后可以识别正反转。光电编码器通过齿轮和后轴齿轮相连,检测车轮转速。图2-23编码器固定2.5差速机构调整后轮差速机构的作用是在车模转弯的时候,减少后轮与地面之间的滑动,使转向轻便。车辆在正常的过弯行驶时四个轮子的转速皆不相同,顺序为:外侧前轮>外侧后轮>内侧前轮>内侧后轮。差速器的作用便是在起到传动的同时允许该速度差的存在[2]。差速器的调整中要注意滚珠轮盘间的间隙,过松过紧都会使差速器性能降低。过松会导致传动力不够,即主电机转动时后轮不动,只要有这种情况出现,会严重影响到智能车的加速和制动性能,即出现智能车速度上升慢,制动力不够的情况。过紧会使转向不轻便,甚至出现转弯时后轮滑动的现象,导致过弯速度由于差速器没调整好而变慢。转向不灵活还会增加前轮侧滑的概率,因为差速器调得过紧智能车在过弯时会给前轮一个向外的力,从而导致前轮有向外侧滑的趋势[3]。调整原则是:差速器应调的足够的松,但是要保证在任何测试情况下都不会出现传动力不够的现象,而且为了保证测速的准确性,不能出现两个车轮同时都和后轴齿轮转向相反的情况。2.6硬件电路板的安装我们的智能车系统除了传感器部分之外,电路板分两部分,一是电机驱动,另一块主要含控制部分和电源管理部分,我们称之为主控板。我们把主控板固定在舵机和和电池字之间,安装时离底盘3MM,并且用螺丝固定,既牢固又便于散热。电机驱动部分则固定在电机上方,这样可以尽量减小电机驱动对单片机产生干扰。第三章硬件电路设计硬件电路是智能车的基础,只有完成了稳定可靠科学的硬件电路,才能在这个基础上进行软件算法的设计,做出优秀的智能车。我们的智能车的硬件设计的原则是:尽量精减,采用简单可靠的电路,选用性能优秀而且性价比好的芯片,设计稳定可靠兼容性好的电路板。3.1硬件设计总体方案硬件电路主要由电源管理模块、控制模块、激光传感器模块、电机驱动模块、舵机驱动、人机接口模块等组成。采用飞思卡尔的32位微控制器MK60DN512作主控芯片,工作总线频率100M。微控制器通过I/O口获得激光传感器采集的赛道信息,经过处理后给出舵机转角和电机转速。通过人机接口可以方便的设置智能车运行的参数,并获得智能运行状况。电机驱动采用用MOSFET管搭成的内阻很小的H桥电路。下面将较详细的介绍各模块的电路设计。电机驱动电机驱动模块光电传感器模块电源光电传感器模块电源管理模块K60核心控制器K60核心控制器检测速度模块检测速度模块舵机控制模块无线串口无线串口模块3.2电源管理模块系统通过标准车模用7.2V2000mAhNi-cd蓄电池供电[2],实际充满电后电压则为8.2~8.5V。由于电路中的不同电路模块所需要的工作电压和电流容量各不相同,因此电源模块应该包含多个稳压电路,将充电电池电压转换成各个模块所需要的电压。整个系统采用了两种芯片作为其电源管理芯片,分别为LINEAD的LT1117-3.3和TI的TL1963A。LT1117具有纹波小,低压差,电流容量大的特性。TL1963为低压差稳压芯片,一般稳压压差仅需340mV,输出电流能达到1.5A。主要电压参数及使用的稳压芯片如下:7.2V电压。直接取自蓄电池两端电压,给主电机提供电源。3.3电压。为单片机系统电压要求稳定、噪声小,电流容量小于1000mA。使用的是LINEAD的LT1117-3.3.5V电压。为传感器及相关外设提供电源。采用的SOT223封装的TL1963A。6V电压。为摇头舵机3010提供电源,要求电压稳定,电流容量大于1000mA。采用的TO263封装的TL1963A。5.5V电源。为转向舵机SD-5提供电源,要求电压稳定,电流容量大于1000mA。采用的TO263封装的TL1963A。电源模块结构图如图1-2。电池电池7.2V-8.5V电机驱动6V稳压5V稳压5.5V稳压电机摇头舵机激光传感器转向舵机3.3V稳压MCULT1117稳压电路TL1963A稳压电路3.3主控制器电路 考虑到官方提供的最小系统板体积太大,不够简洁,我们自制了印刷电路板,集成度更高,针对性更强,体积更小。我们使用的事MK60DN512,使用JTAG下载程序。其管脚分配如下表所示:普通I/O口PA14—PA16,PB0—PB7,PB16—PB23,PC14—PC19,PD0—PD5,传感器接口人机交互模块电机控制PWM模块PA5,PA6舵机控制PA8电机控制PA10激光调制LPTMR模块PA7测速模块UART模块PA7无线模块SD卡模块PA7数据存储3.4激光传感器电路激光传感器属光电传感器,分两部分,一部分为发射部分,一部分为接收。我们使用大功率半导体激光二极管,功率为100MW。驱动电路使用74HC138配合PNP三极管9015,分时点亮。接收为一对多,这样减少了接收单元,还可以避免发射管之间的干扰。具体电路如下图。图3.3激光发射接收电路3.5电机驱动电路电机是整个智能车中能耗最大的地方,其最大电流能达到10A以上,为了提高智能车的加速和制动性能,一个性能优秀的驱动电路是必不可少。常用的电机驱动芯片MC33886使用简单方便、功能强大。但其不足在于最大电流只能达到5A,即使采用多片并联,其压降还是比较大,不利于智能车加速和制动性能的提升。我们采用由功率MOSFET管搭建H桥电路作为电机驱动,桥电路采用门电路控制,使得电机驱动使用更加方便、安全。由于门电路的控制,不会由于程序控制错误的原因导致桥电路短路,而且由于门电路的沿时,使得驱动不会因为MOSFET管关断延时导致短路,使MOSFET管发热严重。不同MOSFET管功率和内阻不一样,我们采用N沟道MOSFET管SI4405和P沟道IRF7832构成桥电路。图3.5H桥电路电机驱动电路的电源可以直接使用蓄电池两端电压。模型车在启动过程中往往会产生很大的冲击电流,会对其他电路造成电磁干扰,为了减小干扰,一方面我们在单片机和电机驱动中间采用光耦隔离,另一方面,我们在进行PCB设计时,将电机驱动单独分开设计,和主控板分开安装,并在电源两端加大电容。3.6人机交互电路一个好的系统,人机交互是必不可小,智能车在调试过程中要不断的修改参数,并且要随时观测智能车的运行状况。由于智能车本身系统比较复杂。对单片机速度要求比较高,所以人机交互所占的资源越少越好,在方便实用的前提下,应该尽量简单。图3-2人机交互模块我们采用最为简单的办法来实现人机交互,采用拔码开关进行参数设置,指示灯用来指示系统工作状态。第四章软件设计4.1总体设计4.1.1层次设计智能车的软件设计,由于和硬件结合非常紧密,当硬件方案有较大改动时,程序修改量会非常大,所以我们从一开始就注意程序分层和结构化。从图4-1中可以看出我们的层次设计思想。其中HardWare是硬件层;Sensor是硬件驱动层;Bases是算法基础层;Special和Control是算法层;Data用于存放控制策略数据,SCI用于无线串口调试,单独给出。这样,当硬件方案发生较大修改时,只需要修改程序相关部分就可以短时间内进行新方案的算法调试了。4.1.2总体流程智能车要能自动的循迹行驶,并且对不同情况的赛道都能完成功能,这要求程序有较强的适应能力。采用激光发射接收的方式所得到的信息会不仅会随着赛道情况不同有较大的改变,传感器本身的特性也不稳定,而且不同传感器总存在着差别。为了能适应不同赛道,我们采取了对赛道信息进行提前采样,数据归一化处理的方式。程序设计的总体流程如图4-2所示。图4-2总体流程图4.2位置确定由于今年的规则有所变化,赛道变成双线,因此我们将激光分射在赛道两边,同时获取赛道两边的信息。后排传感器总共有18个发射单元,6个接收单元,1对3。激光点间距2CM,赛道内白板上5个点,赛道外及黑线上4个点。分布示意图见图4—3。赛道位置获取方案:首先需要得到前排激光模块接收到的道路一个18位的数据。0代表白色,1代表黑色。通过分阶段穷举算法得到道路偏转方向及偏转角度。具体算法是:分割18位数据为2个9位数据,分别代表左侧信息和右侧信息;分割左侧9位数据3个3位数据,分别穷举3位数据可能的状态。注意3个数据并不是有8种,而是考虑到在道路上的情况,即每个点依次有1、2、4种穷举状态。因此9位数据一共需要7*3=21次穷举即可列举尽所有道路信息,列举过程中赋予相应左侧偏差值;左侧9位数据列举过程类似步骤②,并赋予相应右侧偏差值;4点5点5点4点。。。。。。图4-3激光点分布示意图4.3舵机控制4.3.1摇头舵机变结构控制作为一种特殊的非线性控制,变结构很好的符合摇头舵机转动所需方案的要求。它迫使系统的状态被限制在某一子流形上运动,即“滑动模态”运动,具有使控制系统结构随时间变化的开关特性。特点在于一,系统的控制目标由跟踪误差改变为滑模函数,当控制使滑模函数s为0时,跟踪误差也将渐变至0;二,对于大于二阶的高阶系统,常规模糊控制中的输入是[e,e,e1)滑模面的选择选定4个模糊面。滑模面一,用来处理道路转折角小于10°的道路。滑模面二,处理向右转折角大于10度小于60°的道路。滑模面三,处理向左转折角大于10度小于60°的道路。滑模面四,处理十字交叉的空白部分。2)确定模糊滑模控制规律根据获取的赛道信息数据分析可以得到滑模面一存在的条件是左右信息均非白;滑模面二存在的条件是右侧信息全白,左侧不为全白;滑模面三存在的条件是左侧信息全白,右侧不为全白;滑模面四存在的条件是左右信息全白。在每个滑模面采用模糊控制规律,在切换面附近采用模糊化算法减弱抖振现象。模糊变量选择如下:1.滑模面一:偏差E为QUOTE偏差||Br-Bl|,偏差变化率ΔE为|Br-Bl|-|PreBr-PreBl|QUOTE|Br-Bl|;2.滑模面二:偏差E为Bl,偏差变化率ΔE为Bl-PreBlQUOTEBl;3.滑模面三:偏差E为Br,偏差变化率ΔE为Br-PreBrQUOTEBr;4.滑模面四:偏差E为为前10次E的平均值,偏差变化率ΔE为前10次ΔE的平均值。模糊面一算法如下:1.定义模糊集PB(正大)PM(正中)PS(正小)ZO(零)NS(负小) NM(负中) NB(负大)2.选定论域E={NB,NM,NS,ZO,PS,PM,PB}论域为:E={-3,-2,-1,0,1,2,3}3.确定模糊滑模控制器的模糊控制规则基本的模糊控制规则是:If|Br-Bl|isAand|Br-Bl|isB,then△表4-1模糊滑模控制规则表NBNMNSZOPSPMPBPBZOPSPMPBPBPBPBPMNSZOPSPMPBPBPBPSNMNSZOPSPMPBPBZONBNMNSZOPSPMPBNSNBNBNMNSZOPSPMNMNBNBNBNMNSZOPSNBNBNBNBNBNMNSZO4.解模糊化 模糊表中的值直接作为舵机控制值,这样可以可以省去解模糊化这一步,计算量小,可控化效果好。4.3.2转向改进在摇头舵机在转动过程中当系统处于与二三滑模面交接处时会出现一定的快速动作,如果不加处理,转换到转向舵机控制值上,也会有一定抖动,使车身滑动,影响稳定性和视觉效果。具体改进步骤有三:1.选择以车身速度及道路偏角作为变量,模糊化转向过程,模糊表设置疏密取决于消除车轮抖动及车体侧滑现象的效果;2.给模糊面二三模糊表中各个给定值以适当的增量,减小步骤1模糊控制量幅度,加快车轮调整,减小突然转动的角度;3.减小前轮外扩角度,使转向突变现象不明显。4.4速度控制4.4.1电机控制舵机控制采用PID算法。再提一下PID。P来控制当前,误差值和一个比例常数相乘,然后和预定的值相加。P只是在控制器的输出和系统的误差成比例的时候成立。I来控制过去,误差值是过去一段时间的误差和,然后乘以一个积分常数,然后和预定值相加。I从过去的平均误差值来找到系统的输出结果和预定值的平均误差。D来控制将来,计算误差的一阶导,并和一个微分常数相乘,最后和预定值相加。这个导数的控制会对系统的改变作出反应。导数的结果越大,那么控制系统就对输出结果作出更快速的反应。这个参数也是PID被称为可预测的控制器的原因。该参数对减少控制器短期的改变很有帮助。一些实际中的速度缓慢的系统可以不需要该参数。在此,I部分可取为2次以往误差的和。根据需要的速度用公式算出来PID控制参数,用这个参数的正负判断速度是快了还是慢了。当速度快了,而且是快了很多时,需要控制电机反转制动。为了使电机反应更灵敏一些,可以分快了多少的程度,分别控制电机PWM的值。例如:当快的部分超过了电机最大PWM值时,可令当前的电机PWM值为电机PWM最大值;当快的部分超过一定值,当前电机PWM为一个值;当快的部分超过另外一个值,当前电机PWM为另外一个值。而当速度虽然快了,但是快的不是很多时,不做调节。这样过度有点大,能再细一点也许会更好。除此之外,电机是正转的。当需要的电机转速超过电机最大转速时,要限制。如果能再细分,效果会更好吧。注意最后把电机需要的PWM值赋值给PWM通道23的占空比寄存器。这里需要的速度需要分情况设定,因为直道弯道速度不一样。依据是以往激光PWM值与中值差的平均值的大小,当很大时一定需要急转弯,速度要小;当小的时候,速度可以适当提高。也就是以往激光PWM值与中值差的平均值越小,速度设定可以越快。所以有必要对速度在程序中进行预先设定,调试时通过电路板上的按键或者拨码开关选定。在此,有的程序将各种情况下的速度也分档次。有高速档,中高速档,中速挡,中低速档,低速档和匀速档等。4.4.2速度给定策略一般来说速度控制并不是最困难的,智能车要在位置赛道最短时间内完成全程,车处在不同赛道段的速度给定才是最有难度的。我们首先考虑如下:直道应当尽量快弯道也要尽量快直道进弯要减速弯道出直道可以适当加速为此我们编写了较为复杂的赛道情况确定函数,最终发现效果不是很好,分析原因如下:前瞻性不够,滞后性严重临界情况导致速度给定反复变化,造成速度控制不稳定最终我们采取了一种只根据当前舵机偏转角度输出值确定速度的方法,这种方法的直道进弯减速效果不那么明显,但稳定性好,实际能达到的平均速度优于之前的速度给定方法。我们确定速度给定公式如下:速度设定值=直线速度-舵机转角的平方*(直线速度-弯道速度)/(舵机最大转角的平方)作出图形如图4-8所示:图4-8速度给定曲线4.5特殊情况处理4.5.1十字弯由于今年的规则变化,十字弯成为光电的一大重难点。十字弯的判断:由于我们激光分布得宽,其他情况不会出现激光点全洒在白板上,所以当接收管全能接收到信号时,十字弯标志位置位。十字弯策略:根据进弯前的速度和摇头偏差各一个合适的回转角度。4.5.2坡道由于坡道处于直道,所以坡道的速度给定不需特殊处理,转向方面当坡道比较陡的时候,由于前排架设角度比较大,可能会出现前排无法获取有效数据的现象,这时候可以采用只用后排转向。上坡判断:小车上坡时,数据会全部丢失,以此我们设置坡道标志位。当出现一定次数的错误数据时就默认为坡道,这时将切换到后排激光。坡道策略:根据后排的信息,用穷举法得到偏差,给转向舵机相应的转角。下坡判断:小车下坡,前排传感器会接收到正确信号,当正确信号连续出现一定次数时,我们判定小车下坡4.5.3起跑线由于前排激光的抖动很大,在判断起跑线时很不稳定,所以我们利用下排激光进行判断。主要采取方案是跳变法,当下排左右两侧同时出现1次以上的跳变(由白到黑或由黑到白)时,将起跑线标志位置位。 左1次跳变右1次跳变5.2调试5.2.1系统硬件调试对智能小车系统硬件平台的调试工作在设计硬件控制电路板和组装智能小车模型的时候就应该大体上完成,在日后的调试工作中再根据需要和新的思路和方案进行修改。值得注意的是,在设计控制电路PCB板并交付工厂加工制作之前一定要进行缜密的规划论证和仔细的检查,确保当前方案的电路没有任何错误,否则如果等PCB制作好了之后发现元器件封装或者导线连接错误再进行修改将会非常麻烦,甚至还要浪费时间和金钱重新制作PCB。此外,在设计电路板时,最好能够为将来的功能扩展和方案更新留下一定的修改余地,以便在调试过程中可以在当前的PCB上暂时焊接飞线,进行修改,等方案成熟之后再制作下一块电路板,这样做,既节省了时间和资金,又使设计方案更加可靠。控制电路PCB布线图如图5-2所示。图5-2控制电路PCB图5.2.2目前光电组普遍使用的传感器有普通激光管和激光管二种,普通激光管价格低廉,硬件电路设计简单,稳定性好,但其检测精度与前赡性稍有点逊色。智能小车在控制转向方面对道路信息要求不是那么苛刻,所以只要保证传感器的个数就没有问题。激光管的稳定性和精确度都远高于激光管且能做到很大的前赡性,但其对硬件电路的依赖性很高,对温度也敏感且价格昂贵。综合考虑,我们选择了普通模拟激光管做路面检测传感器。激光管调试起来相对简单,调试首先要做的是选型,发射管选择主要从以下二个参数考虑:一个是发射管的发射功率(功率大可提升检测的前赡性),二个是它的发射角度(角度大可使单个发射管照射面积增大);接收管选择主要考虑的就是其线性度和接收范围。线性度好,可以很精确的识别黑线离接收管距离,接收范围大可有使无信号盲区减小但也易受干扰。因此在选型的时候要针对这几个参数做分析。选好型后就做具体的架设调试,传感器主要是用来确定路面情况的,不论是从速度方面还是从转向方面都是要求传感是照得越远且得到的信息越多是越好的。但看得远了在弯道行驶的时候道路丢失信息会很大,这样就不太有利对路面做具体判断,可能会导致很多时候是误判,严重时会导致小车冲出跑道,结合考虑传感的架设的前赡性应有一个较优的位置。这样既能保证道路判定的准确性,又能有较好的前赡性。5.2.3软件系统调试本文之前已经详细的讨论了智能小车的硬件结构和位置处理算法、控制算法等,但是这些算法都需要用软件即使用程序语言来实现。我们使用IARSystem出品的编译器IAR以及硬件程序下载器——JTAG来开发智能小车的软件系统。图5-3IAR集成开发环境第六章赛车具体参数赛车具体参数如下表6-1所示。表6-1赛车具体参数表项目参数路径检测方法(赛题组)光电车模几何尺寸(长、宽、高)(毫米)320/250/120车模平均电流(匀速行驶)(毫安)1950电路电容总量(微法)1880传感器种类及个数激光接收管10个激光发射管34个编码器1个新增加伺服电机个数1赛道信息检测空间精度(毫米)2CM赛道信息检测周期(毫秒/次)3主要集成电路种类/数量LT1963A1个TL1963A2个TL11171个74HC04、00、08各1片,IRF7832、SI4405各8片TLP251-41片车模重量(带有电池)(千克)1.20第七章总结与展望7.1总结要实现对高速行驶汽车的自主智能控制并不是一个简单的自动控制问题,它涵盖了控制、模式识别、力学、光学、电磁学、传感技术、电子、电气、计算机、机械及车辆工程等多个学科。本文采用的控制核心是一款飞思卡尔半导体公司生产的32位微控制器——MK60DN512,利用了微控制器的强大功能实现了智能车对路径的自主寻迹,以及在未知环境下,结合一定的算法,实现了对智能车的高速运动控制,从最终测试结果来看,本系统具有较好的控制性能与对未知环境的适应能力。对智能车系统的自主控制,可以分为三大部分:首先是对路径信息的提取与识别,即智能小车的寻迹;然后是对前轮舵机方向的控制,即智能车的转向控制;最后是对后轮车速的控制,即智能小车的驱动控制。智能小车的转向控制,主要就是对智能车的舵机系统进行控制,智能车的舵机转向控制是一个复杂的随动控制问题,很难求得其准确的模型,此时简单PID的控制效果将难于达到预期的目标。因此我们根据人驾驶车辆的经验,再PD控制的基础上增加了一些模糊规则。。在搭建好智能车的软硬件平台后,我们进行了一系列的仿真和调试,实验证明,我们的寻迹方案与转向控制策略是稳定、有效的。完成了对智能车的自动控制,并在制作的赛道上实现了智能车的高速、自主行驶。在调试过程中,我们也发现了一些问题,由于对汽车工程理论与机械结构设计的不熟悉,使我们对智能车结构的改造和对激光传感器支架的设计存在着缺陷和不足,这就约束了智能车的提速,例如,支架过重使智能车重心偏高,导致在高速行驶转弯时会发生翻车的情况。此外,我们传感器信息的处理算法和转向控制算法也有改进和提升的空间,例如,可以尝试在转向控制中使用专家系统等先进的算法。这些都是我们今后努力的目标。7.2展望智能车系统的研究十分复杂,需要解决的问题很多,任务非常艰巨,不是一蹴而就的,必须经过长期的理论研究和实践探索才能够取得突破和进展。展望未来,对于我们所研究的这类智能小车,我们认为今后还可在以下几个方面做进一步的研究和提升。1)、智能车车机械性能方面。需要学习一些汽车工程方面的知识,以便对车体改造有理论指导和依据。此外可以在考虑外增加制动装置在入弯时进行减速。这样直道速度可以提高,平均速度更快。但如何选择合适的制动装置并对其进行控制,还需要进一步深入研究。2)、硬件传感器方面。可以尝试采用激光或者其它先进光电传感器。传感器的数量和最有布局也有待进一步研究。特别是驱动电路,在时序和器件选择上应该下大工夫。4)、在舵机控制策略上,可以考虑使用更先进的控制算法。参考文献[1]教育部高等学校自动化教学指导分委员会,关于举办第五届杯全国大学生“飞思卡尔”杯智能汽车竞赛的通知,2008.11.1[2]卓晴,黄开胜,邵贝贝.学做智能车[M].北京:北京航空航天大学出版社,2007[3]谢良之何信华冯义.中南大学黑影狂飙3代技术报告.2008[4]王宜怀吴瑾蒋银珍.嵌入式系统原理与实践.电子工业出版社.2012[5]阮毅陈维钧.运动控制系统.北京.清华大学出版社,2006.09致谢参与智能车竞赛是兴趣驱动,但若没有学校、老师的大力支持,没有同学们的相互交流,我们不可能完成全部智能车研究工作。感谢学院领导和老师的关心和支持,并提供优越的调试环境。特别感谢王击老师,在我们遇到困难的过程中帮助解决疑点,并始终鼓励我们继续前行。同时感谢一起参与研究的所有中南大学智能车竞赛团队的同学,没有大家的帮助,我们的进展将十分缓慢。附录:程序代码/*******************摇头舵机控制******************/voidLaser_Servor(void){floatp=0;floatd=0;floatpd=0;intPD=0;if(!Light){if(Br!=0&&Bl!=0){Wcount=0;zhuan1=0;zhuan2=0;if(Br>Bl){p=Laser_Kpn[Br-Bl]*(Br-Bl);d=Laser_Kd[abs(Br-preBr)]*(Br-preBr);pd=p+d;}else{p=Laser_Kpn[Bl-Br]*(Br-Bl);d=Laser_Kd[abs(preBl-Bl)]*(preBl-Bl);pd=p+d;}PD=(int)pd;CurrentLaserServorPWM=PreLaserServorPWM+PD;}elseif(Br==0&&Bl!=0){Wcount=0;zhuan1=0;zhuan2=0;p=Laser_Kpn[Bl+1]*(0-Bl);d=Laser_Kd[abs(preBl-Bl)]*(preBl-Bl);pd=p+d;PD=(int)pd;CurrentLaserServorPWM=PreLaserServorPWM+PD;}elseif(Bl==0&&Br!=0){Wcount=0;zhuan1=0;zhuan2=0;p=Laser_Kpn[Br+1]*Br;d=Laser_Kd[abs(Br-preBr)]*(Br-preBr);pd=p+d;PD=(int)pd;CurrentLaserServorPWM=PreLaserServorPWM+PD;}elseif(Br==0&&Bl==0){if(Speed<=205)zhuan1=1;if(Speed>205)zhuan2=1;Wcount++;if((Wcount>3&&zhuan1==1)||(Wcount>2&&zhuan2==1)){if(abs(Sum_Laserdegrees<=100))huizhuan=0.992;elseif(abs(Sum_Laserdegrees)<=150&&100<abs(Sum_Laserdegrees))huizhuan=0.987;elseif(abs(Sum_Laserdegrees)<=200&&150<abs(Sum_Laserdegrees))huizhuan=0.987;elseif(abs(Sum_Laserdegrees)<=250&&200<abs(Sum_Laserdegrees))huizhuan=0.987;elseif(abs(Sum_Laserdegrees)<=300&&250<abs(Sum_Laserdegrees))huizhuan=0.987;elsehuizhuan=0.987;CurrentLaserServorPWM=LASERSERVOR_MID+(int)((PreLaserServorPWM-LASERSERVOR_MID)*huizhuan);}elseCurrentLaserServorPWM=PreLaserServorPWM;}elseCurrentLaserServorPWM=PreLaserServorPWM;if(CurrentLaserServorPWM>LASERSERVOR_MOSTLEFT)CurrentLaserServorPWM=LASERSERVOR_MOSTLEFT;if(CurrentLaserServorPWM<LASERSERVOR_MOSTRIGHT)CurrentLaserServorPWM=LASERSERVOR_MOSTRIGHT;FTM0_C2V=CurrentLaserServorPWM;preBl=Bl;preBr=Br;PreLaserServorPWM=CurrentLaserServorPWM;LaserPWMData[0]=CurrentLaserServorPWM;}elseCurrentLaserServorPWM=PreLaserServorPWM;}/**************转向舵机算法*********************/voidRevolve_Servor1(void){inti=0;Sum_Laserdegrees=0;if(!Light){for(i=0;i<30;i++){Sum_Laserdegrees+=((long)LaserPWMData[i]-LASERSERVOR_MID);}Sum_Laserdegrees=Sum_Laserdegrees/30;//uart_send1((int)(Sum_Laserdegrees/10));if(Br!=0&&Bl!=0){if(Br>Bl)LdisPWM=CurrentLaserServorPWM-LASERSERVOR_MID;elseLdisPWM=CurrentLaserServorPWM-LASERSERVOR_MID;}elseif(Br==0&&Bl!=0)LdisPWM=CurrentLaserServorPWM-LASERSERVOR_MID;elseif(Bl==0&&Br!=0)LdisPWM=CurrentLaserServorPWM-LASERSERVOR_MID;elseLdisPWM=CurrentLaserServorPWM-LASERSERVOR_MID;//uart_send1(LdisPWM/10);if(abs(Sum_Laserdegrees)<=60)FInServor=0.40;//直道elseif(abs(Sum_Laserdegrees)<=140&&abs(Sum_Laserdegrees)>60)FInServor=0.52;//小Selseif(abs(Sum_Laserdegrees)<=260&&abs(Sum_Laserdegrees)>140)FInServor=0.58;//小Selseif(abs(Sum_Laserdegrees)<=300&&abs(Sum_Laserdegrees)>260)FInServor=0.62;//小Selseif(abs(Sum_Laserdegrees)<=350&&abs(Sum_Laserdegrees)>300)FInServor=0.70;//大弯elseif(abs(Sum_Laserdegrees)<=520&&abs(Sum_Laserdegrees)>350)FInServor=0.78;//500大弯elseif(abs(Sum_Laserdegrees)<=700&&abs(Sum_Laserdegrees)>520)FInServor=0.85;//640大弯(十字)elseFInServor=1;ServorPWM=(int)(FInServor*LdisPWM);CurrentServorPWM=SERVOR_MID-ServorPWM;if(CurrentServorPWM<SERVOR_MOSTLEFT)CurrentServorPWM=SERVOR_MOSTLEFT;if(CurrentServorPWM>SERVOR_MOSTRIGHT)CurrentServorPWM=SERVOR_MOSTRIGHT;FTM0_C3V=CurrentServorPWM;Wl=0;Wr=0;}else{LdisPWM=100*(Fr-Fl);if(Speed<115)KSpeed=1;elseif(Speed>=115&&Speed<175)KSpeed=1;elseif(Speed>=175&&Speed<185)KSpeed=1;elseif(Speed>=185&&Speed<195)KSpeed=1;//7elseif(Speed>=195&&Speed<205)KSpeed=1;//8elseif(Speed>=205&&Speed<215)KSpeed=1;//9elseif(Speed>=215&&Speed<225)KSpeed=1;//10elseif(Speed>=225&&Speed<235)KSpeed=1;//11elseif(Speed>=235&&Speed<245)KSpeed=1;//12elseif(Speed>=245&&Speed<255)KSpeed=1;//13elseif(Speed>=255&&Speed<265)KSpeed=1;//14elseif(Speed>=265&&Speed<275)KSpeed=1;//15elseif(Speed>=275)KSpeed=1;ServorPWM=(int)(KSpeed*LdisPWM);CurrentServorPWM=SERVOR_MID-ServorPWM;if(CurrentServorPWM<PODAO_MOSTLEFT)CurrentServorPWM=SERVOR_MOSTLEFT;if(CurrentServorPWM>PODAO_MOSTRIGHT)CurrentServorPWM=SERVOR_MOSTRIGHT;FTM0_C3V=CurrentServorPWM;}}/*****************速度电机PID控制*******************/voidSpeed_Control(void){floatMP=0;floatMI=0;floatMD=0;GPIOC_PDOR&=0XFFFFFFEF;if(!ting){SpeedErr[2]=SpeedErr[1];SpeedErr[1]=SpeedErr[0];SpeedErr[0]=needspeed-Speed;MP=Mkp*(SpeedErr[0]-SpeedErr[1]);MI=Mki*SpeedErr[0];MD=Mkd*(SpeedErr[0]-2*SpeedErr[1]+SpeedErr[2]);if(MI>I_max)MI=I_max;if(MI<I_min)MI=I_min;M_PID=MP+MI+MD;if((Motor_PWM[1])+M_PID>8000)Motor_PWM[0]=8000;elseif((Motor_PWM[1]+M_PID)<0)Motor_PWM[0]=0;elseMotor_PWM[0]=Motor_PWM[1]+M_PID;Motor_PWM[1]=Motor_PWM[0];FTM2_C0V=(int)(10000-Motor_PWM[0]);}}/*****************************档位调节******************************/voidMode_Set(void){if(((GPIOB_PDIR&0X00000001)!=0)&&((GPIOB_PDIR&0X00000002)!=0)&&((GPIOB_PDIR&0X00000004)!=0)&&((GPIOB_PDIR&0X00000008)!=0)){SpeedSet1=100;SpeedSet2=100;SpeedSet3=100;SpeedSet4=100;}if(((GPIOB_PDIR&0X00000001)!=0X00000001)&&((GPIOB_PDIR&0X00000002)!=0)&&((GPIOB_PDIR&0X00000004)!=0)&&((GPIOB_PDIR&0X00000008)!=0)){SpeedSet1=130;SpeedSet2=130;SpeedSet3=130;SpeedSet4=130;}if(((GPIOB_PDIR&0X00000001)!=0)&&((GPIOB_PDIR&0X00000002)!=0X00000002)&&((GPIOB_PDIR&0X00000004)!=0)&&((GPIOB_PDIR&0X00000008)!=0)){SpeedSet1=140;SpeedSet2=140;SpeedSet3=140;SpeedSet4=140;}if(((GPIOB_PDIR&0X00000001)!=0X00000001)&&((GPIOB_PDIR&0X00000002)!=0X00000002)&&((GPIOB_PDIR&0X00000004)!=0)&&((GPIOB_PDIR&0X00000008)!=0)){SpeedSet1=150;SpeedSet2=150;SpeedSet3=150;SpeedSet4=150;}if(((GPIOB_PDIR&0X00000001)!=0)&&((GPIOB_PDIR&0X00000002)!=0)&&((GPIOB_PDIR&0X00000004)!=0X00000004)&&((GPIOB_PDIR&0X00000008)!=0)){SpeedSet1=160;SpeedSet2=160;SpeedSet3=160;SpeedSet4=160;}if(((GPIOB_PDIR&0X00000001)!=0X00000001)&&((GPIOB_PDIR&0X00000002)!=0)&&((GPIOB_PDIR&0X00000004)!=0X00000004)&&((GPIOB_PDIR&0X00000008)!=0)){SpeedSet1=170;SpeedSet2=170;SpeedSet3=170;SpeedSet4=170;}

温馨提示

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

评论

0/150

提交评论