(1)摄像头图像采集模块
采用CMOS摄像头作为识别路径的传感器。此模块的主要作用是识别黑色引导线,工作原理为:摄像头的信号通过LM1881视频分离芯片向DGl28产生行信号中断和场信号中断,以控制图像A/D值的采集;然后通过边沿提取算法提取出每行黑线的位置,通过提取连续段重新购建一帧图像的算法对整个图像进行处理。
(2)驱动模块
Freescale公司生产的MC33886芯片是一款性能优良的直流电压驱动芯片。通过输入不同占空比的方波信号,可以在MC33886的输出端得到不同的电压,进而驱动电机,实现调速。
(3)测速模块
采用光电耦合管和自制的码盘作为测速的传感器。光耦合管的输出信号经过555定时器组成的斯密特触发器整形得到一定频率的矩形波信号,再经过DGl28的输入捕捉功能提取出小车的速度值。
(4)舵机转向模块
为了保证小车在转弯过程中既能快速响应,又防止速度过快冲出跑道,利用汽车转向机构原理,把舵机的位置进行了提升。这样可以增大力矩,使小车快速响应,按照轨迹进行快速转弯。
2 图像采集及处理
2.1 图像采集
常用的摄像头视频输出信号是电视机的PAL制式。它的工作原理与电视机的工作原理相似:在一定分辨率下,每秒扫描25帧图像,每帧图像含有625行信息;分为奇、偶场,隔行扫描;总共每秒50场信号,每场有312.5行信息;从奇数行开始扫描,即依次扫描第l、3、5、7、9……当扫描完奇数场后,再开始扫描偶数场,构成一帧图像。
对图像的采集是根据摄像头的行信号和场信号对图像模拟量的采集。如图2所示,输出信号包括行同步信号、场同步信号、图像信号以及各种消隐信号。行同步信号代表一行的图像数据扫描开始。场同步信号代表一帧的图像数据扫描开始。要完成图像的正确采集,必须严格遵守时序的要求:当捕捉到一行信号时,开始对该行各点的模拟量进行采集,当下一行信号发生时表明该行采集完毕,需要对下一行的模拟量进行采集。
由于MC9S12DGl28片内A/D采样频率的影响,每一行采集的点数受到了限制,在系统时钟倍频到24MHz,A/D每次采集时间为2.3μs的情况下,每一行图像的采集能达到34个点。这虽然远远小于摄像头本身的分辨频率,但在不使用2.8 mm广角镜头的前提下,仍能分辨出黑线,因此我们将数组列数设为34,同时每间隔6个摄像头行信号采集一次,一共有312个行信号,则一共可采集312/6=52行。去掉首尾干扰加大的行,选择采集46行,因此数组的行数为46。最终,设定的数组大小为:data_savel[46][34],还原效果如图3所示。
2.2 图像采集的处理方法
这里的黑色引导线以白色为衬底,因黑线和白色底板存在很多大灰度比,在图像信号上会形成相应高低不同的电压值。当检测到黑线时,图像信号中将形成一个“凹”形槽,图4中凹槽处即是黑线在一行数据中的相对位置(26)。
对图像每行数据的处理将得到每行图像中黑线的相对位置,即下面的行数据处理;而对每行图像中黑线的位置的综合分析将再现黑线的形状,即下面的帧数据处理。本设计将采集的模拟量数据存放在一个二维数组中,当完成对一行数据的采集后,就可以对该行的数据进行处理,即提取黑线的算法。在提取黑线上采用边沿提取法。该算法具有对黑线反应灵敏、准确度高、抗干扰能力强等特点。
图5表示的是光线比较好的情况下,A/D采集一帧中一行图像的数值结果,即二维数组中的某一行数据。小圆点的纵坐标表示A/D采集值,横坐标表示采集点在二维数组该行中的相对位置。
边沿提取法,即通过程序检测到上述图形的上升沿和下降沿,然后通过上升沿和下降沿的位置求出黑线的位置。边沿提取算法流程:
①通过i控制循环语句不断检测上升沿或下降沿。当第i个点的A/D值与第i+2个点的A/D值之差大于设定的阈值时,表明出现了下降沿,这时读取i的值。
②一旦出现了下降沿,就开始不断地判断第i+2个点的A/D值与第i个点的A/D值之差是否大于设定的阈值。如果大于则表明检测到了上升沿,这时也读取i的值。通过2次i的值,便能够求得黑线对应的点是第几个点,进而求出黑线与小车轴线的相对位置。其提取流程如图6所示。