第1-2届飞思杯全国生智能汽车邀赛技术报告83篇军交队_第1页
第1-2届飞思杯全国生智能汽车邀赛技术报告83篇军交队_第2页
第1-2届飞思杯全国生智能汽车邀赛技术报告83篇军交队_第3页
第1-2届飞思杯全国生智能汽车邀赛技术报告83篇军交队_第4页
第1-2届飞思杯全国生智能汽车邀赛技术报告83篇军交队_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

1、第一届“飞思”杯大学生智能汽车邀请赛技术学校:军事交通学院队伍名称:军交 1 队参赛队员:带队教师:关于技术和研究使用的说明本人完全了解第一届“飞思”杯大学生智能汽车邀请赛关保留、使用技术 委会和飞思案、技术委会和研究的规定,即:参赛作品著作权归参赛者本人,比赛组半导体公司可以在相关主页上收录并公开参赛作品的设计方以及参赛模型车的集中。、图像资料,并将相关内容编纂收录在组参赛队员签名:带队教师签名:日期: 8 月 5 号 第一章:引言1设计制作思路1设计方案概述2第二章: 硬件部分2车模组装2传感器的设计与安装2传感器的选择及工作原理2传感器的布置方案2传感器信号探测及处理电路4系统电路板的设

2、计、安装与连接4驱动电机和舵机5主要车模参数6第三章:部分7控制算法7理论介绍7程序实现7代码设计10第四章:结论10主要性能1改进方向1参考文献2附录:程序源代码2第一章:引言1.1 设计制作思路为了实现对小车的智能控制,本设计以 MC9S12DG128 为,将传感器得到的路况信息进行综合判别和处理,然后以脉宽调制()的方式控制舵机转向和驱动电机加速或,从而控制小车,使小车能够快速、准确地识别特定路线并按适当速度行驶。多传感器并行工作、CPU 的综合数据处理为小车实现自动加速、限速、左转、右转提供了充分的保证。先后经过了组装车模、传感器的选择与布置、系统电路板的设计与安装、开发工具 BDM

3、的调试以及控制算法的不断改进等过程,完成对智能车粗略控制到精确控制,并使智能车由低速逐渐向高速过渡。在实验的基础上不断发现问题,并不断调试解决问题,使智能车能够最大限度地沿着轨道快速、准确地行驶。1.2 设计方案概述本设计方案主要分硬件、结论三个方面进行介绍。硬件部分主要阐述了外部传感器的选择、安装、传感器的探测原理、传感器的探测电路设计,系统电路板的电路设计及安装,驱动电机和舵机的控制。 控制算法的理论知识,程序以及代码的设计。结论部分主要部分主要介绍了了小车的性能以及改进的方向。现在对本技术的主要部分概括介绍如下:传感器部分:本智能车的传感器采用了反射式红外光电传感器,双排布置。在智能车的

4、头部安装了两块电路板,两块电路板的布置形式呈工字形。智能车通电后,光电传感器的发光管发出探测光,如果探测到白色部分,接收管能够接收到反射光;如果探测到黑色部分则探测光被吸收,接收管就接收不到反射光。根据此原理,把电信号转换成数字信号,从而把路面信息反映到控制系统,通过CPU 的综合数据处理,对智能车的转向和速度进行控制。控制系统部分:制作了以MC9S12DG128为的系统电路板,它给布置线路带来了极大的方便,并可以非常方便地安装在智能车上,使系统得到了简化。控制算法部分:采用了目前自动控制领域中最常用的控制算法控制算法进行车辆行驶控制。在本方案的设计中采用了直接计算法。在行驶过程中,由于车辆转

