朱德慰,李志海,吴镇炜
(1.中国科学院 沈阳自动化研究所,辽宁 沈阳 110016;2.中国科学院 机器人与智能制造创新研究院,辽宁 沈阳 110169;3.中国科学院大学,北京 100049)
随着劳动力成本的不断攀升,强调人与机器优势结合的新型制造模式——人机协作,开始受到广泛关注,尤其对劳动力密集和自动化程度低的中小型企业具有强大吸引力。由于自动化机器的固有危险性,在人机协作过程中保证协作者的安全是第一要求,相关安全策略的研究已成为热点。
目前人机协作的安全策略可分为预碰撞安全策略和后碰撞安全策略。后碰撞安全策略在某种程度上赋予了机器人“触觉”,不仅可以作为协作机器人的安全策略,还可以实现人机间的接触式协作[1],这主要依赖于协作机器人本体的碰撞检测功能,如通过对机器人内部电流环的监控或在机器人本体加装力矩传感器,使其能感受外部碰撞[2]。近年来后碰撞安全策略的研究取得了巨大进步,且已成功应用到协作机器人产品中,如KUKA LBRiiwa[3]和FRANKA EMIKA[4]等。然而,后碰撞安全策略难以进一步提升协作机器人的安全性和交互性,如使机器人在协作过程中避碰(collision avoidance)[5-6],以及在动态的环境中自动规划出无碰撞的运动路径(collision-free motion planning)[7]等,只有当机器人发生碰撞后,该策略才能发挥作用。因此基于视觉的预碰撞安全策略研究具有重要价值。
近年来基于视觉的预碰撞安全策略,如安全区(Safety Zone)策略得到广泛关注,此类方法通过视觉手段在协作机器人周围建立受监控的区域,当操作人员侵入监控区域时,使机器人进行减速或制动等。使用相关技术的产品已成功应用到工业场景中,如Pilz SafetyEYE[8]。然而,类似方法本质上仅是将传统工业机器人的实体围栏替换为虚拟围栏,人机间的直接协作仍不被允许。
协作机器人安全标准ISO/TS 15066对如何进行人机间的安全协作提供了宏观的指导。其中基于速度与分离监控(Speed and Separation Monitoring)的方法主要通过监视人机运动速度与人机最小分离距离,对协作机器人的行为进行动态调整。该方法无需对机器人的运动速度和负载等进行过多限制,且允许人机共享工作空间,因此受到国内外研究者的广泛关注。CHEN等[9]基于该思想在机器人本体上建立一系列虚拟约束球,当人进入约束球范围时,基于人势场法使机器人产生规避操作人员的运动,防止人机危险碰撞;WANG等[10]采用运动预测法首先预测操作人员双手的运动轨迹,随后调整机器人的运动路径,防止对操作人员双手造成碰撞;SHIN[11]提出一种可根据人机分离距离计算协作过程中机器人可允许的最大运动速度的方法;与SHIN类似,FERRAGUTI等[12]采用控制障碍函数(Control Barrier Functions)通过人机分离距离动态调节机器人的动能,可在保证安全的前提下最大化发挥机器人的性能。
上述方法的不足之处在于仅从人机间的分离距离一个维度上对操作人员是否安全进行判断,限制了人机协作任务中人机配合的密切程度,使协作任务的效率降低。然而,分离距离小并不等价于与操作人员的安全受到威胁,应从操作人员的运动状态,与机器人的相对位置关系和任务约束等进行综合分析。以往工业机器人的安全事故通常与操作人员的误操作有关,而当前阶段协作机器人仍使用示教—再现编程模式的现状决定了操作人员的错误依然是导致人机协作安全问题的主要原因。
针对上述方法的不足,本文以监测人在协作任务中的异常行为为手段,提出一种新的人机安全协作方法。针对以人员操作为固定性和重复性的人机协作任务,首先建立人体运动特征模型,基于3D骨架追踪技术,学习操作人员在规范执行某协作任务时的作业行为,并将其离线制作为标准运动特征。其次,在线阶段以标准运动特征为基准判断操作人员的行为是否异常,并结合人机最小距离对异常行为分类。最后采用人工势场法,在识别到操作人员处于危险状态时,使机器人能通过避碰运动规划,及时规避人员的异常接触,保证人员安全。通过设计的零件分拣和人机协作涂胶实验,验证了方法的有效性。
操作人员在协作任务中的作业过程可由连续变化的身体姿态表征,身体姿态的变化可近似为人体关节点位姿的变化。可使用运动轨迹ξ描述连续变化的身体姿态,设ξ为D×L维矩阵,其中ξt表示连续观测的第t个操作人员身体位姿,为一个D维向量,由若干人体关节点的位姿坐标组成,L表示人机协作过程中连续观测的人体位姿向量总数。
Kinect 2.0深度相机可用于人体位姿追踪,该深度相机能以30 Hz的频率同时追踪人体25个关节点的位姿信息,其中位姿信息由位置和姿态两部分组成。协作任务中操作人员的运动主要集中于双手,上肢各关节运动的丰富性由手关节到肩关节逐渐降低,且Kinect2.0对关节位置追踪的准确性和稳定性优于姿态,因此为保证运动的丰富性与追踪的稳定性,并减少人体位姿向量的维度,选取双手关节和头关节作为运动特征关节,用于表征协作任务中的人体位姿。
一旦以上选取的关节点数据被获取并处理,操作人员在相机空间下的左手关节位置Pl=[xl,yl,zl]T,右手关节位置Pr=[xr,yr,zr]T和头关节位置Ph=[xh,yh,zh]T将在同一帧深度图像中被提取,并组合为一个9维的运动特征向量。从第t帧深度图像提取的操作人员运动特征向量ξt可表示为:
(1)
其中ξt为运动轨迹ξ第t列的值。
导致关节数据抖动的原因有:①相机的系统噪声;②关节位置的错误估计[12]。由系统噪声导致的抖动通常较小,而错误估计造成的抖动较大。
为获取关节数据抖动的具体范围,本文分别在动态和静态场景下针对Kinect 2.0关节数据的位置抖动范围进行了测试,结果表明无论在静态或动态场景下,当某关节的位置能被正确追踪时,其在X,Y或Z方向的抖动均不超过0.05 m。然而当肢体被遮挡或重叠导致关节位置不能被正确追踪时,其抖动范围会远超0.05 m,具体数值与被错误估计的位置有关(如图1所示,操作人员的右臂由于被障碍物遮挡,导致障碍物被误识别为右手关节)。此时造成的抖动将会导致系统捕捉到错误的运动特征,因此关节数据的抖动必须被妥善处理。
针对相机噪声造成的抖动,可应用简单的滤波算法进行平滑。针对异常关节点,采用基于人体运动能力限制的方法对其进行识别并剔除。当Kinect 2.0不能正确追踪一个关节点的位置时,该关节点通常会在疑似正确的位置间高频率跳动,这会导致关节运动轨迹的突变。如图2所示,未出现估计错误时关节的运动轨迹为一条均匀变化的折线,如图中实线部分所示,出现错误估计时如虚线部分所示。
一般地,若Pi(t)=[xi,yi,zi]T表示关节i在t时刻的位置(其中i=l,r,h分别为左手、右手和头关节的缩写),则关节i在该时刻的运动方向向量和运动速度分别为:
di(t)=Pi(t)-Pi(t-1),
(2)
(3)
由Kinect 2.0的采样频率可知Δt=1/30 s,关节的运动方向改变量为:
(4)
其中dmin的目的是为了防止当操作人员近乎静止时,过小的运动方向向量di(t)导致的过大的夹角θi(t)的变化[13]。结合式(3)和式(4),关节数据可靠性的衡量公式为:
(5)
为获取协作任务中操作人员手关节的运动速度范围,通过两个挥手实验1和2,连续捕获3 000帧手关节的位置数据,并依据式(2)和式(3)计算手关节运动速度。两实验中操作人员的双手分别做小幅度快速摆动和大幅度变速摆动。虽然挥手实验中操作人员手关节的运动规律与在真实协作任务中不同,但该实验能一定程度反映出协作任务中手关节运动速度的极端情况。为简化计算,将关节速度单位m/s转换为m/f(meters/frame),其中每帧f=1/30 s,实验结果如表1所示。结果表明,在捕获的关节数据中超过85%的关节运动速度在≤0.05 m/f的区间内,超过98%的关节点在≤0.1 m/f的区间内。
表1 手关节运动速度
结合实验结果,设置dmin=0.03 m,Vmax=0.1 m/f,θmax=85°,θmin=0°进行异常关节点的剔除。
针对去异常点后的关节数据,选用霍尔特双参数指数平滑滤波(Holt Double Exponential Smoothing Filter)和卡尔曼滤波对关节数据进行平滑处理。去异常点算法结合以上两种滤波算法对左手关节在X方向的运动轨迹处理效果如图3所示。实验结果表明该算法可有效剔除异常关节数据,以上两种滤波算法中卡尔曼滤波对数据的平滑效果较优,但会遭遇严重的过冲现象,因此选用霍尔特滤波算法平滑去异常点后的关节运动轨迹。
(6)
(7)
标准运动特征的学习阶段,在非手动标记的情况下,系统无法判断操作人员当前的示范是否规范,若选择在每次示范结束后,对其示范的规范性进行手动标记,则会增加学习的工作量。为将学习过程自动化,提出标准运动特征的迭代学习算法。
标准运动特征的学习流程如图4所示,当第一次示范结束后,以获取的运动轨迹ξ1作为初始参考轨迹,并设置可允许的最大运动偏差lmax,在后续的
(8)
在线阶段,将操作人员的在线运动轨迹ξon与离线学习的标准轨迹,若在线轨迹已严重偏离标准轨迹,则表明操作人员可能出现异常行为。
相对离线学习的标准运动轨迹,操作人员的在线运动轨迹ξon是从Kinect 2.0实时获取的,因此长度不断变化。由1.1节可知,运动轨迹为一个矩阵,每一列存储一个运动特征向量。当开启一次协作任务时,置首帧获取的深度图像序号为0,并开始提取运动特征向量,逐列保存到运动轨迹矩阵中,任务结束时停止提取运动特征向量,故任意运动特征向量的列序号与其被提取的图像的帧序号相同。
ξ∈ML,D()}。
(9)
(10)
算法1异常行为识别算法。
1 初始化:t=0,t′=0,φ=0
3 设置参数:φmax
4 for t≤Tmax
6 更新:φ++,t′=t
7 end if
8 if(φ≥φmax)
9 输出:识别到异常行为
10 end if
11 t++
12 end for
13 结束算法或进入下一次识别任务
根据异常行为所导致的结果不同,可将其分类为错误行为和危险行为,其中错误行为不会对操作人员造成危险,但可能会导致当前协作任务的失败,影响协作质量和效率;危险行为不仅使当前协作任务失败,还使操作人员的安全受到威胁。异常行为的分类标准为:①错误行为:识别到异常行为,且人机最小分离距离Dmin满足协作状态下人机间应保持的安全距离Dsafe要求;②危险行为:识别到异常行为,且人机最小分离距离小于安全距离Dsafe,如式(11)所示:
(11)
其中φ≥φmax等价于识别到异常行为。
人机最小距离可通过计算骨架特征中各关节点与机器人本体的距离进行获取[14],但该方法只能表征操作人员的骨架信息,无法对人体表面进行精确建模。可基于3D点云对人机最小距离进行追踪[9]。3D点云通过大量离散点,对人体表面进行表征,从而实现更精确的人机最小距离追踪,如图5所示。首先将获取的操作人员深度图像从协作空间背景中分离,防止无关背景对计算人机最小距离的干扰,并将分离后的深度图转换为3D点云。使用KNN(K-Nearest Neighbor)算法对点云进行聚类,提取操作人员所在的类群,可减小未完全剔除的背景和噪声的影响。通过Voxel Grid算法降采样使点云更加稀疏,有利于加快人机最近邻点的搜索。在处理后的操作人员点云中逐点计算数据点P与机器人末端O的距离‖D(P,O)‖,并寻找其中的最近点Pmin,可得到人机最小距离Dmin,其中:
(12)
由于传感器噪声的影响,直接利用操作人员点云所提供的位置信息进行人机最小距离的追踪存在抖动和误差,可采用卡尔曼滤波算法,结合人体运动学模型与深度相机获得的人体位置信息,对人机最小距离进行估计。可将操作人员在Δt时间间隔内的运动近似为匀速直线运动,运动模型定义如下:
(13)
人机最小距离的追踪效果如图5b所示,其中操作人员与机器人末端的最小距离由红色圆点进行标注。
若操作人员处于错误行为状态,对机器人进行减速停机处理可为人员提供反应时间,并能在机器人运行阶段防止撞击人或障碍物导致安全停止及其他安全隐患,待操作人员行为纠正后,可继续当前任务,或复位后重新开启任务。
若操作人员处于危险行为状态,此时人机存在碰撞风险,可基于人工势场法,采用操作人员点云中的人机最近邻点Pmin与机器人末端O的距离向量D(Pmin,O)生成斥力向量V(Pmin,O),在笛卡尔空间内使机器人产生排斥运动,以此来规避人员的危险接触,斥力向量定义为:
(14)
(15)
(16)
由于所述异常行为监测方法仅为监测操作人员在执行单一任务时是否出现异常,不涉及多任务状态下的任务识别与分类问题,因此准确率和召回率两个指标对该方法的适用性差,针对所述算法,提出两个新的衡量指标:
(17)
(18)
该实验仅验证异常行为识别算法的识别性能,为保证安全性和真实性,在3个非协作的人工零件分拣任务A,B和C中进行实验,其中实验人员首先用左手从零件箱中拾取零件,随后将其传递至右手,最后分别放入盒子A,B,C中。3个任务的区别仅为放置零件的盒子不同,实验人员执行每个任务的运动轨迹如图6所示。针对每个任务在离线阶段通过Kinect 2.0各捕捉100次示范轨迹,并通过节2.2的迭代学习算法生成标准运动轨迹均值和标准差,最后根据式(9)构建标准运动轨迹偏差约束。设在线轨迹ξon可允许的超出偏差约束范围的最大长度φmax=5。
针对识别率,采用交叉验证法。当测试识别算法对A,B,C中某个任务的异常行为识别率时,以通过该任务的样本轨迹学习的标准轨迹为基准,在另外两个任务的样本轨迹中各随机抽取80%做为测试集。每个测试样本包含的异常行为数均为1,因此每个任务对应的测试集包含的异常行为总数均为80。该实验包含6组测试,每组测试重复5次,且每组测试均对测试样本进行重新采样,实验结果图7所示。
由图7可知,算法的识别率受标准轨迹与测试轨迹的相似程度影响。因为操作人员在执行任务B和C时运动轨迹较为接近(如图6),由于Kinect 2.0对关节位置的估计存在误差,因此学习的两任务的标准运动轨迹的偏差约束可能存在交集。对处于交集的运动轨迹,该算法无法区分其具体属于任务B或C,因此图7中两组测试实验B(标准)→C和C(标准)→B的识别率结果相比其他组有明显下降(下降约10%)。
针对误判率,采用在线验证法。当以任务A作为基准时,操作人员重复执行任务A,统计误判次数占总执行次数的比例,其中针对A,B,C每个任务仍进行5次重复验证,每组执行次数为100次,实验结果如图8所示。
表2 不同置信水平对算法性能的影响
其中本次测试中不同任务的识别率由以其他两组任务为基准,针对该任务识别率的加权平均得出,如A任务的识别率P识别率(A)为:
(19)
由实验结果可知,算法的识别率和误判率均与置信水平呈负相关。
通过一个模拟的人机协作涂胶实验,验证所述人机安全协作方法的有效性,实验台布局如图9所示,该实验的标准操作流程为:
(1)操作人员拾取零件并固定在机器人涂胶区;
(2)固定后操作人员按下控制按钮,机器人开始涂胶作业;
(3)涂胶完毕后,操作人员拾取涂胶后的零件,通过视觉检查的方式将涂胶合格的零件放入成品区,不合格零件放入次品区。
对协作任务的不同状态采用三原色LED警示灯进行标示,其中:
(1)绿灯常亮:正常;
(2)黄灯常亮,并伴有短蜂鸣:错误行为;
(3)红灯常亮,并伴有长蜂鸣:危险行为。
所述人机安全方法运行在Windows 10与虚拟机中的Ubuntu的混合环境下,并利用Robot Operating System(ROS)构建主从系统进行数据传送,其中Windows下负责通过Kinect SDK 2.0读取骨架数据、深度图像数据,并提供所述方法各算法所需的计算力和运行环境,Ubuntu下负责与UR5机器人建立通讯,传输机器人的各关节位置、速度状态,并向UR5控制器发送控制指令。
错误行为识别实验中,当机器人涂胶完毕后,实验人员没有拾取涂胶后的零件并对其进行视觉检查,右手直接进入成品摆放区域,此时实验人员的右手关节在Y轴方向的运动轨迹脱离标准轨迹的95%置信区间,如图10a所示,阴影部分为标准轨迹的95%置信区间范围,当脱离此范围的在线轨迹长度φ=5时(第421帧),系统将该行为判断为错误行为,并迅速置警示灯为黄灯常亮,并伴有短蜂鸣,同时控制机器人减速停机,实验实况如图11a所示。
危险行为识别实验中,实验人员在机器人涂胶过程中迅速从机器人底部接近其末端执行器,使人员的右手关节在Z方向的运动轨迹脱离标准轨迹的偏差约束范围(实验人员右手关节在Z方向的运动轨迹如图10b所示),并使人机最小距离Dmin 本文提出一种基于异常行为监测的人机安全协作方法。通过离线学习操作人员在规范作业状态下的标准运动特征,对其异常行为进行在线识别与分类。基于人工势场法,在异常人机接近状态下对机器人进行避碰运动规划,防止人机危险碰撞。相比以往的人机安全协作方法,本方法允许规范作业状态下的人机密切接触与配合,且能在异常状态下控制机器人规避操作人员的危险接触。最后通过零件分拣实验对异常行为识别算法的性能进行了验证,分析了不同参数对识别性能的影响,并在人机协作涂胶实验中验证了所述人机安全协作方法的有效性。未来,将针对异常行为识别算法误判率过高的问题进行改进,同时尝试结合行为预测方法在线预测操作者的执行工序,以胜任工序更加复杂或工序间切换具有随机性的多模式人机协作任务。5 结束语