版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第六届全国大学生智能汽车竞赛技术报告 第十二届全国大学生“恩智浦”杯智能汽车竞赛技 术 报 告学 校:华南理工大学队伍名称:华工旋风队参赛队员: 赖剑 陈沛豪 洪锦烽带队教师: 陈安 邓晓燕I第六届全国大学生智能汽车竞赛技术报告39摘 要本文设计的智能车系统以MK60N512VMD100微控制器为核心控制单元,通过CMOS摄像头检测赛道信息,使用模拟比较器对图像进行硬件二值化,提取黑色引导线,用于赛道识别;通过光电编码器检测模型车的实时速度,使用PID控制算法调节驱动电机的转速和转向舵机的角度,实现了对模型车运动速度和运动方向的闭环控制。为了提高模型车的速度和稳定性,使用C#、MFC上位机、S
2、D卡模块、键盘模块等调试工具,进行了大量硬件与软件测试。实验结果表明,该系统设计方案确实可行。关键字:MK60N512VMD100,CMOS,PID,C#,SD卡AbstractIn this paper we will design a smart car system based on MK60N512VMD100as the micro-controller unit. We use a CMOS image sensor to obtain lane image information. Then convert the original image into the binary i
3、mage by the analog comparator circuit in order to extract black guide line for track identification. An inferred sensor is used to measure the cars moving speed. We use PID control method to adjust the rotate speed of driving electromotor and direction of steering electromotor, to achieve the closed
4、-loop control for the speed and direction. In order to increase the speed and the reliability of the car, a great number of the hardware and software tests are carried on and the advantages and disadvantages of the different schemes are compared by using the C#、MFC simulation platform, SD card modul
5、e and the keyboard module. The results indicate that our design scheme of the smart car system is feasible.Keywords: MK60N512VMD100,CMOS,PID,C#,SD card目 录摘 要IIIAbstractIV目 录V引 言1第一章 系统整体设计21.1.系统总体设计思路21.2.整车布局3第一章硬件系统部分52.1.硬件设计思路52.2.传感器的选择52.2.1.总钻风MT9V032介绍52.2.2.使用感受62.3.电路设计部分72.3.1.电源电路82.3.2
6、.驱动电路10第三章 上位机系统部分143.1 上位机软件开发平台介绍143.2图像处理程序介绍143.3开发平台的介绍153.3.1 LabVIEW开发平台的介绍153.3.2 Visual Studio开发平台的介绍153.4 LabVIEW上位机的开发153.5 C#上位机的开发20第四章 赛道识别部分244.1 图像二值化处理程序244.2 赛道图像边线搜索程序254.2.1特殊赛道处理254.2.2十字赛道254.2.3 环形赛道26第五章 控制算法部分295.1 PID控制速度295.1.1 PID算法原理简介295.1.2 PID算法选择305.1.3 输出限幅305.1.4 棒
7、棒控制305.1.5 参数调整325.2 Fuzzy控制方向335.2.1 Fuzzy算法原理简介335.2.2 e的滤波345.2.3 e的相位滞后问题365.2.4 Fuzzy控制器输出的平滑性36总结38参 考 文 献39引 言随着科学技术的不断发展进步,智能控制的应用越来越广泛,几乎渗透到所有领域。智能车技术依托于智能控制,前景广阔且发展迅速。目前,掌握着汽车工业关键技术的发达国家已经开发了许多智能车的实验平台和商品化的车辆辅助驾驶系统。有研究认为智能汽车作为一种全新的汽车概念和汽车产品, 在不久的将来会成为汽车生产和汽车市场的主流产品。面向大学生的智能汽车竞赛最早始于韩国,在国内,全
8、国大学生“恩智浦”杯智能汽车竞赛从2006年开始已经举办了八届,得到了各级领导及各高校师生的高度评价。大赛为智能车领域培养了大量后备人才,为大学生提供了一个充分展示想象力和创造力的舞台,吸引着越来越多来自不同专业的大学生参与其中。全国大学生“恩智浦”杯智能汽车竞赛包括光电组、摄像头组,电磁组,创意组,其中数摄像头组的智能车速度最快,备受关注。本技术报告主要包括机械系统、硬件系统、软件系统等,详尽地阐述了我们的设计方案,具体表现在硬件电路的创新设计以及控制算法的独特想法。智能车的制作过程包含着我们的辛勤努力,这份报告凝聚了我们智慧,是我们团队共同努力的成果。在准备比赛的过程中,我们小组成员涉猎控
9、制、模式识别、传感器技术、汽车电子、电气、计算机、机械等多个学科,几个月来的经历,培养了我们电路设计、软件编程、系统调试等方面的能力,锻炼了我们知识融合、实践动手的能力,对今后的学习工作都有着重大的实际意义。第一章 系统整体设计1.1. 系统总体设计思路智能车系统的设计主要分为硬件电路,控制算法,赛道识别,上位机四大部分,硬件电路支撑整车运行,赛道识别通过采集摄像头数据,输入摄像头像素信号,帧信号到MK60N512VMD100微控制器,对数据进行程序二值化等处理,识别出赛道的各种元素,通过一定的搜线方法搜得赛道的边线进而处理出中线,再通过控制算法,转向舵机采用模糊控制,电机采用PID控制,测速
10、编码器采集速度脉冲获得当前速度,监测当前舵机打角与速度设定值,舵机打角设定值相对比,输出对电机和舵机的PWM信号,进而对速度和打角进行控制,实现智能小车对赛道的快速准确跟随。MK60N512VMD100图像处理模块光电编码器电机驱动模块舵机转向模块上位机机奇偶场信号行同步信号二值化后图像速度信息IIC/SPI/SCI摄像头CMOS图1-1 系统结构图1.2. 整车布局车子整体布局的原则为轻量化,低重心,本着这样的原则,本车有以下几个特点:l 主控板与驱动板分离,便于排查故障以及隔离干扰l 摄像头尽可能低而且使摄像头图像畸变小,视野足够大l 元件安装尽可能低以降低车体重心,有利于车的高速性能l
11、底部加装电路板加固主车身和后车身,使车整体车身变硬,有利于高速转弯图1-2 整车结构图片第一章 硬件系统部分2.2.1. 硬件设计思路在设计硬件的过程中,我们秉承的原则是可靠,简洁,快速,在长达大半年的比赛准备期间,我们的硬件无论是电路板还是其他元件的安装都从最开始的疏松到现在的紧凑,电路板面积大大减小。对于可靠性,首先需要做到的就是选择的传感器可以顺利适应赛道的变化,可以配合车速无论高低都能够很好地采集赛道信息供微处理器处理,在传感器方面我们选择的是MT9V032摄像头,其特点是全局快门,高动态性能,不用自己写驱动程序等等。其次则是电路板方面要做到电源电路,驱动电路安全可用,能够满足小车运行
12、时的各种要求,而且要确保屏蔽各种干扰,为此,在设计电路板时我们选择线性低压差的稳压芯片进行设计,注意区分数字电路和模拟电路,防止高频干扰。在微处理器传输给驱动电路的PWM信号路间还增加了74HC144芯片进行缓冲,防止电流倒灌烧坏微处理器对于驱动电路,我们选择的是MOS管+IR2103配合H桥驱动,该电路可以提供低内阻,高驱动电流的特点,完美配合小车的高速性能。而简洁则是指电路板的设计不多余,形状优美,电路设计元件尽可能少,不冗余,电路走线尽量短而精简,进而缩小电路板面积,便于安装以及减轻车身重量,以求达到最好的效果。2.2. 传感器的选择2.2.1. 总钻风MT9V032介绍我们选择的摄像头
13、是总钻风的MT9V032摄像头,这是一款基于 MT9V032 芯片设计的传感器模块,是一款在恩智浦智能车竞赛市面上性能最优,最适合高速情况下采集图像的全局快门摄像头。它主要由以下几个优点:l 全局快门在曝光前整个图像重置,像素可在曝光时间积累电荷;曝光结束后,每个像素积累的电荷同时传送到屏蔽光(对光不敏感)的存储区域;然后信号从此区域读出。因所有像素同时重置,曝光积分同样的间隔,同时传输到光屏蔽存储区域,对移动物体来说没有形变l 高动态性能由于可以在 HDR 图像中按比例表示和存储真实场景中的所有明亮度值,因此,调整 HDR 图像的曝光度的方式与在真实环境中拍摄场景时调整曝光度的方式类似。HD
14、R 是目前追求画面逼真度最新最先进的手段l 不用自己写驱动程序总钻风摄像头内部集成了驱动配置芯片,所以用户不需自己写摄像头驱动程序l 可进行自动曝光我们的摄像头具有自动曝光功能,当环境变亮摄像头会自动减小曝光时间,当环境变暗摄像头会自动增加曝光时间。所以此款摄像头可以适应不同环境l 曝光时间可调当摄像头采集到图像较亮(曝光过度)时,可以通过程序去调节曝光时间,使图像不那么亮,并且改变曝光时间不需要复位摄像头图2-1 总钻风摄像头2.2.2. 使用感受在使用过程中感觉出这款摄像头的优点在于不用自己写驱动程序,使用起来比较方便而且上手比较快,而且分辨率相比起ov7620和鹰眼来说高出不少,在上位机
15、以及OLED上看到的图像会比较清晰。但是这也引起一个很大的问题就是每一场的图像都很大,相应地处理时间就变得比较长了,鹰眼摄像头可以硬件二值化以及8位并行通信,而我们这一款摄像头做不到,因此我们的图像大,传输慢,引起我们的控制周期会稍微长一些,使得我们需要在程序以及算法的优化上下更多的功夫。图2-2 拍摄得图像2.3. 电路设计部分整车电路板的设计一共包括两大方面,一方面是主控板的设计,包括电源电路,微处理器接口,拨码键盘等外部设备的接口电路以及电源电压检测电路,指示电路等;另一方面是驱动板的设计,包括隔离电路,芯片供电电路,以及MOS管驱动电路。整个设计的原则是可靠,简洁,快速。图2-3 主控
16、板原理图2.3.1. 电源电路一辆汽车想要飙车,少不了燃料动力,一辆智能车想要在赛道上驰骋,需要稳定可靠的供电电路来提供前进的动力。因此,对电源电路的设计和优化是非常重要的一项任务。在“飞思卡尔”全国智能车大赛中的智能车系统设计中,输入的电源为7.2V的电池电压,一共需要向车子提供稳定,少纹波的3.3V,5V,12V以及舵机供电可调电压。在智能车系统中用到5V电源的模块有:蓝牙,SD卡模块。5V电源供电电路如下:图2-4 5V供电电路在上述5V供电电路中,采用的芯片是LM2940-5V,是输出电压固定的低压差三端稳压器;输出电压5V;输出电流1A;输出电流1A时,最小输入输出电压差小于0.8V
17、;最大输入电压26V;工作温度-40+125;这款芯片内含静态电流降低电路、电流限制、过热保护、电池反接和反插入保护电路,具有较高的可靠性和安全性,而且芯片要求的外接电路非常简单,只需要两个旁路电容就行了,满足了简洁的原则。在智能车系统中用到3.3V电源的模块有,K60芯片,龙邱512线mini编码器,OLED,蜂鸣器,摄像头。3.3V电源电路如下:图2-5 3.3V电源电路在我们的系统设计中3.3V的供电系统负载压力比较大,供电的模块比较多,因此不能采用类似于7.2V直接转换成3.3V的稳压芯片来降压,以免造成芯片压力过大导致芯片过热,稳压电路不稳定,造成不可控的意外发生。在这里我们采用的是
18、先把7.2V的电池电压转成5V电压,再应用LM1117-3.3V将5V电压降压至3.3V输出,减轻稳压芯片的负担。LM1117-3.3V是一款线性低压差(LDO)稳压芯片,在负载电流为800mA压差为1.2V,输出电压精确度为1%,输出电压比较稳定,比较可靠,而且他内置热关断和过流保护,具有比较好的安全性。和LM2940一样,他的外部电路也非常简单,只需要两个电容即可满足,符合简洁的设计原则。而对于舵机可调电压,因为我们只知道6V时扭矩达到6.5KG.CM,不确定车子用的电压该用多少比较好,需要结合舵机的特性慢慢调整,因此采用的是电压可调的电路设计的供电电路。电路设计如下:图2-6 舵机供电电
19、路原理图这里我们使用的是LM2941-adj芯片,这是一款输出电流为1A的线性低压差稳压器,电压调节范围为5V-20V,通过调节滑动变阻器R4的阻值即可调节稳压器输出的电压值,刚开始的时候我们使用舵机电压为6V,后来渐渐升到6.5V,校内赛之后升到6.8V,感觉电压对舵机的响应特性影响不大。2.3.2. 驱动电路驱动电路对于智能车来说就像是发动机对于汽车而言,是产生车辆前进的动力的根源。在刚接触智能车的时候看智能车论坛上,以及一些师兄前辈的文档里面谈论了很多关于驱动电路选择的文章,总结起来主要有BTN驱动电路,MOS管H桥电路。我们这里采用的是MOS管H桥配合IR2103驱动芯片构成的电机驱动
20、电路,电路总体的电路图如下:图2-7 驱动板总体电路这个电路可以分成以下几个部分:7.2V-5V降压电路,隔离电路,7.2V-12V升压电路,IR2103驱动电路,以及MOS管H桥电路。驱动板的总体思路为:5V电路供电给驱动电路,12V电路供电给IR2103驱动电路,隔离电路接收来自主控板的电机PWM控制信号,经过与非门传送给IR2103芯片,芯片经过一定的逻辑运算发出高低电平,每个IR芯片控制一个上下桥臂,通过一定的死区时间避免了H桥上下桥臂同时导通的事故发生,进而控制电机正转和反转。 l 7.2V-5V降压电路上文已经介绍,这里不再赘述;l 7.2V-12V升压电路这里我们采用的是MC34
21、063升压芯片,可以将7.2V的电池电压升至12V电压以驱动IR2103芯片,电路原理图设计如下:图2-7 7V-12V升压电路MC34063属于开关电源电路,工作频率为100KHz,输出电流可高达600mA。开关电路对布线有特殊要求,处理不好会使输出电压纹波系数增大,因此在设计电路时用L1续流,L2滤除输出电压杂波,尽可能改善输出电压。l 隔离电路隔离电路采用的是74HC244芯片。74HC244是一款三态输出缓冲芯片,通过其内部电路可以看出其中的信号只能单向传递,反向受到阻断,因此可以用来做微处理器与电机驱动电路之间的隔离芯片,也增强了驱动能力,电路的原理图如下:图2-8 隔离电路l IR
22、2103驱动电路IR2103是一个高压高速的MOSFET以及IGBT驱动器,他有独立的高低信号输入端,而且设有死区时间,防止同一桥臂上下同时导通造成短路。图2-9 IR2103死区时间驱动电路原理图如下:图2-10 IR2103驱动电路第三章 上位机系统部分3.1 上位机软件开发平台介绍由于智能车在跑道上行驶的速度较快,人眼无法辨别在其过程中智能车的实时状况,给智能车的调试带来一定的不便。故需要开发上位机,用以实时监控智能车的状态,确保在跑道上行驶的过程中程序都能正确的运行。首先,我们选用了蓝牙模块,实现在智能车在跑道上行驶的过程中实时传输数据,故需要一个蓝牙上位机与之匹配,实现数据的接收。权
23、衡之后,选择了LabVIEW这个开发平台做上位机的开发。同时,由于我们选用的光电传感器是摄像头,需要判断摄像头采集到的图像是否正确,以及赛道边线的识别是否正确,而使用蓝牙传输一整帧图像的效率低下,故我们还用了SD卡在智能车行驶的过程中写入数据,所以,还需要一个能够实现图像显示的上位机,于是在Visual Studio开发环境下用C#语言开发了用于显示图像的程序。3.2图像处理程序介绍由于我们光电组的摄像头智能车采用的是摄像头采集数据,并且是根据采集到的图像中的赛道情况,搜出赛道的边线,再合成出赛道的中线,根据合成后的赛道中线来产生舵机的控制量进行控制的策略,所以采集准确的图像以及搜到准确的边线
24、就显得尤为重要,这也是需要使用到上位机来进行辅助分析的原因,一旦采集到的图像不能正确反映赛道情况,那么智能车的控制也就无从谈起。而图像处理的程序正是为了保障采集到的图像的正确性以及搜集赛道边线的正确性而准备的。3.3开发平台的介绍3.4.5.3.3.1 LabVIEW开发平台的介绍LabVIEW使用的是图形化编辑语言G编写程序,产生的程序是框图的形式。LabVIEW开发环境集成了快速构建各种应用所需的所有工具,并且其中一些工具都封装好了协议,开发十分方便高效。3.3.2 Visual Studio开发平台的介绍Visual Studio是目前最流行的Windows平台应用程序的集成开发环境。是
25、一个基本完整的开发工具集,它包括了整个软件生命周期中所需要的大部分工具,如UML工具、代码管控工具、集成开发环境(IDE)等等。3.4 LabVIEW上位机的开发LabVIEW上位机总体设计如图3-1。图3-1 LabVIEW上位机总体设计图3-1中,标号的部分为VISA资源的设置。在LabVIEW中,VISA资源是仪器编程的标准I/O API。使用VISA可以控制GPIB、串口、USB、以太网、PXI或VXI仪器,并根据使用仪器的类型调用相应的驱动程序,开发人员无需学习各种仪器的通信协议。VISA独立于操作系统、总线和编程环境。换言之,无论使用何种设备、操作系统和编程语言,均能够使用相同的A
26、PI。 在这里我们使用VISA资源对串口蓝牙进行配置,使得上位机能够通过使用蓝牙接收和发送数据,与智能车实现实时通讯。图3-1中,标号的部分为数据发送的部分。用以实现从上位机发送命令给智能车,从而实现在智能车行驶的过程中实时发送命令,如控制智能车的发车与停车,以及在行驶的过程中修改PID等参数的功能。实现上述功能可以在智能车行驶的时候根据其行驶状况及时进行参数调整,避免了每次调整参数都要重新下载程序到芯片的繁琐,提高了工作效率。因为主程序里需要多次用到发送数据的功能,故为了简化程序,把发送数据的程序封装成一个VI子模块,在每次使用的时候进行调用,使程序更加简洁。图3-2(a)(b)分别是发送数
27、据子VI的前面板以及G程序。(a) 发送数据子VI的前面板(b) 发送数据子VI的G程序图3-2发送数据子VI的前面板以及G程序图3-1中,标号的部分为数据接收和曲线显示部分,用以接收在行驶过程中智能车发送到上位机的数据,以及根据其中的某些数据绘出波形曲线图,以便分析调试。这也是上位机最核心的部分。同样,为了简化程序,这一部分程序也封装成子VI模块,以供主程序使用。图3-3(a)(b)分别是接收数据子VI的前面板以及G程序。(a) 接收数据子VI的前面板(b) 接收数据子VI的G程序图3-3接收数据子VI的前面板以及G程序在图3-3(b)中可以看到用一长串的正则表达式去匹配接收到的数据的程序,
28、这样做的目的是为了蓝牙数据发送接收不出现差错,在每次发送数据或者命令时加了包头和包尾,以p为包头f和回车为包尾,每次发送接收数据时检验包头包尾是否正确,确保发送或者接收到的数据、命令都是有效的,避免在控制过程中出现有误指令或者无效数据。经测试,若不检测数据命令的有效性,在上位机以高速率接收数据的时候,时常会出现丢包的现象,造成某些数据缺失,如果不加判断直接执行上位机程序会导致上位机程序崩溃。图3-4 上位机曲线显示图3-5 上位机曲线显示图3-4、图3-5是LabVIEW上位机在实际使用中的情况,可以看到图3-4中对应图3-1中标号的部分是用来设置串口的参数,包括串口对应的COM口,波特率,校
29、验位等。对应标号的部分用来发送数据,设置智能车的参数,命令的协议是我们自己定的,如指令b代表的是设置智能车的给定速度,指令则代表设置左后轮PID参数中的参数ki。而对应标号的部分用来具象化地显示曲线,图中曲线分别为左后轮的实际速度,智能车给定速度以及舵机打角,根据波形曲线对应赛道的具体状况,可看出智能车行驶状况是否正常,也可根据需要调整智能车舵机的打角,以达到调整路径的目的。出于方便定量分析波形曲线的目的,也可以把曲线分格显示,如图3-5。3.5 C#上位机的开发C#是面向对象的编程语言。它在继承C和C+强大功能的同时去掉了一些它们的复杂特性(例如没有宏以及不允许多重继承)。C#还综合了VB简
30、单的可视化操作和C+的高运行效率,有着强大的操作能力、优雅的语法风格、创新的语言特性和便捷的面向组件编程。也正因为C#的开发比较方便高效,而且有多种多样的封装好的类函数,对对象的操作只需要调用对象的类函数即可实现,故选择使用C#语言来开发显示摄像头所拍摄到的图像的上位机程序。图3-6 C#上位机的用户界面图3-6是C#上位机的用户界面。图中标号的部分是一个输入框跟一个按钮组成的选择文件的控件。智能车在赛道上行驶的图像通过摄像头采集后,以txt的格式存入到SD卡中,通过一个读卡器就能拷贝到计算机上,通过上位机打开显示。图中标号为的部分主要实现的是SD卡存入参数的显示的功能,为了更好地分析拍到图像
31、时刻智能车的状态以及该状态下一步要执行的动作,我们把一些控制参数也存入了SD卡,便于分析。图中标号的部分是这个上位机程序的主要控制部分,可以控制图像的播放与停止,也可以实现暂停的功能并通过前进或者后退按钮逐帧播放,在播放过程中还可人为地让图像显示固定的辅助行或者辅助列帮助分析。还有一点就是SD卡存入整帧图像的效率也不高,只能在低速行驶时存入图像。为了解决这个问题,使在高速行驶的状态下也能存入数据进行分析,在上位机又加入了只显示搜到的边线的程序,同时,在智能车上也实行在高速行驶时只存入边线数组的数据而不是整帧图像,节省写入时间。图中标号的部分实现的是显示每帧图像的功能。该C#上位机实际使用的情况
32、如下图3-7、图3-8所示。图3-9是在分析过程中运用辅助的行列帮助分析的情况,图3-10是只存入搜到的边线数组的情况。图3-7 上位机显示SD卡存储的图像图3-8上位机显示SD卡存储的图像图3-9 上位机添加辅助线辅助分析图3-10 上位机只显示赛道边线第四章 赛道识别部分4.1 图像二值化处理程序为了更快地进行图像处理,需要把采集到的图像进行二值化,即整帧图像用1或者0表示,避免处理灰度图像耗时过长。我们选用的摄像头是总钻风MT9V032摄像头,这款摄像头的优点在于分辨率高,最大可采集到188*120分辨率的图像,相比其他摄像头可以采集到更多的赛道细节,但也有其缺点就是采集速率慢,一次只能
33、输出一个像素点的灰度值,而且不具有自动二值化的功能,相比其他能直接二值化并一次输出八个像素点的摄像头效率较低。也正因为我们摄像头的特点,我们在图像采集的时候选择只采偶数行或者奇数行,以节省一半的采集时间,而且经过验证图像仍有很高的分辨率,赛道细节并没有丢失,故该方案可行。实现软件二值化的方法有很多,我们试过静态阈值的方法,即给定一个不变的阈值进行二值化,但效果并不是很好,往往在一个地方调整好的阈值到另一个地方就会出现很多的噪声,于是我们决定用动态阈值的方法,以适应跑赛道的光线变化。实现动态阈值的方法有很多,比如灰度平局值值法、百分比阈值(P-Tile法)、基于谷底最小值的阈值(双峰谷底)、基于
34、双峰平均值的阈值、迭代最佳阈值、OSTU大津法等等。就往届的经验来说,用得比较多的而且效果比较好的是双峰法和大津法,这里我们选用双峰法。并且经过验证,双峰法求平均值的方法进行动态阈值二值化效果最好。基于双峰平均值的阈值适用于具有明显双峰直方图的图像,其寻找双峰的谷底作为阈值,故需要对采集图像的灰度直方图,然后进行平滑,使其成为典型双峰直方图。其实现的过程是一个迭代的过程,每次处理前对直方图数据进行判断,看其是否已经是一个双峰的直方图,如果不是,则对直方图数据进行半径为1(窗口大小为3)的平滑,如果迭代了一定的数量比如100次后仍未获得一个双峰的直方图,则函数执行失败,如成功获得,则最终阈值取两
35、个双峰之间的谷底值作为阈值。由于摄像头图像分辨率较高,采集直方图比较耗时,故只采整帧图像中的几行最为代表,以节省处理时间。4.2 赛道图像边线搜索程序对图像进行二值化处理,得到能反映赛道状况的正确图像之后,下一步需要实现的就是赛道边线的搜索了,这也是图像处理程序中最为基本的一步,只有正确地搜到赛道边线,才能正确的给出智能车输出的控制量,实现控制的目的。关于搜索赛道边线的策略我们也有几种想法,一种是从摄像头采集的图像的中点往左右两边搜索边线,一种是从摄像头采集的图像的左右边缘往中间搜索边线,还有一种是利用摄像头采集的图像的最近行的中点是白色这个特点往左右两边搜索赛道边线,然后由上一行搜到赛道边线
36、的列数作为下一行搜索边线的起点。采用最后一种方案的效率比较高,所以最后我们选择了第三种方案。考虑到二值化后图像还可能存在噪点的情况,为了避免搜到噪点作为边线,在搜索到边线之后还判断了边线往外几个点是否为赛道外的点,用以消除噪点的影响。4.2.1特殊赛道处理比赛规定的赛道还有一些特殊赛道类型需要特殊处理,才能保证智能车的顺利行驶,这类赛道类型有十字、环形等。4.2.2十字赛道十字交叉路口赛道,赛道具体情况及要求如图4-1图4-1 比赛十字交叉路口赛道针对此类十字交叉路口赛道,我们采取的是边线补线的策略。具体方案是找出十字路口90角那两个顶点,然后根据斜率往上补线,确保不会左转或者右转。具体图像如
37、图4-2.图4-2 十字赛道补线处理4.2.3 环形赛道环形赛道,赛道具体情况及要求如图4-3图4-3 比赛环形赛道针对环形赛道,我们的补线策略是找到进入环形的左右两个角的顶点,然后根据需要的转向,如往左转的话,就从右边的顶点开始补线,一直互道环形内圆的圆周上,具体图像如图4-4。出环形的时候也是相似的策略,找到出弯的角的顶点,然后从内圆的圆周补线补到比顶点远一点的点,如图4-5图4-4 环形赛道入弯补线图4-5 环形赛道出弯补线第五章 控制算法部分5.1 PID控制速度总结来说,小车的速度控制方案是通过光电编码器来检测车速,然后将当前实际速度和设定速度做差,得到误差值,并将误差值输入到PID
38、控制函数,输出一个PWM驱动信号,通过PWM控制驱动电路调整电机的功率,从而使误差值减少为零,即当前实际速度跟踪上设定速度。5.1.1 PID算法原理简介在过程控制中,按偏差的比例(P)、积分(I)和微分(D)进行控制的PID控制器(亦称PID调节器)是应用最为广泛的一种自动控制器。原理款图如图3-1所示。PID控制算法只要有三种实现方式,分别是增量式、位置式、微分先行式。比例控制作用可以提高系统的动态响应速度和减小系统的稳态误差即提高系统的控制精度,但是如果比例作用太强将导致系统相应趋于不稳定;积分作用通常使系统的稳定性下降(如超调量、震荡次数增加和调整时间延长)以换取消除系统的稳态误差,但
39、是如果积分作用太强将使系统趋于不稳定,反之将减少对系统控制性能的影响;微分作用因能预测偏差和产生超前的校正作用而改善系统的动态特性,如减小超调量和缩短调整时间,且允许加大比例控制分量的成分,但过大的微分作用将正价超调量和延长调整时间,降低系统的抗干扰能力。图3-1 PID控制器原理框图5.1.2 PID算法选择相比于位置式算法,增量式可以减小累计误差,且控制设备从手动切换到自动操作时可以无扰切换,因此我们选择了增量式PID算法,具体计算公式如下: u(k)= u(k-1) + u(k) (3-1) e(k)= r(k)- c(k) (3-2) u(k)=Kpe(k)-e(k-1)+Kie(k)
40、+Kde(k)-2e(k-1)+e(k-2) (3-3)又因为小车在行驶过程中需要根据赛道类型,后轮差速等因素不断变换车轮设定速度,若采用微分控制,会使控制量有较大且频繁的跳动,影响控制性能,所以实际操作时将Kd设为零,即采用PI控制算法。5.1.3 输出限幅因为在初始状况下,小车程序已运行,但是并没有开始跑动,导致一直又有一个恒定的误差e(k)。如果不进行输出限幅,从公式3-3可以看出,积分项将使的u为一个恒定值,由公式3-1可以看出u(k)将不断增大,并远远超出实际可以执行的范围。当小车启动后,转速不断上升,但是由于上一时刻的u(k-1)很大,所以即使小车转速已经到达期望速度,使u为负值,
41、仍然于事无补,u(k)要经过较长一段时间才能渐小至执行器实际输入范围之内,即在这一段时间内执行器(电机)处于全速工作状态,使电机产生较大的超调,这是我们所不希望的。所以要对u(k)进行限幅,当u(k)到达限幅值时,不再累计误差,从而使小车速度到达给定速度后能都迅速退出积分饱和,保证其动态性能。5.1.4 棒棒控制通过单纯的PI控制,基本上能够实现在速度一定的滞后时间内无差跟随。但是当小车的速度提升上去之后,单纯靠前轮舵机打角并不能提供足够的转向力,还需要依靠后轮差速使小车顺畅过弯。因为过弯所用的时间很短,在此情况下,就要求后轮速度能快速响应,内轮及时减速,外轮及时加速,从而保证后轮能够提供足够
42、的转向力。针对这个要求,我们在PI控制的基础上加入了棒棒控制。具体实现方法是:当该轮子的期望速度减去实际速度大于一定阈值时,即该电机需要快速加速,就给电机输入100%占空比的PWM(Umax),使电机全速加速(如图3-2的左边框);当该轮子的期望速度减去实际速度小于一定阈值时,即电机需要紧急制动,就让电机输出一个恒定的负电压,使电机紧急减速(如图3-2的右边框);而当速度差在一定范围内是,就执行普通的PI控制,使电机转速被平滑控制。图3-2 棒棒控制(注:红色曲线(上)为设定速度;深蓝色曲线为实际速度;红色曲线(下)为当前输出的pwm占空比)以上是棒棒控制的概述,具体到工程实践,还有一个问题,
43、就是棒棒控制与普通PI控制切换时应使公式3-1中上一时刻的输出u(k-1)为多少。如果不采取任何措施,即使切换到PI控制的初始时刻是u(k-1)为棒棒控制的输出值Umax或Umin,这样做会使速度容易超调,即pwm输出不能从Umax降下来或从Umin升上去,超调过大进一步触发反向棒棒,使速度往反方向快速变化并且又出现超调,使速度又往正方向快速变化。如此循环便造成系统不断震荡,控制器输出不断在棒棒控制的两个值Umax和Umin之间来回跳动(如图3-3方框中)。鉴于上述情况,我们对棒棒控制切换到普通PI控制的初始时刻公式4-1中上一时刻的输出u(k-1)做相应处理,人为地使其等于从PI控制切换到棒
44、棒控制的上一时刻的u(k)与Ubangbang的中值,经实际检验,此做法可有效抑制速度震荡。图3-3 因棒棒控制导致的速度震荡(注:红色曲线(上)为设定速度;深蓝色曲线为实际速度;红色曲线(下)为当前输出的pwm占空比)5.1.5 参数调整对于PID参数的整定方法,大致可分为理论计算法和工程整定法两大类。常用的理论计算法有根轨迹法、对数频率特性法等;工程整定法有反应曲线法、稳定边界法、衰减曲线法、经验试凑法等。鉴于小车这一系统的不确定因素较大,难以建立精确的数学模型,因此不选用需要数学模型的理论计算法。又因为小车在行驶过程中受到转弯阻力、赛道材料、温度等因素的影响而会导致其速度响应曲线不同,因
45、此最终选择经验试凑法,以实际行驶过程中实际速度曲线对目标速度值得跟随程度作为衡量参数好坏的标准。具体做法为:第一步为空载调试。先在小车空载时,给小车一个阶跃给定速度信号,把Kd、Ki调为零,并从小到大逐渐增加Kp,直到速度曲线出现震荡,将Kp设定为当前值的60%70%;保持Kp不变,将Ki从小逐渐增大,直至出现震荡,将Ki设定为当前值的66%55%;再观察速度相应曲线,针对此时出现的问题按照比例项和积分项对系统的影响微调比例系数和积分系数,直至系统空载速度相应在可以接受的范围之内。第二步为带载调试。让小车在直道加速启动,观察其速度响应曲线,若速度超调较大,则减小Kp和Ki,反之则增加,微调直至
46、系统速度具有良好的跟随性能。最终小车的速度跟随曲线如图3-4所示。图3-4 速度跟随曲线(注:深蓝色为实际速度;绿色为设定速度)5.2 Fuzzy控制方向总结来说,小车的方向控制是通过以下方案实现:通过图像处理得出期望运动轨迹和当前实际轨迹的偏差e(k),和偏差的变化e(k)=e(k)-e(k-1),将这两个参数输入给模糊控制器,模糊控制器将根据其运算规则给出小车期望打角,并将相应信号输出给舵机响应。5.2.1 Fuzzy算法原理简介模糊算法的原理框图如图3-5所示,具体步骤为:首先选定模糊控制器的输入(即上述的期望运动轨迹与实际运动轨迹的e(k)和e(k))输出(即舵机的打角角度)变量,并进
47、行量程转换;然后用模糊语言表示各个变量,即进行模糊化,并且确定其隶属函数。模糊语言值通常可以以一下形式表示,例如负,零,正,或负大,负小,零,正小,正大,或负大,负中,负小,零,正小,正中,正大等,我们选择了七个模糊语言值(如图3-6);建立模糊控制规则或控制算法,此过程成应依据实际经验建立,使输入输出大致按照预想的方向变化;最后确定模糊推理和解模糊化方法,从而将模糊量转化为精确量,作为最终控制量的输出。图3-5 Fuzzy控制原理框图图3-6 Fuzzy控制模糊语言值5.2.2 e的滤波根据模糊控制的原理,e(k)对控制量起到提前预测的作用。但是因为e(k)是不断变化的值,导致e(k)会有许
48、多毛刺,最终导致控制量即期望舵机打角的控制信号有毛刺(如图3-7),影响控制质量。图3-7 e(k)加权平均滤波,e(k)没有滤波(注:曲线2为e(k),曲线3为e(k),曲线4为舵机打角)因此除了对e(k)滤波以外,有必要对e(k)也进行相应滤波,消除毛刺。参考PID算法中的四点差分法滤波,在PID控制中其主要作用是可以削弱微分项对干扰的敏感程度,以抑制干扰对控制量的影响。考虑到e(k)在模糊控制里面所发挥的作用于PID中微分项很相似,故采用此种滤波方法,其效果如图3-8。从图中可以看出,相比之下,e(k)和舵机打角基本上没有毛刺,控制效果平滑,舵机不会有高频震动。图3-8 e(k)加权平均
49、滤波,e(k)四点差分滤波(注:曲线2为e(k),曲线3为e(k),曲线4为舵机打角)5.2.3 e的相位滞后问题对e进行四点差分滤波后,难以避免会引入相位滞后,导致控制打角的滞后。当小车速度较快时,将出现转弯不及时而冲出赛道的危险。为了解决这个问题,我们利用摄像头视野较宽的特点,使用离小车较近的行数计算e,使用较远的行数计算e,人为将e的相位提前,以弥补滤波导致的相位滞后问题。经实际检验此方法可行。5.2.4 Fuzzy控制器输出的平滑性由于模糊控制实际为非线性控制,且需要调整的变量较多,建立输入输出函数较为复杂,因此实际调试中,很容易因为参数整定不合理而导致输出不平滑,如图3-9的曲线4所示,当偏差在匀速减小时,舵机打角的变化率不一致,这将导致在实际运动中,当到达某个阈值舵机打角将会产生一个较大的突变打角,导致小车运行不稳定,容易偏移。因此必须对这种情况进行相应处理。我们采取的方法是先将隶属函数调整为等距,再微调模糊值,直到得到较为理想的输出相应去曲线。图3-9模糊控制器输出不平滑(注:曲线2为e(k),曲线3为e(k),曲线4为舵机打角)总结从16年10月开始正式准
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度物流仓储用地承包租赁合同(2024版)4篇
- 2025年度新型储藏室与车位投资合作合同模板4篇
- 2025年度新能源汽车充电桩承债式公司股权转让合同4篇
- 2025年度文化演艺场馆承包经营合同4篇
- 2025年度土地整治与生态修复项目承包合同4篇
- 2024通信线路施工及改造分包合同范本3篇
- 2025年度生态环保工程承包商工程款支付担保协议4篇
- 2025年度历史文化街区保护项目房屋拆迁补偿合同2篇
- 2025年度住宅小区配套停车场车位代理销售协议4篇
- 2025年度星级酒店厨师团队合作协议4篇
- 土壤农化分析课件
- 小区大型团购活动策划
- NEC(新生儿坏死性小肠结肠炎)92273
- 2023年租赁风控主管年度总结及下一年展望
- 开关插座必看的七个安全隐患范文
- 高分子成型加工课件
- 消防救援-低温雨雪冰冻恶劣天气条件下灾害防范及救援行动与安全
- 硅石项目建议书范本
- 概率论在金融风险评估中的应用研究
- 住院医疗互助给付申请书
- 外墙外保温工程检验批质量验收记录表
评论
0/150
提交评论