基于时间序列相似性的体感机械手臂控制系统研究
Research on Somatosensory Arm Control System Based on Time Series Similarity
摘要: 为应对复杂多变的环境,本文采用了体感技术和机器人控制技术与Kinect设备相结合的方法,设计了一个基于体感的机械手臂控制系统。为了更接近于人体手臂的结果,采用了六自由度的串联型机械手臂,使用51单片机作为主控板,Kinect Xbox One作为传感器,利用Kinect传感器无接触式采集人体动作信息并转化为控制指令,让机械手臂模仿并跟随人体运动。骨骼数据采集模块采集骨骼关节点的坐标,计算出关节角度并存入Mysql数据库中,Mysql数据库作为主要的通信桥梁,通过相似性算法将骨骼数据采集模块和机械臂控制模块结合起来,采集平台向数据库存入关节角度数据,控制平台从数据库中取出关节角度数据。控制模块计算出当前时刻与前一时刻关节角度的差值,然后与数据库中的数据匹配,从而识别运动轨迹,自动完成剩下的动作,也可以理解为机械手臂能做出“预判动作”。DTW算法的优势在于减小延时,使得机械手臂更加迅速地跟随人体手臂运动。实验结果证明该方法能有效地降低时滞性、平滑原始数据以及自动滤除异常数据。
Abstract: In order to cope with the complex environment, this paper uses a combination of somatosensory technology and robot control technology and Kinect equipment to design a robotic control system based on somatosensory. In order to get closer to the results of the human arm, we used a six-degree-of-freedom series robot and used a 51 MCU as the main control board, and the Kinect Xbox One as a sensor. In order to make the robot arm imitate and follow the human movement, we used the Kinect sensor to collect human motion information without contact and convert it into control commands. The bone data acquisition module collects the coordinates of the bone joint points, calculates the joint angle and stores it in the Mysql database. As the main communication bridge, Mysql database combines the bone data acquisition module and the robot arm control module through the similarity algorithm. The acquisition platform enters joint angle data into the data inventory, and the control platform takes the joint angle data from the database. The control module calculates the difference between the joint angle of the current moment and the joint angle of the previous moment, and then matches it with the data in the database to identify the motion trajectory and automatically complete the remaining motions. It can also be understood that the robot arm can make a “pre-judgment action”. The advantage of the DTW algorithm is that it can reduce the delay so that the robot arm follows the movement of the human arm more quickly. Experimental results show that the method can effectively reduce the time lag, smooth the original data and automatically filter out the abnormal data.
文章引用:胡诗琴, 袁海云, 邹金池, 石俞磊, 刘雪梅, 孟莨钦. 基于时间序列相似性的体感机械手臂控制系统研究[J]. 动力系统与控制, 2018, 7(4): 287-297. https://doi.org/10.12677/DSC.2018.74033

1. 引言

在国内,体感技术正处于发展早期。通过对相关文献分析,了解到基于光学感测的Kinect 3D摄像设备在机器人领域应用广泛,主要集中在场景建模、视觉分析和姿态识别三个方面。其中,来自上海交通大学的钱鹤庆学者使用Kinect采集人体骨骼关节点坐标,并采用DTW算法进行动态姿势识别,发明出虚拟地球仪 [1] 。清华大学的研究者将桌面作为机械臂的工作空间,使用Kinect采集桌面上目标物的标点坐标,然后根据坐标值,采用RRT算法规划机械手臂的运动路径,让机械臂自主抓取目标物并扔进垃圾桶,从而实现简易桌面清理任务 [2] 。大连理工大学的裴岩明将体感技术与工业机器人技术结合,设计了一个体感远程控制机械臂的系统 [3] ,利用Kinect捕获人体动作信息,并将其作为控制指令,远距离去控制机械手臂。重庆邮电大学的林海波完成了基于Kinect的景深数据采集 [4] ,通过系列计算,得出操作者的腰、肩、肘和腕关节的转动角度,利用串口通信,将这些角度发送给机器人的单片机控制端,控制四自由度的机械手臂完成抓取任务。中国民族大学的孙强和王文涛研制了一种基于体感遥控的全向移动机器人系统 [5] ,首先通过Kinec传感器获取人体深度图像数据,然后利用骨骼跟踪技术计算关节点的三维坐标,从而识别出动作,并作为控制指令传输给机器人执行。

