摘要:本设计以第八届“飞思卡尔”杯全国大学生智能车竞赛为背景,提出了一种根据线性CCD采集图像引导直立小车循迹行驶的方案。本文介绍了这一方案的基本思想,所依据的物理原理,并重点介绍在双速度控制算法下对转向及障碍问题的优化处理,并根据方案实际制作了小车。实践证明该方案是可行的,并且效果较好。
关键词:智能车;直立;速度控制;Kinetis K10;TSL1401CL
引言
以往的智能车竞赛分为光电组、摄像头组及电磁组。在本届比赛中,光电组首次尝试小车直立行走,并且首次采用线性CCD作为图像采集传感器。本文介绍以飞思卡尔Kinetis K10为主控芯片,如何使用线性CCD所采集的图像进行数据处理的过程以及基于独创的双速度控制算法,从速度控制上解决了智能车过障碍的问题。
1 设计原理
1.1 数据采集算法
检测路径参数可以使用多种传感器件,如光电管阵列、CCD图像传感器、激光扫描器等。各种检测方法都有相应优缺点,其中最常使用的方法为光电管阵列和CCD图像传感器。如何有效利用单片机内部资源进行路径参数检测,是确定检测方案的关键。
CCD传感器是一种新型光电转换器件,它能存储由光产生的信号电荷。当对它施加特定时序的脉冲时,其存储的信号电荷便可在CCD内作定向传输而实现自扫描。CCD有面阵和线阵之分,面阵是把CCD像素排成1个平面的器件;而线阵是把CCD像素排成1直线的器件。本设计中使用线性CCD作为图像传感元件。
在本设计中选用TSL1401CL线性CCD,TSL1401CL线性传感器阵列由一个128×1的光电二极管阵列、相关的电荷放大器电路和一个内部的像素数据保持器构成。该阵列由128个像素组成,其中每一个像素的光敏面积为3 524.3μm2,像素之间的间隔是8μm。该芯片操作简单,只需要一个串行输入信号和一个时钟信号即可进行数据的读取。
在CCD采集上,所采用的曝光时间自适应策略如图1所示。
从图1可看出,该曝光时间自适应策略就是一个典型的闭环控制,控制对象是线性CCD模块的曝光时间,反馈是线性CCD感应到的曝光量。调节的目标是设定曝光量。控制器的工作原理是将设定的曝光量减去实际曝光量,差值即为曝光量的偏差e,曝光量调节器用Kp乘以e再加上上次的曝光时间作为新的曝光时间进行曝光,曝光时间调整后直接影响实际反馈的曝光量,如此反复进行调节就能达到适应环境光的目的。我们的做法是取一次采集到的128个像素电压的平均值作为曝光量当量,设定的曝光量也就是设定的128像素点平均电压。
1.2 数据处理算法
在图像处理中,采用边缘检测法检测赛道。因为赛道采回图像电压值不同,白色赛道与黑色赛道边缘的交界处会出现图像的凹槽,也就是图像数值的下降沿。将CCD的128个图像点进行坐标标注,由0~127,就可以确定出两边黑线的左右值。
得到左右坐标,根据公式“中线=(左坐标+右坐标)/2”,就提取到了中线。当然还要考虑边线丢失的情况,我们采取补线的策略,如果这一时刻坐标丢失就采用上一时刻未丢失的坐标代替,这样无论在十字弯、直道、弯道还是虚线,都可以实现很好的识别与控制,适应各种不同的赛道要求。
对电机的控制上,采用传统的PID控制算法。PID控制是最早发展起来的控制策略之一。PID控制器综合了关于系统过去(I)、现在(P)和未来(D)三方面的信息,控制效果令人满意。工业控制95%以上都采用了PID结构,具有简单、鲁棒性好和可靠性高的优点。
PID算法示意图如图2所示。
其中,所采用的数字PID算法公式如下:
综上所述.在小车控制系统的闭环部分均采用了传统数字PID算法或改进型智能PID算法。
2 双速度控制算法方案设计
2.1 传统速度控制算法
由于车模的整个行驶过程是时刻变化的,在赛道构成复杂且车模运行速度很高的情况下,对于系统的响应要求很快。因此速度控制必须具有迅速、准确、响应快的特点。由PID原理知:I(积分项)的迟滞效果会让控制系统响应变慢,因此为适应直立车模高速运行下的各种不同类型赛道,放弃官方设计方案中所推荐的PI控制,而采用反应更迅速、调节速度更快的PD控制。
直立车模是双电机分别控制左右轮,并且通过左右轮的差速进行转弯。在直立车的电机控制中,PWM波的输出是由直立控制量、速度控制量与转向控制量共同组成的,即:
电机输出量=直立控制量+速度控制量+转向控制量 (1)
传统速度控制算法中控制公式为:
速度控制量=速度设定值=速度测量值=速度设定值-(左轮速度+右轮速度)/2 (2)
由上式可知,实际值为左右轮速度的平均值。得到速度控制量同时加给左右电机,即左右电机速度控制量始终相同,由此可知左右电机速度控制量始终相同。在传统速度控制算法下,转向控制量相对于速度控制量来说相当于是一种扰动量。
2.2 双速度控制算法
我们所设计双速度控制的思想如下:
左电机输出量=直立控制量+左轮速度控制量+转向控制量 (3)
右电机输出量=直立控制量+右轮速度控制量-转向控制量 (4)
因为在小车行驶过程中,小车保持直立,因此在小车直立行驶状态下,直立值为固定值,所以:
左速度控制量=没定值-左轮速度测量值 (5)
右速度控制量=设定值-右轮速度测量值 (6)
左、右轮速度值均由该轮速度控制量与转向控制量同时给定。
由此可知:
左轮速度控制量=设定值-(速度控制量测量值+转向控制量测量值)
右轮速度控制量=设定值-(速度控制量测量值+转向控制量测量值)
则实际上,转向控制量为速度控制闭环中一部分,在C语言实现时,将两控制量由同一控制算法计算。最终输出量为:
电机输出量=直立控制量+速度与转向控制量
由原理可知,在直道上行驶时,因为转向控制量接近于零,所以传统速度控制与我们所使用双速度控制下的速度输出量相同。转向时,由于图像采集后的PID控制产生转弯控制量,形成左右轮差速,实现车模转弯。传统速度控制模式下转弯控制量并不受速度控制调整,转弯量相对速度控制参数来说是一种扰动量,在双速度控制算法下,转弯量因对当前轮胎转速造成影响,故受到该轮速度控制调节。双速度控制下,当车模运行转弯时,双速度控制实际上会减缓车模入弯控制速度,加快车模出弯控制速度。实验效果上,因双速度控制减缓车模入弯控制量,则在很大程度上减小了车模因快速入弯而造成的侧滑以及侧翻,而对于出弯的快速调整,使车模可以在出弯后更快地调整车模位置,便于处理连续弯道及出弯后的障碍、虚线、起跑线等特殊赛道情况。因此,双速度控制下,转弯时速度控制量不为零,相当于系统转弯时始终有速度闭环存在,轮子的左右差速由速度闭环控制。
3 实验数据
以下为各种不同道路情况下,测得系统在不同路况下所能通过的最短时间,由光电门测量计时,如表1所列。
由以上数据可以看出,在弯道越多时,双速度控制所带来的速度提升越明显,而在连续小S弯道时所带来的提升不大。
在本届智能车竞赛中,对光电平衡车来说,对于速度提升最大的考验是本届智能车首次加入的障碍部分。障碍部分最大的难点在于,车模直立状态经过障碍时,不可预测是车模的左轮还是右轮先经过障碍。在车模高速行驶经过障碍时,会出现车模腾空、车模电机失速的现象。当电机失速时,车模落地时左右轮哪一个先落地同样不可控,由此车模回归地面速度不可控,造成车模倒地或侧翻。
双速度控制在很大程度上可以减小车模在过障碍时的失速。当车模经过障碍时,无论是左轮还是右轮先经过障碍,车轮失速、双速度控制下,双电机的速度控制是独立的,又由于对电机的控制采用调节速度很快的PD控制,可以控制电机在失速回归地面后迅速调整车身姿态,在车身重心较低情况下,高速通过单个障碍。经反复试验,PD控制下的双速度控制可以很好地克服车模过障碍时对车模产生的影响,效果很好。
结语
本届竞赛,组委会首次要求光电组直立,本设计基于飞思卡尔K10芯片,首次尝试使用线性CCD作为图像处理传感器。根据线性CCD所采图像,通过PID控制原理,采用双速度控制算法对高度复杂的不同路况、障碍等情况都实现较好处理,效果良好。