第五章 控制算法和软件设计
推荐给好友
打印
加入收藏
更新于2008-08-22 15:41:33

5.1 系统软件设计

软件设计思路是利用摄像头采集到的信号值得到道路偏差信号,与赛车转向角度分段函数对应的方法实现寻迹功能。对速度传感器计数读取数据,获得速度信息后对速度进行数字PID控制。输出PWM信号控制前轮舵机转向及直流驱动电机的转速。系统控制的快速性和稳定性较高。

系统软件流程图如图5.1,初始化结束后开始采集信息,然后经过数据处理自动生成此环境下的阈值,开中断,而后进入道路识别控制循环。定时中断到读取速度值,对反馈来的速度作为参考用以控制输出下一个速度对应的PWM值。



图5.1 系统软件流程图


5.2 CCD数据处理算法

5.2.1 二值化处理


CCD摄像头输出的模拟信号,经同步分离,由MC9S12DG128B中的AD采集到,数据经适当的删减暂存在内存中。CCD数据处理算法的流程图参见图5.2,首次采集的数据经过比较得出较大数据的分布水平和较小数据的分布水平,取中间值作为区分赛道黑与白的阈值,小于此阈值的数据将认为是黑色部分所对应的数据,并将此阈值保存在内存中。



图5.2 CCD数据处理流程图


程序中可以选择固定或者浮动阈值。如果选择固定阈值,则从第二次开始,采集的数据与第一次阈值相比较,从而分辨出黑线,并且记录黑线出现在数据中的位置,通过与数据的中心位置相比较得出相对于中心位置的偏移量,从而检测出车体相对于引导线的偏差情况,为调整前轮的转角、调整车体的位置做好了准备;如果选择浮动阈值,则每次采集数据之后重复第一次阈值提取过程,更新阈值后再分辨黑线并判断黑线位置。两者各有利弊:浮动阈值适应性好,能够在光线不均匀的环境下完成比赛,但是牺牲的是赛道信息采样速度,其采样速度是固定阈值的一半;固定阈值赛道信息采样频率高,但是如果光线明显不均匀,则明暗处黑白阈值差别较大,很可能出现误判现象。

5.2.2 赛道外杂散信息滤除

由于摄像头位置较高,张角较大,不可避免的会将赛道外的杂散信息摄入。如果赛道外全为理想的白色,则对后续处理影响不大。但是实际环境中这种理想的情况不太可能出现,必须考虑到赛道外有黑斑时被误认为黑线,将实际黑线位置忽略的情况。

为了防止这种情况的发生,根据黑线的连续性以及黑线宽度的限制条件,可以将赛道外信息滤除,不至于认为是赛道黑线。具体实现方法如下:当黑色部分的宽度满足黑线宽度的时候,就认为其是疑似黑线。开辟3个临时数据空间,将每行疑似黑线位置全部储存。由于出发区为直道,首次AD采集后将所有疑似黑线位置与中心位置比较,距离中心位置最近的就认为是真正的黑线,并将此位置记录下来。以后每次AD采集后将所有疑似黑线位置与上次记录的黑线位置进行比较,距离上次记录的黑线位置最近的就认为是此次黑线的位置。

5.3 控制算法

在行驶过程中对赛车进行控制,包括两方面的内容,其一是对前轮转角的控制,其二是对车速的控制。不论是对转向控制还是速度控制都是通过对PWM的调整来实现的。依据获取的道路信息和速度信息后,输出相应的控制信号,来实现对赛车的控制。由于赛车的数学模型很难精确的建立起来,并且有很多复杂的外部干扰,动态性能要求较高,所以很多参数的设置都是依靠试验依靠专家经验来定的。

5.3.1 舵机转角控制

