激光扫描原理的路径检测方案 第3页
至此硬件电路完成了对引导线的检测与波形处理。
软件实现
将激光扫描器安装在小车的正上方,使扫描线中心点位于车身的轴线上。改变小车轴线距引导线中心的位置y,记下脉冲信号相对于同步信号的偏移位置x,测得一组数据。用最小二乘法拟合可得出y与x的对应关系:
y=k×(x+ref ) (1)
其中直线斜率k与零位偏移ref的值与扫描器安装的位置有关。此外,测量脉冲信号(图3中CH4)宽度,可知此宽度与引导线的宽度成比例关系。
激光扫描器输出两个信号:同步信号与脉冲信号。同步信号用于指示每一个扫描周期的起始位置,而脉冲信号代表了扫描到的引导线信息。因此,可由这两个信号计算出小车当前相对于引导线的位置偏移。
由公式1可知,要得到小车的位置偏移y,必需先确定零位偏移ref及直线斜率k。故在软件中设置自动校准环节:零位校准与斜率校准。具体流程如下:
首先将小车置于赛道中心,程序计算当前的x值,则零位偏移值ref = -x。然后,将小车平行移至一固定位置y(如引导线右方12cm),程序计算当前的x值,则斜率k = y / (x +ref)。至此校准环节完成。
要计算脉冲信号中心点相对于同步信号中心点的偏移量x,需要得到脉冲信号上升沿时刻s0、下降沿时刻s1,同步信号起始时间t0、同步信号结束时间t1,则有
x=(t1-t0)/2-(s1-s0)/2 (2)
要获得以上参量,最好方法是利用DG128的输入捕捉功能(ECT)。DG128总共包括8个输入捕捉通道,当任意通道的捕捉事件发生时,ECT即将当前的计数器值锁存到相应通道的输入捕捉寄存器。可以使用通道0作为同步信号输入端,通道1作为脉冲信号输入端。将通道0,1均设置为中断允许、任意跳变沿捕捉的方式。脉冲信号中断程序流程图如下:
如图7,index用于保存脉冲个数(可能检测到多个目标),每次同步信号发生跳变后index被清零,表示一个扫描周期的开始。脉冲信号产生跳变时,即进入此中断程序,首先读取输入捕捉寄存器的值(即跳变发生的时刻)、之后判断此跳变是否为本次扫描周期内的首次跳变(index是否等于0),若是,且本次跳变为下降沿,则忽略并退出中断;若首次跳变为上升沿,则将此次跳变的时刻存入数组s0[index]。假如并非首次跳变,若该跳变为上升沿,则将跳变的时刻存入数组s0[index];若为下降沿则存入数组s1[index],并将数组索引号index自加,以准备保存下一脉冲。
如图8,同步信号产生跳变时,表示上次扫描周期完成。进入中断程序,首先记下此次跳变的时刻t1,并获知当前为高电平或低电平,用于确定当前扫描方向;计算上次扫描周期内检测到的所有脉冲宽度,由于引导线宽度固定,而污损、缝隙等产生的脉冲往往宽度很小,可以设置一个合适的阈值,将可能存在的干扰脉冲滤除;由公式(2)与公式(1)计算出小车距引导线的偏移量;最后,将t1的值赋予t0,作为下一扫描周期的起始时刻。
结语
至此,激光扫描器实现了路径检测功能,并成功地应用在我们的智能车上。这种开创性的扫描检测方式,带来了大前瞻、连续的路径检测效果,前瞻距离可以超过70cm,检测精度可达到1mm,使光电管方案产生了突破性的进展。若采用多个扫描器组成多条平行的扫描线,则理论上可得到与CCD相媲美的路径检测能。此外,本文介绍的实现原理,也完全适应于CCD方案,CCD的行同步信号相当于本文中的扫描同步信号,CCD输出的模拟视频信号,相当于本文中的光电信号,利用相同的电路原理,配合DG128的ECT功能,可以用最少的CPU时间开销和内存开销,达到理想的路径检测效果。
参考文献毕业论文
http://www.youerw.com [1] 卓晴,等.学做智能车——挑战“飞思卡尔”杯[M]. 北京:北京航空航天大学出版社,2007.03
[2] Freescale Semiconductor. ECT_16B8C Block User Guide V01.06[R].2006
[3] Freescale Semiconductor.9S12DT128DGV2/D V02.15[R].2006
[4] SANYO. DL-7147-201 VER.2[R] .2003.01
[5] National Semiconductor Corporation. DS012051[R].2004
上一页 [1] [2] [3]
激光扫描原理的路径检测方案 第3页下载如图片无法显示或论文不完整,请联系qq752018766