0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于红外对管阵列的循线技术原理及应用研究

电子设计 来源:电子工程网 作者:电子工程网 2021-04-13 13:47 次阅读

硬件基本构架]

对于机器人的循线,为了获得场地上白线(黑线)的信息,硬件结构一般有如下几种种类。

1、红外对管阵列。采取这种方式的机器人比较多,尤其在各种机器人竞赛中,几乎是标准配置。但是这种技术有一个致命的弱点,就是对于场地光线的干扰特别敏感,而且也很难把红色和白线区别开来,所以使用受到一定的限制。一般解决这类问题的方法是在红外光上加载一个调制波,通过检测这个调制波来消除场地光线的干扰,至于如何解决红色和白色的区别问题,那就几乎是五花八门了。

2、光纤传感器阵列。采用这种传感器阵列的原因是,光纤非常细,在单位面积内可以安装更多的传感器,从而获得更精确地场地信息。当然,钱也也花得更多。

3、线性CCD。这种硬件方法几乎是一种对场地信息分辨率的BT追求,如果说红外对管阵列还是离散信息的话,那么线性CCD就是线性的连续数据。当然驱动它也不是一件容易的事情,对于单片机也有更高的速度要求。

4、视觉。废话少说——否则明天我都别想吃饭。

[基本原理]

所谓循线,就是通过一定的传感器探测地面色调迥异的两种色彩从而获得引导线位置,修正机器人运动路径的一种技术。——说的太拗口了。不说太多理论的东西,我们就从基于红外对管阵列的循线技术来说起。

假设,我们使用的是黑底白线的场地。红外对管阵列由3个红外对管1字摆开组成。白线的宽度略小于或等于红外对管阵列的宽度

1、数据的采集。

对于机器人来说,通过传感器感知周围事物的信息,利用这些信息并不作太多智能上的计算而直接通过一定的转换,指导机器人的运动——这种形式在人工智能学上叫做机器人的“反应范式”。所以,我们要想让我们的机器人能够寻着我们给定的轨迹线运动,第一步就必须让他感知到轨迹线的存在。一般的做法就是通过AD采样,获得红外对管(传感器)反馈回来的电压信息。然而,这样获得的电压值信息是无法直接指导运动的,必须把他们转化为二值的(也就是二进制信息,1表示线存在,0表示线不存在)信息,然后通过处理每一个管子反馈回来的二值信息获得白线的位置信息。

>>技术点AAD信号的阀值化。(你可以参考其它的算法,获得比较详尽的技术,我这里只是举例一二)

所谓阀值化,就是通过一定的范围把握,从而把线性的数据转化为离散数据的一种变换。简单的说,就是通过分段函数的方法,将数据分类。在我们这个应用中,就是想方设法使AD采集回来的电压值变化为一个恰恰能够准确表示白线位置信息的二进制信息,1代表白线存在,0代表白线不存在。由于白色和黑色在电压差异上非常之巨大,所以可以简单的通过一个标志线来区分它们,当电压值高于这个标志线了,就把他标志为1,否则就标志为0,算法描述为:

o4YBAGB1MmSAd6xAAAAKj1D3Zss632.png

这样做非常简单,适合于比较标准的场地,然而对于那些模糊了的场地或者是非标准场地,虽然人的肉眼能够看出来,但是对于机器人来说,可能看到的就是花白的一片或者是黑色的夜幕。当标志线值过高时,机器人能看到的只是那些特别明显的白线,其他则是黑色的夜幕,很容易丢失轨迹线;当标志线值过低时,机器人眼中就是白茫茫的一片毛刺。总而言之,对场地的适应性非常差。解决方法是,通过设定两个标志线来标定轨迹线信息,当AD值高于某一值时,标志1;当AD值低于另外某一值时,则标定0。算法描述为:

o4YBAGB1MlyAVQzRAAATlqmo7qE311.png

>>技术点B动态预值。(你可以参考其它的算法,获得比较详尽的技术,我这里只是举例一二)

当然,这种算法在简单的机器人循线中不是很常用。比较常见,适应性强的方法是,首先从AD值中找到一个中间值作为MarkLine,(或者可以从AD值中找那些比较接近最大值和最小值之差的0.618倍的数值),然后再使用第一种方法标记,这样的算法叫做动态预值。如果把这种算法应用于第二种当然也不多啦。

2、数据的简单加工——第一个循线程序。

到目前为止,我们已经把AD的值的数组转变为了一个表示白线位置的二进制位的数组——我们不妨直接把他用一个字节表示哈。那么,这个字节的状态就表示了当前白线的位置信息。再假设,我们已经写好了几个函数用来分别控制小车的左右运动。那么我们就可以通过以下的简单方式来实现循线了。

//用字节的高三位表示三个管子检测到的白线信息。

