首页 » 技术文章 » 复杂路线下机器人的三点三轮寻迹系统

复杂路线下机器人的三点三轮寻迹系统

作者:  时间:2010-07-29 09:13  来源:EDN

  引言

  智能寻迹机器人是一种被广泛研究的机器人,而且国内外都有许多重要的比赛都以寻迹机器人为核心展开,如我国的飞思卡尔杯全国大学生智能车大赛,以及吸引亚太地区众多国家参赛的亚广联(ABU)机器人大赛等。

  所谓的复杂路线,即由小半径弯道、各种角度折道、直道等组成的不规则导引线,它是相对由大半径弯道组成、过渡平滑的简单路线而言的。笔者所设计的寻迹机器人小车,以AT89C52单片机为控制芯片,采用自制的3个红外光电传感器,以简单的设计、较低的成本实现了复杂路线下机器人的自主寻迹。

  硬件及电路

  1.1  控制芯片

  考虑到实用性和性价比,采用AT89C52单片机作为机器人的控制芯片。AT89C52是美国Atmel公司生产的低电压、高性能CMOS 8位单片机,片内含8 KB的可反复擦写的只读存储器(PEROM)和256B的随机存取数据存储器(RAM),32I/O口线,316位定时/计数器,1个全双工串行通行口。器件采用Atmel公司的高密度、非易失性存储技术生产,与标准MCS51指令系统及8052产品引脚兼容。

  1.2  传感器模块

  作为寻迹机器人的眼睛,选择合适的传感器是关键。目前市面上可选用的传感器主要有CCD传感器和红外光电传感器两种。近年来CCD传感器技术已趋成熟,在近几届飞思卡尔杯智能车大赛上,采用CCD传感器的智能车越来越多,并取得了不错的成绩。不过,CCD传感器价格较高,体积较大,数据处理相当复杂,因此在按既定路线行走的寻迹机器人设计中,红外光电传感器以其体积小、价格低、数据处理简单而显得更有优势。

  红外光电传感器由1个红外发射管和1个光敏二极管组成。工作时,红外发射管发射的红外光被被测表面反射回来,光敏二极管接收被反射光。由于被测表面的材质不同,反射率也不一样。当被测表面为白色时,反射光较强,光敏二极管将导通;反之,被测表面为黑色时,光敏二极管将截止。考虑到外界环境光照等干扰因素,输出的电压值有一定的波动范围,若直接输给单片机,可能导致检测判断错误。因此,需要将输出电压通过比较器(LM324)与预置的阈值电压比较,然后得出一个高低电平输给单片机。阈值电压通过试验测量得出,其电路如图1所示。其中LED为传感器工作指示灯,R1为阈值电压调节电阻。


传感器电路图

  根据上述电路,自制了3个简易的红外光电传感器。经测试表明,性能良好,有效检测距离为14 cm,满足机器人寻迹的要求。

  1.3  驱动模块

  驱动机器人行走的2个电机需要不同的转速来实现转弯。选用的驱动芯片为L293D,它包含4个输出通道,最大输出峰值电流为1.2 A,能同时驱动2个直流电机工作;其信号输入端和使能端接收到来自单片机的信号,控制电机的通断以及正、反转,还可以通过向使能端输入不同占空比的方波信号来调整电机转速 (PWM方式)

  如图2所示,IN端口接控制信号,OUT端口接电机的两端,EN端口接使能信号。一组IN端口输入为高/低或低/高电平时,能实现电机的正/反转。一组IN端口输入均为高或低电平时,电机将停转。EN使能端为高电平时,相应端口输入信号有效;反之,则输入信号无效。在EN端输入PWM波,通过调整 PWM波的占空比,即可实现电机的无级调速。


电机驱动电路

  寻迹控制

  机器人寻迹控制示意图如图3所示,机器人采用前轮驱动后轮辅助的三轮差动式行走方式。车体前部两轮均为主动轮,由两个电机分别驱动,利用它们的转速差来控制机器人运动方向;后轮为从动万向轮,仅起着支撑车体的作用。车底板前部以车体中心线为轴线对称放置着3个自制的红外光电传感器,作为机器人的寻迹传感器。


寻迹控制示意图

  机器人寻迹场地中除了黑线,其他区域均为白色。当传感器正下方为黑线时,输出“0”状态,当其为白色区域时,输出“1”状态。因此,理论上3个传感器输出的组合状态会有8种,如表1所列。每一种组合状态都对应着一种机器人下一步的行走动作,共有前进、左转、快速左转、右转、快速右转、原地旋转、停止 7种动作。

