一种虚拟机械臂交互的抖动消除方法
【技术领域】
[0001] 本发明属于人机交互领域,特别是一种虚拟机械臂交互的抖动消除方法。 技术背景
[0002] Kinect是微软公司2010年推出一种新的3D传感器设备,其导入了即时动态捕获、 影像辨识、麦克风输入、语音辨识、社群互动等功能。通过影像辨识,可以识别人体及动作。 利用微软的SDK开发工具,可以获取人体骨骼数据,许多研究者正致力于利用骨骼数据进 行基于Kinect人机交互研究。
[0003] 对于Kinect提供的骨骼关节数据,微软SDK开发工具本身提供了平滑函数进行处 理,但该平滑处理还是属于一种初级的不具特定性的处理方式,对交互过程中的许多特定 噪声效果不大。对于交互过程中的抖动问题,有的人将阻尼振动模型施加到交互对象上,利 用模型的限制来消除抖动,该抖动消除效果依赖于阻尼振动模型的参数设置及模型的复杂 程度,有的人则利用双指数平滑算法对关节坐标进行平滑。由于视觉的局限性,并不是所有 的实际交互动作都能由传感器得到的数据真实反映,而交互过程中,通常传感器数据计算 得到数据直接传递给交互对象,这样可能导致交互对象的部分交互范围成为了交互死角。
【发明内容】
[0004] 本发明的目的是提供了一种虚拟机械臂交互的抖动消除方法,以便能够消除交互 过程中大部分的抖动、交互动作不连贯等问题。
[0005] 本发明的目的是这样实现的,一种虚拟机械臂交互的抖动消除方法,其特征是,至 少包括如下步骤:
[0006] 步骤1 :初始化系统参数和设备,然后选择是否进行映射参数校正,若否,进入步 骤2;若是,进入步骤9;
[0007] 步骤2 :通过3D传感器获取人体的7个关节的3维坐标,这7个关节的3维坐标 包括左肩关节坐标、右肩关节坐标、肩膀中央关节坐标、臀部中央关节坐标、右肘关节坐标、 右腕关节坐标和右手关节坐标,同时还求取这7个关节的跟踪状态;
[0008] 关节的跟踪状态的值有3种:0、1、2,对应着"跟踪"、"推断""未跟踪" 3种情况。
[0009] 步骤3 :确定用户坐标系,利用步骤2获取的7个关节的3维坐标,确定用户坐标 系,并基于用户坐标系求4个角度的值,记为角度的测算值,这4个角度包括右臂的右倾角、 前后倾角、手肘弯曲角和手腕弯曲角,同时根据关节的跟踪状态确定每个测算值的有效状 态;
[0010] 测算值的有效状态取值有2种:1、0,分别表示有效、无效。
[0011] 步骤4 :对角度的测算值进行抖动消除处理;
[0012] 步骤5 :抖动消除处理的结果,记为角度的平滑值,通过映射过程转化为用于交互 的角度值,记为角度的交互值,传递给通信模块;
[0013] 步骤6 :通信模块将交互值进行封装,并发送给远程端的交互端;
[0014] 步骤7 :交互端根据接收的数据,更新虚拟机械臂的状态;
[0015] 步骤8 :返回到步骤2 ;
[0016] 步骤9 :进行映射参数校正处理,完成后进入步骤2。
[0017] 所述的步骤4抖动消除处理包括如下步骤:
[0018] 步骤201:求4个角度的测算值Ag[i]和有效状态M[i];进行卡尔曼滤波器的预 测,获取4个角度的预测值Ap[i];此处i表示角度i的数据;令i= 1,转到步骤202 ;
[0019] 步骤202:若角度i的测算值Ag[i]的有效状态M[i]等于1,转到步骤203;否则, 跳到步骤209;
[0020] 步骤203 :判断角度i的测算值Ag[i]是否超过上下界Up[i]和Dn[i],即是否满 足条件Ag[i] >Up[i]或Ag[i] <Dn[i],若是,转到步骤204;否则,跳到步骤205;
[0021] 步骤204 :将角度i的测算值Ag[i]调整到上下界范围内,即若Ag[i] >Up[i],则 令 Ag[i] =Up[i];若 Ag[i] <Dn[i],则令 Ag[i] =Dn[i];转到步骤 205;
[0022] 步骤205 :对角度i的测算值Ag[i]与预测值Ap[i]作差,再求绝对值,结果记为 山:即d|Ag[i]-Ap[i] |,转到步骤 206 ;
[0023]步骤206:判断山是否大于阈值thi,若是,转到步骤207;否则,跳到步骤210;
[0024] 步骤207:求角度i的变化量d2,其中角度i的上时刻的测算值记为Ag' [i]。若 Ag'[i]不存在或无效,贝>1令(12=0°;否则,令d2= |Ag[i]-Ag'[i]|,转到步骤208;
[0025] 步骤208:判断d2是否大于阈值th2,若是,转到步骤209;否则,跳到步骤210;
[0026] 步骤209:用角度i的预测值Ap[i]替换其测算值Ag[i],即令Ag[i] =Ap[i],转 到步骤210 ;
[0027] 步骤210 :判断i是否等于4,若是,跳到步骤212 ;否则,转到步骤211 ;
[0028] 步骤211 :令i=i+1,跳到步骤202 ;
[0029] 步骤212:以4个角度的测算值Ag[i]作为卡尔曼滤波器的观测结果,进行卡尔曼 滤波器的校正,得到抖动消除的结果,记为角度的平滑值A[i]。
[0030] 所述的步骤5中的映射过程,将4个角度的平滑值A[i],通过映射过程转化为4个 交互值Ir[i],包括:
[0031] 平滑值A[i]到交互值Ir[i]的映射关系可表示为:
[0032]
[0033] 其中,Up[i]、Dn[i]是角度i的上下界,Max[i]、Min[i]是角度i的最大值和最小 值。这里4个角度的上下界设为:
[0034] Up[l] = 90。,Dn[l] = 0。,Up[2] = 90。,Dn[2] =-90。
[0035] Up[3] = 90。,Dn[3] = 0。,Up[4] = 90。,Dn[4] = 0。
[0036] 默认情况下,角度i的上下界与其最大最小值是一致的,即Up[i]等于Max[i], Dn[i]等于Min[i]。映射关系可以通过步骤9映射参数校正处理得到调整,因为映射参数 校正处理可以改变映射参数Max[i]和Min[i]。
[0037] 所述的步骤9映射参数校正处理包括如下步骤:
[0038] 步骤301:初始化统计变量sum,设sum= 0。将每个角度的上下界包围的区间 [Dn[i],Up[i]]均分为30个小区间,建立每个角度的统计直方图。初始化统计直方图中每 个小区间的频数为0;
[0039] 步骤302 :获取每个角度的测算值Ag[i]及有效状态M[i];
[0040] 步骤303 :若所有角度的测算值都有效,即条件M[i]等于1对i取1、2、3、4全成 立,转到步骤304 ;否则,跳到步骤302 ;
[0041] 步骤:304:根据每个角度的测算值Ag[i],累积每个角度的直方图;令sum= sum+1,转到步骤305 ;
[0042] 步骤305 :判断sum是否大于5000,若是,转到步骤306 ;否则,跳到步骤302 ;
[0043] 步骤306 :分析每个角度的直方图,确定映射参数。对于每个角度,在直方图中分 别从最左端和最右端开始往中间搜索找出第一次出现频数超过5的小区间,从最左端开 始搜索找出第一次出现的频数超过5的小区间,以该小区间的左边界为该角度的最小值 Min[i],从最右端开始搜索找出第一次出现的频数超过5的小区间,以该小区间右边界为 该角度的最大值Max[i]。这样就得到了每个角度的最大值Max[i]和最小值Min[i]。
[0044] 本发明的优点是:利用卡尔曼滤波器和时间及空间限制条件对交互用到的数据进 行降噪处理,减弱或消除交互中抖动现象。并提出一个用于验证的交互系统,该系统由3D 传感器提取用户的骨骼信息,并进一步计算出右手及右手臂的若干关节的角度值,利用本 抖动消除方法对得到的关节的角度值进行抖动消除处理,之后通过一种新的映射方法将其 转化为交互值,再通过通信传递给虚拟机械臂更新状态以实现交互目的。
【附图说明】
[0045] 图1是系统总流程框图;
[0046] 图2是抖动消除处理流程图;
[0047] 图3是映射参数校正处理流程图。
【具体实施方式】
[0048] -种虚拟机械臂交互的抖动消除方法,如图1所示,至少包括以下步骤:
[0049] 步骤1 :初始化系统参数和设备,然后选择是否进行映射参数校正,若否,进入步 骤2;若是,进入步骤9;
[0050] 步骤2 :通过3