第五章 控制策略与软件算法
推荐给好友
打印
加入收藏
更新于2008-08-19 22:59:24

5.1 智能巡线车的控制系统组成

本智能巡线车以飞思卡尔 MC9S12DG128单片机作为主控制器。
路径检测部分:面阵 CCD型图像传感器。
速度检测装置:测速电机。
被控对象:转向舵机、驱动电机。
驱动电机控制框图:


图 5-1 驱动电机控制框图


转向舵机控制框图:




图 5-2 转向舵机控制框图


5.2 驱动电机的控制方法设计

5.2.1 闭环控制在智能车驱动电机控制中的应用
自从全控型电力电子器件问世以后,就出现了采用脉冲宽度调制的高频开关控制方式,形成了脉宽调制变换器-直流电动机调速系统,简称直流脉宽调速系统(直流 PWM调速系统)。

与传统的 V-M系统相比,PWM系统在很多方面有其优越性:

(1) 主电路线路简单,需用的功率器件少;
(2) 开关频率高,电流容易连续,谐波少,电机损耗及发热都小;
(3) 低速性能好,稳速精度高,调速范围宽,可达 1:10000左右;
(4) 若与快速响应的电动机配合,则系统频带宽,动态相应快,动态抗扰能力强;
(5) 功率开关器件工作在开关状态,导通损耗小,当开关频率适当时,开关损耗也不大,因而装置效率较高。

可逆 PWM变换器主电路有多种形式,最常用的是桥式(亦称 H形)电路。

在本智能小车的驱动电机控制中,采用飞思卡尔 MC33886H桥电机驱动芯片,将单片机输出的 PWM波输入驱动芯片的IN1、IN2引脚,控制驱动电机的四象限运行。在此应用中,MC33886的作用是将恒定的直流电源电压(电池电压)调制成频率一定、宽度可变的脉冲电压序列,从而改变输出平均电压的大小,以调节电机转速。

由前节所述驱动电机控制框图,反馈控制的闭环系统是按被调量的偏差进行控制的系统,只要被调量出现偏差,它就会自动产生纠正偏差的作用。显然,闭环调速系统应该能够大大减少由于负载变化而引起的转速变化。

在本智能小车的设计中,采用测速电机作为速度反馈装置,通过齿轮将测速电机与驱动轮连接,通过实验,测速电机的端电压与车速具有较好的线性关系。

实验测得,车轮转 6圈,对应于直线距离约为1m。

用转速计测量驱动轮的转速,得到转速与测速电机反馈电压的关系如下。


表5-1 车轮转速与测速电机反馈电压值


由 Matlab的 ployfit(x,y,n)命令,一阶拟合(n=1)得出曲线如图,拟合曲线y=kx+b,k=0.0016,b=0.0066。


图 5-3 驱动轮转速(RPM)与反馈电压(V)值拟合曲线


由实验数据分析得,测速电机转速-电压具有较好的线性性。能够起到较好的反馈作用。
小车轮子滚动 6圈,对应于直线距离 1米。因此实际速度(V,米/秒)与
反馈电压(U,伏)的关系式可写作:

U=(0.0016V+0.0066)×6=0.0096V+0.0396 (式5-1)


V=104.17×U-4.125 (式5-2)


单片机采集到的转速信息是经过单片机片内 A/D采样的数字量。A/D模块的参考电压 VRH、VRL分别接 5V、0V,设单片机采集的 8位数字量为speed_digital,实际车速为speed(分米/秒),则两者的关系可推导得出。

 
U=(speed_digital/255)×5 (式5-3)

speed=104.17 × (speed_digital/255) × 5-4.125=2.043 × speed_digital-4.125 (式 5-4)


经过上式计算得出的 speed值即为小车实际车速(分米/秒),可用于 LED 显示模块,用于车速显示,方便调试与观察。

