原创 一种机器人的寻迹算法

2009-8-16 00:05 1845 4 4 分类: MCU/ 嵌入式

发布: 2009-4-06 13:25 |  作者: hnrain |   查看: 42次


摘要:针对基于光电传感器组寻迹的自动导引机器人,设计了传感器阵列的布置方式。根据此布置方式,提出了三个处理规则结合而成的轨迹识别算法。即使在导引线复杂的情况下,用此算法也能得出行进方向,控制机器人沿轨迹运动。甚至遇到干扰走错时,机器人也能自动纠错。
&I"M&{'EgD)E0关键词:机器人,寻迹算法,规则 电子园51单片机学习网.N-^&L!s;h(?

I-G!wX0`0引言

Kq `+??4ia0 电子园51单片机学习网XDnkIb-b'GZ[

近年来,机器人的发展遍及机械、电子、冶金、交通、宇航、国防等领域,机器人的智能水平不断提高。在自主式智能导航系统中,机器人要实现自动导引功能就必须要感知导引线,即常说的“寻迹”,这相当于给机器人一个视觉功能。

9E?^]$o{3?V OL0b0 电子园51单片机学习网WX"Eg"^SQB4e

笔者所设计的机器人是一个自动导引小车(AGV),包括两大部分:一是行进方向的检测处理;二是步进电机的驱动。电子园51单片机学习网Bw;knA


+}"FCf.tV,c0在该系统里,采用与地面颜色有较大差别的线条作引导,使用传感器感知导引线,用单片机AT89C52扫描光电传感器组,对采集到的信号进行分析处理并做出逻辑判断后,得到行进方向,然后根据一定的步数去驱动步进电机,实现机器人的循迹行进。

