周 林,高 亮,钟浩然,董昊臻
(华中科技大学 数字制造装备与技术国家重点实验室,武汉 430074)
随着中国制造2025战略的不断推进,视觉技术得到了快速发展,基于视觉传感器的运动追踪技术在人机交互领域得到了广泛应用[1-2]。常见的交互型机器人[3]体积较小,自由度较少,对输入的运动数据精度要求不高。而对于体积较大的工业机器人(如机械臂),需要高精度的运动数据作为信息输入来实现其对人上肢动作的模仿。为了减小关节点运动数据的异常值对人机交互运动的影响,研究并改进上肢关节点的滤波方法[4-5]具有重要意义。
人体上肢关节点的滤波方法有很多种,比较常见的有卡尔曼滤波[6-7]和粒子滤波[8-9]等。文献[10]在解决移动机械臂动态抓取的问题中,通过卡尔曼滤波对目标物体位置进行预测,对动态目标的滞后进行了补偿,提高了对目标物体的跟踪精度。文献[11]提出了基于Beowulf机群中改进的粒子滤波新算法,降低了粒子滤波的计算时间,并将该方法应用于人体运动跟踪中。文献[12]使用Kinect对乒乓球手正手攻球进行动作采集,采用了二次指数平滑算法来对原始数据进行降噪处理,存在滞后问题,文中通过预测值减小滤波延迟会影响滤波的精度。文献[13]提出了一种基于质量评价的运动跟踪数据融合方法,使用惯性传感器的测量数据来补偿卡尔曼滤波的观测误差,提高了运动跟踪系统的稳定性。文献[14]在对人体上肢关节点追踪时,采用了分块采样的方法,消除了使用粒子滤波进行高维空间数据跟踪时需要额外粒子的问题,提高了滤波速度。文献[15]提出了一种自适应粒子滤波方法,通过自适应来选择噪声方差和粒子数量,该方法用于跳水运动的视频跟踪,降低了误差率。文献[16]提到了使用无迹卡尔曼滤波方法进行人体关节运动检测,相比于传统卡尔曼滤波和扩展卡尔曼滤波,该方法精度更高。对比常见的卡尔曼滤波和粒子滤波方法,卡尔曼滤波在处理线性问题上具有处理速度快的优点。而对于非线性问题,如果卡尔曼滤波的预测噪声协方差矩阵Q和测量噪声协方差矩阵R取值不当,滤波效果会变得很差[17]。粒子滤波受环境的非线性因素的影响较小,在人体运动跟踪领域的应用多,但是这种方法需要大量样本来保障滤波精度,而样本数的增加会造成滤波时间的增加[18]。
针对传统滤波方法在滤波精度、滤波时间和滤波稳定性上难以兼顾的问题,本文提出了一种基于相似度函数的改进关节点阈值滤波方法。和以往的研究相比,本文的主要贡献有以下3点:①提出了关节点相似度函数,通过前景轮廓相似度、肢体比例相似度、分布相似度3个指标对关节点数据的可信度进行描述;②通过改进的阈值滤波方法进行数据筛选,提高了滤波精度的同时,滤波耗时较短,稳定性较好;③将滤波后的运动数据应用在工业机器人平台上完成了人机交互实验,验证了方法的有效性。
Kinect对人体的运动追踪主要是通过关节点来描述[19]。Kinect V2.0可以追踪一个用户身上的25个关节点,对这25个关节点标记如图1所示。
图1 Kinect追踪人体25个关节点坐标Fig.1 Coordinates of 25 human joints tracking by Kinect
一段时间内,第n帧的关节点的空间位置信息可以通过Kinect的3D坐标P表示。
P=pij(k)
(1)
(1)式中:i代表关节编号,i=1,2,…,25;j代表三维坐标,j=x,y,z;k=1,2,…,n。
Kinect在采集关节点空间坐标的过程中,容易受到硬件性能不稳定或者周围环境干扰项(光线强弱,透明和光滑物体等)的影响,采集到的深度图像难以反映人真实的运动情况,造成Kinect输出的被跟踪者的关节点运动数据不准确。此外,人在运动过程中的动作不连贯以及身体部位之间的重叠和遮挡等问题,也容易产生关节点异常值。常见的滤波方法大多采用预测或者拟合的方式,通过关节点一段时间内的运动数据,建立数学模型来预测下一阶段的运动状态。这种方法存在滞后误差[20]和预测误差[21],难以准确地表达关节点真实运动情况。对拟合方程或者预测方程的要求较高,难以适应不同环境。
本文对提取的每帧图像中的关节点数据设定评价体系,提出了关节点相似度函数来对数据的有效性进行描述。涉及到的描述指标需要满足3个特征:①方便采集;②具有普适性;③容易计算。本文选取前景轮廓相似度LF,肢体比例相似度LB和分布相似度LJ3个指标来构建关节点相似度函数。
Kinect对上肢进行关节点坐标提取之前,首先要将人从深度图像的背景中分离出来,本文使用的是视频的前景对象分割方法,即从连续的视频帧中分离出特定的运动对象[22-24]。采用Kinect2.0 SDK中的MapDepthFrameToColorSpace函数,将深度帧映射到彩色空间,然后过滤掉背景图像,得到前景图像,如图2所示。
图2 深度图像和前景图像Fig.2 Depth image and foreground image
前景轮廓相似度的含义是经过前景分割后的前景轮廓与原来的深度图像帧中轮廓的相似程度,反映了前景分割中目标对象轮廓和背景分离的准确度。从截取的视频帧中取前景图像,将图像投影到二维平面。对第i帧的二维图像随机选取Nf(i)个点,比较其和深度图中轮廓的重合点数Nc(i),得到前景轮廓相似度LF的表达式为
(2)
(2)式中,LF越大,表示对前景轮廓中目标对象分离的准确度越高。
为了提高Kinect跟踪人体运动的的鲁棒性,定义了关节点间距的比例相似度函数。人的上肢可看作由13个关节点组成的连杆模型,相邻3个关节点可以组成2个连杆,相邻两连杆之间的间距之比与真实人体上肢的对应长度比例的相似程度即为肢体比例相似度函数,如图3所示。
图3 人体上肢关节点连杆模型Fig.3 Model of upper body joints
人体上肢对应的长度比例可以通过实际测量和计算得到。为了简化计算,将上肢视为左右对称模型。以P0为原点,以模型左半部分为例,共有P0~P67个点,构成6个连杆,测量相邻连杆间的长度比in。
(3)
测量人体左半部分实际尺寸比例结果如表1所示。人体上肢的右半部分跟左半部分对称,长度比相同。
表1 人体实际尺寸比例
(4)
对视频帧图像进行前景分割的过程中,关节点在深度图像中的位置容易受到光照、Kinect摆放不水平等外界因素的影响,产生偏移[25-26]。定义分布相似度函数来描述关节点在彩色图像和前景图像中的位置分布的相似性。从视频帧彩色图像中截取图中5个固定区域,比较其和前景图像中同一区域的关节点数目及位置,如图4所示。
(5)
对Kinect获取到的每帧深度图像的关节点求解相似度函数值后,对关节点的异常值数据进行筛选。相似度函数值越高,说明该关节点的数据可信度越高。传统的滤波方法在未知数据可信度的情况下,通常会采用拟合或者预测的数据来替代模糊不清的数据。在对数据精度要求和适用性要求不高的情况下,这种方式能够满足操作者的使用要求。但是拟合和预测的数据具有不确定性,难以客观地反映人体运动情况。而阈值筛选法可以通过缩小时间间隔,增加采集样本数的方式来筛选出数据集中的有效数据,并滤除无效数据,提高滤波精度。本文结合关节点相似度函数对阈值筛选法进行改进,提高了滤波过程的鲁棒性和在不同环境下的滤波适应性。
为了对关节点相似度的优劣进行评价,定义了关节点相似度函数。使用前景轮廓相似度LF、肢体比例相似度LB和分布相似度LJ3个指标来检验某一时刻输出的关节点数据是否达到滤波要求。这3个评价指标相互独立,各自对关节点可信程度进行描述,且互不影响。因此,可以通过赋权值的方法对整体的相似度进行描述。相似度函数L的计算公式为
L=δ1LF+δ2LB+δ3LJ
(6)
(7)
当δ1=1时,只考虑前景轮廓相似度的影响,εd1=0.125 867。
图5 肘关节滤波结果1Fig.5 Filtering results of elbow joint 1
设δ1=0,δ2=1,δ3=0,只考虑肢体比例相似度的影响,此时相似度函数可以简化为L=LB。采集此时的肘关节点的测量值和基于相似度的滤波值,跟踪曲线如图6所示,关节点坐标平均偏差εd2=0.302 783。
设δ1=0,δ2=0,δ3=1,只考虑分布相似度函数的影响,此时相似度函数可以简化为L=LJ。采集此时的肘关节点的测量值和基于相似度的滤波值,跟踪曲线如图7所示,关节点坐标平均偏差εd3=0.122 908。
图6 肘关节滤波结果2Fig.6 Filtering results of elbow joint 2
图7 肘关节滤波结果3Fig.7 Filtering results of elbow joint 3
比较实验数据可知,前景轮廓相似度函数LF和分布相似度函数LJ组的平均偏差较小,说明它们对相似度函数的影响权重更大,且二者的影响偏差相近。因此,取δ1=δ3,根据δ2取值的不同设置多个分组,记录各组的关节点误差。通过实验结果拟合出误差和对应权值的分布曲线如图8所示,列出了δ2∈[0.1,0.9]的9组结果,相邻组间δ2间隔为0.1。分析实验结果发现,δ2大于0.4时误差过大,不适宜选用。δ2=0.2时关节点滤波的效果较好,本文中选取的权值δ=(0.4,0.2,0.4)。
图8 权值选取实验Fig.8 Experiment of selecting the weight
使用阈值筛选法进行滤波之前通常需要设定一个预期值,达到预期值说明该数据是达标的,输出该数据;未达到说明该数据不达标,需要进行筛除。阈值越高,滤波的计算耗时也越长,考虑实际情况中采用的计算机性能,选取阈值为0.9,可以保障30 Hz下滤波过程具有较小时延。 改进的阈值筛选法滤波的流程如图9所示。读入关节点P,计算该关节点的相似度函数L。设定阈值LT=0.9(相似度为90%)。如果读入的关节点的相似度函数值小于阈值0.9,说明没有满足滤波条件,筛除这些关节点;如果大于这个阈值,则与上一次滤波结果比较,取相似度函数值更大的关节点数据作为滤波结果输出。
图9 改进的阈值筛选法Fig.9 Improved threshold filtering method
设置滤波频率30 Hz,Kinect深度相机水平放置,从人进入视野范围开始,对肢体进行运动追踪,构建了人体运动模型,并输出了关节点运动数据至滤波器,滤波器对运动数据进行筛选。图10为滤波后追踪到的人体动作序列。可以看出,滤波跟踪到的人体动作序列较为清晰,能够完整反映人体骨架结构。图11为100组腕关节点的滤波误差,误差均值为8%左右,返回一组滤波结果耗时在100 ms左右。
图10 人体动作序列滤波Fig.10 Filtering results of human body motion
图11 腕关节滤波误差Fig.11 Wrist filtering error
采用LPMS-B2穿戴式传感器测量关节角度,作为测量数据来和滤波数据进行比较,如图12所示。使用传感器测量人体关节角度变化的精度在静态下可以达到0.5°,在动态下可以达到2°。操作者穿戴传感器后,建立了右臂在空间中的3维模型。
图12 传感器测量角度数据Fig.12 Joint angle data measured by sensors
(8)
其对比结果如表2所示,使用本文提出的方法,采集到的关节角数据误差小于10%,可以满足机械臂模仿人臂运动的控制数据的精度要求。
表2 传感器测量结果和滤波结果对比
比较传统的卡尔曼滤波、无迹卡尔曼滤波、粒子滤波、自适应粒子滤波和本文提出的滤波方法对上肢肘关节角的平均跟踪误差,如表3所示。由表3可见,本文提出的滤波方法的精度最高,优于常见的卡尔曼滤波和粒子滤波方法,精度可以达到8.49°;误差均方差仅次于粒子滤波,且相差不大,在滤波过程中的误差的浮动性较小,具有良好的稳定性;滤波耗时仅长于经典卡尔曼滤波,远低于粒子滤波,滤波过程中的时效性较好。因此,本文提出的上肢关节点滤波方法的综合性能在人体不同姿态下的表现较为稳定,适用于多种场景下的运动追踪。
搭建人机运动传递框架如图13所示。在获取了关节角的运动数据之后,可以通过运动传递模型,将人手臂的动作映射到机械臂运动空间,并控制机械臂的运动。Kinect作为信息输入端口采集关节点的空间坐标,使用空间向量法来计算各关节角度,本文提出的基于相似度函数的改进关节点阈值滤波方法提高了数据的可靠性。
在工业机器人操作平台上进行了人机运动交互实验,UR5(universal robots 5)机械臂基于本文方法滤波后的关节点运动数据进行抓取实验。通过分解的抓取动作的完成情况来评估所提出的滤波方法的效果。使用的硬件系统主要包括UR5机械臂,Kinect V2.0深度相机,灵巧机械手爪。骨骼追踪和关节点获取主要是通过OpenNI来实现,机械臂运动控制通过C++控制程序实现。Kinect追踪人体的运动序列,使用本文提出的滤波方法处理数据作为运动信息输入,指引机械臂模仿人的手臂动作完成抓取实验,如图14所示。
表3 肘关节θ不同角度下的平均跟踪误差
图13 人机运动传递框架Fig.13 Human-robot motion transmission framework
图14 UR5机械臂实验Fig.14 UR5 robotic arm experiment
采用本文提出的滤波方法和Kinect自带的关节点滤波器进行对比,对6种动作类型各实验50次,统计实验的完成情况如表4所示。实验结果表明,相比于Kinect默认的滤波器(卡尔曼滤波器和粒子滤波器),本文提出的滤波方法对机械臂各类动作的完成率都有较大提升。这是因为Kinect SDK中的滤波器滤波精度不够,且没有专门针对人和机械臂交互的这一场景的关节点滤波模型,因此,对机械臂实验的滤波效果不好。通过实验,验证了使用基于相似度函数的改进关节点阈值滤波方法处理后的数据,能更好地完成人机交互实验。
表4 机械臂动作完成情况
为了减少运动数据采集过程中的外界因素干扰,提高数据筛选的鲁棒性和准确性,本文提出了一种基于相似度函数的上肢关节点改进阈值滤波法。通过前景轮廓相似度、肢体比例相似度和分布相似度3个评价指标建立了关节点相似度函数,基于相似度函数设定了相似度阈值对关节点数据进行筛选。本文方法能够适应不同环境下的关节点滤波,减少光照、透明物体、光滑表面等环境噪声对Kinect的影响,滤除不符合要求的运动数据。跟传统方法进行对比,具有误差小,稳定性高,耗时少的优点。实验结果表明,本文方法具有很好的适用性和可移植性,可以广泛应用于人机交互、仿人机器人、运动物体追踪等领域的研究。