5、向造成车辆中心与黑线有一定的偏差量,就选择这一偏差量作为输入的偏差。本设计方案中以前排电路板的中心为车辆中心线所在位置,在车辆行驶过程中,当某一传感器感应到黑线位置时,就以该传感器与电路板中心的距离作为车辆的行驶偏差,以此作为控制器的输入量。为了改善控制算法中输入量不连续,引入车速作为算法辅助输入量。开发工具采用了主办方提供的BDM 调试器,在中就不再赘述。第二章: 硬件部分车模组装严格按照说明对车模进行组装。重点是准确地调整舵机,使舵机和前轮处于最佳的工作位置。传感器的设计与安装2.2.1传感器的选择及工作原理根据要求,有两个选择。第一种是采用CCD传感器,以一定的频率对路面信息进行。CPU

6、通过图象处理判断小车所处相对的位置。使用CCD进行图象和识别的方法,虽然该方案获得的信息较精确,但是不适用在小体积系统中使用,并且还涉及图象、图象识别等领域,占用系统资源较多,算法较复杂。第二种是采用反射式红外光电传感器,以一定的频率向CPU提供路面标志信号。CPU经过比较处理,粗略判断出小车所处的相对位置。该传感器体积小,价格便宜,使用方便,而且该方案占用系统资源较少,算法较易实现。故在本设计中采用了这种传感器,鉴于车底盘较低,采用近距离(2cm4cm)有效的传感器。工作原理如图2.1所示:路面探测距离图 2.1 传感器工作原理图反射式光电传感器有发射管和接收管组成,工作时由发射管发射红外线

7、,经被探测物体面反射,反射的红外线由接收管接收,接收管把接收的物理信号转换成电信号。被检测物体表面的颜色和粗糙程度影响反射光的强弱,反射面越不光滑,颜色越暗,反射光就会越弱。这里就是要运用红外光电传感器对颜色敏感的特点,当检测物体表面的颜色为黑色时,反射光很弱,接收管接收的光线可以忽略,使接收管处于一种状态,例如开关管截止;当检测物体表面的颜色为白色时,反射光较强烈。使接收管处于另一种状态,例如开关管导通。这两种相反的状态表现在电路中就是高低电平组成的脉冲信号。这个脉冲信号就是控制系统的输入信号,并且设的输入信号为 1 低电平信号输入为 0。通过编写控制算法,根据传感器搜集的路况信息,调节机和

8、驱动电机,实现小车的智能控制。的占空比,控制舵接收发射2.2.2 传感器的布置方案为了减弱外界光线对反射式红外光电传感器的影响,且考虑到小车底盘较低,把传感器放置在设计的电路板下,垂直探测地面。传感器的布置方案有单排、双排、W 字形排列等。由于 W 字形排列的算法比较复杂,了单排布置和双排布置的方案。只考虑首先选用了单排布置,也就是在车模的头部安装一块电路板,其底部安装 8 个传感器。通过对传感器探测到黑色导航线的情况的分析,用编码的形式把传感器探测到的路面信息表示出来。然后把这些路况信息输入到控制系统通过编写的控制算法就可以控制舵机和驱动电机,实现智能车的加速、减速、左转、右转了。通过不断的

9、实验,来进一步地调整各种编码下,智能车要转的角度的参数。但是这种控制算法对智能车进行控制时,并没有考虑速度对其转向的影响,只是简单地在转弯时,在直道时加速。因此在实验中发现智能车在跑道上慢速行驶时还能比较平稳的跑完全程,其速度稍微加大时,智能车在拐弯处即使进行了,也会由于惯性常会飞出跑道。改进的方法有二:一是改进算法,采用控制算法,它可以解决车辆行驶速度与转向角度大小的相关性问题,行驶轨迹的及问题;二是增大传感器的预描距离,进入弯道时提前。就双管齐下,增大了传感器探测电路板伸出智能车的距离。同时为了获得控制算法比较准确地输入量,就排的后面又安装的信息。最终了一块电路板,并在它的下面安装了 6