{ E eT1H/HN0

e#~ []9p(X2?0小车的驱动采用步进电机,因为步进电机具有快速起停能力,且转换精度高,正反转控制灵活。

jS'I!\.b-U0 电子园51单片机学习网5hE_*zcg Xo7x

硬件电路电子园51单片机学习网5A{ ke`@

电子园51单片机学习网sp,hP(A"V

采用AT89C52单片机作为控制核心对光电传感器送来的各种信号进行分析处理,以控制机器人的方向和驱动及数据显示等,如图1所示。

z'a{%g:lK2U0 电子园51单片机学习网"NP'h;P/}S*~0O)s X

    为了检测黑色导引线,笔者采用了8个光电传感器组成的矩阵组。如图2所示,相对于小车底盘的中心,我们布置了内外两层各4个传感器。每层4个传感器对应着中心的4个方向:前、后、左前、右前。可采用扫描方式分两次得到各行数据。

__8de-d:n.N}eG6T4Z0

f2Wi!B8rksW:B1J#I[06136_200904061326191OujU.gif电子园51单片机学习网dC2e Q [ M R)_Q

电子园51单片机学习网9K6~/[9uS*R!R%O

图1  硬件框图

1W$F:ik-zp'A0 电子园51单片机学习网/qe%N4KB^3s5Y

6136_200904061326192HOg5.gif

M{]2\V S B0

:@C}4PZKw'G4G0

U7c~*T^ W2M0z*l0 电子园51单片机学习网%n2? fL}

0s)nIUfgH0 电子园51单片机学习网&MVrNe;x

 电子园51单片机学习网E4|'|/X%k)`/[t-Z

电子园51单片机学习网q6_5O9?c4]

                          图2    光电传感器矩阵组       

Tp,}V1V:R4?7S0 电子园51单片机学习网,j`&p F;kd

导引线检测的具体电路如图3所示。此处采用的是TCRT1000反射式红外光电传感器。以第1行第1列的光电传感器为例,其工作原理是这样的:P1 .0输出低电平时,三极管A1015导通,光电传感器工作,TCRT1000的发射端发出不可见的红外光。当反射物由非黑色导引线变为黑色导引线时,光电三极管的基极接受不到反射光,从而光敏三极管由导通变为截止,使得集电极电压由低电平变为高电平,经过74LS14反相器反相整形,输出值由逻辑1变为逻辑0后,送入单片机中进行进一步处理。

Zo g.y7['YW0

+j$W*U-pr6Z*@0值得指出的是在此处PNP三极管A1015的使用。此处如果选用NPN三极管,则在开机或复位时P1口各位输出高电平会误扫描传感器矩阵,而选用PNP三极管就可以避免这种情况,能很好的控制光电传感器的工作,并可以增加驱动能力。

-~ e5Hi&Vb0 电子园51单片机学习网"}*i]C$y D}#y9Pj

点击看大图

.S^8P5[O0@z4V$n0

电子园51单片机学习网7N7Z-Q&G^~


图3    光电传感器寻迹电路图

)BELg+cLD0 电子园51单片机学习网 U])bOd} v

3   寻迹

o t M3V7b0 电子园51单片机学习网G7y*hg7tS!{[

单片机控制寻迹的原理是这样的:第一步,通过矩阵式扫描,即给光电传感器矩阵分别输入两个“1”信号的行值,将输出的4个列值信号分别存入两个地址(如30H、31H)的低4位,低4位从高到低分别对应着4个方向:前、后、左前、右前。然后用“F0”与这八位做“或”逻辑运算,即屏蔽掉高四位后作为本次的信号值;第二步,将本次的信号值与上一次扫描处理后的信号值进行逻辑处理,得出一个新方向,作为机器人行进的方向。 电子园51单片机学习网t j [hs_GDl

电子园51单片机学习网E v,A$u9w

在这个程序里,逻辑处理内外层得到新方向是寻迹的关键。笔者在其中按先后步骤使用了3种规则:电子园51单片机学习网0cD$J?[r


Y3d.Q+pFKj:d.F0前后比较规则,内外层切换规则,优先级规则。

6g&yi|!@0

lIrH:Q1V:h0(1) 前后比较规则电子园51单片机学习网[;Yn{B'A7j k


8],QVl MK0此规则是这个算法的核心规则。它的目的是尽可能的用新探测到的黑点作为新方向。新方向F通过

n{u&kh7S)Zl0 电子园51单片机学习网.G0Bt;a:Q0g

     6136_2009040613261948D12.gif                           (1)

J2X:f R*JKX0

O-WLnK3h8bv-g0来求得。(其中 为本次的信号值, 为前次的信号值)逻辑处理前“0”表示黑线轨迹,逻辑处理后“1”表示轨迹行进方向。举例如下:以内层为例,设当前测得的值为6136_200904061326195T8z4.gif电子园51单片机学习网X+? e Y^ElF


jM$]y8uZ0电子园51单片机学习网!aL2Q3n[$IG1s#z


7eF(])A%} u$W0且前一次测得的值为6136_200904061326196drYY.gif

#Bq2@ em)|0

? K7_9[q {w-N]0

ApQV0y[0

3dp(T!K:u0经过上述(1)逻辑处理后,假设结果为电子园51单片机学习网kq$m.c-oI n{@


A'd a$c|O9k3T06136_2009040613261979zlD.gif电子园51单片机学习网%M"w7s\ @4P$GlfO


Q9}#j/Z _7],q.V)E0

+I$VF Nu8O K0 电子园51单片机学习网\6o)rJ}`T-Pf O

则正前方是行进的新方向。

&APMy9Rv0 电子园51单片机学习网0vE L?'w

(2) 内外层切换规则

Q`X%O)LJ9VgXV c0

uE+|E,aS?8Pu0如果光电传感器组前后两次所检测的值完全一样,则在逻辑处理后会出现全零,这时保持原方向行进。如果碰到曲线拐弯或者曲线断续,则有可能出现多个“1”即多个方向,这时可采用“内外层切换规则”,也就是说从内层切换到外层,启用外层扫描值重复上述前后比较规则来进行判断。启用外层信号进行二次判断能很好的处理曲线拐弯及曲线断续等内层处理不好的情况。但用外层信号判断,因为其传感器布置的间隙距离比内层大,其控制精度不如用内层信号判断高。

i+} M \{I\0 电子园51单片机学习网0{ A i9A4X

(3) 纠错规则

/Jn0djQ"m Gg0

R/J^ v7M?"}7y&z0在运行中,传感器有可能受到干扰而发出错误信号导致机器人走错或迷失方向,这个时候纠错规则能让机器人后退起到纠错作用。所谓纠错规则就是在走错后出现了内外层左前、前、右前均没有探测到引导线,而后向探测到了导引线的情况下,让机器人后退,一直退到前面三个方向传感器里有传感器探测到导引线为止。此时再用(1)式求得新的行进方向,从而实现纠错功能。

G7L#VK?1Q(rg0

j TT'p+WG;lEL0其中前后比较法的逻辑处理及随后的判断程序具体如下:(30H放本次信号值,32H放前次信号值)电子园51单片机学习网jy'Om4gh\

电子园51单片机学习网 Jr.q"CB)Bn$t&o

DATADEAL:MOV       A,       30H

U(ba h"NH]}Y)A*q0

)j3x ~8tR\#v0             XRL       A,       32H电子园51单片机学习网,l B L9t^6J['G

电子园51单片机学习网 t2MUN(U{ e5@L

             ANL       A,       32H               ;按(1)式求新向电子园51单片机学习网1_(rP_-\2vMq.h


i/f7x5W QU8o0             MOV     36H,       A                 ;保存电子园51单片机学习网4Og_{+K'P0g


0Z _W sG(ohc|Vrx0             MOV      R3,       #8

#J,|&[BM ea'OU0

;F^,~CQ/S0             MOV      R4,       #0电子园51单片机学习网Mg;g6|Ci

电子园51单片机学习网,Nsoe j%u.q @c

COUNT:      JB    ACC.0,    ADDN

D S4k,{ ^ nqM0 电子园51单片机学习网1Bm`(v_(sxmI4p!p

COUNT1:     RR        A

$zG!f{k Kw9[0

G8a5q-y G$BUfs0             DJNZ       R3,  COUNT电子园51单片机学习网c SiT9t&S V

电子园51单片机学习网 R'Q"{eLk8O

             CJNE       R4,     #1H,    JUDGE   ;R4里所含不是1个“1”时,电子园51单片机学习网Ai(L | k(v"b$`W


!e4K5mHJ%hVJ0;转“JUDGE”再判断

&JA H$} v0wPU0 电子园51单片机学习网[JRz H/cX T6]

             AJMP      MOTORRUN                 ;R4里只有一个“1”时,以此电子园51单片机学习网4F3` b"t SM


t0a\8LUp0;“1”所代表的方向作为新方向电子园51单片机学习网r:T@@ECH

电子园51单片机学习网!R8M-JN@

ADDN:      INC        R4电子园51单片机学习网6I.^n/@%G$OH6@1WN

电子园51单片机学习网e-R-Yh]0U(C

            AJMP        COUNT1

Mg{u5H%|u0

7A/h8[b5V0JUDGE:       JC       KEEPMOVE                 ;少于一个“1”,保持原方向

0U;tp\ ~5{U0 电子园51单片机学习网$^#}E#N7Dxr

            AJMP        OUTCHECK                ;多于一个“1”,则取用外层

al4U f,o!u9b0

!d_U,r.B-n| U0……

RW|],o~!c7b'il0 电子园51单片机学习网[^e \S0P2B

MOTORRUN:……                                                             ;电机驱动子程序

9V#O+D#t*v m;aeR0 电子园51单片机学习网n3o9D"r&O$`

KEEPMOVE:……                                                               ;保持原运动状态子程序

FqsX S0

/m9H ]&dLz L0OUTCHECK:……                                                               ;取用外层信号值判断子程序

sV(C:~!J4LOI0

RVY8Sb/k$q0执行

:N y!|mF%e(P)Z5x f4b0

YEP$O yc0导引机器人的驱动方式采用一驱动轮一转向轮方式:将后轮作为驱动轮,前轮作为转向轮,通过切换转向轮向左或向右的方式改变机器人的方向。这种方式与汽车的控制方式一样,直线行进性能好,可以高速移动。从1个步进脉冲对应的行进路程,可以预算出应给步进电机发出的脉冲数。预定的行进路程以小于内层传感器间隙距离的1/2为宜,这样可以保证机器人位置测量的连续性和方向识别的准确性。单片机AT89C52根据其逻辑处理出来的方向,调用步进电机的驱动程序即可实现机器人循迹连续运动的功能。

FY%z2PJ0 电子园51单片机学习网;U:n(Ri el5foN

结束语

.KMd a wc$w"JG0 电子园51单片机学习网,?t z,\pi$X pD{ F

笔者在做好硬件部分的基础上,根据上述思路编制了程序进行了实验。实验中笔者采用了与底色有较大差异的黑色胶带作导引线,胶带宽1.8cm,其中导引线总长6000mm,断续部分的间断距离不大于10mm,步进电机执行一次驱动预定的行进路程为4mm。在没有强烈日光干扰的情况下,笔者所设计的寻迹系统能自动识别黑色导引线并选择正确的方向运动。测试结果:系统总能在60S内连续正确地走完全程,而且机器人(中心)所走的轨迹基本上在黑线上。可见,即使是比较复杂的曲线,笔者设计的导引机器人也能准确地实现寻迹功能。电子园51单片机学习网:u+Dq#\7DF8t


2_ CEM!rs0本文作者的创新点是:针对基于光电传感器组寻迹的自动导引机器人,设计了一种新的传感器阵列的布置方式。根据此布置方式,提出了三个处理规则结合而成的轨迹识别算法。电子园51单片机学习网6w^:W k_#o:[2pkW

电子园51单片机学习网+o^OQpkit

 

S1@scb?"Bd0 电子园51单片机学习网jh/Hp+M.g

 

C]O c3p0 电子园51单片机学习网{P6y"X[

参考文献电子园51单片机学习网"EY6iPF!m9U.J


"}.C2y"h"u+^01.  何立民.MCS—51系列单片机应用系统设计.北京:北京航空航天大学出版社,2003年电子园51单片机学习网b_7c/E+V#R/{&v bl

电子园51单片机学习网WI7c8|:yi6}

2.  廖华丽,周祥,董丰,王延旗.基于模糊控制的AGV寻迹算法.哈尔滨工业大学学报 2005(7)

#Z {Eo5M0

{4@:{FQ-q03.  胡银彪,冯建超.拖靶高度控制系统的设计.微计算机信息 2002(11)

jM9N l^tY#Da!I3C0
PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
4
关闭 站长推荐上一条 /3 下一条