天津学院 雷霆二队智能汽车邀请赛技术报告.docx
- 文档编号:7833100
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:73
- 大小:508.25KB
天津学院 雷霆二队智能汽车邀请赛技术报告.docx
《天津学院 雷霆二队智能汽车邀请赛技术报告.docx》由会员分享,可在线阅读,更多相关《天津学院 雷霆二队智能汽车邀请赛技术报告.docx(73页珍藏版)》请在冰豆网上搜索。
天津学院雷霆二队智能汽车邀请赛技术报告
摘要
本智能车系统设计以MC9S12XS128微控制器为核心,通过一个CMOS摄像头检测模型车的运动位置和运动方向,光电编码器检测模型车的速度,PID控制算法调节驱动电机的转速和舵机的方向,完成对模型车运动速度和运动方向的闭环控制。
实验结果表明,系统设计方案可行。
关键词:
MC9S12XS128,CMOS摄像头,PID
ABSTRACT
Inthispaperwewilldemonstrateasmartcarsystembasedonthemicro-controllerunitMC9S12XS128.Themicro-controlleruseaCMOSimagesensortoobtainlaneimageinformation,thenadjuststhemodelcar`smovingpositionanddirection.Aninferredsensormeasurethecar`smovingspeed.WeusePIDcontrolmethodtoadjust,therotatespeedofdrivingelectromotoranddirectionofsteeringelectromotor.So,wecompletetheclosed-loopcontroltothespeedanddirection.Theresultofexperimentindicatesthatthedesignschemeofsystemisdoable.
KEYWORDS:
MC9S12XS128,CMOSimagesensor,PID
摘要III
ABSTRACTIV
目录V
引言1
第一章系统设计制作的思路以及实现的技术方案2
1.1系统分析2
1.2系统设计结构图2
第二章机械系统设计与实现3
2.1车体机械建模3
2.2车模转向舵机机械结构的设计4
2.3底盘高度的调整5
2.4后轮差速的调整5
第三章硬件电路系统设计与实现6
3.1硬件电路设计方案6
3.2硬件电路的实现6
3.2.1以S12X为核心的单片机最小系统6
3.2.2主板8
3.2.3电机驱动电路10
3.2.4摄像头11
3.2.5速度传感器11
第四章软件系统设计与实现13
4.1舵机转向和速度调节的PID控制算法13
4.1.1经典PID控制算法13
4.1.2经典PID算法在本智能车上的应用15
4.2有一定抗干扰和抗反光能力的黑线提取算法18
第五章系统联调23
5.1开发工具23
5.2调试过程23
5.2.1串口通信24
5.2.2图像显示27
5.2.3图像处理功能28
5.2.4平台实际效果测试30
第六章模型车的主要技术参数33
第七章总结34
参考文献35
附件A元件列表37
附件A-1主板元件列表37
附件A-2最小系统元件列表39
附件B源程序41
Main.c41
模块化程序列表42
Schedule.h42
Schedule.c48
引言
全国大学生智能汽车比赛是经全国高等教育司研究,委托高等学校自动化专业教学指导分委会主办的,旨在培养创新精神、协作精神,提高工程实践能力的科技活动。
比赛要求在组委会提供统一智能车竞赛车模、单片机HCS12X开发板、开发软件CodeWarrior和在线调试工具的基础上制作一个能够自主识别路线的智能车,它将在专门设计的跑道上自动识别道路行驶。
中心目标是不违反大赛规则的情况下以最短时间完成单圈赛道。
这份技术报告中,我们小组通过对整体方案、电路、算法、调试、车辆参数的介绍,详尽地阐述了我们的思想和创意,具体表现在电路的创新设计,以及算法方面的独特想法,而对单片机具体参数的调试也让我们付出了艰辛的劳动。
这份报告凝聚着我们的心血和智慧,是我们共同努力后的成果。
第一章系统设计制作的思路以及实现的技术方案
1.1系统分析
智能车竞赛要求设计一辆以组委会提供车模为主体的可以自主寻线的模型车,最后成绩按单圈最快时间。
我们分析了第三届比赛的各个队伍的优缺点,并展望了智能车发展方向,比较了光电传感器和CMOS图像传感器的优缺点。
红外传感器相对简单,程序处理也不是很复杂,但是前瞻距离很小;CMOS图像传感器前瞻距离大,采样信息量大,便于分析前方路径信息,但是其程序处理相对比较复杂,时序控制要求很严格,对单片机速度要求较高。
在这种竞速的比赛中,因为智能车系统在动作决策方面会有一定的延时,因此要想让车跑的更快,车的前瞻性是个很重要的因素。
而且,对前方路径分析的越清楚,那么动作决策的灵活性就越大。
基于以上的考虑和以及以后的技术发展方向,我们决定采取以CMOS图像传感器为基础的寻线系统。
1.2系统设计结构图
按照预先的设计,我们设计了整个系统的结构图。
系统力求简单高效,在满足比赛要求的情况下,使硬件结构最简单,减少因硬件而出现问题。
图1.1智能车系统结构图
第二章机械系统设计与实现
为了使车能够更稳定的高速运行,在比赛备战之初,我们就对这个车进行了系统的分析。
尽量在规则允许范围内改造车模,提高车模整体精度是很必要的。
另外,我们在实际调试中发现,前轮的束角和主销倾角对车的高速运行下的稳定性影响很大。
高速运行下舵机的转动速度对车转向的灵活程度也起到了根本性的作用。
所以,在整车的机械结构方面我们进行了三方面改进:
转向机构改进、前轮束角调整、底盘高度调整。
2.1车体机械建模
此次比赛选用的赛车车模采用1/10的仿真车模。
赛车机械结构只使用竞赛提供车模的底盘部分及转向和驱动部分。
控制采用前轮转向,后轮驱动方案。
如图2.1所示。
我们在实际调整时的改进办法:
1)、加长舵机柄,从而增大车行进中的车轮转向速度。
这样虽然在舵机转速不变的情况下加快了车轮的转角速度,但是给舵机转向增大了负荷。
在实际调试中,出现过舵机里面齿轮被损坏的情况。
2)、由于前轮轴和车轮之间的间隙较大,对车高速转向时的中心影响较大,会引起高速转向下车的转向不足。
而且这里是规则中严禁改动的部分,所以我
们只能调整前轮内倾角来弥补车轮在高速转弯中遇到的转向不足的问题。
在实际调试中,我们发现适当增大内倾角可以增大转弯时车轮和地面的接触面积,从而增大车了地面的摩擦程度,使车转向更灵活,减小因摩擦不够而引起的转向不足的情况。
图2.1车体机械图
2.2车模转向舵机机械结构的设计
转向系统在车辆运行过程中有着非常重要的作用,合适的前桥调整参数可以保证在车辆直线行驶过程中不会跑偏,即保证车辆行驶的方向稳定性;而在车辆转向后,合适的前桥可以使得车辆自行回到直线行驶状态,即具有好的回正性。
基于这个原因,前桥参数调整及转向系统优化设计必然会成为智能车设计中机械结构部分的重点,在实际操作中,我们通过理论预测进行方案的可行性分析,然后做出实际结构以验证理论数据。
另外,在模型车制作过程中,除了遇到“如何得到良好的方向稳定性”的问题外,还要考虑如何尽快实现转向。
而由于功率是速度与力矩乘积的函数,追求速度,必然会使力矩减小,因此设计时就要考虑到舵机的动力与来自地面的摩擦阻力间的关系,避免因舵机力量太小使得车辆无法转向的情况发生。
经过最后的参数比较,为了解决以上问题,我们希望通过设计一些可调整的机构,加上实际测算,最后得出一套可以稳定、高效工作的参数及机构。
图2.2改进后的舵机转向机构及安装图
在最终设计的这套机构中,我们综合考虑了速度与扭矩间的关系,尽量减小舵机的负荷,并根据模型车底盘的具体结构,简化了安装方式,实现了预期目标,不过该机构仍存在自身重量太大的问题,我们将在以后的调试过程中逐渐改进。
2.3底盘高度的调整
底盘适当降低,在可以过坡道的情况下,尽量降低底盘,从整体上降低车的重心,使车在转弯时可以更快速。
2.4后轮差速的调整
差速机构的作用是在车模转弯的时候,降低后轮与地面之间的滑动;并且还可以保证在轮胎抱死的情况下不会损害到电机。
好的差速机构,在电机不转的情况下,右轮向前转过的角度与左轮向后转过的角度之间误差很小,不会有迟滞或者过转动情况发生。
第三章硬件电路系统设计与实现
3.1硬件电路设计方案
从最初进行硬件电路设计时我们就既定了系统的设计目标:
可靠、高效、简洁,在整个系统设计过程中严格按照规范进行。
可靠性是系统设计的第一要求,我们对电路设计的所有环节都进行了电磁兼容性设计,做好各部分的接地、屏蔽、滤波等工作,将高速数字电路与模拟电路分开,使本系统工作的可靠性达到了设计要求。
高效是指本系统的性能要足够强劲。
我们主要是从以下两个方面实现的:
1、采用滞回比较器电路进行图像的采集,大大提高了图像采集的效率;
2、使用了由分立元件制作的直流电动机可逆双极型桥式驱动器,该驱动器的额定工作电流可以轻易达到100A以上,大大提高了电动机的工作转矩和转速。
简洁是指在满足了可靠、高效的要求后,为了尽量减轻整车重量,降低车体重心位置,应使电路设计尽量简洁,尽量减少元器件使用数量,缩小电路板面积,使电路部分重量轻,易于安装。
我们在对电路进行详细、彻底的分析后,对电路进行了大量简化,并合理设计元件排列和电路走线,使本系统硬件电路部分的重量、面积都达到了设计要求。
3.2硬件电路的实现
整个智能车控制系统是由两部分组成的:
S12X为核心的最小系统板、主板。
最小系统板可以插在主板上组成信号采集、处理和电机控制单元。
主板上包括控制单元和电机驱动部分。
3.2.1以S12X为核心的单片机最小系统
单片机最小系统板使用MC9S12XS128单片机,112引脚封装,为减少电路板空间,板上仅将本系统所用到的引脚引出,包括两路PWM接口,一路计数器接口,一路外部中断接口,17路普通IO接口。
其他部分还包括电源滤波电路、时钟电路、复位电路、串行通讯接口、BDM接口。
为提高系统工作稳定性,我们使用有源晶体振荡器为单片机提供时钟。
为简化电路,我们取消了复位按键和串行通讯接口电路中的TTL电平与RS-232电平转换电路。
单片机最小系统板电路原理图如图3.1。
图3.1单片机最小系统板电路原理图
单片机引脚规划如下:
PB0:
奇偶场信号输入
PB2-PB3:
模式选择用拨码开关。
PA6:
跳线
IRQ:
行同步脉冲输入信号。
PT0:
光电编码器脉冲输入信号。
PWM7:
舵机角度控制信号输出。
PWM5:
电机速度控制信号输出。
3.2.2主板
主板上装有组成本系统的主要电路,它包括如下部件:
电源稳压电路、视频同步分离电路、比较器器转换电路、摄像头接口、舵机接口、电机驱动器接口、编码器接口、键盘接口、监控模块接口、电源接口、单片机最小系统板插座、跳线、指示灯、按键、开关等。
1)电源稳压电路
为了将电压纹波降低以减小对系统电路的影响,我们决定使用DC-DC电源模块,选型后我们决定使用型号为WLB0505CS-2W的电源模块,其纹波电压仅有5mV.
电源稳压电路原理图如图3.2.
图3.2电源稳压电路
2)视频同步分离电路
我们的智能模型车自动控制系统中使用黑白全电视信号格式CMOS摄像头采集赛道信息。
摄像头视频信号中除了包含图像信号之外,还包括了行同步信号、行消隐信号、场同步信号、场消隐信号以及槽脉冲信号、前均衡脉冲、后均衡脉冲等。
因此,若要对视频信号进行采集,就必须通过视频同步分离电路准确地把握各种信号间的逻辑关系。
我们使用了LM1881芯片对黑白全电视信号进行视频同步分离,得到行同步、场同步信号,具体原理不再赘述。
视频同步分离电路原理图3.3所示。
图3.3视频同步分离电路
3)外部比较器电路
外部比较器电路原理图如图3.4所示。
图3.4外部比较器转换电路
除以上三部分外,主板上还具有摄像头、舵机、电机驱动器、编码器、键
盘、监控模块、电源、单片机最小系统板等设备的接口,并准备了若干指示灯、按键、跳线、开关等用于系统调试。
主板完整电路原理图如图3.5所示。
原理图
PCB图
图3.5主板完整电路原理图
3.2.3电机驱动电路
电机驱动板为一个由分立元件制作的直流电动机可逆双极型桥式驱动器,其功率元件由四支N沟道功率MOSFET管组成,额定工作电流可以轻易达到10A以上,大大提高了电动机的工作转矩和转速。
该驱动器主要由以下部分组成:
PWM信号输入接口、逻辑换向电路、死区控制电路、电源电路、上桥壁功率MOSFET管栅极驱动电压泵升电路、功率MOSFET管栅极驱动电路、桥式功率驱动电路、缓冲保护电路等。
电机驱动板电路原理图如图3.6所示。
图3.6电机驱动板电路
3.2.4摄像头
本智能车寻线采用CMOS图像传感器方式,普通单板摄像头。
普通CMOS图像传感器通过行扫描方式,将图像信息转换为一维的视频模拟信号输出。
CMOS输出的信号变化很快,比如PAL制式的视频信号,每秒钟输出50帧图像信息(分为奇、偶场),每帧图像有312.5行,每行图像信号时间为64微秒,其中有效的图像信号约为56微秒左右。
具体参数如下:
摄像头参数:
320线;
照度:
0.5LUX;
输出制式:
PAL制式标准视频信号;
镜头及视角:
3.6mm92°;
供电电压/消耗功率:
9V100mA;
3.2.5速度传感器
智能车在实际速度控制中对反应车速的控制信号波形要求不是太高,因此我们在满足比赛要求的基础上尽量简化电路,使用自制的光电编码器来测速。
我们使用线切割在直径为30mm的圆盘周围加工出100个细缝,使用红外光电对射管作为采集码盘脉冲可鉴向的传感器。
图3.7光电编码器电路
第四章软件系统设计与实现
高效稳定的软件程序是智能车平稳快速寻线的基础。
本智能车采用CMOS摄像头作为寻线传感器,图像采集处理就成了整个软件的核心内容。
在智能车的转向和速度控制方面,我们使用了鲁棒性很好的经典PID控制算法,配合使用理论计算和实际参数补偿的办法,使在寻线中智能车达到了稳定快速的效果。
4.1舵机转向和速度调节的PID控制算法
4.1.1经典PID控制算法
PID控制是工程实际中应用最为广泛的调节器控制规律。
问世至今70多年来,它以其结构简单、稳定性好、工作可靠、调整方便而成为工业控制的主要技术之一。
单位反馈的PID控制原理框图如图4.1:
图4.1单位反馈的PID控制原理图
单位反馈e代表理想输入与实际输出的误差,这个误差信号被送到控制器,控制器算出误差信号的积分值和微分值,并将它们与原误差信号进行线性组合,得到输出量u。
其中,
、
、
分别称为比例系数、积分系数、微分系数。
u接着被送到了执行机构,这样就获得了新的输出信号
这个新的输出信号被再次送到感应器以发现新的误差信号,这个过程就这样周而复始地进行。
PID各个参数作用基本介绍:
增大微分项系数可以加快动态系统响应,但容易引起震荡。
一般增大比例系数能够减小上升时间,但不能消除稳态误差。
增大积分系数能够消除稳态误差,但会使瞬时响应变差。
增大微分系数能够增强系统的稳定特性,减小超调,并且改善瞬时响应。
对连续系统中的积分项和微分项在计算机上的实现,是将上式转换成差分方程,由此实现数字PID调节器。
位置式PID控制算法
用矩形数值积分代替上式中的积分项,对导数项用后向差分逼近,得到数字PID控制器的基本算式(位置算式):
其中T是采样时间,
、
、
为三个待调参数,我们在实际代码实现算法时,处理成以下形式:
PreU=Kp*error+Ki*Integral+Kd*derror
增量式PID控制算法
对位置式加以变换,可以得到PID算法的另一种实现形式(增量式):
我们在实际代码实现时,处理成PreU+=(Kp*d_error+Ki*error+Kd*dd_error)的形式。
这种算法用来控制步进电机特别方便,对直流电机也可以采用,其实如果对控制有更高的要求或者干扰因素较多,我们可以对PID算法做各种改进,比如用梯形法做数值积分以提高精度,将差分改成一阶数字滤波等等,在实际调车的过程中,我们确实遇到过由于自制码盘采样得到的脉冲上升下降沿不够陡,使得速度采样出现不稳定和失真,但由于这些附加处理比较耗费代码的运行时间,出于代码效率和实际效果的比较,我们没有采用这些改进的方案,另外可以考虑加反向器来整波形得到较为理想的方波。
运用PID控制的关键是调整三个比例系数,即参数整定。
PID整定的方法有两大类:
一是理论计算整定法。
它主要是依据系统的数学模型,经过理论计算确定控制器参数。
由于智能车整个系统是机电高耦合的分布参数系统,并且要考虑赛道具体环境,要建立精确的智能车运动控制数学模型有一定难度,而且我们对车身机械结构经常进行不断修正,模型参数变化较频繁,可操作性不强;二是工程整定方法,它主要依赖工程经验,直接在控制系统的试验中进行,且方法简单,我们采用了这种方法,同时,我们先后实验了几种动态改变PID参数的控制方法。
4.1.2经典PID算法在本智能车上的应用
(1)速度的控制
我们对速度的控制采用了增量式PID算法,我们在速度控制中采取的基本策略是弯道降速,直道提速,经过反复实验,将图象经过算法处理后得到的黑线位置和对应的速度PID参照速度处理成二次曲线的关系。
在实际测试中,发现小车直道和弯道相互过度时加减速比较灵敏,与舵机转向控制配合较好。
图4.2黑线位置和给定速度的二次函数曲线
具体在程序中的代码如下:
sPID.vi_Ref=g_HighestSpeed-(59-g_Control)*(59-g_Control)*(g_HighestSpeed-g_LowestSpeed)/3481;(g_HighestSpeed为最高速,g_LowestSpeed为最低速)
但是,存在的局限一方面是车在弯道进直道后的加速和直道入弯道的速度控制并达不到最好的控制效果,弯道入直道减速不够快速,直道入弯道加速得时机也不够及时。
我们做了进一步的改进,根据入弯时黑线位置的特点动态改变二次曲线中最高点(直道的最高速度)和最低点(弯道的最低速度)的大小,使得控制效果更合理。
另一方面是没有考虑到实际比赛中长直道急速冲刺的情况,赛前在程序中人为设定直线速度不够灵活合理,所以在程序中根据赛道状态动态提高直线速度g_HighestSpeed,使得我们可以在长直道的赛场充分发挥车的潜能。
(2)舵机的控制
我们对舵机的控制采用了位置式PID算法,根据往届的资料和自己的测试,将图象经过算法处理后得到的黑线位置和对应的舵机PID参照角度处理成一次线性关系。
开始在较低速(2m/s以下)试验时,在偏离黑线很少的某个范围,将Kp直接置零,在偏离黑线较少的某个范围,将Kp值减小为原来的一半,在偏离较大的其他情况,则保持Kp原来的大小。
取得的实际效果在弯道较多、直道较短的赛道上,车子转弯流畅,直道也能基本保持直线加速,车身左右抖动较小。
但在提高车速至高速(2.5m/s以上)时,发现车身在跑直道特别是是长直道时,车身左右震荡比较严重,究其原因,硬件上,我们认为首先是轮轴本身的松动并且转向机构左右转向性能可能存在不对称性,设计有待改进,软件上,则是自身编写的PID舵机控制还不够精细,动态适应能力不够,在从弯道进直道的过程中,由于小车循黑线本质上是一个随动系统,积分项在弯道累积的偏差错误地加在直道的跟踪上,造成在进入直道时转向不够准确,跑直道时虽然能跟踪黑线,但是转向调整往往超调,导致车身在直道上左右震荡,这种震荡严重影响了车的整体表现,同时,我们对S弯的控制也过于简单,没有特别的处理,导致车在跑S弯的时候,跑得太规矩,几乎完全沿黑线走,没有明显的直冲S弯的效果,原因是在前瞻有限的情况下,在采集到的图象中S弯入弯和普通弯道是一样的,导致小车开始转向,由于中间一直检测到弯道,小车会沿S弯道左右震荡,同时相应会减速,经过反复调试PID参数,我们发现光调整PID参数很难使车在跑S弯和长直道时都选择跑最佳路径,并且不影响车拐普通弯。
这就要求我们要智能地识别出当前赛道是哪种类型,我们没有选择赛道记忆等方法来判断当前赛道是哪种类型,而是采取在不降低远处黑线分辨率的情况下,尽量让摄象头看得更远的方法。
最后,在CPU超频的条件下,每行图象采集到了120个点,成功地增大了CMOS摄象头采集图象的分辨率,在透视问题影响远处黑线分辨率的制约下,使采集到的最远处每行黑线宽度达到了2~3个点,并且视场长度(视场最远处和最近处的距离)达到1.4m,最远前瞻达到1.6m,足以覆盖赛道中的各种赛道类型,使得我们在程序中并没有加入了对S弯、长直道以及大弯进行可靠识别的算法,仅仅根据黑线位置动态改变PID参数,得到了较好的控制效果,经过我们反复测试,选择的PID调节策略是:
1、将积分项系数置零,我们发现相比稳定性和精确性,舵机在这种动态随动系统对动态响应性能要求更高。
更重要的是,在Ki置零的情况下,我们通过合理调节Kp参数,发现车能在直线高速行驶时仍能保持车身非常稳定,没有震荡,基本没有必要使用Ki参数;
2、微分项系数Kd则使用定值,原因是舵机在一般赛道中都需要较好的动态响应能力;
图4.3黑线位置和动态Kp值的二次函数曲线
3.对Kp,我们使用了二次函数的曲线,Kp随黑线的偏离位置二次函数关系增大,具体在程序中的代码如下:
loca_Kp=((loca_error*loca_error)*2)/3+900。
local_error是黑线位置与中心值的偏差。
我们选择最后测试了一些PID参数,得到了较为理想的转向控制效果。
4.2有一定抗干扰和抗反光能力的黑线提取算法
(1)原始图像特点:
原始图像是一个将模拟图像经模拟电路转换得到的二位数据矩阵,矩阵的每一个元素对应一个像素点的阈值,图像的第一行对应最远处,大约150cm,图像的最低部一行对应最近处,大约20cm。
远处的图像小,近处的图像大,黑线为梯形状。
图4.4直道
图4.5弯道
图4.6十字交叉
图4.7起点
(2)基本思想:
a)直接利用原始图像,提取跳变点。
b)黑线宽度有一个范围,在确定的黑线宽度范围内才认为黑线有效,这样可以滤除不在宽度范围内的黑点干扰。
c)利用黑线的连续性来确定求出的黑线中心是否有效。
d)图像是远处小近处大,所以黑线宽度范围和前后行黑线中心的位置差别都要动态确定。
e)求黑线中心时,因为近处的黑线稳定,远处黑线不稳定,所以采用由近及远的办法。
f)图像数据量大(120×30),全部扫描一遍会浪费很多时间,利用前面已经求出的黑线中心位置判断出黑线的趋势,从而推断出下一行的黑线大概位置,确定出扫描范围,避免了整行逐点扫描,节约了时间。
(3)算法程序流程图:
图4.8算法流程图
第五章系统联调
5.1开发工具
程序的开发是在组委会提供的CodeWarriorIDE下进行的,包括源程序的编写、编译和链接,并最终生成可执行文件。
CodeWarriorforS12X是面向以HC1和S12X为CPU的单片机嵌入式应用开发软件包。
包括集成开发环境IDE、处理器专家库、全芯片仿真、可视化参数显示工具、项目工程管理器、C交叉编译器、汇编器、链接器以及
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 天津学院 雷霆二队智能汽车邀请赛技术报告 天津 学院 雷霆 智能 汽车 邀请赛 技术 报告