安徽赛区摄像头组合肥工业大学斛兵一队技术报告.docx
《安徽赛区摄像头组合肥工业大学斛兵一队技术报告.docx》由会员分享,可在线阅读,更多相关《安徽赛区摄像头组合肥工业大学斛兵一队技术报告.docx(79页珍藏版)》请在冰点文库上搜索。
安徽赛区摄像头组合肥工业大学斛兵一队技术报告
第九届“飞思卡尔”杯全国大学生
智能汽车竞赛
技术报告
学校:
合肥工业大学
队伍名称:
斛兵1队
参赛队员:
徐悦
梁国俭
刘硕
带队教师:
张阳
李红莉
关于技术报告和研究论文使用授权的说明
本人完全了解第九届“飞思卡尔”杯全国大学生智能汽车邀请赛关于保留、使用技术报告和研究论文的规定,即:
参赛作品著作权归参赛者本人,比赛组委会和飞思卡尔半导体公司可以在相关主页上收录并公开参赛作品的设计方案、技
术报告以及参赛模型车的视频、图像资料,并将相关内容编纂收录在组委会出版论文集中。
参赛队员签名:
带队教师签名:
日期:
摘要
本技术报告以第九届飞思卡尔杯全国大学生智能车竞赛为背景,详细介绍了基于数字摄像头为传感器的自主寻迹智能车设计。
在研究了往届“飞思卡尔”智能车设计方案的基础上,提出了直立智能车设计方案。
本文首先讲述了系统硬件设计,其中包括系统主板设计,电机驱动电路板设计等。
在硬件设计的基础上,本文介绍了系统软件设计及算法,并且对比了位置式与增量式PID的区别。
最终,通过系统调试,验证系统可以达到预期设计要求。
关键字:
飞思卡尔自主寻迹直立智能车数字摄像头PID
Abstract
Inthebackgroundofthe“Freescale”CupNationalUniversitySmartcarCompetition,thispapergivesanaccountofthedesignofintelligentcar,whichisbasedondigitalcamera.Bystudyingpreviousdesignsofintelligentcars,thepaperputsforwardthemethodwhichcanextracttheinformationofsmartcar.Thepaperfirstlyelaboratesthehardwaresystem,whichincludesthesystemboarddesign,themotordrivermodule,andsoon.Thenthepaperintroducesthedesignofsoftwaresystem,whichincludesmoduletesting,followcontrolleralgorithm,distinguishthetwodiffererntalgorithm.Finally,thewholesystemmeetstheexpectativerequirement.
Keywords:
Freescale,Auto-tracing,Smartcar,digitalcameraPID
第一章引言
1.1比赛背景
智能车是一种高新技术密集型的新型汽车,它涵盖的范围广泛包括模式识别、传感器技术、自动化控制实现、电力电子技术、计算机技术等多个领域。
在国际上已经形成智能汽车研究、设计、开发、竞赛的热潮。
在我国,教育部为了加强大学生实践、创新能力和团队合作精神的培养,委托教育部高等学校自动化专业教学指导分委员会主办了每年一度的全国大学生智能汽车竞赛。
全国大学生智能汽车竞赛是在竞赛组委会提供的统一汽车模型平台上,使用飞思卡尔半导体公司的8位、16位微控制器作为核心控制模块,通过设计道路识别传感器和电机驱动电路、编写相应软件及装配模型车,制作一个能够自主识别道路的模型汽车,按照规定路线(路线赛前未知)行进,以完成时间最短者为优胜。
智能车竞赛目前已经发展有摄像头、光电组和电磁组三个组别比赛,赛车速度与比赛质量也越来越高,竞争更是日趋激烈。
1.2总体方案介绍
本智能控制系统由传感器、信息处理、控制算法、执行机构、速度反馈五个部分组成。
其中,以单片机为核心,配有传感器、测速电路,执行机构以及它们的驱动电路构成了控制系统的硬件;信息处理与控制算法由运行在单片机中的控制软件完成。
在检测方面,系统是以OV7725数字摄像头作为传感器进行路径识别,使用模拟的陀螺仪和加速度计采集车模角度和角速度信息。
控制方面系统重点研究在保证智能车直立稳定行驶的前提下,提高系统的响应速度。
同时需要处理传感器获得信号,滤除干扰,提高系统可靠性。
此外,机械结构的调整是保证智能车系统能够稳定可靠运行的前提。
因此,机械结构的调校是至关重要的,机械结构调整的原则是:
减少质量,降低重心,防止转向侧滑。
1.3本文结构
本文共分为五章。
第一章主要是介绍了比赛的背景及智能车系统总体方案的介绍;第二章从智能车系统的机械结构出发,详细阐述了智能车系统各部分机械结构的安装和调整;第三章重点介绍了系统中所涉及的硬件设计方案和原理;第四章是介绍了智能系统的软件算法;第五章则对智能车部分模块的调试仿真做出相关的介绍;第六章对智能车的技术参数作简要说明。
第七章简述智能车制作过程中得出的结论。
第二章机械结构部分的设计及调整
智能车的机械结构在赛车速度快慢上起着重要作用,要想提高智能车的速度,只有将机械结构与控制算法同时做好。
总体来说,智能车的重心要尽可能低,以减小智能车在过弯的时侧翻的可能性,摄像头的支架在保证前瞻的情况下不能太高,需要在运行过程中保证智能车的稳定性,在此基础上,简化布局,使智能车外观简洁。
下面将具体阐述本智能车的机械结构的设计及调整。
整车外观如图所示:
图2.0.1智能车总体图
2.1摄像头的安装
摄像头安装应保证足够的前瞻(前瞻过近会影响提速,过远容易误判赛道),通过实验,我们将前瞻固定到120CM,盲区在18CM,有效视野范围1M左右。
我们选择碳纤维管作为摄像头的支架,该材料质量轻、硬度高。
在平时的调试过程中,为防止意外撞击导致摄像头损坏,我们安装了保护杆;并且在摄像头模块电路板与支架之间用两根杆子形成三角支架,以提高稳定性。
摄像头安装效果如图2.1.1所示
图2.1.1摄像头安装图
2.2加速度计和陀螺仪模块的安装
本智能车采用模拟加速度计和陀螺仪,该模块包括一个三轴加速度计、一个水平方向陀螺仪及一个竖直方向陀螺仪。
该模块安装位置与其使用性能密切相关,故安装时应注意:
竖直陀螺仪旋转中心应在智能车车轮轴心线处,转向陀螺仪应与车轮轴心线平行,且两个陀螺仪应在车身中心线处。
同时模块安装不宜过高,过高会放大噪声,使采样得到的数据不准确。
且加速度计输出值转化为角度的过程本身是一个近似过程,前提是加速度计位置比较低,可以被忽略。
但是陀螺仪位置不能放太低,我们曾尝试把该模块放在两个电机中间,由于电机运行时产生的抖动很难消除,对陀螺仪产生干扰。
在保证获得数据准确可靠的前提下,我们选择将该模块安装在智能车中部。
2.3测速传感器的安装
我们选择了欧姆龙500线光电编码器作为测速传感器,安装时过紧会增大智能车的行驶阻力,过松会导致滑齿,计数不准。
经过验证,E车模的编码器齿轮与车轮齿轮属于一级啮合,安装时相比于D车模更容易出现滑齿现象,这可能是E车模相比于D车模比较难调校之处。
安装时综合考虑了齿轮啮合和摩擦的影响。
2.4电路板的安装
为了提高智能车的稳定性,我们将电机驱动与主板分开,主板放在编码器和电机支架上侧,电机驱动板放在车身底板后侧。
整个装调过程遵循质量最大集中原则,尽可能减小两个电机和两个编码器之间的空隙。
2.5重心调整
降低智能车重心,直接效果是有利于减小过弯侧翻。
其中电池对整辆车重心和质量的影响很大,我们将电池安装在尽可能低的位置。
前期试验都是在D车模上进行,如图2.5.1,这是平衡车最经典的安装方式,存在一定缺陷,车模在这种方式下由于是直立运行,受到阻力较大,且电路板和摄像头等器件安装的位置较高,重心相对较高。
在试验后期我们采用倾斜的安装方式加以改善。
虽然我们最终采用第二种方案,但是对于两种方案,我们没有做精确对比。
方式二也存在如下隐患:
今年坡道角度最高达20度,限制电池离车身底板及其附属物不超过3CM,这意味着倒着跑电池位置不能放太低,也不能太远离车身。
电池位置若调整不好很可能比方式一还高,重心可能更高。
如图2.5.2
图2.5.1D车机械安装方式
图2.5.2E车机械安装方式
第三章硬件电路设计说明
3.1硬件设计概述
本智能车采用MK60作为主核心。
需要3.3V,12V及5V供电。
系统还包括:
编码器接口、通讯接口、液晶接口、拨码开关、陀螺仪加速度计接口、电机驱动接口和摄像头接口。
调试时采用串口收发数据。
下面将针对每一部分做具体论述。
3.2传感器模块
3.2.1摄像头模块
(1)摄像头工作原理
摄像头以隔行扫描的方式采样图像,当扫描到某点时,就通过图像传感芯片将该点处图像的灰度转换成与灰度对应的电压值,然后将此电压值通过视频信号端输出。
如图3.2.1所示,摄像头连续地扫描图像上的一行,就输出一段连续的视频信号,该电压信号的高低起伏正反映了该行图像的灰度变化情况。
当扫描完一行,视频信号端就输出一个低于最低视频信号电压的电平(如0.3V),并保持一段时间。
这样相当于紧接着每行图像对应的电压信号之后会有一个电压“凹槽”,此“凹槽”叫做行同步脉冲,它是扫描换行的标志。
然后扫描新的一行,如此下去,直到扫描完该场的信号,接着会出现一段场消隐信号。
其中有若干个复合消隐脉冲(简称消隐脉冲),在这些消隐脉冲中,有一个消隐脉冲远宽于其他的消隐脉冲(即该消隐脉冲的持续时间远长于其他的消隐脉冲的持续时间),该消隐脉冲又称为场同步脉冲,标志着新的一场的到来。
摄像头每秒扫描25帧图像,每帧又分奇、偶两场,故每秒扫描50场图像。
图3.2.1摄像头工作原理图
(2)摄像头对比
我们主要对OV5116,SONYCCD,鹰眼三款摄像头进行性能对比。
OV5116和SONYCCD属于模拟摄像头,需要后续较为复杂的处理电路。
对比上一届的SONYCCD,它的质量是三种摄像头中最重的,这在机械上与平衡车的要求不符。
OV5116的内部芯片已经停产,目前市面上流通的多为翻新产品,良品率不确定,我们曾尝试用高速AD电路为其后续处理,但是其对光线要求很高,存在明显短板。
相比之下,我们选择野火公司生产的以OV7725为基础的鹰眼摄像头。
这是一款数字摄像头,在模块电路板上直接集成硬件二值化电路,输出的二值化图像十分清晰,噪声较少。
(2)像素输出顺序
数字摄像头输出图像时,一般都是从左到右,有上到下逐个输出(部分芯片可配置输出顺序):
图3.2.2像素输出顺序
有些摄像头有奇偶场,是采用隔行扫描方法,把一帧图象分为奇数场和偶数场两场。
(ov7725没有奇偶场之分)
图3.2.3行中断时序
图3.2.4场中断时序
3.2.2陀螺仪和加速度传感器模块
陀螺仪与加速度计模块为直接购买的成品集成模块,上面集成了水平和竖直陀螺仪ENC-03和加速度计MMA7361.单片机对其进行AD采样,进行软件滤波后得到角度和角速度,用它们来控制小车的直立
图3.2.5加速度计陀螺仪集成模块
3.2.3速度采集传感器
速度采集使用欧姆龙500线光电编码器。
增量式编码器是直接利用光电转换原理输出三组方波脉冲A、B和Z相;A、B两组脉冲相位差90°,从而可方便地判断出旋转方向.我们将这些脉冲信号连接到单片机的计数器端口,通过单片机的正交解码功能可获得车模的转速以及转向。
3.3电机驱动模块
电机驱动电路板为一个由分立元件制作的直流电动机可逆双极型桥式驱动器,其功率元件由四个N沟道功率MOSFET管组成,额定工作电流可以轻易达到100A以上,大大提高了电动机的工作转矩和转速。
由于E车电机为双电机,所以,我们用两路相同的驱动器分别驱动两个电机。
该驱动器主要由以下部分组成:
PWM信号输入接口、逻辑换向电路、死区控制电路、电源电路、上桥臂功率MOSFET管栅极驱动电压泵升电路、功率MOSFET管栅极驱动电路、桥式功率驱动电路、缓冲保护电路等,电路如图3.2所示。
电路中肖特基二极管IN5819保证了电平VB_1、VB_2低于12V,VB_1高于MOTOR_A,VB_2高于MOTOR_B。
电路如下图示,首先使能端为高时,驱动桥这时才会起作用。
PWM0为某一占空比,PWM1为低时,使得IR2104驱动输出分别为低电平和相应的电压值。
驱动桥电路左边上方IRLR7843与右边下侧的IRLR7843导通,另外的两个MOS管不导通,此时电机正转。
因此,一个电机是由两路PWM控制,显然当PWM输出状态与上述相反则为反转。
转速的大小取决于占空比的大小。
图3.3.1驱动电路原理
3.4电源模块
智能车电池提供的是7.2V的电压。
为了使智能车正常工作,需要将7.2V的电压转化为3.3V和5V的电压。
智能车系统用的5V稳压芯片是LM2940和LT1086。
LM2940可以提供较大的稳压电流,具有较好的稳压性能,且纹波电压较小。
陀螺仪、编码器需要5V供电,为减少单片电源芯片的功耗,避免编码器等影响主控芯片工作,本设计采用了一片LM2940和一片LT1086分别为主控芯片和其他需要5V的模块供电。
鹰眼和液晶采用AMS1117_3.3V供电,如果直接让电池电压通过AMS1117_3.3V芯片转化为3.3V,容易使芯片发热,故我们先将电池电压转化为5V,再转化为3.3V.
稳压芯片供电,其原理图如下图所示:
AMS1117_3.3V稳压电路如图3.4.1所示
图3.4.13.3V电源
5VLM2940稳压电路如图3.4.2所示
图3.4.2LM2940
5VLT1086稳压电路如图3.4.3所示
图3.4.3LT1086
12VMC34063升压电路如图3.4.4所示
图3.4.4MC34063
第四章算法实现及软件设计
车模是否能够正常高速稳定运行,除了硬件系统外,软件系统的设计也很重要。
整个软件系统主要由三部分构成:
直立控制、速度控制及转向控制。
控制算法均基于负反馈理论。
4.1整体算法说明
软件控制程序主要用到K60中的PIT模块、PWM模块、AD模块、SCI模块、FTM模块,GPIO模块等。
PIT模块用于设置定时中断;PWM模块用于控制电机的运转,AD模块用于读取加速度计,陀螺仪的数据信息,SCI模块用于串口调试,FTM模块用于编码器数据采集。
我们图像采集使用K60的DMA模块进行采集,主函数按普通的处理方法,在主循环里:
采集图像,图像处理,然后把处理结果存放在全局参数里。
PIT定时执行直立控制:
采集模块参数,然后直立控制,根据图像处理的全局参数来进行速度控制和方向控制。
主循环:
图像采集与处理—写—>全局参数—读—>直立控制的速度控制和方向控制。
图4.1.1主程序流程图
图4.1.2图像处理流程图
4.2PID控制算法介绍
在工程实际中,应用最为广泛的调节器控制规律为比例、积分、微分控制,简称PID控制,又称PID调节。
PID控制器问世至今已有近70年历史,它以其结构简单、稳定性好、工作可靠、调整方便而成为工业控制的主要技术之一。
当被控对象的结构和参数不能完全掌握,或得不到精确的数学模型时,控制理论的其它技术难以采用时,系统控制器的结构和参数必须依靠经验和现场调试来确定,这时应用PID控制技术最为方便。
即当我们不完全了解一个系统和被控对象,或不能通过有效的测量手段来获得系统参数时,最适合用PID控制技术。
PID控制,实际中也有PI和PD控制。
PID控制器是一种线性控制器,它根据给定值与实际输出值构成控制偏差。
将偏差的比例(P)、积分(I)和微分(D)通过线性组合构成控制量,对被控对象进行控制,故称PID控制器,原理框图如图4.2.1所示。
图4.2.1PID控制器原理框图
在计算机控制系统中,使用的是数字PID控制器,控制规律为:
公式1
公式2
式中
k——采样序号,k=0,1,2…;r(k)——第k次给定值;
c(k)——第k次实际输出值;u(k)——第k次输出控制量;
e(k)——第k次偏差;e(k-1)——第k-1次偏差;
KP——比例系数;TI——积分时间常数;
TD——微分时间常数;T——采样周期。
简单说来,PID控制器各校正环节的作用如下:
比例环节:
及时成比例地反映控制系统的偏差信号,偏差一旦产生,控制
器立即产生控制作用,以减少偏差。
积分环节:
主要用于消除静差,提高系统的无差度。
积分作用的强弱取决于积分时间常数,越大,积分作用越弱,反之则越强。
微分环节:
能反映偏差信号的变化趋势(变化速率),并能在该偏差信号变得太大之前,在系统中引入一个有效的早期修正信号,从而加快系统的动作速度减小调节时间。
数字PID控制算法通常分为位置式PID控制算法和增量式PID控制算法。
4.2.1位置式PID
位置式PID中,由于计算机输出的u(k)直接去控制执行机构(如阀门),u(k)的值和执行机构的位置(如阀门开度)是一一对应的,所以通常称公式2为位置式PID控制算法。
位置式PID控制算法的缺点是:
由于全量输出,所以每次输出均与过去的状态有关,计算时要对过去e(k)进行累加,计算机工作量大;而且因为计算机输出的u(k)对应的是执行机构的实际位置,如计算机出现故障,u(k)的大幅度变化,会引起执行机构位置的大幅度变化,这种情况往往是生产实践中不允许的,在某些场合,还可能造成严重的生产事故。
因而产生了增量式PID控制的控制算法,所谓增量式PID是指数字控制器的输出只是控制量的增量△u(k)。
4.2.2增量式PID
当执行机构需要的是控制量的增量(例如:
驱动步进电机)时,可由式2推导出提供增量的PID控制算式。
由式2可以推出式3,式2减去式3
公式3
公式4
公式4称为增量式PID控制算法,可以看出由于一般计算机控制系统采用恒定的采样周期T,一旦确定了KP、TI、TD,只要使用前后三次测量值的偏差,即可由式4求出控制增量。
增量式PID具有以下优点:
(1)由于计算机输出增量,所以误动作时影响小,必要时可用逻辑判断的
方法关掉。
(2)手动/自动切换时冲击小,便于实现无扰动切换。
此外,当计算机发生
故障时,由于输出通道或执行装置具有信号的锁存作用,故能保持原值。
(3)算式中不需要累加。
控制增量△u(k)的确定仅与最近k次的采样值有
关,所以较容易通过加权处理而获得比较好的控制效果。
但增量式PID也有其不足之处:
积分截断效应大,有静态误差;溢出的影响大。
使用时,常选择带死区、积分分离等改进PID控制算法。
4.3.3PID参数整定
运用PID控制的关键是调整KP、KI、KD三个参数,即参数整定。
PID参
数的整定方法有两大类:
一是理论计算整定法。
它主要是依据系统的数学模型,经过理论计算确定控制器参数;二是工程整定方法,它主要依赖工程经验,直接在控制系统的试验中进行,且方法简单、易于掌握,在工程实际中被广泛采用。
由于智能车系统是机电高耦合的分布式系统,并且要考虑赛道的具体环境,要建立精确的智能车运动控制数学模型有一定难度,而且我们对车身机械结构经常进行修正,模型参数变化较为频繁,理论计算整定法可操作性不强,最终我们采用了工程整定方法。
4.2直立控制
这部分是软件设计中最基础也是最难的一个部分,直立控制做得好,小车的速度和方向控制才更容易实现。
智能车直立控制通过PD控制实现,将智能车简化为倒立摆,增加额外受力,使得恢复力与位移方向相反。
4.2.1直立模型分析
图4.2.1倒立摆受力分析
F=mgsinθ-macosθ公式5
只要轮子运动的加速度a>g,就可以产生回复力,来保持车模的直立。
当然回复力越大,对于保持直立越好,但是太大也会导致系统振荡,当系统发生振荡时,可以加入一定的阻尼力来消除振荡,这就可以通过倒立摆的角速度分量来控制摆的平衡。
4.2.2直立控制算法说明
直立控制采用PD控制实现。
单片机采集陀螺仪和加速度的值后进行归一化处理,使用卡尔曼进行滤波,得到车模的角度和角速度。
MMA7361=adc_once(ZOUT,ADC_12bit);
ENC03=adc_once(Gyro2,ADC_12bit);
Gyro_Now=(GYRO_VAL-ENC03)*Gyro_ratio;
angle_offset_vertical=(MMA7361_vertical-MMA7361)*MMA7361_ratio;
Kalman_Filter(angle_offset_vertical,Gyro_Now);
g_fAngControlOut=(angle-car_set_angle)*P_ANGLE+angle_dot*D_ANGLE;
4.3速度控制
4.3.1速度控制理论分析
通常情况下速度控制部分由光电编码器把轮子的速度反馈回来,然后通过负反馈机制做一个PID控制器就可以控制速度,但是在直立小车系统里的速度控制就不是那么简单了,它看起来是一个正反馈的机制。
当需要车模加速时,并不是通常意义上加大给电机的电压让轮子加速,速度控制反而是让电机减速,这样车模就会往前倾,这时角度控制就会与速度控制相抗衡来达到一个平衡,但是这时车模会持续向前加速,因为车模往前有一个倾角就会有往前倒的角加速度,为了保持角度轮子也必须有一个向前的加速度,这样车模就可实现加速了。
要实现减速则要让车模向后仰就可以了。
图4.3.1速度控制框图
4.3.2速度PID控制
速度控制采用的是增量PID控制,我们只采用PI控制,积分控制能使速度最终稳定在给定速度,比例控制能实现速度的快速调节。
由于直立车的速度控制实际是改变车模倾角,因此速度控制对于直立控制是一种扰动,速度控制周期不能过大,控制量要平滑输出。
voidPIT1_IRQHandler(void)
{
PIT_Flag_Clear(PIT1);
Car_speed=0;//车模速度清零
L_speed=-FTM_QUAD_get(FTM1);
FTM_QUAD_clean(FTM1);
R_speed=FTM_QUAD_get(FTM2);
FTM_QUAD_clean(FTM2);
Car_speed=(L_speed+R_speed)/2;
Error_Speed=g_Speedgoal-Car_speed;
SpeedValuePID=P_SPEED*(Error_Speed-PreError_Speed)+I_SPEED*Error_Speed+D_SPEED*(Error_Speed-2*PreError_Speed+EarError_Speed);
EarError_Speed=PreError_Speed;
PreError_Speed=Error_Speed;
g_fSpeedControlOut+=Sp