基于Arduino技术的光电搬运机器人设计与编程(二):颜色识别与物块捕获

李振宇

(首都师范大学数学科学学院,北京 100048)

摘 要本文将运用Arduino IDE 提供的库函数,实现物块的颜色识别和超声波测距.通过对物块颜色的识别来确定搬运的目标位,设计机器人小车的行驶路线.利用超声波测距,动态调整机器人小车与目标物块的相对距离,对机器人小车准确捕获物块起着重要作用.

关键词:光电搬运;Arduino;颜色识别;超声波测距

0 引言

因为智能搬运小车涉及的技术细节较多,我们分2 篇论文介绍.在上一篇[5],着重叙述了智能小车的模拟循线及线路控制,使小车能够在场地图纸上平稳顺滑行驶,并通过判断各类交叉线,完成小车的转弯,从而实现了线路控制.本篇将介绍智能小车对物块颜色的识别以及物块的钩取技术,从而完成赛事指定的搬运任务.

1 颜色识别

颜色传感器是根据三基色原理,通过设置滤波器颜色选择的引脚,可以分别检测出物块颜色中的红(R)、绿(G)、蓝(B)三基色的强度,即饱和度数值,以及含白度即亮度数值,通过这些数值比对,即可区分物块的颜色.

TCS3200 是常见的一款颜色传感器(见图1).其核心部件是二极管光电滤波器.其中管脚S0 和S1组合可以选择滤波器透光频带的比率,与测量的颜色饱和度数值大小相关.本例设置为S0=1,S1=0,即20%比率.S2 和S3 组合可以选择滤波器频带,即选择所测量的哪一种基色,譬如S2=0,S3=0,测量三基色中的红色.特别地,如果设置S2=1,S3=0,对滤波器不做选择,全透射,可测量白度即亮度数值.毫无疑问,白色物块的亮度最高,黑色物块亮度最低,以此判断出黑白2 种颜色物块.

图1 颜色传感器TCS3200 示意

为简单起见,本项目采用第三方函数支持库“tcs3200.h”,其中的类tcs3200 中的成员函数color⁃Read(),可以方便读取物块三基色颜色的饱和度以及白度.关于tcs3200 类,程序开源,这里不做赘述.颜色测量应用程序为:

/*定义对象tcs,同时设定与OpenDuino 控制板数字端口14~18 连接,分别对应颜色传感器的S0,S1,S2,S3,OUT,并初始化.*/

/*根据以上数值做比对,判断颜色.以下均为实验数值,先行区分白度,鉴别出黑白物块.*/

将测量数值逐一通过串口监视器显示出来,是非常必要的.测量值受室内光线影响较大,在搬运物块前,务必先行修正比对参数值,通常只需要修改上述程序中的判断黑白两色的白度值即可.

2 物块捕获

本竞赛项目除任务一的物块放置A、C 和E 3 个区,还有任务二的10 个物块分2 组均放在F 和G 区(图2).本例采用舵机操作钩取物块的方式捕获物块,关键因素是准确测量机器人小车距物块的距离.

图2 物块堆放区

超声波测距选用通行的HC⁃SR04 模块(图3).该模块通过Trig 触发发出超声波,超声波遇到物块产生回波,转化为电信号由Echo 传入控制板进行处理,依据超声波的传输速度和反射时间计算出距物块的距离.

图3 HC⁃SR04 超声波测距模块示意

本例采用第三方支持库函数“HCSR04.h”实现距离测量.其定义的类UltraSonicDistanceSensor 中的成员函数measureDistanceCm(float temperature)如下,形式参数temperature 为当前室温:

/*以下触发产生10μs 超声波*/

/*以下考虑室温测量反射波时间计算距离*/

/*距离等于零或者大于某个参考值(本例修改为8.8 cm,依据是钩子的臂长)返回-1.0,其他情况返回实际距离*/

在编写实际下钩捕获物块程序前,先测量最远和最近的下钩距离,本例分别为7.68 和6.02 cm.以下是下钩捕获物块程序,室温参数26°C:

以上物块捕获程序,智能小车在循线运动过程中完成测量.小车在接近物块时需要前后移动,找到最佳下钩距离.实际应用需要根据室温、钩子臂长等因素修改程序的参数.

需要说明的是,任务二在小车接近F 或G 区堆放物块并测量之前,应先转角以对准所捕获物块(图4),转角弧度值可以通过三角公式计算. θ=arctan(a/b).如果小车旋转角速度为V,单位设定为radin/ms,则利用行驶函数延迟以对准物块:

图4 转角对准物块示意

在实验过程中,也可自右向左(或相反)超声波扫描以对准物块,实现程序不再赘述.

3 结束语

通过2 篇文稿的叙述,介绍了马达驱动机器人小车的设计、部分选材与制作特点,重点介绍了模拟循线、线路控制,以及对物块颜色识别、通过超声波测距准确捕获的系列程序,均为机器人小车顺利完成任务的关键所在.

也需要说明,本例的钩取物块方案不能获得竞赛满分130 分的成绩,要获得该成绩,需要将物块逐一码放在靶区10 环位置,这需要较为复杂的机械设计,而机械设计并非首都师范大学数学科学学院学生的特长,实现方法在进一步探讨中.

目前,数学科学学院学生在老师的指导下,尝试采用树莓派控制板与摄像头相结合,通过复杂的图像算法实现机器人小车的循线、颜色识别,以及距离测量等关键技术.该实验还在进行中,一旦顺利实施,将以此技术参加工程大赛,也将形成文稿与读者分享、共勉.

参考文献

[1] 赵彬,高宏力,张艳荣,等.搬运机器人控制系统设计[J].机械设计与制造,2014(12):183-186.

[2] 王媛媛,刘海龙,蔡逸锋.基于单片机的吸附式仓储搬运机器人研发[J].机电信息,2020(5):85+88.

[3] 徐明娜,张峰,寇志伟.教学手动机器人控制系统设计与实现[J].制造业自动化,2015(7):120-123.

[4] 陈吕洲.Arduino 程序设计基础[M].2 版.北京:北京航空航天大学出版社.2015.

[5] 李振宇.基于Arduino 技术的光电搬运机器人设计与编程(一):循线技术与线路控制[J].首都师范大学学报(自然科学版),2021,42(4):8-11.

Design and programming of photoelectric carrying robot based on Arduino technology(Ⅱ):color test and object capture

LI Zhenyu

(School of Mathematical Science,Capital Normal University,Beijing 100048)

Abstract:Following the previous article,this paper will use the library function provided by Arduino IDE to realize color test and ultrasonic distance measuring.Through the recognition of the color of the object block,the target position of the transportation is determined,and the travel route of the robot car is designed.Ultrasonic distance measuring can dynamically adjust the relative distance between the robot car and the target block,which plays an important role in accurately capturing the object block.

Keywords:photoelectric carrying;Arduino;color test;ultrasonic distance measuring

中图分类号:TP273

DOI:10.19789/j.1004⁃9398.2021.05.003

收稿日期:2020⁃09⁃14

(责任编辑:马田田)