5.2.2 PID算法在驱动电机控制中的应用
在电机的控制中,一般采用闭环 PID控制。为何在设计中采用 PID控制呢?PID解决了自动控制理论所要解决的最基本问题,既系统的稳定性、快速性和准确性。调节 PID的参数,可实现在系统稳定的前提下,兼顾系统的带负载能力和抗干扰能力,同时,在 PID调节器中引入积分项,系统增加了一个零积点,使之成为一阶或一阶以上的系统,这样系统阶跃响应的稳态误差就为零。

在 PID控制中,比例项用于纠正偏差,积分项用于消除系统的稳态误差,微分项用于减小系统的超调量,增加系统稳定性。PID控制器的性能就决定于Kp、Ki和 Kd这 3个系数。如何选用这 3个系数 是 PID控制的核心。

PID调节器中有比例微分(PD)、比例积分(PI)和比例积分微分(PID)三种类型。由 PD调节器构成的超前校正,可提高系统的稳定裕度,并获得足够的快速性,但稳态精度可能受到影响;由 PI调节器构成的滞后校正,可以保证稳态精度,却是以对快速性的限制来换取系统稳定的;用 PID调节器实现的滞后-超前校正则兼有二者的有点,可以全面提高系统的控制性能,但具体实现与调试要复杂一点。一般调速系统的要求以动态稳定性和稳态精度为主,对快速性的要求可以差一些,所以主要采用 PI调节器;在随动系统中,快速性是主要要求,须用 PD或 PID调节器。

PID控制框图如下:


图5-4 模拟 PID控制

模拟 PID调节器的控制规律如下:


由于计算机控制是一种采样控制,它只能根据采样时刻的偏差值计算控制量,因此,上式中的积分和微分项不能直接计算,只能用数值计算的方法逼近。在采样时刻 t=iT(T为采样周期),上式所表示的 PID调节规律可通过数值公式 

 
近似计算。如果采样周期 T取得足够小,这种逼近可以相当精确,被控过程与连续控制过程非常接近。在智能小车车速的控制中,采样 PID递推算法,如式4-7。


式中,为 i时刻输出, 分别为本次、前一次、前二次的偏差值,为前一次的输出值,采用这种算法,可以大大节约内存和计算时间。
 
由于电机的转矩系数、电枢回路电感、飞轮惯量等参数无法精确测得,因此不能够得出电枢回路电磁时间常数Tl、电力拖动系统机电时间常数 Tm,就不能建立驱动电机的动态数学模型。所以,PID参数的选择主要通过实验确定。

智能小车的驱动电机控制两片并联的飞思卡尔MC33886,以减小芯片压降、利于散热并且增强负载能力。MC33886的功能较强,有 2个使能端和一个错误标志位引脚,但在本设计中,均没有使用到。

硬件连线方式为:驱动电机接 MC33886的OUT1、OUT2脚,芯片的IN1、IN2脚接单片机的PWM2、PWM3脚。

相关引脚的真值表如下:

 
表 5-2 MC33886相关引脚输入输出真值表


其中,IN1、IN2脚的L、H分别对应单片机输出电平0V、5V;OUT1、OUT2脚的L、H对应电池电压0V,7.2V。

调整单片机输出 PWM波的占空比,就改变了加到驱动电机两端的平均电压值,能够改变电机的转速和转矩并使电机在四象限运行。

在对智能小车驱动电机的过程中,首先判断小车当前所处的位置(直道、弯道中,进入弯道前),根据不同的位置,设定不同的速度给定值。然后,将预期速度与实际速度值相减得到误差,将此误差作为 PID控制器的输入,PID控制器计算出 PWM波的占空比,以此来控制电机转速使其达到预期值。

5.2.3 最速控制在驱动电机控制中的应用
在智能车的控制策略中,控制目标是在满足一定巡线精度的前提下,尽可能提高车速。很容易联想到,砰-砰控制能够满足这样的要求。