根据实际测试,转向角度的控制与位置的对应关系参见图5.3,其中数据的中点对应的点为第19。从图中可以看出在位置偏离中心较小时基本成线性关系,这样可以减少赛车在直道上行驶的抖动现象,使赛车有做微调的可能性。当偏差较大时位置与角度的对应关系有明显的两处阶跃,这种情况一般发生在弯道,连续两次的位置信息差别较大,依靠很小的调整达到跟踪黑线的目的就显得不太现实,所以就给大的角度,等到下一次再做微调,这样会使赛车过急弯的时候有较好的效果。


图5.3 位置角度对应关系


由于摄像头的前瞻量较大,视场较广,在半径较小的弯道处有可能出现一帧画面为全白的情况,这个时候就需要根据上一个角度输出来确定此次的角度输出。将角度输出分为4类:较小(位置在14~23之间);居中(位置在11~13以及25~27之间);较大(位置在7~10以及28~31之间)和极大(位置小于7以及大于31)。

假设本次采样一帧画面为全白,则在上一个角度输出较小的情况下(位置在14~23之间),本次输出值采用上次输出角度;在上一个角度输出居中的情况下(位置在11~13以及25~27之间),本次输出值采用较大的下限输出;在上一个角度输出较大的情况下,本次输出值采用极大的下限输出;在上一个角度输出极大的情况下,本次输出值采用极大的上限输出。这样既可以防止在一次探测有误即输出角度极限值的行为,也可以防止在小半径180度弯处角度输出不够的情况出现。

5.3.2 后轮电机车速控制

车速的控制是赛车控制的核心,直接关系到赛车的速度,影响到比赛的成绩。控速的目的是要实现在直道上加速度跑,弯道速度适当,上坡不减速,下坡不加速。没有使用控速之前发现时间绝大多数是耗在过弯的时候,是由于赛车转向时前轮舵机动作,负载突增,则后轮电机在PWM值一定的情况下速度下降比较严重。因此,需要加入测速装置,实现对车速的闭环控制。

车速的控制使用了PID算法结合BANGBANG控制的思路。

为了保证输出的速度值相对稳定的状态,达到良好的动态和稳态效果,使用增量式PID控制方法来调整车速。PID算法结构简单,参数易于调整,适应性强,对于那些控制模型不准,参数变化较大的被控对象,采用PID控制器往往能得到满意的控制效果。

PID控制过程如下:首先通过拨码开关预先设定小车所希望稳定在的速度值N1,为了后续电路计算简便,速度值是按照单位时间脉冲个数来预先设定。

后续测速电路是用定时通道Ch0,通过定时器发出定时中断,同时累加器计算栅盘所转过的栅数,从而通过计算获得的单位时间内脉冲转过的个数N2。取预设值和测得值的差值(N1-N2),代入PID运算式。

标准的直接计算法公式:

(公式5.1)

 

上一次的计算值:

(公式5.2)

 

两次计算得到增量的计算公式:

(公式5.3)


其中e(t)表示是e(i)从1到t的全部总和。


而式中Kp, Ki, Kd三个参数是通过迭代法整定求得。

控制流程图如图5.4所示。



图5.4 增量式PID控制流程图


为了尽量缩短调试周期和提高动态性能,引入BANGBANG控制,即当速度偏差值在一定控制域范围之外时,采用最大或最小控制量输出的方法。域值范围确定在很大程度上取决于调试者的主观因素,是一种经验性的控制。如果域值选择不当,则很可能出现超调或者振荡现象。

实际控速效果如图5.5所示,其中突降部分代表2秒末舵机动作,相当于负载突增的情况。可以看到,开始时车速在BANGBANG控制作用下车速迅速爬升,由于PID参数的配合,没有出现超调情况。2秒末由于负载突增,车速下降,在PID控制的作用下,又迅速爬升至设定水平。




图5.5 车速响应情况


不同路况时,车速的大小应该有所变化,直道充分加速尽可能争取时间,弯道适当减速防止过冲,达到速度和稳定性的平衡。

 

 

上一章:机械设计                                                     下一章:各模块调试




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