基于激光扫描原理的路径检测方案

点赞:33689 浏览:156517 近期更新时间:2024-02-18 作者:网友分享原创网站原创

摘 要:本文针对智能车的路径检测,提出了一种全新的、基于激光扫描原理的实现方案.在介绍激光扫描器工作原理的基础上,结合智能车路径检测的具体要求和特点,给出了硬件电路解决方案以及软件算法设计,实现了大前瞻、高精度的路径检测效果.

基于激光扫描原理的路径检测方案参考属性评定
有关论文范文主题研究: 关于信号的论文范文 大学生适用: 学位论文、学年论文
相关参考文献下载数量: 44 写作解决问题: 怎么写
毕业论文开题报告: 标准论文格式、论文总结 职称论文适用: 期刊发表、职称评初级
所属大学生专业类别: 怎么写 论文题目推荐度: 最新题目

关 键 词:智能车;路径检测;激光扫描;飞思卡尔

引言

飞思卡尔智能车比赛的赛道,由白色泡沫材料及其中心的黑色引导线组成,对赛道信息捕获的效果好坏,直接决定着智能车的速度及控制性能.通常采用的路径检测方式,不外乎CCD与光电两种.CCD方案具有先天的优势,不仅能得到赛道的丰富信息,而且可实现远距离的前瞻,对车模重量及稳定性的影响也很小;而光电方案受传感器数量、车模重量及稳定性所限,获得的赛道信息十分有限,前瞻距离也不足,使得使用光电管方案的队伍成绩普遍不如使用CCD方案的队伍.

是否光电方案就真的不可能得到连续的、前瞻性好的信息呢设想如果只用一对光电发射/接收传感器,利用光学装置让发射光线形成一条高速扫描线,就可以得到一行完整的赛道信息,如果有3个这样的装置,即可获得赛道曲率和角度.另外,如果使用能量高度集中的激光作为光源,则检测距离可大大增加.正是基于这种想法,我们想到了利用条码扫描仪中的激光扫描器.

激光扫描器正是利用快速摆动(或旋转)的镜面,反射能量高度集中的激光束,使激光束的出射角度随着反射镜的运动产生连续的变化,从而投射出一条扫描线.虽然只有一个光电检测器和一个光源,但由于反射镜的高扫描频率,使得扫描器几乎可以同时得到一行的图像信息.当然,我们还需要做许多额外工作,才能将条码扫描器应用于路径检测.

 激光扫描器检测基本原理

激光扫描器的基本原理与基于红外路径探测的原理类似,但存在如下不同点:

激光扫描器通常使用波长为650nm的激光管作为光源,能量高度集中,远距离时光束发散角仍然很小,检测距离远且分辨率高,而红外光电检测方案,其光源发射角大,检测距离有限且分辨率低.

激光扫描器增加一个可控的振镜或旋转棱镜,实现动态扫描检测,可以获得一维图像信息,利用多个(通常3个就足够了)一维激光扫描器,可以获得与CCD方案近似的图像信息,而一对红外光电传感器仅能获得一个“像素”信息,要想获得足够的赛道信息,必需足够多的光电传感器,受规则所限的同时还要考虑到车模重量及稳定性,相对于CCD方案,光电方案获得的信息十分有限.

我队所使用激光扫描器原理如下.

光学部分

如图1所示,激光扫描器光学部分包含如下装置:激光二极管、准直透镜、平面镜、凹面镜、滤光片、光敏二极管、振镜.振镜由三部分组成:反射镜、固定于反射镜背面的永磁铁和用于固定反射镜的支架,支架可在一定角度内自由旋转.由激光管发出的光线经准直透镜聚焦后,成为平行光进入平面镜,经平面镜反射后穿过凹面镜的小孔,抵达振镜,由于振镜的周期运动改变其角度,故光束由振镜的出射角亦作周期变化,形成扫描线.与此同时,出射光在赛道上的漫反射光线通过振镜镜面,进入凹面镜的聚焦范围,经凹面镜聚焦后的光线,通过中心波长为650nm的滤光片滤除干扰光后,由光敏二极管转换成与光强相对应的光电流,再由后续硬件电路处理.

电路原理

如图2所示,激光扫描器包括以下电路.

控制电路:用于控制和和监视各个模块电路工作,若发生故障,则立即关闭激光管的输出,以避免高能量的激光点光源对人眼造成伤害.

激光管驱动电路:用于驱动激光管发出激光束.由于激光管的输出功率受温度影响较大,故通常在激光管内部设有一个光敏二极管,以监测激光功率.驱动电路使用此光敏二极管的输出信号构成功率闭环控制电路,从而稳定激光管的输出功率.

振镜驱动电路:振镜驱动电路用于驱动电磁线圈产生大小、方向可控的磁力,作用在反射镜背面的永磁铁上,从而控制振镜的往复运行,形成扫描线.同时,振镜驱动电路还输出一个用于指示扫描起始的同步信号,用于后续信息处理.

