深圳大学追梦队技术报告_第1页
深圳大学追梦队技术报告_第2页
深圳大学追梦队技术报告_第3页
深圳大学追梦队技术报告_第4页
已阅读5页,还剩77页未读 继续免费阅读

下载本文档

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

文档简介

第三届全国大学生“飞思卡尔”

杯智能汽车竞赛技术报告学校:深圳大学队伍名称:追梦队

参赛队员:杨华良

程传顺

王恩指导教师:邱建郭小勤关于技术报告和研究论文使用授权的说明本人完全了解第三届全国大学生“飞思卡尔”杯智能汽车竞赛关保留、使用技术报告和研究论文的规定,即:参赛作品著作权归参赛者本人,比赛组委会和飞思卡尔半导体公司可以在相关主页上收录并公开参赛作品的设计方案、技术报告以及参赛模型车的视频、图像资料,并将相关内容编纂收录在组委会出版论文集中。参赛队员签名:带队教师签名:日期:摘要本智能车以£思卡尔公司提供的16位微控制器MC9s12DG128B为核心控制器,采用CCD摄像头来识别跑道,车速检测采用欧姆龙旋转编码器,利用MOS管搭建H桥电路来控制驱动电机正反转的快速切换,配合电机、舵机、电池等组成的系统电路进行信息处理,控制模型车高速稳定地在跑道上行驶。实验结果表明,系统设计方案可行。关键词:MC9S12DG128B,CCD摄像头,MOS管TOC\o"1-5"\h\z\o"CurrentDocument"第1章引言 1\o"CurrentDocument"智能车对赛道信息的采集 2\o"CurrentDocument"利用控制器对采集到的数据进行分析 3\o"CurrentDocument"对采集到的图像进行分析,识别起跑线 3\o"CurrentDocument"智能车的整体控制策略 3\o"CurrentDocument"智能车主要执行单元 3\o"CurrentDocument"第2章智能车整体设计方案的概述 17\o"CurrentDocument"智能车系统设计的分析 5\o"CurrentDocument"智能车系统设计的结构图 6\o"CurrentDocument"第3章智能车机械部分的设计 9\o"CurrentDocument"前轮主销后倾角调整 9\o"CurrentDocument"前轮主销内倾角调整 11\o"CurrentDocument"车底盘与地面距离的调整 12车前轮部分离地面的调整 12车后轮部分离地面的调整 12\o"CurrentDocument"车后轮距的调整 13\o"CurrentDocument"车模转向机械结构的设计 14\o"CurrentDocument"车模测速机构的设计 15第4章智能车硬件设计方案 错误!未定义书签。硬件方案设计概述 错误!未定义书签。硬件电路的实现 错误!未定义书签。以S12为核心的单片机最小系统 17车的主板电路 19电源稳压电路 19视频同步分离电路 21电机驱动电路 22速度传感器 23\o"CurrentDocument"摄像头概述 24\o"CurrentDocument"无线传输模块 25\o"CurrentDocument"第五章智能车速度控制方案的设计 27\o"CurrentDocument"电机运行速度的物理实现方案 27\o"CurrentDocument"被控对象结构及参数的确定 28\o"CurrentDocument"PID控制参数的设定 32PID控制算法在单片机中的实现 33\o"CurrentDocument"第六章智能车软件设计方案 34\o"CurrentDocument"图像的采集和图像的处理 34图像采集 34图像的处理 34黑色轨迹的寻找 34弯道的识别 36图像中有效信号的寻找 37轨迹弯道的计算 37轨迹弯道值的补偿 38\o"CurrentDocument"上位机调试平台的设计 40无线串口通讯模块 40利用VISUALBASIC6.0设计小车的控制平台 40\o"CurrentDocument"智能车控制算法的设计 43常规PID控制算法的设计 43小车跟踪轨迹线控制算法的设计 45小车运动模型的分析 45控制周期的选择 47横向纠偏控制算法的设计 48偏差量的标定 49PID控制算法系数整定 51基于图像的PID控制算法设计 56第七章车模的主要技术参数 57\o"CurrentDocument"第八章系统的调试过程概述 58\o"CurrentDocument"第九章总结 59参考文献 60附件A原程序代码 61第1章引言随着人们生活水平的提高和现代科技的飞速发展,人们对智能化的要求已越来越高,而智能化在汽车相关产业上的应用最典型的例子就是汽车电子行业,汽车的电子化程度则被看作是衡量现代汽车水平的重要标志。中国教育部为了加强大学生实践、创新能力和团队精神的培养,经研究决定,委托教育部高等学校自动化专业教学指导分委员会主办每年一度的全国大学生智能汽车竞赛,并成立了由教育部、自动化分教委、清华大学、飞思卡尔半导体公司等单位领导及专家组成了组委会。全国大学生智能汽车竞赛由飞思卡尔公司提供统一的标准硬软件技术平台。各参赛队以飞思卡尔16位单片机MC9s12DG128B为核心控制模块,以引导改装后的模型汽车按照规定路线行进,以完成时间最短者为优胜。智能车(intelligentvehicle)又叫轮式移动机器人,是一个集环境感知、规划决策、自动行驶等功能于一体的综合系统,它集中地运用了计算机、传感、信息、通讯、导航、人工智能及自动控制等技术,是典型的高新技术综合体。本队制作的智能车以16位单片机MC9S12DG128B为控制系统核心,利用CCD视频传感器采集路径信息,经过系统处理,识别当前路径情况,做出判断决策,从而给出相应的PWM信号,通过MOS管建立的H桥电路驱动直流电机以合适的速度行驶,同时,控制舵机转出相应的角度,使智能车能够稳定地沿着跑道行驶。在准备比赛的过程中,我们小组成员涉猎控制、模式识别、传感技术、汽车电子、电气、计算机、机械等多个学科,这次磨练对我们的知识融合和实践动手能力的培养有极大的推动作用。这份技术报告中,我们通过对智能车的整体设计方案、系统电路、控制算法、调试方法以及车辆参数进行介绍,并详尽地阐述了我们的思想和创意,具体表现在S12最小系统的设计,电机驱动电路的创新设计,测速装置的设计与安装,舵机系统的固定设计以及算法方面的独特想法,而对单片机具体参数的调试也让我们付出了艰辛的劳动。这份报告凝聚着我们的心血和智慧,是我们共同努力后的成果。