10、个传感器,采用了双排布置,即在智能车的头部安装了前、后两块电路板。其形状及尺寸如图 2.2(:毫米)所示:图 2.2两块电路板的布置如图 2.3 所示:排电路板上任意两个相邻的传感器的中心距离位 2.5cm;在后排电路板上,中间两个传感器的中心距离为 5.0cm,其余的相邻两传感器间的距离也为 2.5cm。前后两块电路板传感器分布所在直线间的垂直距离为 10.8cm。图 2.32.2.3 传感器信号探测及处理电路传感器信号探测及处理电路设计如图 2.4 所示:图 2.4D1 为红外光电传感器的发射管,D2 为其接收管。D1 发射红外线,D2 接收信号,判断是否有反射信号。如果有则 D2 输出,

11、如果没有则输出低电平,信号经过三极管、集成运放器输出到 CPU 的PORTA 或PORTB。14 个传感器获得的信号并行输入单片机,从而把路面信息反馈到控制系统,实现对智能车的控制。制作电路板后,要把探测电的元件一一对应地焊接到电路板上。焊接电阻时,要注意防止虚焊;焊接插件时要注意避免两个焊接点连接在一起造成短路;焊接发光二极管和接收二极管前要用万用表测量一下极性,防止将二极管反向安装。2.3 系统电路板的设计、安装与连接没有采用主办方提供了S12 的电路板,自行设计了系统电路板。首先在S12 电路板体积比较大,既不方便在智能车上安装,也不美观;其次S12 电路板上找到正确的引脚插线,也显得比

12、较复杂。设计的系统电路板就解决了这方面,可以把它很方便地固定在智能车的底盘上,并制作了转用的插槽(如图 2.2 所示)。制作了以MC9S12DG128为,并附以复位电路、晶体振荡器及时钟电路、+5V 的电源、驱动电机的供电插座、单片机引脚插槽以及其他一些常规电子元件组成的系统控制电路。系统控制电路原理图如图 2.5 所示:图 2.52.4 驱动电机和舵机图 2.6 舵机和电机工作原理原理图转向舵机MC33886加电机算法波MC9S12DG128传感器信息驱动电机和舵机是智能车整个系统的执行的控制系统由传感器获得路面信息,通过。以 MC9S12DG128为控制算法来调节舵机和驱动的占空比,控制智

13、能车的转向和车速。其工作原理图 2.6 所示。本电机的次比赛要求不得对驱动电机和舵机进行改造,本文对其不再赘述。2.5 主要车模参数车重:1.1kg电路功耗:长:384mm宽:185mm 高:77mm所有电容总容量:1900uF传感器种类:反射式红外光电传感器 数目:14伺服电机个数:0e)赛道信息检测精度:6mm频率:1000Hz第三章:部分3.1 控制算法本智能车辆的控制算法部分主要需解决如下问题:车辆直线行驶的稳定性问题,车辆转弯控制问题,车辆行驶速度与转向角度大小的相关性问题,行驶轨迹的及问题等。为了更好的解决设计中存在,本方案采用了目前自动控制领域中最常用的控制算法3.1.1 理论介

14、绍控制算法进行车辆行驶控制。控制算法包括直接计算法和增量算法,所谓的增量算法就是相对于标准的相邻两次运算之差,得到的结果是增量。也就是说在上一次的控制量的基础上需要增加(负值意味着减少)控制量,例如对于智能小车控制算法,就是智能小车相对于上一次转向角度还需要增加或减少的转向角度。在本方案的设计中采用了 直接计算法。(一)算法中常用概念解释如下:1、基本偏差 e(t)表示当前测量值与设定目标间的差,设定目标是被减数,结果可以是正或负,正数表示还没有达到,负数表示已经超过了设定值。这是面向比例数据。2、累计偏差 :的变动调节就进行直至无差,积分调节停止,积分调节输出一常值。积分作用的强弱取决于积分

