基于机器视觉的写字机器人实验系统设计

2020-07-11 14:41张清勇高晓宇夏慧雯郭广淼
实验室研究与探索 2020年5期
关键词:驱动器电动机写字

张清勇,高晓宇,夏慧雯,郭广淼

(武汉理工大学自动化学院,武汉430070)

0 引 言

随着机器人技术的不断发展,写字机器人逐步进入人们的视野。针对高校机器人教学,设计一种基于机器视觉的写字机器人系统可以更好地帮助学生掌握相关知识。

目前出现的写字机器人主要是在对于文字信息提取方法、机器人结构类型、轨迹规划方法几个方面有所不同[1]。文字信息提取主要有两种方式。一种是在字符结构完整的情况下进行提取。王光建等[2-3]使用Windows系统矢量字符进行信息提取。张传剑等[4]使用Visual Basic语言编写程序借助AutoCAD 扩展工具将文字进行分解并提取线段顶点坐标。何薇等[5]通过机器视觉获取字符图像,使用开源计算机视觉库(Open Source Vision Computer Library,OpenCV)完成对图像的处理和信息提取。

另一种是在书写的过程中实现提取。Franke等[6]使用数字手写板获取书写信息。李芳等[7]使用实验研制的基于多维力传感器数字手写设备[8],以获取书写压力、笔记坐标和纸笔接触点处的其他力学信息,并转换为时间序列,之后对获得的数据进行特征提取,所设计的机器人获得了较好的书写效果。Matsui等[9]使用所设计的书写笔在三维空间进行书写,使机器人获取空间位置时间序列,但由于悬空书写,该设计存在书写轨迹难以控制的问题。

本文使用OpenMV机器视觉模块,结合所编写的脚本实时获取书写笔的位置信息,实现人和写字机器人的同步书写,使用较为简单的方案获得了较好的书写精度。

1 系统机械结构设计

基于机器视觉的写字机器人系统机械结构的核心为2 自由度运动单元,该系统采用图1 所示的机械结构。电动机1、2 分别安装在横、纵向轨道上,电动机1控制书写机构横向运动;电动机2 控制书写机构纵向运动。两个电动机可以实现书写机构的2 自由度运动。书写机构上安装舵机,实现对笔起落的控制。

图1 系统机械结构图

2 系统硬件设计

2.1 硬件总体设计

写字机器人系统需要实现的功能有:通过识别模块识别动态手势,控制书写机构的运动;通过识别手写笔的运动来控制书写机构进行同步书写。

写字机器人系统硬件由主控制器、识别模块、运动控制模块和人机交互模块构成,系统硬件总体框图如图2 所示。主控制器负责驱动各种传感器、执行相关运算并负责输出控制信号。识别模块包含一个电容数字转换器、一个摄像头和一个轻触开关。电容数字转换器通过集成电路总线(Inter-Integrated Circuit,IIC)与主控制器通信。摄像头上自带微处理器,运行相关图像处理算法,将获得的结果通过通用同步/异步串行接收/ 发送器(Universal Synchronous/Asynchronous Receiver/Transmitter,USART)发送给主控制器。运动控制模块包含控制笔杆起落的舵机、步进电动机及相应驱动器。人机交互模块包含有机发光二极管(Organic Light-Emitting Diode,OLED)显示屏和红外遥控接收、发送装置,实现模式的选择和相关信息的显示。OLED 通过串行外设接口(Serial Peripheral Interface,SPI)与主控制器通信。

图2 系统硬件总体框图

2.2 主控模块

写字机器人系统主控模块选用STM32F407ZGT6芯片,该款微处理器采用ARM®Cortex®M4 核心,最高工作频率168 MHz[10]。闪存大小为1 024 KByte,共有82 个通用输入/输出口,具有10 个16 bit通用定时器、2 个16 bit 高级定时器和2 个16 bit 基本定时器。其性能满足系统设计要求。其上有10.5 Mbit/s 的串口4 个,通过串口可以和OV7725 摄像头系统进行通信,使系统获取目标点的位置信息,从而实现对手写笔位置的获取。

2.3 识别模块

写字机器人系统识别模块中包含有FDC2214 电容数字转换器、基于OV7725 摄像头的OpenMV Cam M7 视觉模块以及手写笔上的轻触开关,如图3 所示。

图3 FDC2214、OpenMV Cam M7视觉模块和轻触开关

FDC2214 是一款抗电磁干扰设计的高分辨率、高速、多通道的电容数字转换器,采用了基于窄带的架构,可以高度抑制噪声等干扰信号[11-12],在高速的条件下提供高分辨率信息,常用于接近感测和液位感测。在本系统设计中,使用4 片极板,通过判断手对于单方向上两片极板接近的先后顺序进行运动手势判别。