电流一电压转换电路(I/V转换电路):光敏二极管所产生的是随光强变化的电流,为便于后续电路处理,设置电流一电压转换电路,将光强转换为电压信号.

二值化:由光强转换得到的电压信号,经过动态阈值比较器,转换成0或1的二值化数字信号,分别指示了条码中的黑线与白区,最后由外部条码解码系统得到条码信息.

硬件电路

电路设计目的

激光条码扫描器输出的信号并不能直接用于赛道路径检测,主要原因如下.

为了准确检测到宽度为mil级的条码,激光扫描器的光源光斑直径非常小,其二值化输出信号对被测物十分敏感,以至于赛道上的黑斑、破损、缝隙等均可能导致错误输出,给后续的处理带来了困难,也大大降低了可靠性.


出于安全考虑,小型激光条码扫描器都使用小功率的半导体激光管,功率通常不会超过5mW,检测距离有限,并且使用时要求光束尽可能与条码面垂直,以获得足够的反射光.为了使小车获得足够的前瞻,我们希望其检测距离能达到70cm左右(自车头开始计),并且为了稳定重心,希望扫描器的安装位置尽可能低,这势必增大扫描线与赛道垂直面问的夹角,扫描器的反射光将大幅减少,使扫描器的检测距离与要求相差甚远.

为了解决这些问题,我们仅利用扫描器的光学系统和振镜驱动电路,自行设计其他附属电路,主要设计如下.

直接从扫描器中的I/V转换电路引出光强信号,结合其扫描同步信号,利用自行设计的电路完成赛道检测的硬件电路部分.

将原扫描器上的小功率激光二极管更换成相同波长、同种封装的大功率激光二极管.我们使用的是50mW的激光二极管,但原先的驱动电路不能与之匹配,故自行设计了激光驱动电路,并稍稍调整激光二极管的安装位置,有意使其偏离准直透镜的焦点位置,从而使扫描线适当加粗,降低扫描器对干扰目标的敏感度.

赛道引导线的基本检测原理

如图3所示,示波器的CHl接扫描同步信号,同步信号一个周期代表着两个扫描周期:高电平部分为从左到右扫描,低电平部分反之.通道CH2为I/V电路输出的光强信号波形,由实验可知,此波形中凹槽的宽度、位置与赛道黑色引导线的宽度、位置相对应,改变扫描线与引导线的相对位置,凹槽的位置也相应改变.值得注意的是,随着同步信号的高低电平变化,凹槽的位置呈水平镜像翻转.

实验得出:光强信号的幅值是不稳定的,与赛道的反射率有关:反射率大时,光敏二极管输出的电流相对较大,信号的幅值也相对较高,反之亦然,此外,与引导线对应的波形凹槽部分,其幅度也只有十几毫伏,基于这两种原因,如果简单地使用阈值比较器,不能稳定地检测引导线.通过分析信号波形,我们可以发现引导线信号(即波形中的凹槽部分)的两个特点:

电压变化率(dμ/df)最大,分别出现在引导线的两侧;

引导线信号的宽度与实际宽度呈对应关系.

由此,可以利用微分放大电路获得两个大幅度、方向相反的du/dt信号(如CH3所示),再利用两个比较器将两个信号检出(CH4),最后由DGl28的输入捕捉模块测量出脉冲的宽度与位置.

激光驱动电路

大功率半导体激光二极管通常不带有光敏检测管(PD),因此,我们没有使用功率闭环电路,而是采取了一个可调恒流源控制电路,使激光二极管的输出功率能在合适的范围内调节.如图4,电路的核心部分是由LM317L(三端可调稳压器)构成的恒流源电路,其最小输出电流为1.25V/(R22+R10)≈57mA,最大输出电流为1.25V/(R22)≈104mA.恒流电路为激光二极管提供了稳定的驱动电流,保证激光二极管的输出功率符合要求.

此外,为了在待机状态下减少功耗,电路中设计了关闭激光管的功能(由Q2、R21、U3F构成).

信号检测电路

完整信号检测电路如图5,考虑到激光扫描器内的光敏二极管输出信号十分微弱,而我们自行设计的电路与扫描器有一定距离,如果直接将光敏二极管引入到我们的测量电路,会产生较大的干扰,因此,我们从扫描器内的I/V电路的输出引出光强信号,I/V输出电路的阻抗较低,可以有效防止信号被干扰,如果读者无法找到这个信号,可以在离光敏二极管尽可能近的位置,使用微型封装的单运放电路实现一个I/V电路,参考电路如图6.

UOUT等于If×Rf

需要特别指出的是,由于光敏二极管产生的电流极小,应该使用低偏置电流的运放(f),例如LMC6462.

光强信号首先经过一个截止频率为34kHZ的二阶RC有源滤波电路,滤除高频信号,降低电路系统对诸如小黑斑、缝隙等干扰目标的敏感度.截止频率的选取与扫描速度有关,扫描速度越高,截止频率应该随之提高,在较低的扫描速度下,还可以进一步降低截止频率,以降低对干扰目标的敏感度.