15、时间常数 Ti,Ti 越小,积分作用就越强。反之 Ti 越大则积分作用越弱,加入积分调节可使系统稳定性下降,动态相应变慢。积分作用常与另两种调节规律结合,组成 PI 调节器或调节器。微分调节作用:微分作用反映系统偏差信号的变化率,具有预见性,能预见偏差变化的趋势,因此能产生超前的控制作用,在偏差还没有形成之前,以被微分调节作用消除。因此,可以改善系统的动态性能。在微分时间选择合适情况下,可以减少超调,减少调节时间。微分作用对于噪声干扰有放大作用,因此过强的加微分调节,对系统不利。此外,微分反应的是变化率,而当输入没有变化时,微分作用输出为零。微分作用不能单独使用,需要与另外两种调节规律相结合,

16、组成 PD 或控制器。(三)智能车辆控制算法中参数的选择此次参赛的智能车辆主要是寻迹行驶,控制算法所要做的就是控制车辆沿着预先设计好黑线行驶,保证车辆中心线在黑线上。在行驶过程中,由于车辆转向造成车辆中心与黑线有一定的偏差量,就选择这一偏差量作为输入的偏差。本设计方案中以前排电路板的中心为车辆中心线所在位置,在车辆行驶过程中,当某一传感器感应到黑线位置时,就以该传感器与电路板中心的距离作为车辆的行驶偏差,以此做为控制器的输入量。如图 3.1 所示:e(t传感器图 3.1通过直接算法公式(公式 2)计算出t 时刻智能车的控制转向角,由此达到对智能车转向进行控制的目的。但是由于输入量取值是由传感器

17、的位置决定,而传感器的数量又是有限的,所以只能获得有限的精确输入量,这样通过控制算法得出的控制转角就不是很理想。为了改善控制算法中输入量不连续,引入车速作为算法辅助输入量。通过车速、车辆上一次转角、车辆长度等值之间的数学关系,可以计算出车辆中心与黑线中心在一次传感器采样周期内的偏差,以此值与传感器采样值之间做比较,从而获得比较理想的偏差值,为控制算法找到较理想的输入量。车速、车辆上一次转角、车辆长度等数值之间中心黑线车 辆 中的关系可由图 3.2 导出:经过t 时间后车辆转过的角度为Kd 的值,然后通过实验找到合适的三个控制参数值。3.1.2 程序实现数值分析和变量之间的们通过以上的分析过程已

18、经基本了解,要通过程序将以上过程实现并达到预期的效果,还需要做一些准备工作。首先是将转向舵机和驱动电机的驱动程序设计好,然后测出智能车的最大行驶速度和最大转角,量出车辆轴距以及程序设计中需要用的一些参数。完成这些准备工作之后,画出程序流程图,如图 3.3 所示:开始否是传感器的检测值=0?否程序是否结束图 3.3程序结束图 3.3通过程序流程图,很快就可以确定下来编程方案,按照结构化程序设计的要求,对程序中的函数都进行模块化设计,保证程序的可读性和易现预期的设计目的。3.2 代码设计性,实通过以上分析,在编程时需要解决以下问题:调用转向函数和调速函数,调整车速和进行数值编码调用函数输出控制角度

19、和检测端口值的变化并到变量中定义变量和函数并初始化数据(1)控制算法的程序实现(2)基本计算函数的编程实现(3)输入输出量与算法之间的结合(4)变量之间数据类型的变化根据以上提出了下述解决方法:(1) 定义计算的结构体如下:typedef structfloat float float float float float floatSetPo;/设定目标 Desired Value比例常数 Proportional Const积分常数egral Const 微分常数 Derivative Const Error-1Error-2Proportion; egral; Derivative; La

20、stError; PrevError;SumError;SumsofErrors;(2)定义基本计算函数floatCalc(floatdError,Error;*pp, floatNextPo)/计算Error = pp-SetPo-NextPo;/偏差积分当前微分pp-SumError += Error; dError = pp-LastError- pp-PrevError;pp-PrevError = pp-LastError; pp-LastError = Error;return+);(pp-ProportionErrorpp-SumErrordError/比例项积分项微分项pp-e

21、gral *pp-Derivativefloat R(floatfloatx)/计算车辆转弯半径resu=200.0*(cosf(x*3.1415926/180.0)*(cosf(x*3.1415926/180.0)/(sinf (x*3.1415926/180.0);returnresu;float angela(float x)/计算角度 areturn (180.0+x-51.3);float angelb(float x,float y)/计算角度 bfloat rest=(180.0*y*0.025)/(R(x)*3.1415926); return rest;float angel

22、c(float x)/计算角度 cfloat resul=acosf(Rnext(x)*Rnext(x) 180.0/3.1415926;return resul;.0-R(x)*R(x)/(256.0*Rnext(x)*float Rnext(float x)float/计算车辆中心点转弯半径resaff=R(x)*R(x).0);.0-2.0*R(x)*128.0*cosela(x)*3.1415926/180float reste= sqrtf(resaff); return reste;float clength(float x,float y) /计算部分位移return (2.0*

23、Rnext(x)*sinf(y*3.1415926/180.0);float slength(float x,float y)/计算最终位移return(clength(x,y)*sinf(90.0+y/2-38.66-angelc(x)*3.1415926/180.0);(3)确定输入输出量与定义函数之间的关系coding ( unsigned charsensors)a=0;floength=0.0,rIn=0.0; switch (sensors)case case case case case case case case case case case case case case1:

24、3:2:6:4:length=12.5;a=1;break;/speed = 50length=25.0;a=1;break;/speed =50;length=37.5;a=1;break;/ speed = 45;length=50.0;a=1;break;/speed length=62.5;a=1;break;/speed=40;35;30;26;= 50;12:length=75.0;a=1;break;/speed 8: length=87.5;a=1;break;/speed16: length=12.5;a=-1;break;/speed48:length=25.0;a=-1;

25、break;/speed = 50;32:96:64:length=37.5;a=-1;break;/speed length=50.0;a=-1;break;/speed length=62.5;a=-1;break;/speed=45;40;35;30;192:length=75.0;a=-1;break;/speed128: length=87.5;a=-1;break;/speed = 26;default:a = 0; speed = 20;break;if(length=templength)rIn=length-slength(tempangle*0.2),angelb(temp

26、angle*0.2),(float)(0.2*(120-tempangle)*125);else rIn=length;tempangle =Calc ( &s,rIn );/Performerationif(tempangle0)tempangle=-1*tempangle; templength=length;a=a*()tempangle;speed=(signed char)(0.2*(120-tempangle)+26; return a;(4)变量之间数据类型的变化有以上程序可以知道各个变量之间有着数据类型变化,因而考虑在计算具体数值时采用浮点型数据,而最后输出量采用整型或无符号字

27、符型输出,便于计算和对单片机端口的写入。第四章:结论4.1 主要性能总体上,智能车已经实现了加速、黑色导航线比较平稳、快速地行驶了。、转向、刹车的基本功能,能够沿本智能车辆的控制算法部分主要解决如下问题:车辆直线行驶的稳定性问题,车辆转弯控制问题,车辆行驶速度与转向角度大小的相关性问题,行驶轨迹的及问题等。控制算法就可以解决这些问题。它有诸多优点:1)采用状态控制。在每个很小的一段时间内,认为车辆状态不变,因而在这段时间内可将车辆作静态处理。转向目的就是减小小车所在的中心线与车辆行驶的黑色导航线的静态误差。状态控制不考虑时间过程,而注重调整前后的状态变化。实际应用过程中,当时间足够小时,由于执

28、行机构的响应能力远远低于单片机的运行速度,实际控制操作效果就如同连续控制一样,保证了控制的准确性。2)控制输出不要求最优。从实际情况可知,在相同的情况下,同一驾驶员两次控制的结果可能不尽相同的,具有一定的随机性,但结果都能完成所要求的任务。因此,对于本智能车的控制输出的转向角,不要求它在当前位置是最优的,而只要求它满足两个条件,即方向正确,转向角度合理。3)控制算法交易实现。比较其他比较复杂的算法,如最优控制必须考虑时间的过程,因而需要了解各执行机构的动态响应特性,以获得准确的传递函数。而本文提供的算法只需要车辆当前的状态信息,即小车的当前位置(由传感器提供)与小车所应处的位置(由算法提供),

29、即 到转向控制角。整个过程不涉及执行机构的动态响应函数,从而降低了难度。4.2 改进方向本控制算法还存在一些:1)由于传感器的预描距离小(10cm 左右),随着车速的提高,要求控制的频率提高。由于系统硬件的限制很难满足高速情况下的转向控制的要求。2)作为辅助输入量的速度并不十分准确,所取的速度是算法赋予小车的速度,并非小车的真实速度。不同的路面,不同的转小车的速度都会产生影响,而这些影响是很难量化的。3)算法中参数的调整完全依靠实验人工标定,工作量比较大。这些问题都亟待解决。参考文献01. 自动控制原理/蒋大名、社,2003.6华主编。:、北方交通大学现代传感技术/C 程序设计:第 2 版/,

30、2001.4著。东学,2001.6著。开发方法/:著。04. 单片机应用的:,2004.10附录:程序源代码#include #include #include stdio.h#include math.h#define start_speed 5;#pragma LINK_INFO DERIVATIVE mc9s12dg128btypedef structfloatSetPo;floatProportion;floategral;floatDerivative;floatLastError;floatPrevError;floatSumError;s;temp;angle;float spe

31、ed;char flag;float templength;float coding( unsigned char sensors);void initial_(void);void initial_atd(void) ;char acc_sensorX (void);char acc_sensorY (void);void steer_(float angle);void drive_(signed char speed);voidInit (*pp);floatCalc(*pps, float NextPo);float R(float x);float angela(float x);f

32、loat angelb(float x,float y);float angelc(float x);float Rnext(float x);float clength(float x,float y);float slength(float x,float y);floatR(float x) return (200*cos(x)*cos(x)/sin(x);float angela(float x)return (180+x-51.34);float angelb(float x,float y)return (180*y*0.025/R(x);float angelc(float x)

33、return (arccos(Rnext(x)*Rnext(x)-R(x)*R(x)/(256*Rnext(x);float Rnext(float x) return (sqr(R(x)*R(x)-2*R(x)*128*cos(angela(x);float clength(float x,float y)return (2*Rnext(x)*sin(y); float slength(float x,float y)return (clength(x,y)*sin(90+y/2-38.66-angelc(x); void TimerOverflow(void) .while (TCNT !

34、= 0 x0000);while (TCNT = 0 x0000);flag = 1;void initial_(void)E = 0X82;CTL = 0X80;CLK = 0X80;PRCLK = 0X24;SCLA = 0X40;SCLB = 0X02;POL = 0X82;CAE = 0X00;PER1 = 0X40;DTY1 = 0X10;PER67 = 0X2710;DTY67 = 0X2D0;void initial_atd(void)ATD0CTL2 = 0 xC0;ATD0CTL3 = 0 x18;ATD0CTL4 = 0 xA7;ATD0CTL5 = 0 xb1;ATD0D

35、IEN = 0 x00;float coding ( unsigned charsensors)float a,length;float rIn,rOut;switch (sensors)case 1: length=12.5;speed = 50;break;case 3: length=25;speed = 50;break;case 2: length=37.5; speed = 45;break;case 6: length=50;speed = 40;break;case 4: length=62.5;speed = 35;break;case 12:length=75;speed

36、= 30;break;case 8: length=87.5;speed = 25;break;case 16: length=-12.5;speed = 50;break;case 48:length=-25;speed = 50;break;case 32: length=-37.5;speed = 45;break;case 96: length=-50;speed = 40;break;case 64: length=-62.5;speed = 35;break;case 192:length=-75;speed = 30;break;case 128: length=-87.5;speed = 25;break;default:a = 0; speed = 20;break;if(length=templength) rIn=length-slength(temp*0.2,angelb(temp*0.2,speed);rIn=length;a =Calc ( &s,rIn );templength=length;retur

温馨提示

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

评论

0/150

提交评论