本文研究的是基于体感的机械手臂控制系统,使用体感传感器Kinect采集人体动作信息,然后通过USB3.0接口传递给计算机,再让计算机进行一系列复杂运算和处理,计算出人体手臂每一个关节转动的角度差。之后将这些角度差值转化为字符串型的控制指令,通过蓝牙串口发射模块,将控制指令发送给单片机,让机械臂对应的舵机转动,最终完成体感控制机械臂的任务 [6] 。利用体感传感器Kinect对机械手臂实现直接实时控制,然后建立时间序列模板库,利用时间序列相似性,让采集到的运动序列和模板库中的模板序列进行实时匹配,找到最为相似的模板序列,并将模板序列转化为机械臂的控制指令。这样可以减少误动作的产生,最后使得机械手臂的控制更加平滑、自然。设计分为四个模块:骨骼数据采集模块(Visual C++编写)、机械手臂控制模块(Visual C#编写)、Mysql数据库通信模块和时间序列相似性算法(MATLAB编写)。而基于时间序列相似性算法中的一些常用算法有:模板匹配、动态规划、动态时间规整进行比较,实验结果显示,DTW算法能有效地降低时滞性、平滑原始数据以及自动滤除异常数。

2. 相关工作

2.1. 骨骼数据采集模块(Visual C++编写)

2.1.1. 骨骼追踪的实现

Kinect传感器能够追踪人体全身的25个骨骼点,识别出人体的骨架模型,找到人体骨骼节点图像,算出骨骼特征点的坐标是骨骼数据采集平台的核心工作。本文在VS 2013 (Visual Studio 2013)的开发环境下,使用C++编程语言与Opencv开发库来完成骨骼跟踪。

从深度图像信息中提取出骨骼数据,首先要获得深度图像,然后通过计算机的图形视觉处理技术,获得人体图像,最后得出由骨骼关节点构成的人体骨架图,如图1所示。

Skeleton Stream (骨骼数据流)、Skeleton Frame (骨骼框架)、Skeleton (骨骼)和Joint (特征点)是Kinect的骨骼追踪系统中的四个主要对象模型。其中Skeleton Frame包含了人体的骨架信息。Joint共有ME25个骨骼特征点。每一个Joint都具有三种属性,如表1所示。

其中,Joint中的Joint Tracking State具有三种跟踪状态属性,如表2所示。

Figure 1. Human skeleton diagram

图1. 人体骨架图

Table 1. Three properties of the joint object

表1. Joint对象的三种属性

Table 2. Attribute characteristics of Joint Tracking State

表2. Joint Tracking State的属性特征

当Kinect追踪骨骼特征点时,骨骼的姿势有可能会被遮住,然后导致追踪效果不好。因此,在处理骨骼数据时,首先要进行判断,只有当Joint Tracking State等于Tracked的骨骼点时才能进行处理,这样就可以除去有干扰的骨骼信息。

通过上述分析,骨骼数据采集流程图如图2,获取的骨骼数据采集图如图3

2.1.2. 关节角度的计算

本文采用平面几何计算方法,计算骨骼关节点夹角时,两个关节点的连线与水平面的夹角θ,计算方式如图4,θ的结果如公式(2.1)。

因此,角度θ = (2.1)

本文采用的六自由度机械手臂有六个舵机共同控制机械臂的运动。考虑到人体手臂一只手只能控制机械臂的5个自由度,那么需要另外一只手来完成最后一个自由度的控制。人体双臂的控制动作与机械臂动作的对应关系如下表3

2.2. 机械手臂控制模块(Visual C#编写)

在Visual Studio 2013环境下使用C#搭建机械手臂控制平台并编写上位机软件,如图5

机械手臂控制平台将骨骼数据采集平台所采集的角度数据转化为舵机的控制信号,然后控制机械臂运动,舵机编号如图6。其中上位机发送给51单片机的是机械臂的控制指令(即舵机的控制指令),由于舵机采用PWM脉宽调整信号控制,控制指令包括PWM值的信息。经过测量计算,关节角度的改变值转换算成PWM值时,270˚舵机每转动1˚,PWM值改变7.4;180˚舵机每转动1˚,PWM值改变11.11。例如原来的PWM值为1400,关节角度变化10˚,则PWM变为了1500 + 7.4 * 10 = 1474。

综上所述,从Kinect传感器到机械手臂控制的设计框图如图7所示。

2.3. 动态时间规整算法

DTW算法主要是基于动态规划(Dynamic Programing)的思想,它是通过动态归整来对齐时间轴,使得每个数据点都有着最好的对齐方式,从而消除对不齐造成的误差,以此来获得时间序列间的最优匹配 [7] 。如果通过时间变化的运动时间序列与时间序列模板库中的模板序列有最大程度的一致性,那么就可以将其中的模板序列去作为一种控制指令去控制机械臂运动。其中DTW算法的编写是用MATLAB这个软件完成的,并且MATLAB还需要完成多种任务:完成DTW的编写;实现与Mysql数据库之间的通信与联系;不断去访问实时数据表,通过其中的比较,将其用DTW算法和时间序列模板库中的模板序列进行相似性判断。

DTW算法实现的原理如下:

假定存入模板库中的运动序列组为一个参考模板,可以表示为 R = { R ( 1 ) , R ( 2 ) , R ( 3 ) , , R ( M ) } ,其中, R ( 1 ) , R ( 2 ) , R ( 3 ) , , R ( M ) 分别表示一个n维的时间序列,M为时间序列的个数 [8] 。实时的动作过程看作是测试模板,表示为 T = { T ( 1 ) , T ( 2 ) , T ( 3 ) , , T ( N ) } ,其中, T ( 1 ) , T ( 2 ) , T ( 3 ) , , T ( N ) 分别表示一个n维的时间序列,N为时间序列的个数。

Figure 2. Bone data collection flow chart

图2. 骨骼数据采集流程图

Figure 3. Bone data acquisition diagram

图3. 骨骼数据采集图

Figure 4. Calculating the angle between two joint points

图4. 计算两个关节点之间的夹角θ

Table 3. Two-arm control arm rotation

表3. 双臂控制机械臂转动

Figure 5. PC interface

图5. 上位机界面

Figure 6. Numbering diagram of the steering gear

图6. 舵机的编号图

Figure 7. Kinect sensor to robot control design block diagram

图7. Kinect传感器到机械手臂控制的设计框图

计算参考模板和测试模板之间的直接距离,可以得出它们之间的相似度。两个模板之间的距离越短,可以得出两个模板之间的相似度也越高。根据DTW的边界条件,最短距离也就是 d = ( 0 , 0 ) d = ( m , n ) 之间的最短路径如图8。再结合DTW算法的单调性和连续性要求,设定局部路径约束条件为:当从一个方格 d ( i 1 , j 1 ) d ( i 1 , j ) 或者 d ( i , j 1 ) 中到下一个方格 d ( i , j ) ,横向或竖向的距离为 d ( i , j ) ,斜着对角线过来的则是 2 d ( i , j ) 。数学表达式(2.2)可以清楚地解释这种约束条件,其中 g ( i , j ) 表示2个模板都从 g ( 0 , 0 ) )点到 g ( m , n ) 逐次匹配时两个模板之间的距离,并且要在上一次匹配的基础上加 d ( i , j ) 或者 2 d ( i , j ) ,然后取最小值。通过比较模板之间的直接距离,可以得出模板之间的相似程度。模板之间的直接距离愈来愈短,相似程度就愈来愈高。

g ( c k ) = g ( i k , j k ) = g ( i , j ) = min { g ( i 1 , j ) + d ( i , j ) g ( i , j 1 ) + 2 d ( i , j ) g ( i , j 1 ) + d ( i , j ) (2.2)

2.4. Uniform Scaling算法

索引和匹配运动流的一个主要困难(此后可与“时间序列”互换使用)是人体运动速度的可变性 [9] 。例如,演员可以执行快速或慢速打击,而这种可变性可以表现为均匀缩放,时间序列的全局拉伸或收缩(即相对于时间轴)。DTW优于欧几里德距离的优势越来越明显,但是对于均匀缩放不变的相似性搜索的需求还不是很清楚。使用DTW (图9左),我们无法实现2次动作和3次动作之间的直观对齐,即使序列恰好是相同的长度。然而,通过拉伸底部序列的均匀缩放可以实现有意义的对齐。

为了创建用于均匀缩放的下界限距离度量,我们将生成边界包络。引入了边界包络以降低DTW,虽然这里的原理是相同的,但是包络的定义是非常不同的。特别是,我们创建了两个序列U和L:

U i = max ( c ( i 1 ) m / n + 1 , , c i m / n )

L i = max ( c ( i 1 ) m / n + 1 , , c i m / n )

可以将这些序列可视化为界定时间序列C的前n个点。再引入下边界函数LB_Keogh:

L B _ K e o g h ( Q , C ) = i = 1 n { ( q i U i ) 2 if q i > U i ( q i L i ) 2 if q i > U i 0 o t h e r w i s e

Figure 8. Two time series

图8. 两条时间序列

Figure 9. A visual contrast of DTW (left) and Uniform Scaling (right)

图9. DTW (左)和Uniform Scaling (右)的视觉对比

它可以降低Q和C之间距离的任何比例因子,将U和L可视化为分段常数函数,它们分别与U和L相交而不相交(图10)。

在这种情况下,只需计算DTW变换的上下边界包络,以便在均匀缩放找到最佳全局缩放后允许对时间轴进行小的局部调整。

3. 实验

3.1. 实验数据集-Mysql数据库的建立

骨骼数据采集平台和机械手臂控制平台分别在不同的编译环境中完成,要实现两者的通信,则需要Mysql数据库建立起桥梁。骨骼数据采集平台不断向数据库中存入关节角度数据,机械手臂控制平台也实时从数据库中取出关节角度数据。操纵数据库往往会借助于数据表,Mysql有一个超强的数据库管理工具Navicat for Mysql,数据库管理员可以用其来建立数据表,完成数据库与其他操作平台间的通信。数据表的各个字段类型如图11所示。

使用Navicat for Mysql建立的实时运动时间序列表(skeletonangle_yuntai)如图12所示。

使用Navicat for Mysql建立的运动时间序列模板库(skeletonangle_yuntai)如图13所示。

3.2. 算法数据对比分析

基于已获得的模板库角度数据,我们选择两种修改方式对实时动作进行模拟并与标准模板库进行对比。根据每个模板库长度选择5组数据进行变动,变化过程逐渐积累。每变动一次数据,使用MATLAB选择DTW和UNIFORM SCALING两种算法进行仿真。针对实际活动中可能出现的动作局部延时与动作缺失两种情况进行了模拟。1) 局部动作延时:逐次修改数据,使修改的10个动作完全相同以模拟动作的延时;2) 动作缺失:逐次删除选中的数据,减少数据序列长度以模拟动作缺失。

实验步骤:

对每一个标准模板库按照实验说明的方案进行改动,使用MATLAB选择实时运动库进行两种不同算法对比。

算法程序流程图如图14所示。

针对12个标准模板库进行试验,得到以下数据(表4表5)。

Figure 10. Visualize U ^ and L ^ as the piecewise

图10. 将 U ^ L ^ 视为分段

Figure 11. Data field types

图11. 数据表的各个字段类型

Figure 12. Real-time motion time series table

图12. 实时运动时间序列表

Figure 13. Motion time series template library

图13. 运动时间序列模板库

Figure 14. Algorithm program flow chart

图14. 算法程序流程图

Table 4. Delay time series

表4. 时间序列延时

Table 5. The missing action

表5. 动作缺失

4. 结论

通过上述实验得出以下结论:

1) 在使用同种算法情况下,实时模板与动作模板库差别越小,计算所得的综合多时间序列误差MSE越小,实时模板与动作模板库差别越大,计算所得的综合多时间序列误差MSE越大。

