飞思卡尔小车.docx
- 文档编号:27427874
- 上传时间:2023-06-30
- 格式:DOCX
- 页数:42
- 大小:759.96KB
飞思卡尔小车.docx
《飞思卡尔小车.docx》由会员分享,可在线阅读,更多相关《飞思卡尔小车.docx(42页珍藏版)》请在冰豆网上搜索。
飞思卡尔小车
第八届“飞思卡尔”杯全国大学生
智能汽车竞赛
技术报告
学校:
同济大学
队伍名称:
HELO
参赛队员:
何金明
刘信哲
郭鑫
指导教师:
朱劲
张志明
摘要
本文介绍的是以MC9S12XS128为核心的智能车系统。
该系统采用大赛组委统一指定的由东莞市博思电子数码科技有限公司提供的A型车模,以Freescale半导体公司生产的16位MC9S12XS128为核心控制器,采用OV7620数字摄像头采集道路信息,在CodeWarriorIDE开发环境中进行软件开发。
整个系统涉及车模机械结构调整、传感器电路及电机驱动电路等辅助电路的设计、信号采集与处理、控制算法和策略优化等多个方面。
为了提高智能车的行驶速度和系统稳定性与可靠性,设计了不同方案进行各项性能对比,结合PC平台及其它实验仪器进行了大量测试,并选出其中优秀方案反复进行了赛道测试,最后经过总结优化,确定了现有系统结构和控制方案。
本系统通过数字摄像头进行赛道检测,识别赛道边缘黑线并拟合出赛道中心线,对舵机进行反馈控制,并通过速度传感器获取即时速度,运用PID优化算法实现速度控制。
关键词:
智能车MC9S12XS128OV7620PID
目录
第一章引言4
1.1概述4
1.1.1智能车比赛简介4
1.1.2智能车比赛背景4
1.2本文结构4
第二章车模整体设计5
2.1车模系统整体结构设计5
2.2硬件整体结构设计5
2.3软件整体结构设计6
第三章车体机械结构设计8
3.1舵机安装8
3.1.1舵机固定8
3.1.2连杆8
3.2摄像头安装9
3.3测速模块的调试及安装10
3.4前轮调整11
3.5整车重心调整11
3.6整车机械设计综述12
第四章控制电路设计13
4.1主板与电源13
4.2电机驱动14
第五章控制软件设计16
5.1路径识别16
5.2PID控制简介18
5.3舵机控制20
5.4速度控制21
第六章上位机开发与调试22
第七章结论感悟25
参考文献26
附录27
第一章引言
1.1概述
1.1.1智能车比赛简介
“飞思卡尔”杯智能车竞赛是以智能汽车为研究对象的创意性科技竞赛,是面向全国大学生的一种具有探索性工程实践活动,是教育部倡导的大学生科技竞赛之一。
该竞赛以“立足培养,重在参与,鼓励探索,追求卓越”为指导思想,旨在促进高等学校素质教育,培养大学生的综合知识运用能力、基本工程实践能力和创新意识,激发大学生从事科学研究与探索的兴趣和潜能,倡导理论联系实际、求真务实的学风和团队协作的人文精神,为优秀人才的脱颖而出创造条件。
1.1.2智能车比赛背景
随着技术的进步,智能控制的应用越来越广泛,几乎渗透到各个领域。
智能车技术前景广阔且发展迅速。
面向大学生的智能车竞赛最早始于韩国,国内的全国大学生“飞思卡尔”杯智能汽车竞赛也已举办了七届,得到各高校师生的高度评价。
1.2本文结构
本文根据智能车的设计制作过程,安排全文的主体结构:
引言、车模整体硬软件的总体设计思路、机械结构设计安装、电路设计安装、软件设计、整车调试、结论、附录等。
在报告书写过程中,将尽量突出制作过程中所遇到的问题及解决方法,配合图文详尽叙述小车的制作调试过程。
第二章车模整体设计
2.1车模系统整体结构设计
智能车系统的总体工作模式为:
CMOS图像传感器拍摄赛道图像,然后给出图像数据信号,奇偶场信号、行同步信号输入到MC9S12XS128微控制器,进行图像处理获得主要的赛道信息;行驶过程中通过光电编码器来检测车速,光电编码器将检测到信号传输到十二位串行计数器CD4040,最后CD4040把计数值送到微处理器MC9S12XS128,再经过我们的微处理器的计算就可以得到智能车当前的运行速度;驱动电机采用PID控制,通过PWM控制驱动电路调整电机的功率;转向舵机负责智能车的转向工作,行驶过程中微控制器依据摄像头采集到的道路信息送给舵机PWM信号,舵机在这个信号下完成转向工作。
根据智能车系统的基本要求,我们设计了系统结构图,在满足比赛要求的情况下,力求系统简单高效,因而在设计过程中尽量简化硬件结构,减小因硬件而出现的问题的可能性。
具体的系统结构图如下图2.1:
图2.1
2.2硬件整体结构设计
在小车的调试过程中,发现整车的机械结构极大约束着小车的速度提升。
通过不断的测试、调试,对硬件整体结构设计进行了不断的改进,力求达到更优结构。
在调试过程中,为提升速度和车体稳定性,围绕重心位置,优化了主控板、摄像头、电池的安装位置;为提升车体的转向性能,对舵机连杆、前轮倾角、后轮差速器进行了大量的测试调整。
车体效果图如下:
图2.2图2.3
图2.4图2.5
2.3软件整体结构设计
一个优秀的软件程序需要有完善的控制策略和硬件兼容性。
在编写程序前,对赛道信息采集、赛道外干扰排除、控制策略等制定了多种方案,并针对可行性及其优缺点进行了讨论。
根据以下几点大致确定了现行方案的总体思路:
1、算法简洁、高效、可靠
2、更改优化空间大
3、控制策略完善、灵活
4、硬件兼容性强
程序流程图如下图2.6:
图2.6
通过不断的赛道测试,对程序的赛道信息采集和控制策略进行了反复的调试优化,确定相关的参数。
第三章车体机械结构设计
飞思卡尔智能车竞赛是采用统一的硬件平台,在不违反规则的情况下可以进行车模的改造。
每个参赛队在了解车体结构的基础上可根据自己的实际需求进行车体的改装,以达到最佳的运行效果。
智能车的机械性能对于其行驶性能具有很重要的影响,尤其是在高速下,机械性能的细微调整都可能带来很大的变化。
为了让智能车能够在直线上稳定行驶,在弯道转向灵活,我们结合汽车动力学的有关理论知识对小车的机械进行调整,并手工制作轻质结构架装置摄像头以及舵机安装架。
3.1舵机安装
一般来讲,舵机主要由以下几个部分组成,舵盘、减速齿轮组、位置反馈电位计5k、直流电机、控制电路板等。
控制电路板接收来自信号线的控制信号,控制电机转动,电机带动一系列齿轮组,减速后传动至输出舵盘。
舵机的输出轴和位置反馈电位计是相连的,舵盘转动的同时,带动位置反馈电位计,电位计将输出一个电压信号到控制电路板,进行反馈,然后控制电路板根据所在位置决定电机的转动方向和速度,从而达到目标停止。
3.1.1舵机固定
在舵机固定时,主要考虑了以下几种因素:
1、舵机连杆长度与响应速度的调配
2、舵机连杆长度对安装位置的影响
3、安装方式对重心的影响
4、安装方式的可靠性(即是否牢固)
考虑到以上各种因素,最终确立了如下图安装固定方式:
图3.1
3.1.2连杆
根据功率是速度与力矩乘积的函数,大致估算确定了连杆的合理长度,经过几次反复改动调试,确定了以下方案:
图3.2
3.2摄像头安装
为了减轻摄像头重量,我们采用自制的简易铝合金紧固件,力求拆卸方便、便于维修,同时摄像头俯角可调。
如下图所示:
通过硬软件的反复调配,确定了现有高度和俯角参数(详见第七章),使其尽量减小图像梯形失真和降低摄像头高度,并且获得足够的前瞻。
3.3测速模块的调试及安装
由于所使用的测速模块的稳定性对安装方式有较高的要求,故采用如图安装方式。
在安装时,我们反复调整了光电对管与码盘的相对位置,并用示波器测试,最终确定了波形稳定的可靠位置。
将码盘装在电机转轴上,能够更加直接的检测电机转速,减少差速滑动造成的误差,便于更加准确高效的控制电机转动。
3.4前轮调整
前轮调整包括主销倾角、前轮外倾、前轮前束,三者反应了主销、前轴和前轮在车体上的相对位置关系。
通过调节三者可以调节前轮的转向性能。
经过测试,我们选择了主销内倾、前轮前束的搭配。
3.5整车重心调整
智能车比赛追求的是稳定和速度,要想速度提上去并且使小车高速行驶下不至于转向时发生侧向倾斜甚至侧翻,小车的重心位置是关键,因此我们的硬件布局以降低小车重心为目标,具体实施如下:
(1)摄像头的安装时采用轻质铝片,并且在不影响前瞻的前提下尽量降低摄像头高度;
(2)用强度高、质量轻的材料制作摄像头支架;
(3)主控制模块和电源模块集中到一个电路板上,并且将其与底盘紧贴着,大大降低了整车的重心,并且是整车看起来更加的简洁与美观;
。
3.6整车机械设计综述
在小车机械设计、制作和安装过程中,我们主要着眼于以下几点:
1、结构简单、坚固;
2、降低重心;
3、安装简便,便于快速维护;
4、布局合理,便于调整且美观。
确定总体机械安装后,我们进一步在诸多细节处做出了调整,如:
差速的调整、防撞杆的安装、轮胎等,尽可能使机械与软件搭配达到最优效果。
第四章控制电路设计
系统电路部分是智能车工作的核心,由于我们采用的是CMOS摄像头,使用起来相对较为简单,电路部分的设计也很是简洁,直接将各个信号线与单片机IO口相连接。
电源部分稳定性要求比较高,因此我们对比几种方案后最终选择了用集成芯片2596来驱动舵机,用2940为系统提供+5V电源。
在系统电路部分的设计,我们始终坚持着稳定、可靠和简单的原则,具体细节如下:
4.1主板与电源
图4.1主控板原理图
P1
无线模块接口
P2
串口线引出
P3
测速
P4
电机驱动
P5
光电管
P6
电源
P7
舵机驱动
P8
摄像头
图4.2电源模块设计电路
其中U2为LM2596,。
LM2596系列是美国国家半导体公司生产的3A电流输出降压开关型集成稳压芯片,它内含固定频率振荡器(150KHZ),和基准稳压器(1.23v),并具有完善的保护电路:
电流限制、热关断电路等。
利用该器件只需极少的外围器件便可构成高效稳压电路。
提供有:
3.3V、5V、12V及可调(-ADJ)等多个电压档次产品。
我们利用2596获得+6v电压,供舵机使用。
U4为集成芯片lm2940。
由于舵机和电机在运行过程中可能会造成电池电压的短暂拉低,而单片机的使用的+5V电又必须要稳定,因此我们选择稳压效果很好的2940。
主要是供单片机、测速、光电管和摄像头等供电。
4.2电机驱动
电机驱动部分,最初定方案的时候我们有三套计划,分别使用芯片MC33886、BTS7960,和BTS7970来驱动电机,这三种方案的取舍原则为驱动输出电流、加速、制动时间、稳定行和散热量,经过测试我们得到下表:
方案
加速性能
减速性能
稳定性
效率
MC33886
一般
一般
好
低
BTS7960
好
好
好
高
BTS7970
很好
很好
好
很高
表4.2
由表中数据可以知道,BTS7970的优势更加的显而易见,而且其应用也非常的简单只需要向芯片的第二引脚输入PWM就能控制;因此最开始我们电机驱动电路选择了BTS7970;
第五章控制软件设计
高效的软件程序是智能车高速平稳自动寻线的基础,硬件好比智能车的躯体,有了躯体,车子还不能跑,同机器人一样,它也必须具备一定的思想,才可以完成它的任务,而这种能力则需要我们通过软件编程来实现,把我们自己的策略和控制思想融入到程序中,最终转化为小车的灵魂,以此完成预期的目标。
我们设计的智能车系统采用CMOS摄像头来对赛道进行识别,通过摄像头获取的图像是软件控制的基础。
在智能车的电机控制中,我们使用了鲁棒性很好的经典PID控制算法,舵机的控制中则使用了PD控制,通过大量的实验和调试,最终使我们的智能车能够稳定快速寻线前行。
5.1路径识别
智能车行驶过程中,通过摄像头可以获取大量的赛道的信息,同时信息里不可或缺的有一些干扰信息。
如何从这些信息中提取出有效的赛道信息显得至关重要。
在单片机采集图像信号后需要对其进行处理以提取主要的赛道信息。
在进行赛道的提取时必须对赛道干扰进行滤除,然后才能对赛道进行有效识别,并将识别后的信息有效的传达给控制部分,。
在图像信号处理中我们提取的赛道信息主要包括:
赛道边沿黑线,相对小车的位置,赛道宽度,赛道变化趋向以及变化幅度,赛道类型判别。
由于摄像头自身的特性,图像会产生梯形失真,因此,赛道和我们看到的有很大的差别,因此我们首先要做的是对赛道进行标定,从而便于统一的计算和处理,原理如下:
在进行赛道识别时,由于赛道识别的公式前人已经做的非常完备在此我们就直接进行了调用,因此我们关键要做的是对赛道信息的处理与提取,即提取赛道中心线的位置。
在对赛道进行识别前我们必须对图像数据进行滤波处理。
我们的滤噪策略是对每一行进行遍历,当发现某一点的前一点和后一点同是黑点或白点,与该点不同,则将其转化为与前后一致的黑点或白点。
在进行完滤波处理后则可进行黑线的提取。
对与每一行的图像数据,我们都是从视场中间向两边搜索,当遇到连续两点为黑点时,则判断搜到黑线。
但是,很多情况下会存在丢失左黑线或右黑线的现象,当发生这种现象时我们不得不根据经验和我们的实验数据进行补线,将丢失的黑线虚拟出来,便于后边处理。
往届的赛道只有单条黑色引导线,而今年则为两条,我们便想到依据搜寻到的黑线虚拟出一条黑线,这样会大大的方便我们对智能车的控制。
当搜到左右黑线或者补线后,将两条黑线的中心值的和减半,便是虚拟出的黑线,该黑线存放在一位数组之中。
下文上位机图像中的红线便为虚拟出来的中间引导线。
5.2PID控制简介
在工程实际中,应用最为广泛的调节器控制规律为比例、积分、微分控制,简称PID控制,又称PID调节。
PID控制器问世至今已有近70年历史,它以其结构简单、稳定性好、工作可靠、调整方便而成为工业控制的主要技术之一。
当被控对象的结构和参数不能完全掌握,或得不到精确的数学模型时,控制理论的其它技术难以采用时,系统控制器的结构和参数必须依靠经验和现场调试来确定,这时应用PID控制技术最为方便。
即当我们不完全了解一个系统和被控对象,或不能通过有效的测量手段来获得系统参数时,最适合用PID控制技术。
PID控制,实际中也有PI和PD控制。
PID控制器是一种线性控制器,它根据给定值与实际输出值构成控制偏差。
将偏差的比例(P)、积分(I)和微分(D)通过线性组合构成控制量,对被控对象进行控制,故称PID控制器,原理框图如下图5.2所示。
图5.2
PID控制器的数学描述为式:
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——采样周期。
比例环节的主要作用是:
Kp的值增大时,系统的响应速度加快,闭环系统响应的幅值增加。
当达到某个Kp值,系统将趋于不稳定。
当增加积分时间常数Ti的值时,系统超调量减小,而系统的响应速度将变慢。
因此,积分环节的主要作用是消除系统的稳态误差,其作用的强弱取决于积分时间常数Ti的大小。
当增加微分时间常数Td时,系统的响应速度增加,同时响应的幅度也增加。
因此,微分环节的主要作用是提高系统的响应速度。
由于该环节产生的控制量与信号变化速率有关,因此对于信号无变化,或者变化缓慢的系统不起作用。
数字PID控制算法通常分为位置式PID控制算法和增量式PID控制算法。
位置式PID
位置式PID中,由于计算机输出的u(k)直接去控制执行机构(如阀门),u(k)的值和执行机构的位置(如阀门开度)是一一对应的,所以通常称公式(4.2)为位置式PID控制算法。
位置式PID控制算法的缺点是:
由于全量输出,所以每次输出均与过去的状态有关,计算时要对过去e(k)进行累加,计算机工作量大;而且因为计算机输出的u(k)对应的是执行机构的实际位置,如计算机出现故障,u(k)的大幅度变化,会引起执行机构位置的大幅度变化,这种情况往往是生产实践中不允许的,在某些场合,还可能造成严重的生产事故。
因而产生了增量式PID控制的控制算法,所谓增量式PID是指数字控制器的输出只是控制量的增量△u(k)。
增量式PID
当执行机构需要的是控制量的增量(例如:
驱动步进电机)时,可由式上式推导出提供增量的PID控制算式。
由以上增量式PID公式可以看出由于一般计算机控制系统采用恒定的采样周期T,一旦确定了KP、TI、TD,只要使用前后三次测量值的偏差,即可由上式求出控制增量。
增量式PID具有以下优点:
(1)由于计算机输出增量,所以误动作时影响小,必要时可用逻辑判断的方法关掉。
(2)手动/自动切换时冲击小,便于实现无扰动切换。
此外,当计算机发生故障时,由于输出通道或执行装置具有信号的锁存作用,故能保持原值。
(3)算式中不需要累加。
控制增量△u(k)的确定仅与最近k次的采样值有关,所以较容易通过加权处理而获得比较好的控制效果。
但增量式PID也有其不足之处:
积分截断效应大,有静态误差;溢出的影响大。
使用时,常选择带死区、积分分离等改进PID控制算法。
PID参数整定
运用PID控制的关键是调整KP、KI、KD三个参数,即参数整定。
PID参数的整定方法有两大类:
一是理论计算整定法。
它主要是依据系统的数学模型,经过理论计算确定控制器参数;二是工程整定方法,它主要依赖工程经验,直接在控制系统的试验中进行,且方法简单、易于掌握,在工程实际中被广泛采用。
由于智能车系统是机电高耦合的分布式系统,并且要考虑赛道的具体环境,要建立精确的智能车运动控制数学模型有一定难度,而且我们对车身机械结构经常进行修正,模型参数变化较为频繁,理论计算整定法可操作性不强,最终我们采用了工程整定的方法。
5.3舵机控制
从采集回来的图像中提取控制量来控制舵机的转向,实现智能车的自动循迹。
本系统采用虚拟黑线的偏移量p1和虚拟黑线的某段斜率d1对舵机进行控制,可称为PD控制器。
其控制形式如下式所表示:
PWMDTY1=center-(s_p1*p1+s_d1*d1);
式中的PWMDTY1为舵机输出值,center为舵机中位,s_p1和s_d1是结合小车行驶的情况整定的参数。
由于车模是个随动系统,我们的小车的前瞻是170cm,整个的行数是122行,但由于摄像头采集到的图像的最近的地方和最远的地方比较容易失真,所以我们真正使用到的数据大致只有中间的80行左右,p1的项主要是对赛道整体的趋势进行判断从而对舵机进行主要的控制,而d1则是对赛道变化率的判断进行的是次要的瞬间的调整,所以不可将d1的数值设置太大以免使小车的舵机过于灵敏,出现不稳定的情况。
对于具体的情况在小车的实际调试中我们会对具体数值进行调整一期许能达到最佳状态。
5.4速度控制
电机控制方面理论上应该采用的是增量式PID。
但是在经过了长时间的实际实验之后我们发现,舵机并不适合进行实时的快速调节,这主要是硬件的原因,而跟软件关系不大,比如摄像头本身数据采集的不稳定性,室内光线的不均匀性,都将导致数据本身的不稳定性,而电机如果过于频繁的调节将导致电机发热从而性能大大下降,使得设计好的理想公式变为空谈,所以我们要尽量保持小车以一个高速稳定的速度行驶,这也就意味着要在弯道和知道进行速度的平衡尽量调高弯道的速度稍微损失一点直道的速度,从本质上讲就是减小加速度提高基速度。
具体的算法已经在之后的算法voidFreescaleCup_CarMotor_PWM_out函数中体现
第六章上位机开发与调试
程序开发在组委会提供的CodeWarriorIDE下进行,CodeWarrior是由Metrowerks公司提供的专门面向Freescale所有MCU与DSP嵌入式应用开发的软件工具。
其中包括集成开发环境IDE、处理器专家、全芯片仿真、可视化参数显示工具、项目工程管理、C交叉编译器、汇编器、链接器以及调试器。
其中在本设计中主要使用集成开发环境和调试器,即IDE和hiwave。
现代单片机具有很强的在线编程和调试功能,FreescaleS12系列单片机就具有BDM(BackgroundDebugMode)功能,可以实现在线程序下载和在线背景调试功能。
使用清华大学FreescaleMCU/DSP应用开发研究中心开发的BDMforS12,配合CodeWarrior的hiwave.exe在线调试器,即可实现从程序下载到在线调试的完整功能。
图6.1
为了便于后期的调试,我们用c++开发了上位机软件。
该上位机可以通过无线显示灰度图像以及二值化图像,使我们可以更加直观的真切的看到摄像头感知的赛道信息,服务了后期的策略的决定。
同时该上位机可以绘制出小车的速度曲线,方便速度PID参数的整定,大大减小了调试的时间。
上位机界面如下所示:
图6.2上位机初始化界面
图6.3二值化图像显示界面
图6.4速度曲线绘制界面
第七章结论感悟
这次飞思卡尔智能车比赛我与来自电气工程专业的刘信哲同学和来自自动化专业的郭鑫同学组成了一个小组,参加了摄像头组的比赛,在学院赛中,我们以第二名的成绩从八支队伍中脱颖而出成功晋级了校内赛,而在校内赛中以一秒之差位列第三名,未取得代表学校参加华东赛资格。
而代表学校出战的两支队伍分别获得了全国二等奖和华东赛区二等奖的佳绩。
在整个比赛过程中,我们一起研究学会了许多知识,包括机械、电路以及最重要的控制算法的创新思想。
在机械结构方面,我们分析了舵机转向系统的改进办法,前轮束角和主销倾角的调整以及在其他细节方面的优化,经过几天的改装,使舵机的转向达到了理想的效果。
在电路方面,我们以模块形式分类,在最小系统、主板、电机驱动等模块分别设计,经过不断实验,最后决定了我们最终的电路图。
在程序方面,我们使用C语言编程,利用比赛推荐的开发工具Keil调试程序,经过小组成员不断讨论、改进,终于设计出一套比较通用稳定的程序。
在这套算法中,我们结合路况调整车速,做到直道加速、弯道减速,保证在最短时间内跑完全程。
在整车的制作过程中,全队成员集思广益,付出很大努力,虽然最后没有机会代表学校出赛,但在比赛的过程中还是学到了很多平时课堂上学不到的知识,也与队友以及对手们结下了深厚的友谊。
总而言之,这次参加飞思卡尔智能车比赛令我受益匪浅!
参考文献
1.王威.嵌入式微控制器S08AW60原理与实践.北京.北京航空航天大学出版社.2009.1
2.卓晴.黄开胜.邵贝贝等学做智能车—挑战“飞思卡尔”杯.北京.北京航空航天出版社.2007.3
3.谭浩强.C程序设计(第三版).北京.清华大学出版社.2005.7
4.邵贝贝.嵌入式实时操作系统[(第2版).北京.清华大学出版社.2004
5.张文春.汽车理论[M].北京.机械工业出版社.2005
6.沈长生.常用电子元器件使用一读通[M].北京.人民邮电出版社.2004
7.龚路.王浩.黄炫圭.上海交通大学Cyber++第六届技术报告
8.张阳、吴晔、滕勤、等MC9S12XS单片机原理及嵌入式系统开发.北京.电子工业出版社.2011.9
附录
#definecenter4400//舵机中位
#defineleft3200//舵机左极限
#defineright5600//舵机右极限
ty
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 卡尔 小车