基于STC8的双臂魔方机器人设计
2020-09-29邓小颖魏国梁李志强
邓小颖,魏国梁,李志强,陈 磊
(扬州大学 信息工程学院,江苏 扬州 225127)
0 引言
随着计算机技术和人工智能等领域的发展,魔方与智能机器人的结合,在科普领域中取得了突破性的进展。解魔方机器人是智能化机器人工作方式的一个全方面体现,其整体的架构和多种变型模式也是近几年来的热点。对其算法和结构的研究也成为探索机器人工作方式的重要研究内容,文献[1]对识别魔方的视觉系统做了研究;文献[2]则重点探讨了魔方机器人的机械结构,但都没有集成系统化。
本文设计的基于STC8双臂魔方机器人,能够自动识别任意打乱的三阶魔方状态,并快速还原,涉及视频数据采集与色块识别、魔方还原步骤解算和机械手控制系统等诸多软硬件技术。最终可使魔方还原平均步数最优化,机器人能够在较短时间内自动解算并还原魔方。该机器人设备成本低,普及性、趣味性强,且具有高度的扩展性。它也可以配合其他通信模块及传感器作为实践研究的优选素材。
1 魔方机器人结构
主要由硬件结构和软件系统两部分组成。硬件结构是由机械手控制系统和整体架构组成。机械手采用双臂、双指结构,每个机械臂由一个步进电机和一个数字舵机组成。通过步进电机实现魔方转动,通过舵机实现手指开闭。其中,单片机控制机械部分实现魔方还原,电机通过接入的磁编码器反馈信息给单片机,从而实现PID调节旋转角度。同时,为方便使用,该系统自带补光照明电路,采用LED光源。系统主要模块示意如图1所示。
图1 魔方机器人主要模块关系
软件算法包括人机交互界面、魔方识别和解魔方算法3个模块。其中,魔方的形状和颜色识别采用对OpenMV编程的方式实现。解魔方的核心算法则是使用Kociemba算法,机器人通过OpenMV摄像头获取初始魔方的色块分布,并将颜色数组发送给上位机进行解算,得到还原步骤发送给STC8单片机。同时人机交互界也在上位机实现,上位机与单片机采用串口通信。系统的运行流程如图2所示。
图2 魔方机器人系统运行流程
2 解魔方算法
2.1 魔方识别
机器人采用2个可编程摄像头OpenMV实现对54个色块的颜色识别与获取的逻辑算法。摄像头位置为正交放置[3-5],每个摄像头都垂直面,即拍摄相邻的2个面。拍摄一次后,OpenMV通过高低电平发送信号给STC8单片机,使其控制机械臂翻转魔方,完成另外2个面的拍摄,并将数据传送给上位机。剩余的2个面同上述操作。每次拍摄时,OpenMV通过预先的色块识别算法,将拍摄得到的18个面形成数组,通过串口发送给上位机。为了提高色块的识别率,颜色识别采用色彩空间转化,即将拍摄的图片转化至LAB色彩空间,并用补光器稳定现场光线。该算法的核心是阈值比较。这样在补光器作用时,环境光线相对稳定,此时采样魔方颜色,并设定6种颜色对应的LAB阈值区间,即可在色块识别时进行颜色比较判断。图3(a)为OpenMV IDE工作平台的帧缓冲区,呈现的形式为机器视觉,其中9个正方形代表了目前监测的9个ROI敏感区域,并通过方框颜色实时反应出识别的结果;图片下方为LAB色彩空间的直方图,可直观地看出敏感区域的LAB分量值。图3(b)为色块采样结果示意图,正确的识别结果在图中用加号表示。
图3 魔方状态识别示意
2.2 Kociemba算法
魔方的还原解法有很多种,如角先法、棱先法和层先法等[6],传统的算法虽然易于理解,但是平均需要百步。为了实现降低步骤和易于机械臂的操作,本文采用Kociemba算法[7-8]完成还原步骤结算和优化。Kociemba算法又称为二阶段算法。它使用了搜索算法还原魔方,可在较短时间和较少次数内还原魔方。该算法是目前步数最少的算法。在上位机接收并完成54个数组处理后,调用算法函数,即可用Kociemba算法结算出执行步骤的字符串结果。该结果将被上位机通过串口发送给STC8单片机。
3 机械臂控制
3.1 机械臂结构
3.1.1 机械臂手指关节结构
指关节也就是由舵机控制的连接杆。在连接杆上固定有机械指和导轨,舵机的旋转会使连接杆移动,在导轨的引导下,固定在连接杆上的机械指即可横向开闭。为了避免出现堵转,该设计在夹合指肚上贴有防滑海绵。图4(a)和图4 (b)分别为指关节的设计图和实物图。
图4 机械指关节
3.1.2 机械臂腕关节结构
腕关节由连接指关节的步进电机组成。特殊之处在于该电机带有磁编码器和电滑环[9]。磁编码器采用霍尔原理,利用磁性检测方式,具备优异的抗冲击和振动特点,性能可靠高、结构更简单,比光电编码器体积更小,价格更便宜。为了避免旋转时发生绕线,干扰系统正常运作,该设计使用了电滑环。电滑环就是用来导电的滑环,在所有滑环系列中使用最广泛,专用于在无限制连续旋转时,传输功率电源、信号电源。
3.1.3 整体架构
双臂结构并没有采用传统的直立式放置,而是采用正交水平式[10-11],这样方便了摄像头和补光器的安装,同时该结构稳定,魔方不易翻滚脱落。每个摄像头的后方安置补光器来平衡环境光线带来的误差。为了稳定环境光线,可在整体结构上套一挡光布。实物如图5所示。
图5 机械臂实物
3.2 机械臂控制方法
单片机在接收到解魔方步骤的操作字符串后,将其分解成单条机械臂的操作指令,如定义L+为控制魔方左面逆时针旋转90°。机械手的控制核心为STC8单片机,主要输出为控制舵机旋转的PWM波和控制步进电机旋转的相位数组信号[12-13]。其中单片机通过连接TB6600驱动间接控制步进电机旋转。
控制机械臂的算法按步骤大致分为以下4个部分。
3.2.1 接收并处理操作字符串
当上位机结算出解魔方步骤后,以字符串的形式通过串口发送给STC8单片机,单片机在接收到字符串后将字符串分解为两两一组的字符串并检测是否含有“+”,若检测到“+”号,即与前面一个步骤结合,实现逆时针指令。该部分将形成多条控制指令,顺序执行。
3.2.2 控制电机旋转与PID调节
第一步完成后,依据每条指令完成电机旋转,每次旋转完成后,执行机械指开合指令。其中TB6600驱动需要STC8输出旋转相位数组。可根据脉冲定义,提前设计好顺时针旋转90°,180°和逆时针旋转90°的函数。
为了实现对电机旋转位置检测并反馈给单片机,机械臂的腕关节部分采用了磁编码器,达到测量角位移的功能,实现旋转误差校正,提高旋转精度,为下一步PID校正提供误差数据[14-15]。磁电式编码器采用磁电式设计,因磁性材料角度或者位移的变化会引起一定电阻或者电压的变化,通过放大电路对变化量进行放大,再通过单片机处理后输出脉冲信号或者模拟量信号,达到测量的目的。
3.2.3 控制舵机开闭
舵机开合指令比较单一,只需旋转到固定角度即可,也就是说程序接收到电机旋转完毕信号后单片机即可输出固定的PWM波,使舵机旋转,舵机的旋转将带动连接杆在导轨上移动,控制机械指的开闭。具体的,舵机的控制脉冲周期为20 ms,脉宽取值从0.5~2.5 ms,对应关系为:
α=-90°+(t/0.5-1)×45°,
式中,t为脉冲宽度;α为旋转角度。
3.2.4 组合操作和复位机械臂
因为机械臂的相对位置固定,所以魔方的有些面无法被直接旋转,因此需要2个机械臂之间配合,通过另一个机械臂旋转一次后再完成对应步骤,此时需要考虑翻转后的魔方带来的数组顺序变化,或者通过复位魔方达到避免魔方数组的动态变化。每次拍摄完成后的操作为2个机械臂依次顺时针旋转90°,可最为高效地拍摄54个色块。
在解魔方的过程中,机械动作耗时最多,经多次随机测试,平均时间在51 s左右,最高耗时不超过1 min,在同类设备中性能优异。
4 结束语
设计的解魔方机器人是在机械臂和机械手指的基础上,以STC8为核心控制装置,以可编程摄像头为判断装置,同时配合负责算法处理的上位机,构成的一个完整系统。能够自动识别并快速还原标准魔方。
对解魔方机器人的研究,体现了对机器人高精度性和高智能性的要求。这些技术为机器人的研制提供了技术基础,特别是在对机器人的高精度环境识别、运动检测和运动控制等方面有重要意义。
下一步改进可集中在2个方面:① 在成本和空间允许的前提下,采用气泵驱动机械结构;② 针对双机械臂,设计更为合理的操作算法步骤,以求达到更高的速度和精度。