1

   本机器人有着双级转弯的设计,即普通转弯和快速转弯。当机器人对黑线的偏离量比较小时,使用普通转弯,即两个驱动轮都向前运动,速度一大一小,依靠两轮的速度差来实现转弯;而当机器人偏离黑线较远时,使用快速转弯,即两个驱动轮一个向前运动,一个向后运动,这样能迅速实现转弯。普通转弯用于大半径弯道、大角度折道,而快速转弯则用于小半径弯道和直角锐角折道等非平滑过渡路线。对于非封闭路线,还设计了原地旋转的动作,来实现原路返回:一旦机器人小车走完全程,3个传感器将均检测到白色区域,输出组合状态111”,此时一轮全速前进,一轮全速后退,小车原地旋转,直到掉过头来传感器检测到黑线为止。

  程序设计

  程序设计时,采用汇编语言编程。其思路为:第1步,系统初始化后,读取单片机P2口的值,然后对其P2.0P2.1P2.2按位取与,得到传感器模块的组合值。第2步,将得到的组合值与预定的值比较,若相等则执行相应的动作,否则继续比较,直到获得正确的动作。比较完全部动作后,转到第1步重新扫描传感器的状态值。

  为了进一步提高系统的安全性和可靠性,还需增加异常处理算法。可能出现的异常情况有:过小弯道或小角度折道时,机器人还来不及转过弯来,就已经完全偏离黑线。这种情况下,3个传感器都输出“1”,检测不到黑线,若不及时处理,机器人将无法继续寻迹。针对该情况,设计了原地旋转动作来找回预定路线,不过原地旋转有顺、逆时针之分,因此还得区分开来。改进后编程的思路为:每次读取P2口值之前,将其上一次的传感器组合值存入某个寄存器,当出现组合值为 “111”的情况时,立即查询上一次的值,根据该值,可以判断出机器人是从哪一侧偏离黑线的,从而进行顺或逆时针原地旋转。其主要程序如下:

……;系统初始化
SENSOR: MOVA,P2
ANLA,#07H;
P2口值,对P2.0P2.1P2.2按位取与
CJNEA,#07H,NEXT;
如组合值为111,直接转到动作判断程序,否则转到NEXT
LJMPDATA_PROCESS
NEXT:MOVR5,A;
将本次传感器组合值赋给R5
LJMPDATA_PROCESS
DATA_PROCESS: CJNE A,#07H,D1;
对组合值判断,确认为常规动作还是旋转动作
LJMP ROTATE
D1:……;
继续常规动作判断
……
ROTATE: MOV A,R7 ;
旋转判断,将上一次传感器组合值赋给A
CJNE A,#06H,R1;
对上一次传感器组合值判断,决定顺逆旋转
LJMPCLOCKWISE
R1:……;
继续顺逆判断
……
CLOCKWISE:……;
顺时针旋转动作
LJMP DELAYS
DELAYS:MOV A,R5
MOV R7,A;
将本次传感器组合值赋给R7
LCALL DELAY;
调用DELAYS子程序进行延时
LJMP SENSOR ;
重新扫描传感器状态
END;
程序结束

  结语

  根据上述设计思路,我们制作出寻迹机器人并进行了测试。测试场地如图4所示,黑色导引线宽度为3 cm,黑线周围区域均为白纸覆盖。测试结果表明:该寻迹机器人能在此复杂路线下平稳、顺利地沿着黑线走完全程,并在终点沿原路返回,达到了预期的目标。这为进一步研究复杂环境下的自动行走机器人提供了参考。

  本文的创新点为:使用3个自制的红外光电传感器,以简单的设计和较少的硬件实现了复杂路线下机器人的寻迹。而基于该机器人双级转弯的设计思想,可以增加传感器数量、组成传感器阵列来实现多级转弯,从而对机器人的自主寻迹有着更为精确的控制。

  参考文献

[1] 韩毅,张雪峰.一种低成本寻迹机器人的实现[J].微计算机信息,200852233235.
[2]
朱益斌,胡学龙,朱亚锋,.自主式寻迹机器人小车的设计[J].国外电子测量技术,2006257):4042.
[3]
何立民.MCS51系列单片机应用系统设计[M].北京:北京航空航天大学出版社,2003.

相关推荐

DIY玩家又有新玩意了 Arduino推出首款完整机器人

Arduino  机器人  2013-08-13

调整产业结构 璧山打造千亿级机器人产业

电子信息  机器人  2013-07-12

美国科学家研制电子皮肤 让机器人也有感觉

机器人  电子皮肤  2013-06-05

数字工厂和机器人:空客的自动化未来

数字工厂  机器人  2013-05-16

科学家设计6腿蜥蜴机器人有望未来勘测火星

机器人  自动化  2013-03-26

那些开创未来的十年:机器人兴起(1921-1930)

机器人  电路  2013-02-16
在线研讨会
焦点