1、本 科 毕 业 设 计(论文)题 目:直立式光电智能车的设计与实现2015年 6月14日中国石油大学(华东)本科毕业设计(论文)直立式光电智能车的设计与实现摘 要本文以飞思卡尔杯智能车竞赛为背景,完成了直立式光电智能车的机械和硬件结构设计,并研究了不同赛道的图像处理算法。智能车以MKL26Z256VLL4单片机为控制核心,采用TSL1401线性CCD采集图像,并对二值化图像进行了低通滤波,通过边沿检测算法识别赛道的黑白边沿,求出中心偏差后作为转角的控制量。为方便调试,在智能车上还设计了OLED液晶显示和蓝牙通讯模块,通过无线通信实现上位机实时图像显示、参数曲线显示和在线调整功能。实验证明小车可
2、以准确识别赛道,并能保持平稳快速运行。 关键词:图像处理;线性CCD;边沿检测;控制周期The design and implementation of upright photoelectric smart carAbstractAccording to the requirement of photoelectricity group of Freescale smart car competition, the mechanical structure and hardware of the smart car was completed to improve stability and
3、 the image processing algorithms was designed. Based on the microprocessor MKL26Z256VLL4 and TSL1401 Linear CCD, the smart car could successfully identify the black line by edge detection algorithms after low-pass filtering of image. Then the track center line could be obtained and direction control
4、 value could be calculated. The smart car was also equipped with OLED and Bluetooth communication module used to transfer images and state data to computers. The parameters of running car could also be changed with software we designed. It made the debugging process more effective. Tests showed that
5、 the smart car could identify different tracks and run quickly and stably.Keywords:Image processing; Linear CCD; edge detection;Control period目 录第1章 引言11.1 智能车大赛概况11.2 光电组智能车11.2.1 光电组智能车的路径检测原理11.2.2 光电平衡组智能车的优缺点11.3 系统整体构想2第2章 系统硬件电路设计32.1 硬件电路整体架构设计32.2 系统主板电路设计32.3 系统电源电路设计42.4 电机驱动电路设计42.5 线性CC
6、D原理介绍52.6 蜂鸣器电路设计62.7 电源地的划分62.8 硬件电路部分总结7第3章 车模机械布局架构与结构调整83.1 机械部分总体概述83.2 线性CCD布局与安装83.3 电池、电路板等部分的固定93.4 3D模型设计103.5 角度传感器安装11第4章 软件系统设计124.1 开发工具124.2 软件控制的总体思路124.3 主程序设计134.3.1 主程序结构154.4 上位机设计164.4.1串口调试工具164.4.2 上位机164.5 角度控制174.5.1 互补滤波174.5.2 角度闭环控制194.6 速度控制194.7 方向控制204.7.1图像二值化204.7.2
7、图像滤波214.7.3 赛道元素识别224.7.4 电机差动控制264.8 软件部分总结27第5章 智能车调试实验285.1 硬件部分调试285.1.1 电源模块调试285.1.2 电机驱动模块调试285.2 软件部分调试285.2.1 静态参数调试285.2.2 动态参数调试295.3 小结30第6章 总结与展望316.1 总结316.2 展望31致 谢32参考文献33第1章 引言第1章 引言1.1 智能车大赛概况全国大学生“飞思卡尔”杯智能汽车竞赛起源于韩国,目前在国内已经发展到第十届。随着前九届大赛的成功举办,也陆续培养出一大批工程开发人才。竞赛秘书处每次大约在第一年的11月份左右提出比
8、赛规则,分区赛比赛在第二年的7月份左右。在分区赛当中成绩优秀的队伍可以获得8月份总决赛的参赛资格。参赛选手需要历经超过半年的调试才能完成一辆优秀的模型车,极大地锻炼了选手的耐心。参加智能汽车竞赛的参赛选手,须使用竞赛秘书处指定的车模,使用飞思卡尔半导体公司的微处理器作为核心处理器控制器,参赛选手需要在车模上增加传感器来识别路径,设计电机驱动电路,编写调试下位机与上位机软件,最终实现一个可以运行的汽车模型,完成时间最短者为优胜。该竞赛的涉及内容广泛,涵盖了模式识别、控制、机械等学科的知识,增强了学生的动手能力和团队协作意识。1.2 光电组智能车1.2.1 光电组智能车的路径检测原理光电智能车是基
9、于光的漫反射原理来检测路径的。光线照到白色赛道反射回来的光线强,而黑色赛道反射回来的光线弱(如图1-1所示),通过反射回来的光线强弱来识别赛道情况。 (a) (b) 图1-1 光线射到不同背景的反射情况(a)光线射到黑色背景情况;(b)光线射到白色背景情况1.2.2 光电平衡组智能车的优缺点光电平衡组智能车优点:生产成本较低、电路简单、信号处理速度快、响应快速、功耗较低等。光电平衡组智能车缺点:前瞻容易受到车模角度变化影响,在车模高速运行时表现明显;车模两轮直立行走,速度控制建立在车模直立基础上,速度控制周期相对较长,响应缓慢;车模中心较高,高速过弯时容易翻车;得到的图像只是一条直线上的信息,
10、空间分辨率低,数据量少;加速度计和陀螺仪噪声对角度滤波算法容易产生影响。1.3 系统整体构想模型车以加速度计和陀螺仪作为角度融合传感器,以6ms为周期控制车模直立,以两个高精度编码器作为测速传感器,以60ms为周期控制车模速度,以线性CCD作为道路信息传感器,以12ms为周期获取、处理赛道信息并控制左右电机差速,在保持车模直立以及速度稳定的基础上进行转向控制,以使平衡车始终行驶在赛道中央。单片机综合考虑各种赛道信息,进行小车实际位置的计算。在单片机软件的编写上,需要使平衡车在赛道上运行时尽可能保持车模角度稳定,速度稳定。对角度控制采用了比例微分 胡寿松. 自动控制原理M.北京:科学出版社,20
11、07:30-150.控制,对于速度控制采用了积分限幅比例积分控制算法,转向控制采用比例微分控制算法,配合不完全微分 郑伟鸿,郑顺杰,陈观淡.厦门大学至致远队技术报告R.2013:31-32.以及防偏差跳变。32第2章 系统硬件电路设计 第2章 系统硬件电路设计2.1 硬件电路整体架构设计3.3V5VMKL26Z256VLL45V3.3V电源管理模块加速度计、陀螺仪传感器模块双线性CCD3.3V测速模块液晶、蓝牙直流电机电机驱动模块7.2V图2-1 系统框图系统整体结构(如图2-1所示)。2.2 系统主板电路设计 韩国栋,月飞,娄建安. Altium Designer Winter 09电路设计
12、入门与提高M.北京:化学工业出版社,2010:1-100.主板电路主要有电源接口、单片机最小系统板插座,线性CCD插口,AD端口,陀螺仪、加速度计、液晶蓝牙插口,电机驱动接口,编码器接口等(如图2-2所示)。图2-2 系统主板电路设计2.3 系统电源电路设计稳定的系统首先需要电源稳定,系统中有三路电源,8.0V,5V,3.3V。8.0V电池电压直接接到电机驱动模块,5V为测速编码器、线性CCD供电,3.3V给单片机、陀螺仪、加速度计、液晶、蓝牙、蜂鸣器供电。采用了一片TPS7350 王明顺,沈谋全. Power Design of Intelligent Vehicle Based on TP
13、S7350J.东北大学信息科学与工程学院.2006,(24):1-5.为两个线性CCD供电,TPS7350为微功耗低压差线性稳压芯片。使用一片低压降串联稳压芯片LM2940将电源电压8.0V稳到5.0V,作为两片电源芯片TPS7333的输入电压,避免TPS7333的前后压差太大。同时LM2940还要为两个编码器供电。用一片TPS7333单独为单片机最小系统供电,另一片TPS7333为陀螺仪、加速度计、液晶、蓝牙、蜂鸣器供电。系统电源原理图如图2-3所示。(a) (b)(c) (d)图2-3 系统电源原理图(a)TPS7350 5V稳压;(b)LM2940 5V稳压;(c)TPS7333 3.3
14、V稳压;(d)TPS7333 3.3V稳压2.4 电机驱动电路设计我们使用驱动芯片BTN7971搭建H桥来控制电机正反转,硬件电路简单,控制调试方便。光电平衡组智能车有两个直流电机,所以我们采用4片BTN7971,每两片控制一个电机(如图2-5所示),用四路PWM控制电机正反转。BTN7971的内阻比较小,驱动电流可达七十安,运行过程中发热量较少,符合智能车比赛要求。图2-4 电机驱动模块原理图2.5 线性CCD原理介绍TSL1401线性CCD是本次比赛官方指定传感器,它由128 个光电二极管的线性阵列组成。照射在光电二极管上的光的能量产生光电流,相关像素点上的有源积分电路对这些光电流进行积分
15、。在积分期间,积分器的输出通过一个模拟开关连接到采样电容。在每个像素中积累的电荷量与光强度和积分时间成正比。积分器的输出和复位由一个128 位的移位寄存器和复位逻辑控制。图2-5 线性CCD驱动时序图对于线性CCD模拟信号的采集,我们采取的方法是用单片机两个普通IO端口PTE20、PTE21驱动两个CCD的两个SI和两个CLK引脚,采用两路AD端口PTE16、PTE17分别连接线性CCD的模拟输出AO口,既节省了单片机端口资源,在进行模拟信号采集时也会节约时间。2.6 蜂鸣器电路设计蜂鸣器的作用在于验证单片机程序是否运行到指定的位置,对于软件调试起到非常重要的作用。采用贴片式SS8050三极管
16、作为驱动三极管,具有体积小、重量轻、电流大等优点。电路图如图2-6所示。图2-6 蜂鸣器电路原理图2.7 电源地的划分我们还对电路中的地进行了划分 张强,刘运发,张文斌.中国石油大学(华东)石大摄像头一队技术报告R.2014:13-14.,分为驱动地(PGND)、模拟地(AGND)和数字地(GND)。在电路中驱动地和模拟地通过磁珠相连,数字地和模拟地通过零欧姆电阻相连,既保证电位的相等,又能使彼此的干扰降到最小。具体电路如下图所示。图2-7 电源地的划分2.8 硬件电路部分总结硬件电路部分,我们在前人的基础上做了一些尝试,也出现了若干问题。尝试在通往驱动的电源上串联一个470uf的电感,因为电
17、感阻碍电流的变化使得平衡车在扰动下站不起来站得很软,最后把电感剪掉,用焊锡将焊盘连接到一起解决了问题。为了防止焊接过程中发生短路,将PCB敷铜密度规则设置为线宽的两倍,没有注意到铜被分割了,导致LM2940的地没有和其它地连接在一起。调试过程中因为粗心大意导致PCB短路,造成一个编码器的地与PCB断开并烧坏了一个编码器,最后只能通过铁丝将地线连接在一起。各个电子元器件的布局,杜邦线插针和插排的位置也非常重要,关系到板子的简洁和机械结构重心的合理性,插线横跨位置尽量少。第3章 车模机械布局架构与结构调整第3章 车模机械布局架构与结构调整3.1 机械部分总体概述平衡组智能车要求重心尽量放低,行驶过
18、程中转动惯量要小,车模的平衡角度取决于各个部件的安装位置和重量,必须保证结构稳定牢固。好的机械结构是车模进一步提速的基础,对于平衡组小车来说尤其重要。我们对车模机械的调整都是为了使车模重量减轻,重心降低,齿轮咬合既不宽松也不紧密,小车行驶顺滑流畅。3.2 线性CCD布局与安装图3-1 线性CCD支架立杆位置示意图 图3-1是车模CCD支架立杆与地面的数学几何图。讨论立杆与地面夹角的变化对车模前瞻的影响,对、两个变量进行定量分析,得出关于、的函数。 由正弦定理式(3-1)和式(3-2) (3-1) (3-2)联立(3-1)和(3-2)得式(3-3) (3-3) 对式(3-3)对关于求偏导得式(3
19、-4) (3-4) 由式(3-4)可得:当时,最小,此时小于90度。由此可知,线性CCD采集行与CCD立杆间的夹角为90 度,且立杆前倾时,平衡车行进过程中车身的晃动对图像稳定性的影响最小。 根据今年的新规则,平衡组小车需要爬过坡度不超过15度,高度不限的的对称坡道和不对称坡道,由于线性CCD采集信息局限,这时可能会造成小车看得很远致使视野变花,造成小车冲出跑道,所以我们采取两个线性CCD竖直摆放,用下面的CCD进行坡道辅助识别,效果明显。采用PVC支架将线性CCD紧紧固定在直径5mm长约35mm的碳素杆上。为保证碳素杆不会在小车运行过程中摇晃,我们使用三个短碳素杆和热熔胶,采用三脚架结构将竖
20、直碳素杆牢牢固定在车身上。最终确定CCD安装位置如图3-2所示。图3-2 CCD安装位置3.3 电池、电路板等部分的固定电池和电路板是车模上重量较大的物体,它的安装位置决定了小车的平衡角度,转动惯量大小,进而影响小车在运行过程中的流畅程度和极限速度。我们将电池和电路板安装在小车前方,两者紧紧贴合,保证重心尽可能的低。电池使用厚度3mm的PVC支架托在车模前方,安装稳固。mini编码器安装在车模车身上方,轮轴上方,使用塑料支架和螺丝固定在车身上,并保证齿轮咬合恰到好处。图3-3 电路板编码器电池安装位置3.4 3D模型设计小车的直立要求机械结构绝对合理稳定,结合我们小车的特点,我们用Solidw
21、orks为小车量身设计了电池固定带、编码器支架、CCD固定支架,用学院3D打印机制作出来。模型设计如图3-4所示。 (a) (b)(c)图3-4 3D模型(a) 电池固定带;(b)编码器支架;(c) CCD固定支架;3.5 角度传感器安装加速度计安装在车模上,车模运行震动对它的影响比较大,所以我们将加速度计安装在车模底部中间,尽量减少车模震动对它的影响。图3-5 加速度计安装位置为保证陀螺仪的水平安装以及测量精度,我们沿着车模固有的水平轮廓线将陀螺仪传感器安装在车模上方中间。图3-6 陀螺仪安装位置第4章 软件系统设计第4章 软件系统设计4.1 开发工具 我们使用的开发环境是IAR Embed
22、ded Workbench,IAR Systems是全球领先的嵌入式系统开发工具和服务的供应商。IAR Embedded Workbench是一套完整的集成开发工具集合,包括从代码编辑器、工程建立到C/C+编译器、连接器和调试器的各类开发工具。功能强大,支持在线调试,可以应用到多种处理器。图4-1 IAR软件界面4.2 软件控制的总体思路平衡车的软件控制首先要求保持车模直立不倒,然后加入速度控制和方向控制,它们对角度控制的影响要要尽可能的小。下面首先介绍单片机的中断时序设计和信号采集设计,进而分别介绍控制所用算法。4.3 主程序设计直立控制电机输出系统初始化开始参数定义开中断速度控制路径分析方
23、向控制(a)时间片段1:读入加速度计数值时间片段2:读入上下陀螺仪数值角度互补滤波角度控制电机输出时间片段3:进行10次计数每次平滑输出控制量第10次计数:读入编码器脉冲数值速度控制时间片段4: 进行2次计数每次平滑输出控制量 第1次计数:线性CCD图像处理 第2次计数:读入转向陀螺仪数值方向控制1.5ms中断进入1.5ms中断退出(b)楔形障碍直角双边沿赛道单引导线路径分析方向控制双边沿赛道对应参数及算法直角对应参数及算法单引导线对应参数及算法楔形障碍对应参数及算法返回偏差值(c)200ns中断进入时间片段1:SI置1时间片段2:CLK置1时间片段3:SI置0时间片段4-259:偶数次:AD
24、1采集AD2采集CLK反转奇数次:不做动作时间片段260:CLK置0计数清零200ns中断退出(d)图4-2 主程序结构示意图(a) 主程序流程图;(b)PIT0中断处理;(c)路径分析方向控制;(d)PIT1中断处理;4.3.1 主程序结构平衡车的平稳直立和恒速运行需要严格的控制周期,将所有程序都放在了定时器中断里面,保证直立,速度,方向之间的相互影响尽可能的小。陀螺仪和加速度计数据的读入均通过单片机I2C总线进行,使用示波器实际测量陀螺仪和加速度计采集时间,测得分别耗费时间1.2ms左右,为了保证采样的快速性和在中断时间内采样完成,将定时器PIT0中断配置为1.5ms,在定时器PIT0里面
25、完成的任务有:第一个1.5ms采集加速度计加速度信号;第二个1.5ms采集陀螺仪角速度信号,进行角度融合,角度控制,电机输出;第三个1.5ms进行方向控制,方向控制量2次平滑输出;第四个1.5ms进行速度控制,速度控制量10次平滑输出。在调试过程中发现,线性CCD采集的图像存在不稳定跳动。经过分析,原因是线性CCD采样放在主循环里面,一次时序完成需要耗费4.5ms左右,在这期间会被定时器0中断打断2-3次,影响CCD若干点采样的曝光时间。所以配置了第二路定时器PIT1,由于MKL26只有PIT0和PIT1两个定时器通道,两个定时器共用一个中断号,两个中断任务写在一个函数里面,并且写在前面的标志
26、位对应的任务优先级要高。在PIT0中每6ms开一次PIT1定时器中断,当再次进入PIT服务函数时会进入PIT1中断,定时器1中断时间为200ns,模拟线性CCD输入端SI、CLK采样时序电平,采样电平同时对两路CCD提供驱动信号,在260次PIT1中断完成后,实现了对两路CCD数据的采集,此时关闭PIT1中断 姚成文,苏晨光,顾竟潇.天津大学光电平衡组SpeedTime技术报告R.2013:29-37.。4.4 上位机设计4.4.1串口调试工具利用蓝牙模块可以将车模的角度、车速和偏差等数据无线发送到上位机,供在线调试和数据离线分析,加快调试进程。图4-3 蓝牙模块4.4.2 上位机直立车有较多
27、的参数需要调试整定,设计了一个基于C# winform Karli Watson, Jacob Vibe Hammer, Jon D.Reid, Morgan Skinner, Daniel Kemper, Christian Nagel, 齐立波,黄俊伟,黄静.C#入门经典(第6版)M.北京:清华大学出版社,2012:10-100.环境下的上位机,对小车参数进行在线传送和参数观测,下位机中则根据既定的协议配置串口接收中断。图4-4 上位机面板利用上位机软件的数据保存功能对智能车的速度,角度,图像等进行保存,采用matlab对数据进行绘图显示,方便离线分析。4.5 角度控制4.5.1 互补滤波
28、平衡车需要通过车身角度来维持车身平衡,角度的测量对平衡车极其关键,常用的用来测量角度的传感器有加速度计和陀螺仪。加速度计的特点是动态响应较慢,由于机械振动原因,加速度计测量信号会在实际值附近出现大波动,在高频段信号不可用。陀螺仪的特点是响应快,积分后可测倾角,不过由于零漂和温漂,会出现积分漂移 Nagel D J. MEMS:Micro technologyJ.IEEE Circuits & Device, 2001:17(2):14-25.,在低频段信号不好。通过低通滤波抑制加速度计高频噪声,通过高通滤波抑制陀螺仪低频噪声,这就是互补滤波。图4-5是互补滤波器的图形表达。角度角速度低通滤波器
29、数值积分高通滤波器 Y X 加速度计陀螺仪图4-5 互补滤波器互补滤波将陀螺仪和加速度计的优点融合起来,得到在高频和低频都比较好的信号。互补滤波相比较卡尔曼滤波 Kalman, R.E. A New Approach to Linear Filtering and Prediction Problems. Transaction of the ASME-Journal of Basic EngineeringD. 1960, 20(10):4-8.的优点是不需要对噪声精确建模,实现简单。互补滤波的程序实现如式(4-1)。angle = Q*(angle + gyro * dt) + R*(x_
30、acc) (4-1)其中angle是滤波后的角度,Q可以理解为陀螺仪占的比重,gyro是陀螺仪测得的角速度,dt是采样时间,R为加速度计占得比重,R与Q的和为1,R0,Q0,x_acc是加速度计测得的倾角。本系统采样时间为dt=0.006s。在小车开机后还没有开始运动时,因为此时加速度计测得的角度扰动比运动过程中因为电机、车模震动带来的扰动要小得多,所以在电机还没有开始转动之前让加速度计占得比重大一些,让滤波后角度快速跟踪加速度计的输出。经过调试取Q=0.5,R=0.5,如图4-6所示,滤波后角度能够及时跟踪加速度计输出。图4-6 平衡车开机静止初期加速度计和滤波后角度对比图在小车运动过程中,
31、合适的加速度计比例可以滤除加速度计的波动影响,同时也能有效抑制陀螺仪的漂移,这个比例值比小车静止时的比例值要小。经过调试取Q=0.995,R=0.005。滤波效果不错,如图4-7所示。图4-7 平衡车运动过程中加速度计和滤波后角度对比图4.5.2 角度闭环控制角度采取PD控制,保持小车在静止和运行过程中的角度恒定,PD参数调整好之后,小车的角度控制平滑,整体上小车站得比较硬,没有大的突变。4.6 速度控制通过控制电机转速可以控制车轮速度,实现车模运行速度控制。在平衡组的速度控制中,最终是通过角度控制改变车模速度,简单形容则为前倾加速、后倾减速。程序中的速度环实际上是对小车角度控制的扰动,我们进
32、行PI控制的目的是使该扰动在小车运行过程中保持稳定快速,这和普通速度控制有些类似。但所不同的是,由于小车速度控制是对角度控制的扰动,为使此扰动不至于变化太大影响车模稳定直立,需要设置速度控制周期比角度控制周期长,但是速度周期过长又会使速度调节缓慢。参考官方方案10 第七届全国大学生飞思卡尔杯智能汽车竞赛电磁组直立行车参考设计方案(版本2.0)R.竞赛秘书处,2012:1-108.的100ms,调试初期我们采用了120ms,后来缩短到96ms,再后来缩短到60ms,通过不断调节角度PD参数使小车在运行过程中保持稳定。综合考虑扰动和响应快慢,速度控制周期设为角度控制周期的10倍,即60ms。小车在
33、运行过程中要使速度尽快到达设定值并保持速度稳定,以减少对小车角度的干扰。对于小车速度,速度调节采用PI控制,对速度积分项进行限幅,最终速度控制量输出也要进行限幅。4.7 方向控制通过线性CCD返回的图像信息,运用路径识别算法得到车模的中心偏离赛道中心的偏差,通过控制算法与电机差动控制结合实现方向控制。线性CCD路径识别算法主要涉及两部分,一是图像的二值化和滤波处理,二是各种赛道的识别,最后得出小车转向的偏差。4.7.1图像二值化由于线性CCD是模拟传感器,其传感器信号为电压值,电压值的大小反映的是传感器所看到环境的亮暗程度。一方面,传感器本身的信号稳定性极其重要,它是识别的基础;另一方面,对信
34、号在各种环境下进行处理,通过软件程序使其能够分辨白色和黑色,增强其环境适应性极其重要。采取固定阈值二值化,仅限于在光线特别理想均匀的地方。对于智能车比赛场地,光线往往不是最理想状态,有亮的地方也有比较暗的地方,在这种情况下采取固定阈值二值化很容易发生误判。经过不断实验和数据观察,我们最后采取动态阈值二值化。具体步骤是首先开机取环境基准阈值,对每行的最大值和最小值取平均,连续10次后,求得环境基准阈值THRES。车模开始运行后对每行求取最大值和最小值,比较最大值和最小值的比值,如果最大值比最小值的1.6倍要小并且最大值小于环境基准阈值THRES,则认为是全蓝;其他情况如果最大值比最小值的1.6倍
35、要小,则认为是灰度值差别不大的全白,采取上一次的动态阈值对此行进行二值化,如果最大值比最小值的1.6倍大,则该行的阈值是最大值和最小值的平均值。用阈值对每行数据进行二值化,如果数据大于阈值,则将数组Pixeli=255,否则Pixeli=0。二值化流程如图4-8所示。YESYES开机求取每行最大值max、最小值minmax1.6*minmaxTHRES全蓝,不进行二值化最大值与最小值差别比较小,采取上一次阈值二值化NONO最大值与最小值差别大,用0.5*(max+min)作为阈值进行二值化取10次每行的最大值、最小值的均值作平均为基准阈值THRES图4-8 二值化流程4.7.2 图像滤波车模在
36、运行过程中CCD得到的数据具有噪声,本文主要考虑了两种滤波方法,高斯滤波和低通滤波。高斯滤波也是低通滤波,用在图像二值化以前;低通滤波也就是去除高频噪声,如两个黑点中间夹一个白点,用在二值化之后。高斯滤波是一种线性平滑滤波,用于消除高斯噪声,广泛应用于图像处理的减噪过程。高斯滤波就是对整幅图像进行加权平均的过程,每一个像素点的值,都由其本身和邻域内的其他像素值经过加权平均后得到。高斯滤波的具体操作是:用一个模板扫描图像中的每一个像素,用模板确定的邻域内像素的加权平均灰度值去替代模板中心像素点的值。由于线性CCD为一维数据,我们实验采取大小为31的模板,采取中间点权重0.8,两边点权重0.1,计
37、算公式如式(4-2)。 (4-2)其中,为图像中点的灰度值,为该点经过高斯滤波后的值。采取matlab对原图像数据进行仿真,效果图如图4-9所示。图 4-9 原始图像灰度值与高斯滤波后图像灰度值低通滤波器,在灰度连续变化的图像中是比较有效的,二值化后的图像将是成片的白色或者成片的黑色。如果两个相同颜色像素点之间出现一个不一样颜色的像素点,比如说一片暗区中突然出现了一个白点,这种情况被认为是一种噪声。利用低通滤波器可以减少图像噪声。具体实现代码如下for(i=0;i=64YES寻找右边沿是否找到寻找左边沿Bluestart=0;返回偏差NO返回上一次偏差是否为障碍YES是否为直角NONO是否为左
38、拐直角右拐保持NO是否寻找到双边沿YESYES左拐保持NOYES是否为单引导线YES返回偏差NOYES图 4-11 赛道识别流程第十届智能车比赛加入了直角元素,在数学上它属于连续但不可导的,不同于之前的连续又可导的双边线赛道,因此直角元素需要特殊识别一下。我们的识别方法首先判别直角元素前面是直道,之后如果是左边(右边)全白,触发可能会是左(右)拐直角条件,然后如果连续6-7次左(右)全白即认为是左(右)拐直角,左(右)拐直角标志置位,左(右)转向保持,直到双边沿寻到为止才清左(右)拐直角标志。因为平衡车在运行过程中角度会发生变化,导致视角的不同,看相同宽度的东西像素值所对应的宽度差别比较大。因
39、此根据绝对宽度判别楔形障碍容易发生漏判或者误判。我们根据相对宽度为主,绝对宽度为辅的方法判别楔形障碍:观察当小车看到楔形障碍时的图像特征,如果障碍在赛道左侧,障碍侧有一段小白,右边相邻的是障碍的黑色,右边相邻的是赛道的白色。它们的宽度满足W120,W110,W12*W2,W33,W3W2,其中W1是白块的长度,W2是障碍的宽度,W3是小白块的宽度。图 4-12 楔形障碍第十届新加入的单引导线背景有多种方式,其中最典型的是单引导线铺在普通双线赛道中间和铺在白色白板上。对于铺在普通双线赛道中间的单引导线,识别之后需要往左往右扫一下左右黑边沿是否同时存在,然后沿着最后的左右边沿求出的赛道偏差运行。对
40、于铺在白色白板上的单引导线,因为这个白色背景是在两个双边沿赛道的衔接处,所以当小车在白色背景上运行时,需要保证小车做好衔接工作,不能跑出去。因此标志位置1之后清零的标志是双边沿已经寻到,并且宽度合适。图 4-13 单引导线4.7.4 电机差动控制 利用计算方向所得偏差经过比例微分算法分别与车模速度控制信号进行加和减,形成左右轮差动控制电压,使得车模左右轮运行角速度不一致进而控制车模方向。通过简单的比例控制可以初步实现方向控制。通过左右电机速度差驱动车模转向消除车模偏差是一个积分过程,因此车模差动控制不需要进行积分控制。由于车模本身安装有电池等比较重的物体,具有很大的转动惯量,为了抑制车模在拐弯
41、过程中出现过冲摆动现象,引入陀螺仪的水平转向角速度加入微分作用,使车模不会发生摆动,转弯流畅。为了减少小车方向控制对角度控制的影响,方向控制周期设为角度控制周期的2倍,即12ms。在调试过程中出现了若干问题,其一是小车在过直角元素和十字弯道里面容易滑行,速度减慢不流畅,分析原因是因为两种赛道元素的偏差突变比较严重,导致小车转向不连续,进而影响角度和速度控制,所以需要软件处理一下,将赛道的连续性考虑进去,防止偏差跳变。4.8 软件部分总结 软件的调试就是一次一次想算法,不断实验、改进和排除错误的过程。调试过程中需要根据经验来判断哪里存在问题。CCD信号采集需要稳定的周期,不能被其它中断打断;同时
42、调试过程中需要串口发送CCD数据,如果发送与CCD采集是顺序关系,会改变CCD曝光时间,就是此时所得到的数据不是小车真正运行时看到的图像。控制参数的调整也非常重要,它们是平衡车直立稳定的基础。小车角度设定值要是小车保持静止时的角度,大了会造成小车超速,小了会造成小车加速缓慢。小车运行过程中不能站得太软否则角度会波动较大,速度积分限幅非常重要,太小小车不能达到设定速度,太大则容易造成波动。小车转向需要用到水平陀螺仪角速度,需要确定小车的水平轴具体是什么。调试初期我们用的是小车的陀螺仪Y轴作为转向轴,经过实测才发现水平转向轴是Z轴。第5章 智能车调试试验第5章 智能车调试实验5.1 硬件部分调试5
43、.1.1 电源模块调试使用8.0V电池通电后,TPS7333输出3.3V左右,TPS7350、LM2940输出电压均为5V左右。实测系统各路电源稳定,保证了系统其他模块的正常运行。5.1.2 电机驱动模块调试 使用单片机的四路PWM波( TPM0_CH0、TPM0_CH1、TPM0_CH2和TPM0_CH3),初始化TPM精度为5000,即寄存器大小为5000时,PWM占空比为100%,调试过程中要保证寄存器赋值不能超过精度,否则会使单片机死机。四路PWM频率均为10KHz。其中TPM0_CH0和TPM0_CH1控制左侧电机正反转和转速,TPM0_CH2和TPM0_CH3控制右侧电机正反转和转速。测试左侧电机,先设置TPM0_CH0占空比为零