基于CCD摄像头智能车分段PID控制算法设计
3 图像识别
用CCD摄像头采集车模前方一定距离内的黑线,从中提取相关量,用来控制舵机的转向,实现智能车的自动循迹。由于单片机数据处理能力和速度有限,不能在短短的20 ms时间内处理整场图像。本系统设置摄像头前瞻为1.2 m。在不影响道路检测精度需要的前提下,本系统采用隔行采集来压缩图像数据,即相隔不同的有效行采集一行数据(近处相隔的少,远处相隔的多),一共可采集44行数据。此外为了进一步提高A/D转换的速度,本系统还适当地将XS12的CPU超频运行并且设置A/D转换器的精度为8位,这样每行能采样到67个点,形成了一个面阵,而黑线在其中占据了某些点位。由于我们一行采集67个点,故中间值为33。图像是智能车的底层,图像的采集正确与否在以后的控制中尤为重要,故一定要确保采集回来的黑线的真实有效性,并且要增加滤波算法,比如在有效前瞻很小的时候,本来只要判断出黑线的转向即可,给舵机以极限转角可以让车急转弯。但是有效行很少的时候,如果不用特殊的滤波方法,只要有一行的黑线提错,就可能让小车转错,至于转出界。
4 分段PID控制
4.1 图像信息提取量
从采集回来的图像中提取控制量来控制舵机的转向,实现智能车的自动循迹。本系统采用黑线偏移量even_diff和黑线某段斜率D_diff-erent对舵机进行控制,可称为PD控制器。由于车模是个随动系统,在摄像头1.2 m前瞻内覆盖的黑线不一定有设置的44行,特别是前方的弯特别急的时候,在摄像头前瞻视角范围内覆盖的黑线会特别少,比如13行或13行以下。根据这个特点,可设置一个有效前瞻量valid_line作为对前方的弯的平缓程度的反应。
把每一行的黑线位置值与中间值作差,得到该行的偏移量,中间值33位赛道的中心位置点,偏移量表示在车模的视角下黑线处于赛道中的位置值。把每一行的偏移量相加之和除以摄像头前瞻范围内的提取出的黑线行数,得到黑线相对于车模中心的整体偏移量even_diff,用有效行内的远处某些行与近处某些行(如前半场与后半场)偏移量之差得到有效行内的黑线斜率D_differen。
这样,从一场的黑线位置数据中,系统提取了有效行valid_line、even_diff、D_different 3个量来对舵机进行控制。在实际情况中,D_different可以很灵活,因为前方黑线的斜率可以取不同段得到,可以根据实际要求得到不同段的斜率值,如速度快时可以适当的取距车较远处的黑线斜率,以实现超前控制。
在智能车调试参数的时候,对这3个量的理解很是重要,具体来说,valid_line表征车模的有效前瞻,即看得有多远,对于智能车在道路上行驶,看得远说明黑线都在前方,看不远说明智能车前方的黑线已经偏左或者偏右,而这个量的大小正好可以表征弯的平缓与急切。另外,看得远则摄像头采集的黑线多,系统信息量大,那么怎么处理这些大量的信息为我们所用就变得很关键,如看得1.2 m都能看见,说明小车必然在长直道上,不然也是小S弯,稍作处理就可以过滤掉小S弯了,让小车像都是在直道上跑;看得很近说明弯已经很急,这时候,只要能够判断出弯往那边拐就可以给舵机一个极值急拐。even_diff表征在某一个特定视野下,小车与黑线偏离的程度,这个量可以让智能车在某个特定视野下决定给舵机多大的转角。D_different则在有效前瞻远的时候尤为关键,因为它可以预判前方的弯,从而超前的转弯。
4.2 PD控制器形式
系统把这3个量处理成PD控制器的形式:

其中a为根据赛道有效前瞻确定的不同有效行。Centre为舵机走直线的控制中间值。Steer为PD控制器给舵机的输入量。由于车模舵机转向控制是一个非线性系统,而设置了入口条件“有效行判断”,正好可以把这个非线性系统分割成不同段,在每一段可近似认为转向控制系统是线性的。即在某一小段范围内,得到的黑线位置和对应的舵机PID参照角度处理成一次线性关系。最终实现简单分段PID控制。
5 分段PID控制参数规律
在实际的调车过程中,我们总结发现,PD控制器的参数Kp、Kd与有效前瞻valid_line、车模的速度相关。简单点说,即小车速度越快,车模遇弯提前拐弯的应越早。总结下来,有如下关系:

其中A为Kp的基础值,valid_line为车模运行到某个状态的有效前瞻(用提取的黑线数量来估定),speed为小车一场时间内的脉冲值,表征车模时刻运行的速度。低速时,可近似认为speed/C为零,通过试验法可以确定A值大小。在确定Kp基础值之后,即可加速,在小车速度稍高的时候调试得出合适的B值、C值,最终使小车平稳准确的切线,循迹而行。此关系式可知,有效前瞻的变化是对Kp值影响最大也是最直接的一个量,我们平时调车经验而知,B参数应比C敏感很多才行。有效行减少一行,对舵机转向角的影响要远大于小车速度speed对Kp的对影响。而speed对舵机急转快速性在车模高速的时候很是明显。
为增加系统的鲁棒性,并且更好的解决系统的非线性问题,我们将小车的前瞻分段,我们1.2 m的前瞻里面,总共有44行黑线,直道上全部提取回来,可以分为有效行37行一下、有效行30行以上、有效行24行以上、有效行18行以上、有效行13行以上与有效行13行以下7段。
pid控制器相关文章:pid控制器原理
评论