2) DTW算法和UNIFORM SCALING算法对时间序列延时的误差计算均要优于对动作缺失的误差计算。

3) 在动作时间序列有延时和模板动作缺失这两种情况下,模板匹配正确率(正确匹配数/总实验次数)和误差(同等条件下两种算法所得结果更优次数/总实验次数) DTW算法都得到了比UNIFORM SCALING算法更小的MES误差。由此可见,在这两种实时动作下,DTW算法都表现出了比UNIFORM SCALING算法更佳的性能。

参考文献

[1] 钱鹤庆. 应用Kinect与手势识别的增强现实教育辅助系统[D]: [硕士学位论文]. 上海: 上海交通大学, 2011.
[2] 韩峥, 刘华平, 黄文炳, 等. 基于Kinect的机械臂目标抓取[J]. 智能系统学报, 2013, 8(2): 149-155.
[3] 裴岩明. 基于Kinect的远程机械臂体感控制系统研究[D]: [硕士学位论文]. 大连: 大连理工大学, 2013: 21.
[4] 林海波, 梅为林, 张毅, 等. 基于Kinect骨骼信息的机械臂体感交互系统的设计与实现[J]. 计算机应用及软件, 2013, 30(2): 157-160.
[5] 孙强, 王文涛. 基于体感遥控的全向移动机器人的系统设计[A]. 电子技术应用, 2015, 41(6): 157-160.
[6] 王宇飞. 基于Kinect骨骼关节信息的视角不变步态识别方法[D]: [硕士学位论文]. 山东: 山东大学, 2017.
[7] 何超, 胡章芳, 王艳. 一种基于改进DTW算法的动态手势识别方法[A]. 数字通信, 2003, 40(3): 21-25.
[8] 张众. 小型语音识别系统的研究和开发[D]: [硕士学位论文]. 天津: 天津大学, 2004.
[9] Keogh, E. (2004) Themistoklis Palpanas, Victor B. Zordan, Dimitrios Gunopulos, Marc Cardle. Indexing Large Hu-man-Motion Databases.