图1.1车模的整体图片智能车对赛道信息的采集今年比赛是分两组进行的,即摄像头组和光电管组,所以对赛道的信息采集主要有两种方式。它们分别是:(1)用摄像头完成对道路的拍摄后把图像信息传入处理系统。(2)用光电传感器把不同位置的道路情况转化为数字量或模拟量传入处理系统。采集信息的快慢及准确程度直接决定了后续工作能否顺利进行,这是智能车设计种非常重要的一步工作。所以道路信息采集工作的核心是找到一种相对高分辨率、高速度的数据采集方法为分析工作及时提供准确的数据。利用控制器对采集到的数据进行分析CCD采集到的数据通过PAD口输入到单片机中后,将根据采集的方法不同来对其进行运算,以得到小车与赛道的相对位置关系及相对运动关系,如果考虑道路信息的历史记录或利用摄像机的话也可以得到道路弯直,曲率等更进一步的信息。分析是上层控制算法的基础,根据摄像头安装位置,获得的图像质量是不一样的。分析的目的是从综合考虑了上述因素安装的摄像头拍摄图像中获取尽可能多的有用信息。对采集到的图像进行分析,识别起跑线小车顺利沿跑道跑完两圈,然后在起跑线三米以内的范围停车,这是今年比赛新加入的规则。要达到自动停车的功能,对智能车摄像头的安装高度,俯仰角,对焦距和清晰度有很高的要求,同时对程序的算法也是一种挑战。车在行驶的过程中可能会把各种干扰信号当成起跑线,造成在没有跑完赛道的情况下停车,很大程度上加大了比赛的冒险性,同时比赛的难度也得到了提升。智能车的整体控制策略根据采回的数据和微控器对数据的进行处理,我们可以利用已知信息来完成对智能车控制指令的输出。但如何能够达到“智能地”让车模完成对赛道的判断将成为难点。我们的主要目标是:根据道路趋势来制定策略,在不违规的前提下缩短行驶距离,消除车体产生的振荡现象,尽量减轻车身的重心,加快调节的响应速度等。智能车主要执行单元智能车的执行机构主要涉及一些硬件电路问题和一些机械传动问题。它保证控制系统发出的指令被正确可靠执行。实践证明:执行部件对发热,对大电流的较强的承受能力和各连接部位之间的良好的润滑应该是这部分所要考虑的主要问题。例如电机的发热,驱动的电路电流的大小,传动机构的润滑性等。五个步骤中的难点主要集中在于第二步与第四步——数据的分析与控制策略的制定,实际上小车的适应性和极限速度很大程度上是由它们决定的。除此之外,必要的显示机构对车模的调试会产生积极的作用。如,可以通过LED或LCD表示车模决策的情况及对道路识别的结果。甚至可以通过存储介质或利用无线通信的方式把车模运行情况全部记录下来。这样在调试阶段可以更为充分地掌握策略制定和执行的细节。第2章智能车整体设计方案概述智能车系统设计的分析今年比赛和以往两年最大的差别是光电管组和摄像头组分开来进行比赛,这样在比赛中就不存在摄像头和光电管对路径识别的优缺点所带来的误差,提高了比赛的公平性。智能车竞赛要求设计一辆以组委会提供车模为主体的可以自主寻线的模型车,比赛最后成绩按单圈最快时间来计算。我们分析了以往两届决赛各个队伍的优缺点,分析了两种传感器的特点和应用范围,并展望了智能车发展方向,比较了光电传感器和CCD图像传感器的优缺点。红外传感器相对简单,程序处理也不是很复杂,但是前瞻距离很小,安装排位相对麻烦;CCD图像传感器前瞻距离大,采样信息量大,便于分析前方路径信息,安装相对简单,但是其程序处理相对比较复杂,时序控制要求很严格,对单片机速度的要求较高。在这种竞速的比赛中,因为智能车系统在动作决策方面会有一定的延时,因此要想让车跑的更快,车的前瞻性是个很重要的因素。而且,对前方路径分析的越清楚,那么动作决策的灵活性就越大,你可以根据前面的数据做出适当的速度和角度的控制策略。基于以上的考虑和以及以后的技术发展方向,我们决定采取以CCD图像传感器为基础的寻线系统。使用面阵CCD进行赛道参数检测的方案,充分利用S12单片机内部硬件资源AD模块,直接采集CCD输出的模拟信号,可以获得满足参数检测需要的图像,计算出赛道参数,进而完成路面信息检测。利用电位器测得舵机转向,编码器检测车速,为S12单片机控制提供有效的小车状态量,转向和车速;控制策略采用了两种控制方法:基于路径偏差、车模姿态的比例微分加上预瞄控制;根据设计要求,系统可总体分为电源管理部分、控制执行部分、信号检测部分和通讯及调试部分。其中控制部分包括:控制器模块、驱动电路

模块、舵机转向模块。信号检测部分包括:道路信息检测模块、方向角检测模块、速度检测模块。智能车系统设计的结构图按照预先的设计,我们设计了整个系统的结构图。系统力求简单高效,

在满足比赛要求的情况下,使硬件结构最简单,减少因硬件而出现问题。图2.1智能车系统的结构图图2.2智能车系统的电源模块结构图第3章智能车机械部分的设计为了使车能够更稳定的高速运行,在比赛备战之初,我们就对这个车进行了系统的分析。今年的车模精度不是很高,因此尽量在规则允许范围内改造车模,提高车模整体精度是很必要的。另外,我们在实际调试中发现,前轮的束角和主销倾角对车的高速运行下的稳定性影响很大。高速运行下舵机的转动速度对车转向的灵活程度也起到了根本性的作用。所以,在整车的机械结构方面我们进行了三方面改进:转向机构改进、前轮束角调整、底盘高度调整前轮主销后倾角调整主销后倾角定义:上球头或支柱顶端与下球头的连线向前或后倾斜的角度,向前倾称为负主销后倾角,向后倾斜称为正主销后倾角。其功能影响转向稳定性及转向后车轮自动回正能本组将图3.1中的黄色小垫片由原来的前2后2改成图3.2中的前1后3,可使小车主销后倾角为2°〜3°。增加了小车的回正力矩和直线高速行驶的稳定性。图3.1前轮主销后倾角调整前图3.2前轮主销后倾角调整后前轮主销内倾角调整主销内倾角定义:当汽车水平停放时,在汽车的横向垂面内,主销轴线与地面垂线的夹角为主销内倾角。汽车直线行驶时,车轮轴线与主销的交角恰为这个最大值。车轮轴线与主销夹角在转向过程中是不变的,当车轮转过一个角度,车轮轴线就离开水平面往下倾斜,致使车身上抬,势能增加。这样汽车本身的重力就有使转向轮回复到原来中间位置的效果。所以主销内倾角的作用是使车轮自动回正。本组将主销内倾角调节为6°左右。减小了赛道面作用于前轮的阻力矩,使舵机转向更加轻便,同时车轮自动回正的速度加快。图3.3调整上图的杆长度可以调整内倾角车底盘与地面距离的调整车前轮部分离地面的调整模型车提供的垫片有1mm和2mm两种规格,本组考虑到比赛赛道会有坡度,不能将底盘前面降得过低,否则可能导致底盘与赛道产生碰撞。所以只使用了2mm规格的垫片将前半部分离地间隙减小。图3.4改装后的照片车后轮部分离地面的调整本组采用了车模提供的卡圈使底盘后半部离地间隙减小。本组将车模原配的卡圈A换成卡圈B安装于C处,使车模后半部分离地间隙减小。经测试,车模在底盘离地间隙调整后,小车速度较高过弯时稳定性增强,侧滑减小。

图3.5改换垫片的照片车后轮距的调整本组将车模原配的调节件D换成车模提供的调节件E,使后轮距在原来基础上增加了4mm,进一步减小了侧滑。图3.6改换后轮距的图片车模转向舵机机械结构的设计转向系统在车辆运行过程中有着非常重要的作用,合适的前桥调整参数可以保证在车辆直线行驶过程中不会跑偏,即保证车辆行驶的方向稳定性;而在车辆转向后,合适的前桥可以使得车辆自行回到直线行驶状态,即具有好的回正性。基于这个原因,前桥参数调整及转向系统优化设计必然会成为智能车设计中机械结构部分的重点,在实际操作中,我们通过理论预测进行方案的可行性分析,然后做出实际结构以验证理论数据。另外,在模型车制作过程中,除了遇到“如何得到良好的方向稳定性”的问题外,还要考虑如何尽快实现转向。而由于功率是速度与力矩乘积的函数,追求速度,必然会使力矩减小,因此设计时就要考虑到舵机的动力与来自地面的摩擦阻力间的关系,避免因舵机力量太小使得车辆无法转向的情况发生。经过最后的参数比较,为了解决以上问题,我们希望通过设计一些可调整的机构,加上实际测算,最后得出一套可以稳定、高效工作的参数及机构。