最速控制问题,或者叫时间最优控制(Time Optimal Control)问题。简单地说,就是给定最大马力和最大刹车功率,开车从 A点开到 B点的方法,不考虑弯道、障碍等因素时,能够想象得到的最快的方法,就是加足马力、全速前进,然后在到达终点时,全力刹车。“砰-砰控制”(Bang-Bang Control)这一名称也由此得来:“砰”的一声,油门板一脚到底;“砰”的一声,刹车到底,控制任务完成。

最速控制在理论上是一个很有趣的问题,解法通俗、简洁,但在实际应用中单独应用砰-砰控制的情况却不多见。因为在被控对象达到预期输出时,由于砰-砰控制器的作用,将造成较大的超调。因此,在实际应用中一般采用如下方法:启动时,匀速上升到最大控制,以缓和控制的冲击力;到达终点附近时,改用 PID控制,作闭环微调,克服“砰-砰”的系统模型误差十分敏感的缺点。

在智能车速度控制策略中,如采用砰-砰控制器,可以有两种应用方法:

(1) 进入直道后,直接控制 PWM占空比,使加到驱动电机两端的平均电压为最大值,使电机迅速加速,相当于电机全压启动;速度超过直线段预设的速度限定值后,PWM占空比调为0,相当于电机自由停车;速度一旦小于给定值,则立即将 PWM占空比调到最大。判断进入弯道时,立即调整 PWM输出,使加到电动机两端的电压为负的最大值,使电机迅速制动,相当于反接制动状态;随后,根据弯道曲率情况,改变速度给定值,同样采用上述方式,使小车在弯道内的速度始终接近给定值。
(2) 进入直道后,使 PWM占空比线性上升至最大,即逐渐增大驱动电机两端的平均电压,相当于电机降压启动;当速度即将达到给定值时,启用 PID闭环控制,对速度进行微调。过弯减速时,也采用线性减小 PWM占空比的方式,将达到给定值时,启用 PID闭环控制。比较上述两种方法,可以发现,方法(1)的加减速性能好,但是对电机的冲击大,在启动和进弯道前的一段时间内,甚至相当于电源短接,对电池电量的消耗也较大。方法(2)的加减速过程较缓和,对电机和电源的冲击均较小,但却是以延长过渡过程时间为代价的。

由于智能小车比赛的特殊性,只要求小车在赛道上完成两圈巡线,对电池耐用性的要求并不高,而对小车速度的要求更高。因此,希望过渡过程时间尽可能短,而不必考虑由此对电机和电池带来的冲击。

综上所述,在对智能车速度进行最速控制时,直接采用方法(1),以加快智能车的响应速度。
在智能车驱动电机的控制中,由于对电机响应速度的要求较高,对减小电流消耗等问题的并不十分注重,即希望电机尽可能快的加速而不用对电机进行将电压启动,因此,当预期速度与实际速度相差较大时,可以设置 PWM2的占空比为100%、PWM3的占空比为0%,相当于全电压启动,使小车在出弯道后能够迅速加速。

5.2.4 驱动电机控制策略的算法实现
算法的具体实现代码如下:


其中,speed是实际测得的车速,spd_st是预期的车速。从以上代码可以看出,采用砰-砰控制,在算法实现上非常简单。

5.3 舵机控制方案
5.3.1 舵机控制的基本思想


在本设计中,采用面阵 CCD型图像传感器获取赛道位置信息。通过单片机片内高速 A/D采集数据,获得的赛道信息是一个 45行 41列的二维数组。
 
现在假设已经经过一系列路径识别算法,可以在得到的这个二维数组中,找到实际的赛道位置,由这个位置信息,得到了智能车舵机的预期转角。舵机控制的目标就是要将实际位置与预期目标点作差进行比较,将比较的结果转换成控制舵机转向的 PWM波。

首先,对于这个通过算法得出的“预期目标点”要进行滤波,以避免赛道表面其他干扰因素、单片机内部 A/D采样随机误差或者其他情况造成的干扰对控制结果造成不利的影响。滤波的根据就是假定某一时刻的预期目标点 A和下一时刻得出的预期目标点 B之差的绝对值不会大于某一阈值K,即|A-B|<K。如果超过了这个上限,则认为这次的输出无效,仍以前一次的数据处理输出值为准。

