基于语音和视觉联控的移动抓取机器人设计与实现

2020-10-19 09:26庞博维
机电产品开发与创新 2020年5期
关键词:机械手串口指令

杨 琨, 崔 敏, 庞博维

(五邑大学 智能制造学部, 广东 江门 529020)

0 引言

随着工业的快速发展, 机器人技术也得到了快速的发展,机器人除被广泛应用于工业制造领域,也被广泛应用于如智能家居,医学治疗、娱乐服务、军事以及太空探索等领域,尽管它们的用途及形态各有不同,但是大都要求能精确地定位到三维(或二维)空间上的某一点进行作业,以完成对指定物品的抓取和放置,减少人工操作[1]。目前市场上现有的智能服务机器人或抓取结构复杂, 成本高昂,或机器人运行和抓取精度较低,稳定性不足,工作效率低。

为此本文设计了一种基于语音和视觉联控的移动抓取机器人,通过声音对机器人下达指令,由语音模块接收分辨指令,Openmv 视觉模块寻找目标,Arduino 单片机控制机器人移动,实现抓取指定目标(如某种颜色小球),并使机器人返回到指定点。 移动抓取机器人采用三轮作为移动方式,机械手为偏置曲柄滑块机构,通过舵机带动机械手升降,完成抓取动作。 该机器人具有动作灵敏,结构轻巧,制作安装方便等特点。

1 移动抓取机器人的总体架构

移动抓取机器人由机器人本体和控制模块两大部分所组成,机器人本体由全向轮作为移动部分,并搭载由曲柄滑块原理设计的机械臂以及机械爪; 控制模块主要有Arduino 单片机、Openmv 视觉模块及语音模块, 总体架构设计如图1 所示。

图1 总体架构设计Fig.1 Overall architecture design

当声音把指令传递给语音模块之后, 系统将指令转换成为信号, 利用串口通信输送到Arduino 单片机上,再由Arduino 单片机将信号输送给Openmv 视觉模块。 在Openmv 视觉模块中进行颜色识别以及距离判断,再把物体位置信息准确返回给Arduino 单片机,使机器人准确的移动到物体可被抓取范围,并实施抓取。在完成抓取动作之后,还会判断是否已抓取到物体,若未抓取到,将再次进行抓取;并可以通过屏幕实时显示机器人移动速度。

2 机器人本体结构设计

总体机械结构分为基座和抓取两部分,如图2 所示。基座结构采用三层底板作为搭载层,总体外观呈龟形;下底板2 装配有三个全向轮1, 每个全向轮配备具有一定减速比并自带霍尔编码器的电机; 基座的主要机械结构(如车轮等)嵌入在三层底板之内,使得机械手及运动部件不易受到碰撞损害,更好地保护重要部分。

抓取结构由机械臂、 机械爪和Openmv 视觉云台三部分组成。 用舵机板6 固定升降舵机5, 导杆11 上安装有连杆机构8,升降舵机5 控制机械爪10 升降,实现对物体的抓取;Openmv 视觉云台7 采用舵机方式控制。

(1)机械臂结构设计。 主要由升降舵机5、舵机板6、连杆机构8、导杆11 组成。 如图2 所示。 以舵机2 为动力源,采用曲柄滑块机构,光轴与直线轴承的配合,实现机械爪的上下升降,提升结构的顺畅性。

(2)Openmv 视觉模块云台设计。如图2 Openmv 视觉模块云台7 所示。 通过舵机旋转方式,使视觉模块旋转、调整角度,实现实时跟踪目标物体。

图2 机器人结构示意图Fig.2 Schematic diagram of robot structure

3 控制模块设计

3.1 硬件设计及工作原理

(1)硬件设计。移动抓取机器人控制模块的组成与功能有: ①Arduino 主控模块采用USB 接口的核心电路板,具有多路数字输入输出端口。 有多个PWM 脉宽调制接口,以改变频率及占空比,并有若干串口通信。 以Arduino作为控制模块的通信核心, 分别控制3 个全向轮移动及视觉模块、 语音模块的串口通信, 接受并发送数据;②Openmv 视觉模块利用摄像头进行颜色追踪,并发送物体的X、Y 坐标。 通过物体坐标与摄像头中心坐标对比,发送信号给Arduino 单片机,使机器人通过算法移动至目标物体;③语音模块采用文本方式编译语音内容,并转换为串口数据,与Arduino 进行数据传输。通过语音输入,实现控制机器人执行不同动作;④其余模块采用三个全向轮实现机器人的移动,选择带有霍尔编码器的电机,对车轮转速进行PID 调控,电源选择12V 供电,降压模块DC-DC。