图3.7改装后的转向机构测速机构的设计这个部分的安装也是机构改装的一大特点,如果编码器的齿轮和电机后面的齿轮间隙不适合的话,会给车的整体性能带来很大的影响。图3.8编码器的安装图片第4章智能车硬件设计方案硬件方案设计概述从最初进行硬件电路设计时我们就制定了系统的设计目标:可靠、高效、简洁,在整个系统设计过程中严格按照规范进行。可靠性是系统设计的第一要求,我们对电路设计的所有环节都进行了电磁兼容性设计,做好各部分的接地、屏蔽、滤波等工作,将高速数字电路与模拟电路分开,使本系统工作的可靠性达到了设计要求。使用了由分立元件制作的直流电动机可逆双极型桥式驱动器,该驱动器的额定工作电流可以轻易达到10A以上,大大提高了电动机的工作转矩和转速。简洁是指在满足了可靠、高效的要求后,为了尽量减轻整车重量,降低车体重心位置,应使电路设计尽量简洁,尽量减少元器件使用数量,缩小电路板面积,使电路部分重量轻,易于安装。我们在对电路进行详细、彻底的分析后,对电路进行了大量简化,并合理设计元件排列和电路走线,使本系统硬件电路部分的重量、面积都达到了设计要求。硬件电路的实现整个智能车控制系统是由三部分组成的:S12为核心的最小系统板、主板、电机驱动电路板。最小系统板可以插在主板上组成信号采集、处理和电机控制单元。为了减小电机驱动电路带来的电磁干扰,我们把控制单元部分和电机驱动部分分开来,做成了两块电路板。4.2.1以S12为核心的单片机最小系统单片机最小系统板使用MC9s12DG128单片机,112引脚封装,为减少电路板空间,板上仅将本系统所用到的引脚引出,包括两路AD转换接口,三路PWM接口,一路计数器接口,一路外部中断接口,16路普通10接口。其他部分还包括电源滤波电路、时钟电路、复位电路、串行通讯接口、BDM接口为提高系统工作稳定性。单片机最小系统板电路原理图如图4.1。图4.1 S12最小系统原理图单片机引脚规划如下:PAO:速度控制拨码开关接口;PB0~PB4:调试LED指示灯;PADO,PAD8:CCD模拟信号的接口;PTO:编码器测速模块的接口;PJ6,PJ7:LM1881分离信号的接口;PE1:奇偶场信号的接口;PS2,PS3:无线模块的接口;PP1,PP3.PP5:电机与舵机驱动的脉冲信号输出;4.2.2车的主板电路主板上装有组成本系统的主要电路,它包括如下部件:电源稳压电路、视频同步分离电路、摄像头接口、舵机接口、电机驱动器接口、编码器接口、无线模块接口、电源接口、单片机最小系统板插座、开关、指示灯、拨码开关等。电源稳压电路本系统中电源稳压电路包括三路稳压电路,一路5伏的稳压电路为整个智能模型车自动控制系统中除后轮驱动电机和转向舵机外的所有设备供电。由于整个系统中+5V电路功耗较小,为了降低电源纹波,我们决定使用串联型稳压电路,另外,后轮驱动电机工作时,电池电压压降较大,为提高系统工作稳定性,必须使用低压降电源稳压芯片,常用的低压降串联稳压芯片主要有LM2940和AS1117,LM2940压降虽然比AS1117更低,但是电源纹波较大,所以我们最终选择AS1117设计电源稳压电路。电源稳压电路原理图如图4.2O其中6伏的稳压电路为舵机工作供电,3伏的稳压电路为AD采样提供参考电压。图4.25伏电压的稳压电路图AS1U7图4.36伏电压的稳压电路原理图AS1U7图4.36伏电压的稳压电路原理图图4.43伏电压的稳压电路原理图视频同步分离电路我们的智能模型车自动控制系统中使用黑白全电视信号格式CCD摄像头采集赛道信息。摄像头视频信号中除了包含图像信号之外,还包括了行同步信号、行消隐信号、场同步信号、场消隐信号以及槽脉冲信号、前均衡脉冲、后均衡脉冲等。因此,若要对视频信号进行采集,就必须通过视频同步分离电路准确地把握各种信号间的逻辑关系。我们使用了LM1881芯片对黑白全电视信号进行视频同步分离,得到行同步、场同步信号,具体原理不再赘述。视频同步分离电路原理图4.5图4.5视频同步分离电路

除以上三部分外,主板上还具有摄像头、舵机、电机驱动器、编码器、无线通讯模块、电源、单片机最小系统板等设备的接口,并准备了若干指示灯、开关等用于系统调试。主板完整电路原理图如图4.6.•三一之二二一二f•三一之二二一二f至4a:d7a;士3r三一二K止之二-elhe二一」

3iILj=3:fFd73;=3ra:图4.6车的主板电路总原理图电机驱动电路电机驱动板为一个由分立元件制作的直流电动机可逆双极型桥式驱动器,其功率元件由四支N沟道功率MOSFET管组成,额定工作电流可以轻易

达到10A以上,大大提高了电动机的工作转矩和转速。该驱动器主要由以下部分组成:PWM信号输入接口、逻辑换向电路、电源电路、上桥壁功率MOSFET管栅极驱动电压泵升电路、功率MOSFET管栅极驱动电路、桥式功率驱动电路、缓冲保护电路等。电机驱动板电路原理图如图4.7所示图4.7电机驱动电路原理图速度传感器为了提高速度测量的精度和减少机械安装的工作量,我们选择欧姆龙旋转式速度传感器,这是一种高度集成的传感器,使用起来非常方便,减少了智能车开发的过程时间。安装如图4.8所示。

图4.9编码器的图片摄像头概述本智能车寻线采用CCD图像传感器方式,它是普通单板摄像头。普通CCD图像传感器通过行扫描方式,将图像信息转换为一维的视频模拟信号输出。信号一行有效的图像信只有64微秒的传输时间,所以要对图像进行高精度的采样就必须要用到高速的ADCo微控制器MC9S12DG128上的ADC并不能称为高速,通过寄存器设置ADC可以在两种工作方式下工作,-是单次采样,二是连续采样。ADC工作方式的选择可以通过寄存器ATDCTL5上的SCAN位来实现,当SCAN位置1时,ADC工作在连续采样模式下。为了采样到更多的信号,ADC要工作在连续采样模式下。通过实验证明,微控制器MC9S12DG128上的ADC在总线频率为50MHz的情况下,(在外部晶振为16MHz情况下,设置微控制器的锁相环,总线频率可以达到50MHz)一行最多大约可以采样70个点,但是如果用C语言的数组来传递采样数据的话,因为数组寻址也是要消耗一点时间的,所以一行最多能采样大约45个点,其中去掉行消隐信号,正真有用的图像信号就只有38个点。在说明微控制器怎样采集图像之前要先介绍整个采集图像的硬件系统。在整个视频信号里面要采样的是图像信号,所以要利用同步信号来控制ADC的采样时刻才能准确的对图像信号进行采样。在硬件系统中利用芯片LM1881来获得视频信号中的行同步信号和场同步信号,行同步信号接到微控制器的外部中断口,场同步信号接到GPI0口o视频信号接到ADC的通道。一行有用的图像信号,微控制器MC9S12DG128上的ADC最多只能采样38个点,但是这样,行信号上的分辨率就会比较低,在进行高精度控制的时候,这点就显得不够。所以采用以下的办法来解决,就是把CCD图像传感器转过90度来安装,那么原来一场312行信号就变成了312“列”信号。也就是路面实际的横坐标就由312个点来表示。这样就可以大大提高横坐标的分辨率,为控制算法的设计建立一个良好的物理平台。无线传输模块在研究小车控制算法的时候,有很多量是要知道。比如说:要知道CCD图像传感器采集到的图像是否正确;采集到的图像到底是什么样子;小车在运行过程中,偏差量是多少;控制算法输出的控制量又是多少;控制结果符不符合要求,等等。这些数据对用于分析小车性能和设计控制算法都是很必要和很有好处。所以在小车运行的时候,使用一块无线串口通讯模块来获得得到这些数据。通过无线串口通讯模块,微控制器使用串口就可以与PC机通讯,这样微控制器就可以把数据实时地传送到PC机上。图4.10无线模块的图片第5章智能车速度控制方案的设计速度控制器的设计概述通过查阅丛多的文献资料,我们对多种常用速度控制器的设计方法进行比较,我们最终选用闭环的PID控制算法来控制小车的运行速度。电机运行速度的物理实现方案智能车的速度控制是利用单片机发出的PWM脉宽信号控制电机驱动芯片驱动电机来达到模型赛车车速控制的。小车的加减速性能十分重要。当PWM占空比为0时,小车能获得最大的加速度。当小车须要减速时,可撤消加在电机两端的电压,或者用能耗制动,或者用反接制动。三种方法的减速性能如图5.1所示。易见反接制动的效果比其余两种方法要好。且在H桥电路中易于实现,因此在本系统中采用加反压的方法来实现减速。