在控制算法上,在实际实验中发现,如只采用一种一一对应的比例关系,即比例(P)控制时,在车速较慢的情况下,可以得到较为理想的情况,但是,当车速提高后,发现在直道中摆动的情况。为了消除这种摆动,加入了微分(D)控制。因此,采用比例微分(PD)对智能车舵机进行控制。

PWMDTY_01=(int)[s_p*(0-s_error1)/scale+center+s_d*(s_error1-s_er ror2)] (式5-8)

式中,s_k为比例系数,s_d为微分系数,s_error1、s_error2均为全局变量,为本次和前次的预期目标点位置与中心位置之差。

5.3.2 舵机控制策略的算法实现
算法的具体实现代码如下:



5.4 路径识别和电机、舵机的给定值获得算法
路径识别是本智能车控制系统中的核心部分,只有获得了准确的路径信息,才能确定驱动电机、转向舵机控制系统的预期输出。路径识别模块可以分为:图像信息采集部分和黑线识别部分。

5.4.1 图像信息采集
由于大赛组委会规定,只能采用 9S12DG128单片机作为唯一的核心控制单元,因此,在图像传感器的选择上,只能采用普通的模拟视频输出型面阵 CCD摄像头。为了采集图像信息,单片机需要根据行、场同步信号启动 A/D转换器,采集稳定的图像。由于视频信号的变化非常快,所以需要另外设计同步分离电路。视频分离电路采用 LM1881芯片作为视频分离芯片,分离出的奇偶场信号和行同步信号送入单片机中断输入口。

单片机内部的高速 A/D采用连续模式工作,通过查询转换完成标志位。

 ATD模块的寄存器初始化如下:


LM1881视频分离芯片的任务就是从CCD输出的模拟视频信号中分离出使单片机能够以正常时序采集数据的同步信号。

LM1881的工作时序如图:


图 5-5 LM1881信号时序图

 
图像信息采集部分的程序流程图如下:


图5-6 图像信息采集部分程序流程图

通过以上的流程,可以采出奇场的一帧图像信息。当 S12的 CPU没有超频工作时,每一行只能采到 8-9个点,不能很好的满足图像识别的要求。通过实验发现,通过设定 S12 CPU中的时钟 PLL电路寄存器,可以将 S12单片机内部总线频率提高多倍,单片机仍能工作。最终,通过提高总线频率、提高 A/D转换器时钟频率,将 A/D转换时间缩小到了 1.5us左右。每一行采集的图像信息达到 41个。

设计中采用的CCD摄像头输出的模拟信号的有效行数可以达到300行左右,但是,没有必要将这所有行的数据全部采集下来,这样既会增加单片机的负荷,又会大大占用 RAM空间。最终,所采用的是每隔 5行采集一行数据。

这样,通过图像信息采集部分,就采集到了一个 45行 41列的二维数组Adata[45][41]。

5.4.2 黑线识别
经过图像信息采集出的二维数组 Adata[45][41]中,包含了较真实赛道信息。但是,赛道上可能有其他干扰信息,或者 A/D转换存在随机误差。为了排除这些可能造成的影响,就要对这个数组的数据进行处理,最终得出黑线的趋势、方向等信息。

为了方便调试,采用了同济二队开发的“智能车监控仿真程序”。程序界面如图:


图 5-7 智能车仿真监控程序界面

(1)黑、白阈值的获得
通过串口传送数据至 PC或 BDM监控方式可以发现,单片机片内 A/D采出的赛道黑白的数值有较大的分别。当参考电压为VRH:5V、VRL:0V,8位精度的A/D时,黑色的值为33,白色的值为64。当光线变化时,会对这两个值会发生一定的变化。如果采用静态阈值,则在环境光线变化时需要不断调整阈值大小,最终,采用的方法是对采集到的数据的每一行进行动态阈值分析。