机器视觉模块由板载微处理器和摄像头构成。其具有216 MHz 的主频、128 Kb 的RAM 和2 Mb 的Flash,可以使用MicroPython 对其进行编程,实现机器视觉相关任务[13],在颜色追踪[14]、形状识别、边缘检测、特征点追踪、3D 定位识别[15]和特征检测人脸识别[16]等领域均获得了应用。在本系统的设计中,通过对目标颜色进行识别,将获取到的坐标点发送给主控芯片以进行后续的运算与处理。

轻触开关安装在手写笔的笔头,当落笔时开关导通,此时主控芯片检测到落笔,从而控制书写机构执行落笔动作;当抬笔时,开关断开,主控芯片检测到抬笔,从而控制书写机构执行抬笔动作。

2.4 运动控制模块

写字机器人系统运动控制模块由1 个小型舵机、2个步进电动机及其驱动器组成。步进电动机选用2 个42 式二相四线步进电动机,步距角均为1.8°。步进电动机驱动器采用TB6600,该款驱动器具有电动机脱机控制和正反转控制的功能。共有7 档细分选择,最大32 细分;共有8 档电流控制,可以实现从0.5 ~3.5 A电流选择。通过拨码开关可以方便调节步进电动机细分数及电流。该款驱动器具有震动低、噪声小的特点。驱动器如图4 所示。

图4 TB6600步进电动机驱动器

2.5 人机交互模块

系统人机交互模块由一片24.384 mm OLED 屏幕、红外接收头HS0038 和红外遥控器组成。

系统中OLED 屏幕采用24.384 mm 128 ×64 的OLED屏,如图5 所示。该屏使用的总线形式为SPI或IIC。其OLED显示驱动器为SSD1306,该屏具有以下特点:对比度高,显示清晰;接线方式丰富,具有串行SPI和IIC接口方式,且接线方便、节约微处理器的输入、输出端口。OLED屏用来显示当前的模式和相关信息。

图5 OLED屏幕

红外遥控器使用协议,数据格式为:同步码头、地址码、地址反码、控制码和控制反码。同步码由一个低电平和一个高电平组成,低电平时长9 ms、高电平时长4.5 ms,数据中剩下的4 部分均由8 bit数据组成。

2.6 硬件电路设计

(1)运动控制模块电路设计。步进电动机驱动器TB6600 采用共阴极接法。将2 个驱动器的DIR-和PUL-引脚与STM32F407ZGT6 的GND端相连。2 个步进电动机驱动器的DIR + 和PUL + 引脚与STM32F407ZGT6 的接线方式见表1。

表1 TB6600 驱动器与STM32F407ZGT6 接线方式

舵机的PWM 信号线与STM32F407ZGT6 的PA2引脚相连。

(2)识别模块电路设计。FDC2214 模块的UCC引脚连接电源正极,电压为3.3 V。FDC2214 采用I2C通讯协议,故需要两根信号线,FDC2214 模块的SCL 引脚和SDA引脚与微处理器的接线方式见表2。

表2 FDC2214 与STM32F407ZGT6 接线方式

机器视觉模块使用串口与STM32F407ZGT6 微处理器进行通讯。机器视觉模块的VIN 引脚连接电源正极,使用5 V电源进行供电,P4、P5 引脚与微处理器的接线方式见表3。

表3 OpenMV Cam M7 与STM32F407ZGT6 接线方式

轻触开关A 端连接微处理器的PD0,令B 端与GND相连。

(3)人机交互模块电路设计。红外接收头HS0038 与STM32F407ZGT6 的PB1 通过10 kΩ 电阻相连。

OLED 显示屏,采用4 线串口模式,通过UCC给OLED屏进行供电,使用3.3 V 电源,OLED 屏的D0、D1、RES、DC和CS 引脚与微处理器的接线方式见表4。机器人视觉系统的硬件电路如图6 所示。

表4 OLED屏幕与STM32F407ZGT6 接线方式

图6 系统硬件电路图

3 系统软件设计

机器人系统软件设计部分主要包括STM32F407ZGT6 主程序设计、Bresenham 插补算法的实现、基于FDC2214 电容数字转换器的手势识别实现,以及同步书写功能实现。

3.1 主程序设计

写字机器人系统软件设计中采用状态机的思想,主程序流程图如图7 所示。打开系统后,首先完成STM32 主控芯片的系统配置:初始化中断优先级、定时器中断、USART中断和相关输入、输出端口;之后对外设模块进行初始化配置:FDC2214 模块和OLED 显示屏初始化。之后进入任务控制死循环,通过等待红外遥控的输入信号来进行任务的选择。当任务标志变量(TASK)被置为相应序号,则进行相应指令的执行。