switch(LineInforByte

{

case0b11100000://全部在白线上

Motor_Left_GoFront(FullSpeed);

Motor_Right_GoFront(FullSpeed);

break;

case0b01100000://明显车子向左偏了哈

Motor_Left_GoFront(FullSpeed);

Motor_Right_GoFront(NormalSpeed);

break;

case0b00100000:

Motor_Left_GoFront(FullSpeed);

Motor_Right_GoFront(LowSpeed);

break;

……

//其他情况仿照上面自己写了哈。

default:

Motor_Left_GoFront(StopNow);

Motor_Right_GoFront(StopNow);

break

}

呵呵,这样就完成了一个循线小车的程序了哈。简单吧。

顺便说明一下下,Motor_Left_GoFront()函数是一个控制电机PWM输出的函数。

FullSpeedNormalSpeedLowSpeedStopNowStopFree是一些控制PWM的宏定义,你可以修改这些宏定义的值来实现以上的功能。我想,你看了这个程序应该已经对循线的基本原理了然于胸了吧。哈哈哈哈哈哈哈哈。

3、数据的高级加工——复杂地面情况的模糊识别算法。

以上的算法的确可以应付规范场地下的情况了,但是由于其类似查表式的数据处理方式,一旦出现真值表中没有的情况——哪怕是很明显的直线存在——机器人都没有办法处理了。典型的就是在地上有大块的白色斑点,导致机器人对白线视而不见。

解决以上问题的方法还要从人眼识别白线的原理上说起。在破坏严重的场地上,人类的眼睛仍然可以识别出原先的白线,这是为什么呢?通过重心。人类的眼睛通过捕捉白线的重心确立白线的大体轨迹,从而辨认出白线的位置。从概率的角度上说,在破坏严重的场地上,出现在白线两边的浅色干扰的概率是一样的,即使不同,由于白线本身的存在,其重心至少是不会偏离白线很远的,所以,只要简单的获得地面浅色标志的重心,就可以大体确立白线的所在。我们可以利用物理学上质心的算法获得这一信息。忘了说一点,要想机器人增强对环境的适应力,就需要增加传感器的数目。我们不妨用8个红外管作为传感器。这样通过处理后获得的场地信息就整整1个字节了。假设1个光电管的1拥有1单位的重量,八个光电管的坐标分别为-7-5-3-11357,其间距都是2个单位,通过置信公式很容易计算出质心的坐标,通过这个坐标和0的绝对值,就可以知道当前机器人偏离白线的多少,而这个偏离值则可以通过简单的比例直接指导运动函数。典型实例如下:

/********************************************************

*函数说明:电机动作调速函数*

*说明:该函数放在定时器或者主循环里面用于产生软PWM*

********************************************************/

voidSpeedPWM(charPWMLine)

{

charPWMLine_L=PWMLine;

charPWMLine_R=PWMLine;

staticcharPWMCount_L=0;

staticcharPWMCount_R=0;

charTemp=0;

if(FollowLineEnable==True)

{

Temp=(char)fabs((float)CG_X);

if(AdcValueFlag==0)

{

Temp=0;

}

else

{

if(CG_X<0)

{

if((Temp<<4)<=PWMLine_R)

{

PWMLine_R-=((Temp<<5)+Temp<<2);

}

else

{

PWMLine_R=0;

}

}

else

{

if((Temp<<4)<=PWMLine_L)

{

PWMLine_L-=(Temp<<5);

}

else

{

PWMLine_L=0;

}

}

}

}

PWMCount_L++;

PWMCount_R++;

if(PWMCount_L>Fastest)

{

PWMCount_L=Stop;

}

if(PWMCount_R>Fastest)

{

PWMCount_R=Stop;

}

if(PWMCount_L<PWMLine_L)

{

switch(GoDirection)

{

caseFront:

Motor_Left_GoFront;

break;

caseBack:

Motor_Left_GoBack;

break;

caseLeft:

Motor_Left_GoFront;

break;

caseRight:

Motor_Left_GoBack;

break;

caseStop:

Motor_Left_Stop_Free;

break;

}

}

else

{

Motor_Left_Stop_Free;

}

if(PWMCount_R<PWMLine_R)

{

switch(GoDirection)

{

caseFront:

Motor_Right_GoFront;

break;

caseBack:

Motor_Right_GoBack;

break;

caseLeft:

Motor_Right_GoBack;

break;

caseRight:

Motor_Right_GoFront;

break;

caseStop:

Motor_Right_Stop_Free;

break;

}

}

else

{

Motor_Right_Stop_Free;

}

}

/********************************************************

*函数说明:获取偏离轨迹线的数值*

*输入:表明寻线状态的字节*

*[说明]*

*通过类质心算法获取当前机器人偏离轨迹线的量*

*-表示偏左+表示偏右*

********************************************************/

signedcharGetCG_X(unsignedcharAdcValues)

{

signedchara=0;

signedcharTemp=0;

signedcharTotals=0;

for(a=0;a<8;a++)

{

if((AdcValues<<a)>>7)

{

Temp+=((-7)+(a<<1));

Totals++;

}

}

if(Totals==0)

{

return0;

}

return(Temp/Totals);

}

函数调用GetCG_X函数,用来获取CG_X,CG_X直接在PWM输出函数里面指导机器人的运动。

以上方法的好处是,提供了一个比例调节循线动作的可能。支持多传感器的情况,尤其适合线性CCD类的线性数据的处理。为机器人提供了一个相对完整的视觉,不可能出现无法识别的情况,而且,这种情况可以使机器人在不加修改程序的情况下直接在在白线循线和黑线循线状态下切换。

责任编辑:gt

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 传感器
    +关注

    关注

    2526

    文章

    48092

    浏览量

    740031
  • 机器人
    +关注

    关注

    206

    文章

    27033

    浏览量

    201393
收藏 人收藏

    评论

    相关推荐

    第三代红外技术(IR-III)并不是阵列

    。帕特罗(PATRO)第三代红外摄像机技术阵列式区别: 亮度:第三代阵列式将发光二极按照阵列
    发表于 02-19 09:35

    ZigBee技术在矿灯监控中的应用研究

    ZigBee技术在矿灯监控中的应用研究
    发表于 03-15 13:27

    红外传感器在汽车改造技术中的应用研究

      摘要:利用反射式近红外传感器及语音录放组件,研究了汽车倒车防撞语音提示器 当汽车倒车时,只要距车身后尾一定的距离内有人或物体存在,就会有一部分红外光信号经人或物体反射回来,被与发射
    发表于 11-13 11:02

    碳纳米阵列天线的辐射性能

    1、引言自1991年日本Iijima教授发现碳纳米以来,纳米技术吸引了大量科学家的兴趣和研究,是目前科学界的研究热点。基于碳纳米独特的电
    发表于 05-28 07:58

    多路复用技术在水声探测系统中的应用介绍

    光纤(光栅)水听器已经成为目前水声探测灵敏度最高的器件。它具有较小的体积并且适于成阵,是目前水声探测系统的热门研究对象。基于多路复用技术的分布式阵列则是光纤(光栅)水听器应用研究的发展
    发表于 04-19 06:28

    智能家居的应用研究现状 精选资料分享

    智能家居的应用研究现状摘要:随着关键技术发展和消费者增长的需求,智能家居成为近年来家电行业的关键词。智能家居是以住宅为平台,贯彻以人为本的设计理念,利用计算机、网络通信、综合布线等技术将家居设备
    发表于 07-19 09:08

    如何去实现一种基于单片机智能循线避障智能小车系统设计

    智能循线避障小车设计与制作【摘要】:提出了一种智能循线避障小车的设计方法,利用红外技术检测障碍物和采集地面信息,采用AT89S52单片机进行适时控制,实现智能
    发表于 12-13 07:09

    Holon技术在敏捷制造系统中的应用研究

    Holon技术在敏捷制造系统中的应用研究 Application of Holon Technology in Agile Manufacturing System
    发表于 03-16 10:52 12次下载

    红外光谱仪的阵列检测技术研究

    本章叙述了近红外光谱技术、近红外光谱仪器的发展现状,阐述了阵列检测技术及其特点。最后介绍了论文的研究
    发表于 11-09 21:50 72次下载

    蚁群算法在文本聚类中的应用研究

    蚁群算法在文本聚类中的应用研究_张海涛
    发表于 01-03 17:41 0次下载

    ZigBee和GPRS技术在水文监测系统中的应用研究

    ZigBee和GPRS技术在水文监测系统中的应用研究
    发表于 01-08 15:31 10次下载

    基于UWB无线通信技术在矿井中的应用研究

    基于UWB无线通信技术在矿井中的应用研究
    发表于 11-18 09:41 11次下载

    电力载波技术在电力线路故障监测中的应用研究_魏建炜

    电力载波技术在电力线路故障监测中的应用研究_魏建炜
    发表于 03-19 11:29 0次下载

    RFID技术在供应链管理中的应用研究

    电子发烧友网站提供《RFID技术在供应链管理中的应用研究.pdf》资料免费下载
    发表于 10-09 16:23 0次下载
    RFID<b class='flag-5'>技术</b>在供应链管理中的<b class='flag-5'>应用研究</b>

    QPSO算法在天线阵列波形优化中的应用研究

    电子发烧友网站提供《QPSO算法在天线阵列波形优化中的应用研究.pdf》资料免费下载
    发表于 11-08 15:49 0次下载
    QPSO算法在天线<b class='flag-5'>阵列</b>波形优化中的<b class='flag-5'>应用研究</b>