图5.1三种方法实现停车制动的比较图被控对象结构及参数的确定对被控对象的结构及参数的获得是通过试验的方法先建立简化数学模型,然后在有效数据基础上用系统辨识的方法来求得。在系统的结构上,设电机输出力矩为T,忽略电机自身的转动惯量,设除加速阻力外其余阻力与角速度成正比,则

电动机产生的力矩丁⑺与电动机的电枢电流2)成比例,即TQ)=KTi(ty另设电动机电枢的反电动势匕⑺与旋转速度。⑴,有下列关系另设电动机电枢的反电动势匕⑺与旋转速度。⑴,有下列关系由基尔霍夫电压定律得di叱+•«)+%«)・at对上式进行拉氏变化,并设。(0)=0,得3+Q)Q(s)=T(s)T(s)=KtIQs)匕(s)=K.Q(s) -匕(s)=(小+#"(£)+《(£)・消去T(s),/(s),匕(s)得到从输入电压匕(s)到转角速度。(s)的传递函数为%)_如_k%)_如_kt匕(s)UV+(RJ+DDs+RD+KXt

■因此,该系统的结构为:系统辨识实验设计需要完成:确定输入信号、采样周期、辨识时间和辨识模式。采样周期要满意满足采样定理,即采样频率不能低于信号截止频率的2倍,此外,还要考虑辨识的算法,控制计算速度和检测元件的响应速度等。工程中常用的采样公式为T0=T95/(5〜15)TO表示采样周期,T95表示过程阶跃响应达到稳态值95%所需要的调节时间。这里采样时间取0.05s,能满意以上要求。在系统实际运行过程中,单片机输出PWM波形,控制驱动电路的电压输出。单片机使用••个8位的寄存器(调节范围为0~255,设其值为u)对PWM的占空比进行控制,电池电压约为7V,加在电机两端的电压约为‘-x7v。255电机驱动电路的输入输出关系是一个比例的关系。因此,这里把驱动电路和电机组成的系统看成被控对象。这样,被控对象的输入是PWM波形,输出是电机的转速。图5.1锯齿波响应曲线为了确定参数匕,k2,k3,原做了被控对象锯齿波开环响应实验。其输入为不同占空比的PWM波形,输出是电机转速。为了表述的方便,PWM占空比用控制单片机PWM输出的寄存器的值来表示,其调节范围从0到255,当为0时,电机得到的输入电压为0V,当为255时,电机得到的输入电压约为电池电压;电机的转速用每50ms得到的编码器传来的脉冲个数来表示。以下的实验的PWM占空比和电机转速也用这种方式表述。图3-4是显示的数据是实际系统辨识中所用的数据,下方显示的是输入信号,上方显示的是电机的转速。采用以上数据,用Matlab系统辨识工具箱ident辨识系统。这里,因为得到了系统的传递函数结构,因此使用ident的参数模型辨识工具辨识。得到的常数值占,k2,卜,却分别为:k、=0.331

k2—0.826%3=1.818k4=1因此,被控对象的传递函数为G(s)=0.331G(s)=0..82652+1,8185+T5.4PID控制参数的设定在PID控制器中,参数kp,ki,kd的整定是十分重要的,其好坏直接影响调节品质。Matlab的sisotool工具箱提供了连续系统PID控制算法参数整定的功能。其介面如图3-7所示。选用其中的Ziegler-Nichols整定算法整定。确定的参数为kp=27.55ki=10.47kd=3.40。图5.2图5.2在MATLABSISOTOOL工具箱进行PID参数整定5.5G(s)0.3315.5G(s)0.331图5.3智能车速度控制的实现流程图第6章智能车软件设计方案图像的采集和图像的处理智能车的运动主要是跟踪黑色轨迹线来行驶,所以要使车跑动的状态处于最佳和行驶的速度最快,首先要处理的问题就是图像的采集和处理。图像的采集我们车的硬件系统中没有采用外部加AD方案,所以单片机采样的速度得不到最好的提升。经过多我们的讨论和论证,我们决定采用单片机中两路AD进行交替使用工作,使我们的单片机的采样速度得到了提高。部分代码如下:ATD0CTL5=128;ATD1CTL5=128;for(CurPoinl=0;CurPoint<X;CurPoint++){ccd_data_temp[CurLine][CurPoint]=ATDODROL;ATD0CTL5=128;CurPoint++;ccd_data_temp[CurLine][CurPoint]=ATDlDROL;ATD1CTL5=128h图像的处理1.2.1黑色轨迹的寻找在一幅50X60象素的图片中寻找黑色轨迹。下面的一组数据就是ADC采样视频信号所得到的数据:图6.1是CCD图像传感器采集到的图像。图6.1CCD所拍的赛道图像下面的数据是ADC采样图6.2的第十五行图像的值:可以看出,黑色是有一个阀门值,只要采样数据小于该阀门值就可以认为黑色。一般来说,在没有很大干扰的情况下,黑色的阀门值为40左右。有了黑色阀门值要寻找黑色轨迹线就比较简单。由于黑色轨迹线是以白色作为底色,环境干扰不大。所以选择图像处理中比较简单的办法——边沿检测算法。ADC采样得到的采样值是用数组保存,那么数组的下标就表示该数在图像中的坐标。首先从图像的左边开始寻找黑色轨迹线,在遇到小于黑色阀门值时就认为找到黑色轨迹线的左边沿,记下此数的下标;然后再继续寻找,把最后一个小于黑色阀门值的数的位置认为是黑色轨迹线的右边沿,记下此数的下标;然后把这两个下标求和取中间值,就认为这个代表了这一行黑色轨迹线的中心位置。其他行类推。弯道的识别我们采用的PID控制算法的系数是要根据动态轨道的具体情况来作出相应调整,为了使车能够很好的过弯,所以必须通过图像处理来获得轨道的实时情况。.1图像中有效信号的寻找按照上面的办法,黑色轨迹线被处理成一根细线,每一行只用一个点来表示轨迹线的中心位置。但是在一场图像中,并不是所有的行都会有黑色轨迹线的信号。如图6.3;可以看出,图像中前儿行是没有黑色信号,它们在计算轨迹弯道的时候没有使用价值,是属于“无效的信号”,所以在计算轨迹弯道的之前需要寻找出图像的有效信号。一般这样认为,图像中最下面的一行是离小车最近,从这一行开始向上寻找黑色轨迹线,只要找到一行中没有轨迹线就认为前面的信号都是无效信号。这样就可以把图图像分割成两部分,有效部分和无效部分。

图6.3赛道弯道的情况图.2轨迹弯道的计算在找出图像中有效部分之后,就可以利用有效图像来计算轨迹线的弯道。用下面的办法来计算:首先,把有效部分的图像平均分割成四部分,如图6.4;然后每一部分的首尾行的黑色轨迹线中心点的坐标相减,如:(X1-X2);再从上到下把相邻两部分所得到的差值再相减,如:(X1-X2)-(X2-X3);最后把所得的差值求和,把这个和值称之为弯道值。公式如下:弯道值=[。17(2)-。27(3)]+[。37(4)-尊47(5)]。它是一个与弯道大小有关的值,弯道曲率越大,弯道值就越大。图6.4轨迹弯道的计算

6.1.3轨迹弯道值的补偿由于CCD图像传感器安装位置的关系,它的视野是一个梯形,远处宽近处窄。也就是说CCD图像传感器看远处时,两个象素之间对应的实际距离要比近处的大。这种效果会造成CCD图像传感器采集到的图像发生变形。图6.6是CCD图像传感器采集矩形图像图6.5时的图像。图6.7是CCD图像传感器采集直线时的实际效果。很明显,它发生弯曲变形:图6.5实际形状图6.6CCD传感器采集的图像图6.7CCD传感器采集的图像这种效果使得微控制器在计算引导轨迹的弯道时出现很大误差,所以在计算弯道值之后还要对弯道值进行补偿。本文讨论的补偿方法是为了减少微控制器在计算轨迹线弯道时产生的误差。所以只是用估算的办法来解决。首先要了解清楚造成误差的大小与什么有关,用图6.8,图6.9和图6.10来说明。(这三张图像是用CCD图像传感器采集直线时的图像)。图6.8与图6.9比较,图6.8的直线偏离中心位置比图6.9的小(图6.8偏离中心位置的值为20,图6.9偏离中心位置的值为29),根据上面介绍的计算弯道的方法计算到的值为:图6.9的为5,图6.9的为7;图6.9与图6.10比较,图6.9中的直线有效图像部分比图6.10的大(图6.9图像有效部分的值为30,图6.10图像有效部分的值为20),根据上面介绍的计算弯道的方法计算到的值为:图6.9的为7,图6.10的为6;根据数据知道:弯道误差与有效图像的大小有关而且与轨迹线离中心位置的大小有关。根据测得的数据计算可得下面的补偿公式:补偿值=有效图像大小/7+偏离中心线位置大小/12。补偿后,计算的值为:图6.8的值为1;图6.9的值为0,图6.10的值为0。图6.10采集的宜线图像6.2上位机调试平台的设计无线串口通讯模块在研究小车控制算法的时候,有很多量是要知道。比如说:要知道CCD图像传感器采集到的图像是否正确;采集到的图像到底是什么样子;小车在运行过程中,偏差量是多少;控制算法输出的控制量又是多少;控制结果符不符合要求,等等。这些数据对用于分析小车性能和设计控制算法都是很必要和很有好处。所以在小车运行的时候,使用一块无线串口通讯模块来获得得到这些数据。通过无线串口通讯模块,微控制器使用串口就可以与PC机通讯,这样微控制器就可以把数据实时地传送到PC机上。利用VISUALBASIC6.0设计小车的控制平台有了无线串口通讯模块,智能车就有了与PC通讯的物理条件。但是还是要有软件支持才能正常使用。在PC机上的编程,选择在界面设计方面有很大优势的VISUALBASIC6.0来设计智能车控制平台。打开VISUALBASIC6.0界面,首先要添加一个串口控件,这样就可以使用PC机上的串口。

ComponentsControlsIDesigners|InsertableObjects|tttttt££££££ooooootttttt££££££oooooossszsXoooooorrrrrrcccccc•1-X*x-X*1-1MMMMMM□□口口口口ActiveXPluginADODataControl6.0(OLEDB)Ac«ntControl2.0CalendarControl8.0ChartControl60(OLEDB)3MicrosoftCommControl6.0MicrozoftCommonDialogControl6.0CSMicrosoftDataBoundGridControl5.0EZiMicrosoftDataBoundListControls6.CI'Microso£tDat&GridCon.trol8.06P5)I□MicrosoftDataListControls60(OLEDE3MicrosoftCommControl6.0r~SelectedRemsOnly-:-)VideoSoftvsFlex3ControlsLocation:C:\WINDOWS\system32\VSFLEX3.OCX确定|取消|应用2) |图6.11添加串口通讯控件要完成这个程序设计,还要用到几个控件,如下:PictureBox控件就,用来装载CCD图像传感器采集到的图像,在PictureBox控件里面,可以用PictureBox.line函数来把CCD图像传感器采集到的图像画出来。CommandButton控件」,用来触发一些事件,改变程序的流程。Label控件A,用来显示一些文字或者数据。Timer控件0,用来定时检测串口,这样可以让程序在一些突发事件中跳出。图6.12就是整个完整的界面图:功能介绍:本控制平台是配合小车上的程序一起使用的,可以命令小车采集图像,启动小车,让它自动运行,可以停止运行中的小车。也可以手动控制小车。可以显示小车发送过来的车速以及车的转角。程序流程图如图6.13(只写主要部分):图6.12小车调试过程中控制的平台图6.13小车控制平台的程序流程图6.3智能车控制算法的设计常规PI控制算法设计首先分析一下,用什么控制算法才可以令小车稳定在某个速度下。在负载不变的情况下,小车要稳定在某个速度下就要求输出给电机的控制量恒定在某个值,误差的比例控制算法是不能满足这个要求的。因为•旦误差量为零的时候,比例控制算法输出的控制量就为零。而且这个控制量根据不同的负载是不一样,所以我们不能根据不同的速度来标定输出量,并且小车要从静止开始运动然后稳定在某个速度下是要经过加速。要获得好的加速性能就必须使得小车在最大控制量情况下就行加速。综上所述,控制算法里面是要到积分,不管是输出量的积分还是误差量的积分。为了加速小车的响应,还要加上比例控制。所以选择PI控制算法。下面就是根据PI控制算法所得到的数据,其中积分量是误差量的积分,实验方法同上。给定的速度值是20,分别测到有负载和无负载数据。用曲线来表示:图6T4主要程序如下:speed_error_value[0]=motor_speed-motor_specd_register[0];〃误差量speed_control_value+=speed_error_value[0];//积分speed_control=speed_control_value+speed_error_value[0]+SPEED_CENTER;改变给定的速度值,重做实验。给定的速度值是60。用曲线来表示:图6-15图6-14给定速度为20图6T5给定速度值为60从上面测得的数据可以得出两个结论:第一,在相同的控制算法下,不同负载情况,控制效果很明显的不一样。负载小的没有出现过多超调与振荡,然而,负载大的出现很大的超调量与振荡。控制效果非常差。小车跟踪轨迹线控制算法的设计我们在调试之中发现,在控制小车运动时,最主要是控制好小车上的舵机,小车才能够平稳跟踪轨迹线。在舵机的控制上面,我们采用的是PD算法来进行控制。.1小车运动模型的分析物体在空间的运动可以分为六个自由度。但由于小车只是在平面上运动(忽略路面不平产生的上下运动),所以小车只有三个自由度,就是沿X轴方向平动,沿Y轴方向平动和绕Z转动。如图6.16:图6.16小车空间模型在这三种运动中,绕Z转动运动可以看成是沿X轴方向平动和沿Y轴方向平动的合成,所以小车系统只有两种运动,就是沿X轴方向平动和沿Y轴方向平动。沿X轴方向的平动是由直流电机驱动产生,前一节已经详细地讨论小车的速度控制问题。现在要解决的就是小车沿Y轴方向的平动问题,也就是小车的横向控制。控制小车的横向运动是靠控制舵机来实现。下面讨论的内容是排除了小车车轮与地面发生滑动的情况。因为当小车速度大,舵机存在偏角,路面与车之间的摩擦力不足以提供小车做圆周运动时所需要的向心力时,小车就会发生滑动,为了安全过弯,小车速度不能过大,所以暂不讨论这种情况。舵机转动时就会使得车轮与小车产生一个角度,这时当电机驱动小车沿X轴方向运动时,只要舵机的偏角不变,小车运动的轨迹就不是直线,而是一个圆。轨迹圆的半径取决于舵机偏角的大小。那么当舵机从一个偏角摆到另一个偏角时,小车的运动轨迹就不再是圆而是近似渐开线,小车速度越大,就越明显。这种情况很容易发生在小车从直道进入弯道的时候,当小车提前检测到弯道时,微控制器就给舵机转弯命令,这时小车运动的轨迹就是渐开线。如图6.17

星包图6.17星包图6.17小车的渐开线轨迹所以结论就是在小车运动过程中,它的轨迹只有三种:第一,舵机摆正,小车轨迹是直线。第二,舵机恒定在某个偏角,小车的轨迹是圆。第三,舵机从一个偏角变为另一个偏角的过程中,小车的运动轨迹是近似渐开线。小车的实际轨迹就是这三种轨迹的组合。控制周期的选择在控制系统中,控制周期T对系统的控制也是重要,既不是越小越好也不是越大越好。有可能的话,一般取系统中最大时间常数的十分之一就足够。在智能车系统中,时间常数最大的就是舵机。但是在智能车系统中,还有一个环节限制了控制周期的选择,那就是CCD图像传感器。在前面的检测系统中已经介绍过,小车系统是用CCD图像传感器来检测黑色轨迹线,而CCD图像传感器输出的信号是符合PALL制黑白电视信号。该信号最重要的信息就是20毫秒传送一场图像信号,40亳秒传送一帧图像信号。为了按照一场图像信号信息来控制小车以及不破坏一场图像的完整性,选择的控制周期T必须是20毫秒或者是20毫秒的整数倍。控制周期不可以过大,所以选择了20毫秒作为小车的控制周期。但是这里有个矛盾,就是假如在20毫秒中,微控制器都是用来处理采样CCD图像传感器输出的视频信号,那微控制器就是没有空余时间去处理图像信号以及对小车进行控制。隔行采样可以解决这个问题。在312行的视频信号中,只采样60行。也就是在20毫秒中只用五分之一的时间来采样视频信号,五分之四的时间留给图像处理以及控制算法。横向纠偏控制算法的设计根据前面的分析可知,小车在舵机的作用下,运动轨迹是三种基本轨迹的合成。根据平面跑道要么是直线要么就是圆弧的特点,小车只需要两种运动,-是直线运动,二是圆周运动。这两种运动要求舵机要么摆直,要么恒定在某个偏角。但是由于舵机动态过程的时间参数比较大,所以小车的螺旋线轨迹运动就不能忽略,特别是速度快时,更不能忽略。所以需要中间动态调整过程。舵机作用是调整小车的状态,以便跟踪黑色轨迹线。在这里,整个系统也是进行闭环控制。假如说给定输入就是轨迹线在小车的中间(根据控制策略的不一样,也可以把轨迹线在小车的一边作为给定输入),反映到CCD图像传感器就是黑色轨迹线是在图像的中间。在实际的检测中,如果黑色不是在图像的中间,就是与给定输入存在偏差,那么就可以根据这个偏差来调整小车。闭环控制的框架如图6.18:图6.18小车横向的闭环控制与控制电机时有点不一样的就是,这个闭环系统的执行机构舵机本身也是一个闭环控制系统,它输出的偏角与控制信号是一个线性关系(在3.3转弯系统中有说明)。那么就是说舵机要产生一个偏角,那么微捽制器只需要给舵机一个相应的控制信号。因为在硬件上没有做到舵机与微控制器之间的闭环,所以舵机从一个偏角到另一个偏角之间的动态性能就没有办法改变。所以过渡过程是需要控制算法来调整。很明显,这个系统也是根据偏差来控制小车状态,所以也可以利用PID控制算法来控制小车。至于PID控制算法各个环节的作用在6.4.3变速PID控制算法的设计中给出了解释,在这里不再重复说明。为了使得在偏差为零时,舵机的偏角为零,所以用舵机偏角为零时需要的控制信号作为基准,在PID控制算法不起作用时,这个基准还是存在,让小车直走。由以上的分析可知,在直线跑道上调整小车的状态只需要PD控制控制算法,因为偏差为零时(也就是调整到与给定输入一样时),PD控制不起作用(因为PD控制是有差控制),那么小车直走。但是在弯道上,因为弯道是一个圆弧,那么舵机应该保持一个偏角过弯,就算偏差为零时,也应该保持在一个偏角上。要达到这个功能,那么就要积分的功能。要不然小车过弯的轨迹就会是类似Z型。如图6.19:但是在这里的积分使用的是偏差变化量的积分,而不是用偏差的积分。因为只要偏差变化量为零,那么就是说小车运动的圆轨迹的半径就与跑道的圆半径一样,不需要在进行调整。至于是否还存在偏差,那是PD控制算法调整的对象。总结以上分析,控制舵机的控制算法选择偏差的比例微分和偏差变化量的积分控制。偏差量的标定在PID控制算法里面,偏差是一个非常重要的量。因为整个控制算法都是基于偏差进行。所以如果得不到偏差或者偏差不准确,那么就没办法控制小车。所以要在图像中对偏差进行标定。对舵机的控制是横向控制,所以要寻找小车与跑道横向的偏差。在黑色轨迹的寻找中分析了黑色轨迹线是如何寻找,黑色轨迹线被提取成一条细线。一场图像的分辨率是50X60,由于CCD图像传感器是倒转90度安装,那么分辨率变成60X50,意思是路面横向被分割成60个点,这60个点是按照从右到左,号码从0到59编码的,也就是最右为0,最左为59。根据舵机转角与控制信号关系:小车向右转时,控制信号变小;小车向左转时,控制信号变大。那么在右边的偏差就可以用负数来表示,在左边的偏差就可以用正数来表示。用图像中实际黑线位置减去理想输入就可以得到偏差量。假如理想输入为30,那么偏差可以用图7-6来表示:oooo o 0 0 0 0/1' । I ' \2928 2726 0 _2?_28_29-30图6.20偏差的标定要取得偏差量还要解决一个问题。在整个图像里,有30行的信息量。每一行图像都可以表示路面的横向信息,所以在每一行里都可以寻找偏差量。为了确定适合的一行作为寻找偏差量的行,首先要了解每一行之间的差别。CCD图像传感器由于安装位置的问题,它的视野是一个梯形,远宽近窄。所以每一行最大的区别就是,两个象素点之间表示的实际距离是不一样,远大近小。还有另外一个区别就是前面行的信息是表示远处的路面,也就是可以远距离检测。为了补偿舵机大的时间常数,应该选择远距离检测,也就是选择前面的行来作为提取偏差量。为了保证每次提取偏差量都是在同一个基准下进行,所以在可能的情况下,都应该是保持在同…行上提取信息量。之所以说是有可能的情况。那是因为前面的行有可能是检测不到黑色轨迹线,例如在检测弯道的时候。那么这时候就要放弃这个基准,向后寻找有检测到黑色轨迹线的行,让它作为临时的基准行。那么在下一场的图像中再会以前面行作为基准,如果前面行还是检测不到,那么又重新选择临时的基准行。PID控制算法系数的整定在PID控制里面,有两个很重要的因素影响到PID控制算法的控制效果。第八就是在上面提到的偏差量。第二,就是PID控制算法的系数。不同系统对PID控制算法系数的要求是不一-样,甚至同一个系统的不同情况对这个系数的要求也不一样。所以PID控制算法系数的整定就显得非常的重要。PID控制算法系数的整定不能盲目进行。通常有以下两种办法:一是理论计算整定法。它主要是依据系统的数学模型,经过理论计算确定控制器参数。这种方法所得到的计算数据未必可以直接用,还必须通过工程实际进行调整和修改。二是工程整定方法,它主要依赖工程经验,直接在控制系统的试验中进行,且方法简单、易于掌握,在工程实际中被广泛采用。无论采用哪•种方法所得到的控制器参数,都需要在实际运行中进行最后调整与完善。由于小车系统精确的数学模型很难得到,又由于小车的实验方法很容易进行,所以本次的PID控制算法是采用了工程整定法。从前面的分析可以知道,在小车做渐开线运动时,控制算法的调节作用就显得很重要。在系统存在偏差或者偏差有变化时小车就会做渐开线运动。控制算法的好坏很大程度上是体现在系统的动态调整过程。所以用一些典型的输入信号来检验控制算法的好坏以及系数对系统的影响就很必要。本次研究选择了阶跃信号。设计了如图的跑道作为阶跃信号的输入。产生阶跃信号的地方有13cm。实际图像如图6.21,CCD图像传感器采集的图片如图6.22

图6.21实际路线图6.22CCD传感器采集的图像下面测得的几组数据就是小车在上面设计的跑道中运行时测得。他们表明了不同控制算法对阶跃信号的调节能力以及PID控制算法系数的改变对调节能力的影响。同时也表明了不同的速度下对PID控制算法系数要求的不一样。数据如下:算法-:比例控制,在速度为40和60的情况下进行。比例系数为2以及8orudderregistertemp=error[enable_row]*Kp+STEERCENTER;数据为图6.23:

图6.23算法一的数据其中:当速度为60,比例系数为8时,控制系统发散。小结:当系统只是比例控制时,系统的阶跃响应就有很多的超调和振荡很厉害。而且当速度加大时,过大比例系数还会引起系统发散,所以速度高时,比例系数要减少。可以得出单是比例控制,系统的调节能力是很差的。为了减少超调量和振荡,应该加上微分控制。算法二:以下两组数据都是比例微分控制测得。第…组:Kp保持不变为2,速度分别为40和60,Kd分别为2和8。数据为图6.24:第二组:Kp保持不变为8,速度分别为40和60,Kd分别为2和8。数据为图6.25:其中:速度为60;Kp=8:Kd=2;控制系统发散。

图6.24第一组数据图6.24第二组数据小结:从上面的两组数据可以得出两个结论:第一,微分是可以减少系统的超调量以及振荡的。例如数据:速度60,Kp=2,Kd=2和速度60,Kp=2,Kd=8;另一个数据:速度60,Kp=8,Kd=2;因为微分比较小,系统发散。数据“速度60,Kp=8,Kd=8”即相反。第二,数据:速度40,Kp=2,Kd=2和数据:速度60,Kp=2,Kd=8比较可得:速度越大,就要求的越强微分作用才能使得系统稳定。从前面的讨论可以知道,小车要稳定过弯就必须要有积分项,而且是偏差变化量的积分。一般来说,积分可以加强调节作用,加大超调量以及加长调节时间,但是在这里的积分用的是偏差量的积分,所以它还包含有一些微分的作用。下面用一组数据来说明这个问题。PID控制,速度为60,Kp=2;Kd=8;Ki=2;数据为图6.25图6.25有积分项控制算法效果图该数据与数据:速度为60,Kp=2;Kd=8比较可知。加了偏差量的积分以后,超调量变小,振荡减小。根据控制系统PID控制算法的阶跃响应,可得到以下的结论:在小车在直的轨迹上行走时,PD控制算法的调节就可以满足要求。并且系统对系数大小的要求与速度是有关系,速度越大,比例系数要求比较小,要不然就会产生过大的振荡,那么为了减少振荡,微分系数就要求比较大。总结一句话就是小车在直的轨迹上运动时,比例系数要求比较小,微分作用要求适中。由前面的分析还知道小车在弯道的轨迹上行走时,为了能够平滑过弯,必须要加上积分环节。而且在从直道进入弯道的时候,对比例作用和微分作用的要求都比直道的时候要大。所以PID控制算法系数的整定要根据不同的速度和轨迹是直道还是弯道情况来确定。基于图像的PID控制算法设计根据前面的分析知道,要控制好小车,就必须知道小车当前运行在什么样的轨迹上。此时要利用整幅图像进行分析才能知道这些信息。在弯道的识别一节中已经说明弯道轨迹的识别方法。在那一节里提到了一个叫弯道值的量,它在小车从直道进入弯道时起到很到的作用,特别是在高速的时候,就显得更重要。那是因为在在小车从直道驶入弯道时,由于舵机的时间常数过大,在PID控制算法下给出的控制量可能达不到要求,所以必须根据弯道值的大小来补偿舵机。综合以上的论述,给出在速度给定值为56时(小车速度大约为2.5米每秒)PID算法系数的最终整定结果,如下:比例系数取5,积分系数取1,微分系数取26,弯道值系数取1.

第7章车模的主要技术参数项目参数路径检测方法(赛题组)摄像头车模几何尺寸(长、宽、高)(毫米)30*16.3*35车模轴距/轮距(毫米)6.5/16.5车模平均电流(匀速行驶)(毫安)电路电容总量(微法)1858.615传感器种类及个数CDD摄像头 一个速度传感器一个新增加伺服电机个数0赛道信息检测空间精度(毫米)3.2/15.2赛道信息检测频率(次/秒)50HZ主要集成电路种类/数量S12,驱动/2车模重量(带有电池)(千克)1.2

第8章系统的调试过程我们的调试的过程主要是利用无线模块的传输方法,把小车在运行过程中的各种变化量传回到上位机,然后在根据数据作出相应的数据调整,直到把车调到一个很好的运行状态。•Forml93flJ'O55U>55•Forml93flJ'O55U>552n825qrJ?55c.5cl.54口.91111222222?z1。力力EXIT®Sp..d++⑤)Speed--457&)传速度|图8.1调试的.匚具页面第9章总结本次设计主要是在对小车硬件系统、作了充分了解的情况下进行软件设计。寻迹智能小车软件系统的设计经对CCD图像传感器的视频信号采样的程序编写,小车速度控制的软件控制系统的设计,小车转向控制的软件设计,再通过实验结果的反馈进行改进,实现了智能小车的匀速寻迹行驶。完成的工作和存在仍需改进的问题如下:1)对现有的小车硬件系统作了充分了解,只有在充分了解小车硬件系统的情况下才有可能对其编程进行使用。并且进一步了解小车硬件系统设计的优越和不足。2)熟悉微控制器的集成开发环境CodeWarrior„充分利用所提供的专家助手ProcessorExpert的功能,其直观参数设置界面和功能函数代码的自动生成能减少编程人员工作量,提高工作效率。但同时也要求编程人员在使用的同时,通过阅读技术文档,对相关模块的性能和寄存器情况有足够了解,对出现的问题能及时解决。比如,在解决ADC高速采样视频信号时,就要了解到与ADC相关的寄存器,了解它们的用法和功能。3)对图像信号的处理,只有在得到准确的轨迹信息的情况下才有可能控制好小车。在调试的过程中需要知道某个量对控制效果的影响以及分析所出现的问题。所以使用无线串口通讯模块把需要的量传送到PC机上进行分析,从而设计了PC机上的小车控制平台。4)通过实验的方法测定小车的运动模型,利用最大控制量的变速PID控制算法解决时间常数过大引起的积分过饱和问题。实现小车快速加速,但又几乎无超调和振荡。5)用小车系统的阶跃响应实验来整定PID控制算法系数,利用图像处理解决直道和弯道对PID控制算法系数要求不一样的选择,实现小车在直道上平稳行驶和平稳过弯,平均速度为2.5米每秒(此速度是在如图7-15所示的轨迹上运行测得)。6)由于舵机的大惯性关系,没办法做到快速过S型跑道。所以应该修改小车的转弯的硬件系统,让小车转弯更灵敏。为了可以以更快的速度行走,应该讨论更好的控制算法,如模糊控制等。学习运用MC9SDG128单片机的模糊指令来实现模糊控制。第三届全国大学生智能汽车竞赛技术报告参考文献[1]邵贝贝.嵌入式实时操作系统[LC/OS-II(第2版)[M].北京.清华大学出版社.2004[2]邵贝贝.单片机嵌入式应用的在线开发方法[M].北京.清华大学出版社.2004[3]王晓明.电动机的单片机控制[M].北京.北京航空航天大学出版社.20024]臧杰,阎岩.汽车构造[M].北京.机械工业出版社.2005[6]童诗白,华成英.模拟电子技术基础[M].北京.高等教育出版社.2000[9]沈长生.常用电子元器件使用一读通[M].北京.人民邮电出版社.2004[10]宗光华.机器人的创意设计与实践[M].北京.北京航空航天大学出版社.2004[11]张伟等.ProtelDXP高级应用[M].北京.人民邮电出版社.2002[12]张文春.汽车理论[M].北京.机械工业出版社.2005附件A源程序代码include“Cpu.h”#include,'Events.huincludenDl.hninclude"E2.h”include“FSl.h"include”FS2.h”include”MOTOR_PWMA.h"include"MOTOR_PWMB.huinclude'RUDDER_PWM.hninclude,'ENCODER_PULS.h,,#include"ASl.h"include”ADA.h”include“ADB.h”include"EInt_CS.h”include"EInt_VS.h”#includenBit_OE.hMincludenBitl.hMinclude”PE_Types.h"includenPE_Error.hMinclude"PE_Const.h"include"IO_M叩.h”#include"utils.h"#defineSTOPO'#defineSTARTT#defineSENDJMG2#defineSEND_VALUE3#defineSEND_CONTROL_VALUE4#defineSPEED_UP5#defineSPEED.DOWN'6'#defineKP_UP7'#defineKP_DOWN8#defineKD_UP9#defineKD_DOWN'a,#defineSENDTEMP't'#defineSEND_SPEED7#defineNORMALHdefineY 60defineX 50defineValid_Row40defineOverSceneLine_Num65defineOverLine_Num3defineBlackThreshold100defineCarMid30defineNoBlack100#definePicMiddle40byteccd_data[Y][X];byteccd_data_temp[Y][X];intCurLine;intCurPoint;intOverSceneLine;intOverLine;intscene_state;intSceneFinishFlag;intsend_busy;bytestatus;bytesend_flag;intLineMidfX];intMid_min,Mid_max;intPositionError[X];intError_ed,LineMid_20_ed,LineMid_15_ed;intFarthestRow,FarthestRow2;intmax_row,min_row;boolIt_is_sS=0;intsS_now,sS_ed;boolstraight=1;boolLostLine;boolrun_flag=0;intCurve;intTheta,Theta_ed;intkp=O,kd=0;intp=0;charvalue;wordwl,w2,w;bytestatus;#definemotor_kp1463#definemotor_ki721#definemotor_kd42longmotor_ka=motor_kp+motor_ki+motor_kd;longmotor_kb=motor_kp+2*motor_kd;longmotor_kc=motor_kd;interror,errorm1,errorm2,errorm3;unsignedintvelact,velcom;longduty=0;longdutyml=0;longdutym2=0;longdutym3=0;voidmeasure_velact(void)(velact=ENCODER_PULS_GetCounterValue();ENCODER_PULS_ResetCounter();)voidcalc_error(){error=velcom-velact;}voidcalc_pid(){duty=motor_ka*error-motor_kb*errorm1+motor_kc*errorm2+dutyml;duty=(duty+dutym14-dutym2+dutym3)/4;if(duty>65535)duty=65535;elseif(duty<-65535)duty=-65535;errorm2=errorm1;errormI=error;dutym3=dutym2;dutym2=dutyml;dutyml=duty;}voiddrive_plant(){if(duty>=0){MOTOR_PWMB_SetRatiol6(0);MOTOR_PWMA_SetRatiol6((word)duty);}else{MOTOR_PWMA_SetRatio16(0);MOTOR_PWMB_SetRatio16((word)(-duty));)}voidcontrol_velocity(){calc_error();calc_pid();drive_plant();)〃/〃〃〃〃〃〃〃〃〃/〃/〃〃/〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃voidde)ay(longtime){inti=0;for(i=0;i<time;i++);}voidccd_enable(void) 〃使采样与信号同步{boolscene_begin_flag;INTCR.IRQEN=0;ATD0CTL4=128;ATD1CTL4=128;CurLine=0;CurPoint=0;OverSceneLine=0;OverLine=0;scene_state=O;SceneFinishFlag=O;send_flag=0;scene_begin_flag=Bit_OE_GetVai();while(scene_begin_flag==Bit_OE_GetVai());while(scene_begin__flag!=Bit_OE_GetVal());scene_state=Bil_OE_GetVal();INTCRJRQEN=1;)voidccd_sample(void)(inti;OverSceneLine++;if(OverSceneLinevOverSceneLine_Num)relum;〃去掉场消隐if(OverLine<OverLine_Num){OverLine++;return;}if(CurLine<Y){for(i=0;i<40;i++); 〃去掉行消隐ATD0CTL5=128;ATD1CTL5=128;for(CurPoint=0;CurPoint<X;CurPoint++){ccd_data_temp[CurLine][CurPoint]=ATDODROL;ATD0CTL5=128;CurPoint++;ccd_data_temp[CurLine][CurPoint]=ATDlDROL;ATD1CTL5=128;)CurLine++;OverLine=0;}else{if(scene_state==Bit_OE_GetVal()){return;}scene_state=Bit_OE_GetVal();

温馨提示

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

评论

0/150

提交评论