(2)工作原理。 ①语音模块接收到语音下达的指令,语音模块将指令转化为字符, 发送给Arduino 单片机;②Arduino 单片机接收到语音模块发送过来的指令后,对指令进行区分,执行不同动作:手机蓝牙操控机器人、视觉模块智能识别抓取指定物体。 液晶屏显示当前机器人车速;③Openmv 视觉模块接收到Arduino 单片机指令,寻找指定颜色的物体,将物体X、Y 坐标、物体的像素值、面积等数据进行处理分析, 最后把处理之后的数据发送给Arduino 单片机,由Arduino 单片机驱动电机,移动至物体面前;④由Openmv 视觉模块判定机器人是否移动至目标物体,机械手可抓取的范围内。 若是,可发送指令给Arduino 单片机,执行机械手抓取;否则将重新移动机器人直至物体在抓取范围内。若抓错物体,机械手将放下被抓错物体,并重新寻找目标物体;⑤在成功抓取目标物体之后,Openmv 视觉模块寻找视觉基准系统(AprilTag)指定地点,将物体放置指定位置。

控制流程如图3 所示,由语音模块接收指令,执行小球判断之后, 通过串口通信把信号传输给Arduino 单片机,并由Openmv 视觉模块做视觉算法处理实现语音和视觉的联控。

图3 控制流程示意图Fig.3 Control flow diagram

3.2 软件设计

(1)Arduino 控制算法。 增量式PI 控制算法调控电机,实现速度稳定可控,保持在稳定的数值,当电压不稳定或者电压下降时仍能保证机器人正常速度运行。 手机蓝牙连接机器人,通过发送指令,操控机器人移动及机械手的控制。显示屏显示车轮转速。 图4 为Arduino 控制流程图。

图4 Arduino 控制流程图Fig.4 Arduino control flow graph

(2)Openmv 视觉模块控制算法。 利用色域区分物体,通过每个色域的面积大小判别离机器人最近的目标物体,再把最近的目标物体的坐标、像素值、高度等数据提取。 物体的坐标值与Openmv 视觉模块的中心坐标进行对比,调整机器人姿态,使视觉模块中心坐标与物体的坐标一致,保证机器人正方向对准目标物体。通过目标物体反馈的像素值调整Openmv 视觉模块的舵机云台, 调节视觉模块角度,实时跟踪目标物体;当机械臂夹取物体之后,通过阈值和像素值判断是否夹取到目标物体;把视觉基准系统(Apriltag) 作为放置物体的目标地点, 获取Apriltag 标签位置, 通过算法控制机器人移动至目标地点。 Openmv 视觉模块算法如图5 所示。

图5 Openmv 视觉模块算法Fig.5 Visual module algorithm

机器人的总体控制程序是由Openmv 视觉模块进行数据的采集、分析及处理。再将处理后的数据经过串口通信传给Arduino。 Arduino 把接收到的数据进行对比,执行相应的动作,例如前进、后退、机械手夹球等。

Openmv 视觉模块与Arduino 的串口通信接口:

Openmv 视觉模块P4(TX)--RX2

Openmv 视觉模块P5(RX)--TX2

Arduino 串口调用:Serial2.print();

(3)Openmv 视觉模块云台控制算法。 如图6 所示为

云台控制算法, 由于Openmv 视觉模块位于机械手上方,

需要调整一定的角度才能看到小球、 机械爪以及视觉基

准系统“Apriltag”,因此,Openmv 视觉模块在使用中设计了三个位置,第一个为初始位置(俯角45°),方便大范围

寻找小球; 第二个位置为检测位置 (初始位置向下旋转

45°),用于检测机械手是否夹取到小球,以及是否夹取了

正确颜色的小球; 第三个位置为寻找Apriltag 标签位置,

在夹取正确颜色小球之后, 配合底盘移动控制,Openmv视觉模块通过获取Apriltag 标签信息,返回指定地点。

图6 云台控制算法Fig.6 Cradle head control algorithm

(4)语音模块控制算法。 本系统选用WEGASUN-M6 语音模块,用于识别、处理语音关键词,将其转换为信号发送给Arduino 单片机, 其执行流程图如图7 所示。

语音模块与Arduino 的串口通信接口:

语音模块TX—RX0 Arduino

语音模块RX—TX0 Arduino

Arduino 串口调用:Serial.print()。

图7 语音模块执行流程图Fig.7 Voice module execution flow graph

4 总结

本文所设计的龟形多层式抓取机器人采用语音模块接收指令信息,Openmv 视觉模块做视觉算法处理, 识别位置信息,由Arduino 单片机控制机器人移动,抓取指定目标物体。 实验结果表明;利用语音和视觉的联控机制,能够准确地实现机器人对指定目标的抓取及转运。

猜你喜欢
机械手串口指令
浅谈AB PLC串口跟RFID传感器的通讯应用
某数控车床的桁架机械手结构设计
TRIZ与情景分解法在换刀机械手设计中的应用
基于粒子群迭代的一种冗余机械手逆解算法
搬运机械手PLC控制系统设计
数字电源内部数据传输的串口通信方法实现
USB接口的多串口数据并行接收方法探索
串口技术的实物调试和虚拟仿真联合教学模式
中断与跳转操作对指令串的影响
基于汇编指令分布的恶意代码检测算法研究