陈 畅,陈 亮,周雪峰
(1.华南理工大学,广州 510006;2.广东省智能制造研究所,广州 510070)
工业机器人的示教是指在工业机器人进行工件选取、装配等作业之前,首先规划好机器人的正确运动轨迹,并将其载入到机器人中。机器人示教直接关系到工业机器人在实际工作过程中的精度和效率,是工业机器人研究领域的热点问题之一。从示教方式上来看,目前绝大多数机器人都是通过示教器或者离线编程进行示教[1],尽管也能够满足机器人示教的一般要求,但这些示教方式都具有过程复杂,难度大,操作繁琐等缺点,如示教器操作要求逐个输入轨迹点,并要求操作者熟练掌握机器人编程语言等,从而增大了运行和调试成本。以上这些问题成为制约提高机器人示教效率的瓶颈。
随着人机交互技术的发展,采用自然交互的方式进行机器人示教成为可能,自然手势交互是一种快捷、方便、低认知负担的新型人机交互技术[2,3]。采用自然手势交互进行工业机器人示教具有学习成本低,精确度高,交互过程简单等优点。操作人员不需要对机器人控制有深入的了解,也不需要具备机器人编程的专业知识,只需通过简单的自然手势就能完成机器人控制与示教。本文将自然手势交互与工业机器人示教相结合,通过手势姿态传感器获取手部位置和姿态信息,并将其传送给工业机器人实现机械臂定。
位和末端夹具的各种任务操作。实验平台上的样机测试和误差分析表明,采用自然手势交互的工业示教机器人操作简单、运行可靠、准确性高。
根据一般工业机器人的任务要求,本研究将工业机器人的示教动作分为两类,一类是机械臂位置的改变,一类是末端夹具的抓取、放置、停止等任务动作,同时还要记录下机器人手臂的运动数据。示教系统总体设计方案和流程如图1所示。
示教系统由主控前端数据采集处理模块和从控端机器人模块组成。主控部分主要由PC机和Leap Motion体感传感器等硬件组成,主要完成手势数据获取、数据优化处理、手势识别、数据存储等功能。从控部分主要由机器人控制器、机械臂、末端夹具,夹具控制器,Arduino模块等硬件组成,从控部分受到主控部分动作触发信号产生各类任务动作。主控端和从控端通过USB接口进行通讯,数据处理流中手掌位置映射与姿态映射同时进行且相互独立,从而使得在示教中机械臂位置控制与末端夹具的姿态控制相互不受到影响,在机器人工作区域内任意位置都能实现机器手的抓取、放置等操作。系统采用visual studio2015开发,控制程序每0.45s向被控端机器人发送位置与手势类别数据,同时将数据以文本文档格式储存在计算机中,再通过示教程序读出数据完成示教任务。
图1 系统总体设计方案
手势示教中前端数据采集由Leap Motion传感器完成,在PC机上进行数据处理。Leap Motion传感器是一款桌面无接触式交互设备,它通过红外成像原理实时捕捉手势运动,精度能达到0.01mm,Leap Motion遵循右手坐标系[4],如图2所示,坐标原点是设备的中心,X轴指向设备的长边,Y轴竖直向上,Z轴指向设备侧面,X-Z平面构成一个水平面,当手掌处于水平位置时,与该平面平行。
图2 Leap Motion坐标系
在本研究中数据处理PC机采用的是IPC-610G系列工控机,Leap Motion通过USB接口与PC机通讯。Leap Motion将采集到的手掌、手指的位置和其他信息保存在一帧(Frame)当中,利用Leap Motion SDK就可以获取手掌、手指的空间位置坐标,并将手掌、手指的位置数据作为手势特征数据用于识别手部的握拳、半握、张开三种手势类别,用于控制机器人抓取放置及紧急停止动作。利用hand.palmNormal().roll()函数获取手掌平面与Leap Motion空间坐标系X-Y平面之间的夹角数值控制机器人末端夹具的旋转角度。
被控端机器人采用EPSON SCARA LS3-401x型机器人,如图3所示。该机器人具有四个自由度,负载3kg,定位精度为0.01mm。三个相互平行的旋转关节实现平面内的定位,第四关节为旋转移动关节实现末端的空间移动,机器人控制器使用爱普生RC90,其集成了Microsoft.NET通信模块可以进行二次开发,控制器使用以太网与计算机通讯,机器人手臂使用电源线和信号线连接到控制器。SCARA机器人末端装有电动夹具,如图4所示,电动夹具使用一个直流无刷电机驱动,控制器内置,二指平动,行程为20mm。夹具与机器人的控制相互独立,使用Arduino模块向夹具控制器发送脉冲信号来驱动夹具运动,示教中将手部张开、半握姿势分别定义为高、低电平信号,从而控制夹具开合。
图3 SCARA机器人
图4 电动夹爪
由于存在硬件设备的不稳定性和操作者动作的不连续性等因素,从而导致所获得的帧数据具有较大的误差,出现噪声信号,因此本研究采用带阈值的均值滤波算法对原始数据进行优化,以确保Leap Motion获取的原始数据能够有效使用。滤波方案如下:选取连续的n(10<n<20)帧数据作为观测值进行均值滤波计算,记其中第i(0<i<n+1)帧某一坐标数据为(xi,yi,zi),设定各分量的阈值为M,只有当所有分量都不大于阈值M的时候才为有效数据,计算公式如下:
其中p(x,y,z)为连续n帧优化后坐标数据,算法设定阈值过滤掉产生误差的帧数据,保证手势控制的精度和手势识别的准确性。
根据系统设计目标,本研究设计了五种手势动作来完成手部与机器人的交互行为,具体定义如表1所示。
表1 手势及控制意义
静态手势主要研究的是手的姿态和单个手形,表中序号2,3,4为三种静态手势[5],本文采用K临近算法[6]对这三种手势进行识别。取五个手指指尖相对于手掌中心的相对坐标作为特征值,训练集T如下:
ωis表示样本Ti的第s维的坐标,表示样本T'j的第s维坐标,对于新输入的手势特征值通过式(3)求的与所有已知类别样本的距离,然后从小到大的排序找出K个在训练集T 中与X距离最近的点记为:NK(X)。
其中I为指示函数相当于一个布尔值,即当yi=cj时,I为1,否则I为0,最后得到y为输出的手势类别。
由于手势操作和机械臂运动分别属于不同的坐标系统,并且手势操作空间和机械臂运动空间都有各自的范围限制,因此需要制定合理的数据动态映射策略。主要从以下方面考虑。
由图2和图5可知,Leap Motion传感器和SCARA机器人的坐标定义并不相同,假设:
图5 SCARA机器人坐标系
在Leap Motion坐标系空间中某一时刻掌心的位置记为A=(xn,yn,zn),对应在机械臂坐标空间该时刻的位置表示为Jn=(x'n,y'n,z'n)。为了使两个坐标系方向能够关联起来,现将Leap Motion的空间坐标系绕X轴逆时针旋转90°,再沿Y轴反向,具体变换过程如下:
2)再沿Y轴反向:
整理得到坐标映射关系为:
从中可以看出,机械臂的Y坐标方向受手势空间Z坐标控制,机械臂Z坐标方向受到手势空间Y坐标控制。
Leap Motion控制器的是一款桌面级体感交互设备,它的交互区域即可视域较小,交互半径约为61cm,前后夹角约为120°,左右夹角约为150°。另一方面,机器人的工作空间必须有一个极限范围,否则可能发生碰撞,因此本研究设定SCARA机器人的安全有效动作区域为:在Z轴-56mm~100mm之间,介于最大臂400mm与最小臂长130mm之间的环形区域,且机械臂末端不能运动到其后方区域,公式如下:
在机械臂实际操作过程中,不管是何种因素引起,机械臂都不能超出以上范围,否则立即停止机械臂。
为了利用自然手势在较小且舒适的范围内控制机械臂在整个工作区域内执行任务,还需要对手势姿态进行一定的放大处理。假设当前掌心位置数据与上一时刻位置数据的差值为向量机器人末端的移动量为现引入:
其中T=[t1,t2,t3]为控制系数,引入控制系数就可以实时调整在交互过程中手部运动对机器人手臂运动控制的灵敏度。最后通过调用机器人动态链接库SpelNetLib70.dll中点到点运动方式函数GO(x',y',z',u')控制机器人末端到达工作区域最终映射点,其中x,y,z为机器人末端位置点,u'为机器人末端的旋转角度。通过坐标映射、空间限定及动作放大等一系列过程,可以很好地实现手势姿态对机器人位置和末端夹具控制的交互过程。
SCARA LS3-401x型机器人的主要工作任务是搬取零件并进行装配,因此本实验采用手势引导机器人完成指定轨迹的运动和工件的抓取放置等操作,从而验证手势示教的精度与抓取成功率,测试精度控制在3mm以内。
实验首先在机器人坐标系中规划一块边长250mm正方形示教区域,如图6所示。操作者使用手势控制机器人从A点抓取工件沿正方形边线依次到达B,C,D最后返回A点,并在每点上执行一次抓取与放置动作,实验操作如图7所示,试验中每到一个点时机器人末端的实际位置与对应示教区域的轮廓点可能会存在一段距离从而产生误差,通过求出这段距离大小来确定实验误差。
图6 实验轨迹
图7 手势示教过程
表2 误差及抓取放置成功率
实验选取了10位从未操作过机器人的操作手,经过5分钟的手势操控训练后即开始进行实验。实验过程中分别记录每位操作者操控机械臂到达A、B、C、D点时实际点与示教轮廓点之间的距离大小误差以及在正方向边线上的最大偏移量,统计每点上的平均误差及每点上末端夹具的成功执行率,在示教每条轨迹边上误差不操过1.5mm时视为成功。同时记录10位操作者在成功示教每条轨迹边与末端夹具抓取、放置所用的平均时间。
实验采集的数据如表2、表3所示。从表2中可知在四个点上最大平均误差为1.45mm,小于试验预设的目标误差值。在轨迹AB,CD,DA示教全部成功,在BC轨迹上失败一次,整体鲁棒性好。统计完成整个示教任务中所有实验者所用时间平均值为72.38s,基本都能流畅的完成整个示教过程。
表3 示教轨迹成功率
研究中充分利用手势能表达出丰富信息的特点,建立手势交互模型,研究中定义了5种手势语义,以控制机器人不同运动方式,使用K临近算法对手势进行分类,为了使控制更加灵活文中引入了控制系数对手部动作进行放大处理,再映射到机器人的位置运动上。最后通过实验验证了手势控制机器人的可行性,完成了手掌与机器人非接触式的实时交互方式,这种控制方式使得人机交互变得更加自然和友好。
[1]Torgny B. Present and future robot control development—An industrial perspective[J].Annual reviews in Control 2007(31):69-79.
[2]Guna J, Jakus J,Pogac nik M,et al. An analysis of the precision and reliability of the Leap Motion sensor and its suitability for static anddyna-mic tracking[J].Sensors 2014,14(2):3702-3720.
[3]Casiez G,Roussel N,and Vogel D.filter:a simple speed-based lowpass filter for noisy input in interactive systems[A].Proceedings of the 2012 ACM Annual Conference on Human Factors in Computing Systems[C].Austin,TX,USA,2012,2527-2530.
[4]徐一雄.基于自然交互的多旋翼无人飞行器手势控制方法研究[D].广州:华南理工大学,2016.
[5]李皓,张明明,等.基于手势识别的机器人控制系统[J].计算机系统应用.2015,24(2):266-269.
[6]周庆平,谭长庚,王宏君,湛淼湘,等.基于聚类改进的KNN文本分类算法[J].计算机应用研究,2016,33(11):3374-3377.
[7]麦健桦.基于自然手势的机器人控制[D].广州:华南理工大学,2013.
[8]张文志,李星.基于手势识别的两轮机器人控制系统设计[J].研究开发,2012,50(570):27-29.
[9]倪自强,王田苗,刘达.基于视觉引导的工业机器人示教编程系统[J].北京航空航天大学学报,2016,42(3):562-568.