配置串口中断,在中断中编写校验协议,以实现对OpenMV数据的解析,这样STM32F4 芯片就可以通过串口接收到笔尖的坐标信息。使用通用定时器TIM7实现10ms 中断,在中断中完成采集极板电容值并进行相关计算。

图7 主程序流程图

3.2 插补算法

插补算法采用计算机图形学中经典的Bresenham算法[17],此种算法可以在不进行小数和取整运算的基础下上,实现直线像素点的生成。本文使用直线

将二维平面分为8 个区域。在平面区域

中的算法流程图如图8 所示,其他区域使用坐标变换的方式进行实现[18]。该算法中,(x0,y0)为插补的起始坐标;(x1,y1)为插补的终止坐标;(x,y)为笔的当前位置坐标。变量dx、dy、d、incrE和incrNE为算法临时变量。

图8 Bresenham算法流程图

3.3 手势识别算法

手势识别算法参照应用于电容式按钮的手势识别算法进行设计[19]。本系统的识别模块分别在x、y方向上固定有两片金属极板,与FDC2214 相连接。获取每片极板所测量的电容值并换算成手的接近度,通过计算手对于两片极板接近的先后顺序进行运动手势判别。

3.4 同步书写功能实现

使用机器视觉模块实时监测手写笔的坐标信息,由于笔头处设计为绿色,在白色书写平面上书写时,可以采用颜色追踪的方式进行坐标识别。OpenMV使用MicroPython进行编程,对摄像头寄存器进行配置:使用RGB565 色彩模式和320 ×240 级别分辨率,关闭白平衡和自动增益。进入程序主循环,不断进行色块检测并将色块位置使用串口发送给STM32F407ZGT6。由于USART每次传输8 bit 数据,摄像头图像平面坐标水平方向数据范围为0 ~319,因此将水平方向数据拆成两次进行发送,STM32F407ZGT6 端将数据重新组合进行使用。

STM32F407ZGT6 接收到坐标信息后,进行数据校验和滤波等预处理,接着进行坐标变换,然后驱动电动机控制写字机器人书写机构的位置。与此同时,通过轻触开关识别书写人员的起落笔姿势,控制书写机构的起笔和落笔,实现写字机器人的同步书写功能。

4 测试与分析

整个运动框架由2020 铝型材搭建,写字机器人实物如图9 所示。电动机1 使用同步带结合滑轮结构,实现在运动框架上的X向运动;电动机2 以同样的方式实现在运动框架上的Y向运动。书写机构通过亚克力材质结构与电动机2 固定在一起。

图9 写字机器人实物图

4.1 运动手势识别绘制测试

进行运动手势控制书写机构功能测试,测试方法为:将手放到手势识别感应区内,按照向上、向下、向左和向右的方向在感应区内滑动,观察此时书写机构的运行状态是否与手势的运动方向一致。测试时方向选择随机,每个方向进行20 次测试,求取系统执行的正确率。测试结果表明,写字机器人系统可以通过识别模块准确识别手的运动方向,相关测试结果见表5。

表5 手势控制书写机构运动功能测试

4.2 同步书写功能测试

进行同步书写功能测试,测试方法为,使用手写笔在识别模块规定范围中进行书写,此时写字机器人在绘图平面上根据实时识别到的位置信息进行绘制,测试时书写“写字”两字,测试结果如图10 所示。

图10 同步书写功能测试结果

5 结 语

本文设计了一种基于机器视觉的写字机器人实验系统,该系统结合了视觉与图像处理技术以及接近感测技术,实现了通过运动手势识别控制书写机构运动的功能;通过实时识别手写笔的运动来控制书写机构进行书写的功能。系统使用较为简单的方案实现了较高书写准确性。该系统应用于教学与实验,可以帮助学生更好地掌握机器人和计算机视觉领域相关知识。

整个系统仍有一定改进空间:通过引入轨迹规划实现运动速度的控制,确保书写机构的平稳运行;通过提高采样图像的分辨率,提高书写机构的书写精度,使系统的书写效果进一步提高。

猜你喜欢
驱动器电动机写字
浅析电动机日常维护与保养
永磁同步电动机的节能计算
气动网络多腔室弯曲软体驱动器结构优化
我学写字
藏起驱动器号确保数据安全
学写字
写字好看,需从小“练”起
我学写字
空间大载荷石蜡驱动器研制
基于KB0的电动机软启动控制系统