滤波器的输出信号经过R29送由UIB为核心的微分放大器,这也是路径检测电路的核心,微分放大电路的传递函数为Uo等于-RC(dui/df),dui/dt即为输入电流的变化速率,R等于R47+R44,C等于C18.

R29的作用如下:一是限制微分放大电路的输入电流,防止小幅度的电压阶跃信号被当作引导线信号,调整R29的阻值可以改变输入电流的大小;二是防止微分放大电路的容性输入负载对前级运放电路的影响.稳压二极管D1和D2是用于防止UIB因为输出幅度过大导致运放进入深度饱和状态,影响运放对输入信号的响应能力,原理如下:当运放输出电压超过4.6V时(需要加上D2的正向导通电压0.7V),D1被击穿,将输出幅度限制在4.6V左右,当运放输出电压低于0.4V时(同样需要加上D1的正向导通电压0.7V),D2被击穿,将输出幅度限制在0.4V,需要注意的是:必须使用反向漏电电流低的稳压管,以防止稳压管的等效电阻降低微分放大电路的增益.

由于我们需要UIB工作在两个象限:对应输入电流变化率为正的上跳变和输入电流变化率为负的下跳变,而电路的工作电压为单电源,因此,我们利用电路中的R32和R34将运放的同相端加上一个12V/2的偏置,这样就可以在两个象限输出信号.图3中的CH2与CH3分别是微分电路输入/输出信号的波形,可以很清楚地观察到微分放大电路的作用.

微分放大电路的输出经过R22和C33滤除可能存在的尖峰脉冲后送入由U4A和U4B构成的比较器,分别将符合幅度条件的上跳变信号和下跳变信号分别检出,并经过U7E和U7B反相器(带施密特整形)送入由D触发器构成的RS触发器,触发器的输出波形见图3中的CH4所示,由于此波形中的脉冲代表了扫描线相对引导线的位置信息,下文将称之为“脉冲信号”.至此硬件电路完成了对引导线的检测与波形处理.

软件实现

将激光扫描器安装在小车的正上方,使扫描线中心点位于车身的轴线上.改变小车轴线距引导线中心的位置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,需要得到脉冲信号上升沿时刻SO、下降沿时刻S1,同步信号起始时间t0、同步信号结束时间f1,则有

z等于(t1-t0)/2-(s1-s0)/2 (2)

要获得以上参量,最好方法是利用DGl28的输入捕捉功能(ECT).DGl28总共包括8个输入捕捉通道,当任意通道的捕捉事件发生时,ECT即将当前的计数器值锁存到相应通道的输入捕捉寄存器.可以使用通道0作为同步信号输入端,通道1作为脉冲信号输入端.将通道0,1均设置为中断允许、任意跳变沿捕捉的方式.脉冲信号中断程序流程图如下:

如图7,index用于保存脉冲个数(可能检测到多个目标),每次同步信号发生跳变后index被清零,表示一个扫描周期的开始.脉冲信号产生跳变时,即进入此中断程序,首先读取输入捕捉寄存器的值(即跳变发生的时刻)、之后判断此跳变是否为本次扫描周期内的首次跳变(index是否等于O),若是,且本次跳变为下降沿,则忽略并退出中断;若首次跳变为上升沿,则将此次跳变的时刻存入数组s0[index].检测如并非首次跳变,若该跳变为上升沿,则将跳变的时刻存入数组s0[index];若为下降沿则存入数组s1[index],并将数组索引号index自加,以准备保存下一脉冲.

如图8,同步信号产生跳变时,表示上次扫描周期完成.进入中断程序,首先记下此次跳变的时刻t1,并获知当前为高电平或低电平,用于确定当前扫描方向;计算上次扫描周期内检测到的所有脉冲宽度,由于引导线宽度固定,而污损、缝隙等产生的脉冲往往宽度很小,可以设置一个合适的阈值,将可能存在的干扰脉冲滤除;由公式(2)与公式(1)计算出小车距引导线的偏移量;最后,将f1的值赋予t0,作为下一扫描周期的起始时刻.

结语

至此,激光扫描器实现了路径检测功能,并成功地应用在我们的智能车上.这种开创性的扫描检测方式,带来了大前瞻、连续的路径检测效果,前瞻距离可以超过70cm,检测精度可达到1mm,使光电管方案产生了突破性的进展.若采用多个扫描器组成多条平行的扫描线,则理论上可得到与CCD相媲美的路径检测能.此外,本文介绍的实现原理,也完全适应于CCD方案,CCD的行同步信号相当于本文中的扫描同步信号,CCD输出的模拟视频信号,相当于本文中的光电信号,利用相同的电路原理,配合DGl28的ECT功能,可以用最少的CPU时间开销和内存开销,达到理想的路径检测效果.