具体的算法如下:

a)分别取出一行中的最大值、最小值;
b)最大值、最小值相加;
c)两者之和乘以一个系数dt,即得到该行的阈值。

经过分析,dt取 0.39可以获得较好的结果,既能够在该行全黑或全白的情况下保证识别不出黑线,又能克服一定的环境光强影响。

(2)有效黑线的识别
在获得每一行的阈值以后,就可以由图像数据的二维数组和阈值相结合,识别出有效的黑线位置。这里强调的是有效黑线,是因为图像中的小于动态阈值的点并不都是实际的车前的黑色导引线,可能是赛道中的其他干扰、摄像头观察到的别处的黑色导引线、赛道外信息、或者是十字交叉、起始线的情况。对于这些情况,必须有一套识别的体系,将有效的黑线提取出来。

有效黑线识别的一个基本的前提就是黑线是连续的。建立在这个基础上,就可以从车的最近处开始找黑点,下一行在上一行黑点的附近找,当连续多行找不到黑点时,就认为再往前就没有有效的黑线了。

5.4.3 给定值的获得
在经过黑线识别之后,得到的是一条连续的从车前10cm处延伸至车前90cm处的曲线。根据曲线曲率、长度的不同,可以制定不同的控制策略,确定给转向舵机和驱动电机的给定值。

经过前述算法提取出的黑线大致可以分为如下图的几种情况: 


图 5-8 摄像头采集到的有效黑线情况


图中,红色圆圈所示即为舵机的目标点;红色方块对应电机的速度给定值。

现逐一对各幅图的情形进行解释:

图(a),摄像头观察到的视野内为一条直线,此时,舵机的给定目标点为直线末端那点,速度给定值为最大。这样,可以使得智能车全速巡线行驶。

图(b),摄像头观察到的视野近处为直线,远处有曲线的趋势,此时舵机的给定目标点为视野内能看到的最远那点,速度给定值仍为最大。这样,可以使智能车全速、切内线地向目标点行驶。

图(c),弯道正在接近中,这种情况下,舵机的给定目标点为最边上那点,根据弯道的远近,确定电机的给定速度。

图(d),弯道已经非常接近,此时,舵机打满方向,电机给定速度进一步减小。

图(e),视野内为一小幅的 S型弯(大幅 S型弯道的情况下,由于摄像头视野角度有限,提取出的有效黑线可能为图(c)、图(d)所示的情形)。此时,舵机的给定目标点为视野最远处的那点,电机给定速度最大。这样,可以使智能车在过小幅 S型弯时,巡一条路程最短的线路高速行驶。

图(f),视野范围内没有有效黑线。这种情形对应于智能车在过曲率半径较小的弯时,一些时刻,摄像头视野内可能没有黑线出现。此时,就要依据上一有效黑线的位置,打满方向,同时将速度给定值给到最小,保证智能车能够转过这样的弯道。

5.5 智能车控制系统软件框图
智能巡线车的整体软件算法框图可由下图表示:


图5-9 智能车整体软件流程图


5.6 小结
本章主要分析智能车的控制策略与软件算法。将智能车的控制分为:驱动电机控制系统、转向舵机控制系统和给定值的获得算法。在电机控制上,分析了 PID控制算法和砰-砰控制算法各自的优缺点,最终采用砰-砰控制实现智能车的最速控制;在转向舵机控制上,采用 PD控制算法,控制舵机转向;给定值算法是整个控制策略中的核心部分,用图表的形式进行了分析和解释;最后给出了整个控制系统的软件框图。

 

 

上一章:智能车硬件电路设计                                         下一章:测试与实验数据分析




 
关于我们 | 诚邀加盟 | 客户服务 | 相关法律 | 网站地图 | 友情链接 | 服务信箱:service@eefocus.com
© 2006 与非门科技信息咨询(北京)有限公司 All Rights Reserved.