基于Kinect的拳击虚拟训练系统*

2015-01-09 03:53赵建敏赵忠鑫许晓伟
计算机工程与科学 2015年9期
关键词:关节点沙袋拳头

赵建敏,赵忠鑫,许晓伟

(内蒙古科技大学信息工程学院,内蒙古 包头 014010)

基于Kinect的拳击虚拟训练系统*

赵建敏,赵忠鑫,许晓伟

(内蒙古科技大学信息工程学院,内蒙古 包头 014010)

沙袋击打训练是拳击训练的有效手段,应用体感交互技术和虚拟现实,设计并实现了虚拟的沙袋击打仿真系统。该系统主要包含虚拟场景搭建、体感交互和训练信息系统。拳击场景建立了拳台、沙袋、拳击手套和背景模型,并通过Direct 3D接口加载到虚拟系统中。交互系统通过Kinect体感传感器追踪并获取训练者骨骼关节点坐标,从中提取肘、腕关节建立空间向量并计算击打速度和击打力,控制虚拟拳头击打虚拟沙袋,通过体感交互的方式虚拟真实训练过程,并在信息系统中记录训练信息。实验和测试表明,此系统能够实现模拟训练的功能,为拳击游戏与教学提供了新的手段。

体感交互;Kinect传感器;拳击训练;虚拟现实

1 引言

体感交互技术直接借助肢体动作与周边的装置或环境进行互动,是人机交互的新方法,并逐步应用在游戏、体育训练、医学理疗、3D建模、模式识别等领域。在游戏领域,微软公司XBOX360体感游戏机通过肢体控制游戏,带给玩家全新体验;湖南大学李波进行了健身单车体感游戏项目的设计与研发[1]。在体育训练领域,国内浙江大学计算机辅助设计与图形学(CAD&CG)国家重点实验室开发了自行车虚拟综合训练系统,通过体感技术监测运动员运动和做功状况[2]。医学领域,González-Ortega D等人[3]在运动感缺失康复训练研究中采用了体感交互技术,设计了辅助治疗系统;我国国家信息无障碍工程研发中心罗元等人[4]设计了智能轮椅控制系统,通过体感交互控制控制轮椅。在教学设施领域,顾容等人[5]研究了基于Kinect骨骼追踪技术的智能教学控制系统。此外,在SD建模和模式识别领域,Chattopadhyay P等人[6]通过Kinect的RGB-D数据流进行步态识别、As’ari M A等人[7]利用Kinect深度信息对三维物体形状进行描述,进而对其识别并分类。

本文首次将体感技术应用于拳击沙袋训练仿真系统,虚拟了拳击训练中最为常用的沙袋击打练习,为拳击爱好者在受环境所限无法悬挂真实沙袋的条件下开展训练提供了新的方法;同时,系统中设计的基于图像的击打力量计算算法可以为拳击训练提供新的辅助手段。

2 总体结构

本文基于VS2012,参照拳击训练,搭建了虚拟环境,软件整体结构如图1所示。其中,采用3DMax建立3D训练场景、沙袋和拳击手套模型,通过Direct 3D接口加载并进行渲染。采用微软Kinect传感器获取人体骨骼图像,追踪左右手、肘坐标,进行体感交互,控制虚拟系统中的拳头击打沙袋。根据近似碰撞模型,计算击打力并通过Direct 3D接口渲染击打效果,仿真真实训练过程。此外,增加了档案管理系统,记录训练者的档案和训练信息。

Figure 1 System structure

本文软件结构分驱动层和应用层,框架如图2所示。

Figure 2 Framework of the software structure

驱动层包括KinectSDK、DirectX、SQL Server数据库,应用层包括运动追踪、目标命中判定、击打力计算、虚拟击打渲染、训练档案和信息管理等。

3 虚拟场景搭建

本文参照拳击沙袋训练过程,设计了虚拟场景,包括虚拟背景、虚拟沙袋、虚拟拳击手套。其中,虚拟背景包括三维拳台和地面。拳台渲染采用天空盒(Sky Box)技术,流程如图3所示。

Figure 3 Flow chart of the background rendering process

拳台渲染完毕后,本文采用纹理映射的方式实现地面渲染,流程如图4所示。

Figure 4 Flow chart of the ground rendering process

拳击背景创建完毕后,本文使用3DMax设计了虚拟沙袋、虚拟拳击手套模型,采用Direct3D加载模型进行世界变换,为系统提供模型的平移和旋转接口函数[5],虚拟系统搭建基本效果如图5所示。

Figure 5 Working sketch of the virtual training scene

此外,为了渲染效果,本文利用DirectX的Direct Sound模块加载背景音乐,创建了多媒体的训练场景。

4 体感交互

体感交互是实现虚拟拳击训练的主要部分,建立了练习者和虚拟系统的交互,使练习者通过Kinect传感器操控虚拟系统中的拳击手套击打虚拟沙袋,系统整体软件流程图如图6所示。

Figure 6 Flow chart of system software

系统在Direct 3D和Kinect初始化之后响应请求,进入训练环节后,创建虚拟场景,通过运动追踪捕获训练者关节点,控制虚拟拳头击打沙袋。其他请求包括训练档案管理、数据管理及参数设置等,均通过体感操作完成。

4.1 运动追踪

运动追踪是本文实现体感交互的关键技术,本文采用微软Kinect体感传感器获取骨骼图像,通过骨骼帧平滑处理、宣泄者左右手、手腕关节点坐标获取、坐标转换等步骤,进而控制虚拟拳头的姿态。其中,关节点坐标获取流程如图7所示。

Figure 7 Flow chart of obtaining the coordinates of hands and elbow joints

骨骼获取过程中,定义的变量见表1。Kinect初始化时,调用NuiGetSensorCount(),获取连接到计算机的Kinect设备数量并分配索引号,之后调用NuiCreateSensorByIndex()为pSensor赋值,之后调用NuiStatus函数获取设备状态,当返回S_OK时,初始化完成[5]。此外,进行调用NuiInitialize()初始化NUI,本文需要从骨骼图像中获取关节点坐标,因此初始化参数设置为NUI_INITIALIZE_FLAG_USES_SKELETON。

Table 1 Main variables used in the skeleton tracking process表1 骨骼追踪过程主要变量表

完成Kinect初始化后,调用CreatEventW()和NuiSkeletonTrackingenable()创建并使能骨骼帧事件,新的骨骼帧触发骨骼帧事件,调用NuiSkeletonGetNextFrame()获取帧数据并存储到NUI_SKELETON_FRAME结构体中,其中参数liTimeStamp和dwFrameNumber分别记录了Kinect运行的时间和当前骨骼帧的编号,用于平滑骨骼帧。SkeletonData[NUI_SKELETON_COUNT]是一个骨骼数据结构体数组,由于Kinect最多能追踪6个用户,故该数组的元素个数为6,每个元素对应一个用户且保存了该用户的骨骼数据信息[8]。

4.2 平滑处理和坐标转换

Kinect和计算机的性能不稳定、人体的动作不连贯等因素可能会导致相邻帧的骨骼关节点坐标发生跳跃式变化,因此在获取关节点坐标之前需进行骨骼帧平滑处理。本文调用NuiTransformSmooth()执行平滑算法,实现骨骼帧平滑。函数的首个参数是预平滑处理骨骼帧,第二个参数为NUI_TRANSFORM_SMOOTH_PARAMETERS结构体[5]。根据本文应用要求,平滑结构体参数值为:SmoothValue.fSmoothing=0.8f,SmoothValue.fCorrection=0.2f,SmoothValue.fPrediction=0.4f,SmoothValue.fJitterRadius=0.3f,SmoothValue.fMaxDeviationRadius=0.5f。

平滑处理后,查询NUI_SKELETON_FRAME结构体的成员eSkeletonPositionTrackingState,其表明各个关节点的跟踪状态,骨骼数据信息存储在NUI_SKELETON_FRAME结构体的NUI_SKELETON_DATA成员中[5]。当状态为NUI_SKELETON_POSITION_INFERRED或NUI_SKEL-ETON_POSITION_TRACKED(即可被推测或被追踪到)时,则从NUI_SKELETON_DATA的人体20个关节骨骼坐标成员数组SkeletonPositions[20]中读取左右手、肘的关节点坐标,赋值给关节点坐标变量v3SkeHandR、v3SkeHandL、v3SkeElbR、v3SkeElbL。

Kinect SDK中提供了骨骼坐标到深度坐标的转换,深度坐标系是红外摄像机拍摄图片的像素坐标。本文首先调用NuiTransformSkeletonToDepthImage()将骨骼空间坐标系中的v3SkeHandR、v3SkeHandL、v3SkeElbR、v3SkeElbL坐标转换为深度图像坐标系[9],之后,再进行红外摄像机图像坐标到屏幕图像坐标的转换。默认情况下,Kinect红外摄像机的分辨率为320*240,设关节点在深度坐标系统中的值为xdepth、ydepth,则其屏幕坐标xscreen、yscreen的计算见式(1)和式(2)。

(1)

(2)

其中,wscreen*lscreen为虚拟场景视图的分辨率。

4.3 虚拟拳头姿态跟随

训练者的出拳姿态变化可以分为:手部关节点的位置移动和前臂的旋转,故虚拟拳头的姿态跟随包括位置移动跟随和旋转跟随。

将左、右手坐标平滑处理后的值赋给虚拟拳中心坐标,控制虚拟拳套的位置,使其跟随手关节坐标,控制击打方向。

虚拟拳头的旋转可以分解为三大基本旋转:绕X轴旋转、绕Y轴旋转和绕Z轴旋转[11],本文通过计算骨骼空间坐标系中前臂和坐标轴的夹角,并将夹角赋值给虚拟拳头的世界变换的旋转变换来实现。

以左拳为例,获取左手的坐标为(x0,y0,z0),左肘的坐标为(x1,y1,z1),则左前臂向量的坐标为(x0-x1,y0-y1,z0-z1),将此向量投影到三平面上,夹角θXaxis、θYaxis、θZaxis就决定了虚拟拳头绕拳头中心点左、右方向旋转的角度。其中,θXaxis的计算如式(3)所示:

(3)

同理可求解θYaxis、θZaxis,并赋值给世界变换的绕Z轴、Y轴和X轴旋转变换角度,就可以实现虚拟拳头随着前臂姿态变化进行自身旋转。

4.4 目标命中判定

本文将沙袋简化为矩形作为击打目标区域,并随着击打围绕悬挂点摆动,如图8所示。

在宣泄时,击打目标区域会随着击打对象的摆动而发生变化,因此,目标命中判定算法的关键就在于确定击打目标区域。其具体的计算方法如下:

假设沙袋矩形区域高、宽分别为h、w,沙袋中心点距离悬挂点距离为l,沙袋中心点静止时屏幕坐标为(x0,y0),当相对于中轴线偏移角度为θ时(向右为正,左为负),四个顶点(左上角、右上角、左下角、右下角)坐标分别为:

当虚拟拳击手套屏幕坐标VL(xls,yls)、VR(xrs,yrs)落入该区域时,认为有效命中。

4.5 击打力和速度计算

为了满足拳击训练要求,并且根据碰撞理论计算沙袋摆角,本文计算了出拳速度和击打力。

(1)出拳速度计算。拳速计算根据前后帧手坐标位移和前后帧时间价格进行计算,计算公式如式(4)所示:

(4)

其中,Pcurrent(x,y,z)和Plast(x,y,z)是击中目标的那只手在当前帧和前一帧中经过单位转换后的关节点坐标;Δt为前后帧采样间隔时间,用time-GetTime()获取。

(2)击打力计算。拳击运动在击打的瞬间,等效为拳头与沙袋碰撞拳速减为零,则拳头的击打力F为:

(5)

其中,m为拳臂的等效质量,v和vt是拳头在碰撞时的初速度和末速度,t为碰撞时间。设m为10 kg,沙袋质量为25 kg,根据动量定理,由于拳臂与沙袋质量相差不大,拳臂vt因拳头与沙袋碰撞后速度急剧减小,为方便计算近似为0。则碰撞时间t计算如下:

击打过程等效为两个质量不等的弹性球体碰撞,碰撞时间与两球半径之和成正比,与初速度之和成反比,而与两球质量无关[10]。

(6)

其中,设手的半径R1为0.05 m,初速度v1为vm/s;沙袋的半径R2为0.3 m,初速度v2为0 m/s。则将m=10 kg,vt=0以及式(6)代入式(5)可得:

(7)

在上面的公式中,v为三维空间中的矢量,则力的大小如下:

(8)

(9)

为了验证上述出拳力F的计算方法,进行了多次实验,实验数据和计算结果如表2所示。

Table 2 Data of impact force表2 出拳力的实验数据

表2中,vx、vy、vz和|v|的单位是m/s,t的单位是ms,F的单位是N。实际中,普通人的击打力量为1 000 ~1 500 N。实验结果显示,虚拟系统中,击打力量在此范围内,符合实际情况。

4.6 沙袋摆动响应

本文根据拳速和击打力量的大小,计算沙袋摆动角度。根据动量守恒定律计算碰撞后,人偶摆动初速度,如式(10)所示:

(10)

(11)

根据能量守恒定律,沙袋偏转角度θ如下计算:

(12)

其中,v为拳速,l如图(8)所示。根据实际效果,角度每周期大约衰减10%,若再无击打则当摆角小于0.05°时,停止摆动。

沙袋摆动效果通过Direct 3D中世界变换的旋转变换来实现。沙袋运动方向为四个原子方向即左、右、前、后方向。其中,左、右方向绕Z轴旋转,前、后方向绕X轴旋转。若实现模型倒下效果,则给绕X轴或者Z轴的旋转变换函数赋值π/2或者-π/2;若实现模型绕X轴或者Z轴旋转fAngleX或fAngleY角度的效果,则给绕X轴或者Z轴的旋转变换函数赋值fAngleX、fAngleY[11]。代码实现如下所示:

D3DXMATRIXRx,Rz;

D3DXMatrixRotationX(&Rx,fAngle);

D3DXMatrixRotationZ(&Rz,fAngle);

g_matModelWorld=Rx*Rz*g_matModelWorld;

g_pd3dDevice→SetTransform(D3DTS_WORLD,&g_matModelWorld);

上述代码中,首先定义了两个绕X轴和Z轴旋转的旋转矩阵Rx和Rz,再将旋转角度fAngleX和fAngleZ分别设进矩阵Rx和Rz中。将人偶的世界矩阵和两个旋转矩阵相乘,并写进世界变换中,实现相应效果[11]。

4.7 系统测试

为了验证虚拟打击效果,结合实际,以左勾拳、右勾拳为例,训练者出拳击打。图9给出了出拳图像、骨骼图像和虚拟击打效果图,拳速和击打力见表3。从图9中可以看出,虚拟击打效果图中较为准确地展示了出拳方式,并做出了正确的命中响应。

Figure 9 System actual-test

从拳速记录表3中可以看出,通过前后帧骨骼坐标位移向量计算出的拳速向量,能够正确反映出出拳方向。

Table 3 Table of velocity and impact表3 拳速和击打力记录表

注:速度v(vx,vy,vz)

5 结束语

本文采用Kinect体感传感器和Direct 3D技术,基于体感交互方式设计了拳击沙袋模拟训练系统,摆脱了拳击教学与拳击游戏对场地要求的限制。在实测中能够迅速、准确地响应训练者所做出的打击动作,并且能够根据训练者出拳速度计算出相应打击力量,为拳击教学提供了一种全新的方式,拓展了体感交互技术在体育训练中的新领域。

[1] Li Bo. Design and implementation of spining proprioceptive game[D]. Changsha: Hunan University,2010.(in Chinese)

[2] Xia Xin-hua, Li Xiang-chen, Pan Zhi-geng. Bicycle virtual synthesized training smiulation[J].Computer Simulation,2005(4):290-293.(in Chinese)

[3] González-Ortega D,Díaz-Pernas F J,Martínez-Zarzuela M,et al. A Kinect-based system for cognitive rehabilitation exercises monitoring[J]. Computer Methods and Programs in Biomedicine,2014,113(2):620-631.

[4] Luo Yuan,Xie Yu,Zhang Yi. Design and implementation of a gesture-driven system for intelligent wheelchairs based on the Kinect sensor[J]. Robot,2012(1):110-113.(in Chinese)

[5] Gu Rong,He Yi-ming,Jin Li-yan. Design and implementation of Kinect skeletal tracking technology-based intelligent teaching control system[J]. Computer Applications and Software,2013(6):276-280.(in Chinese)

[6] Chattopadhyay P,Roy A,Sural S,et al. Pose depth volume extraction from RGB-D stream for frontal gait recognition[J].Journal of Visual Communication and Image Representation, 2014,25(1):53-63.

[7] As’ari M A,Sheikh U U,Supriyanto E. 3D shape descriptor for object recognition based on Kinect-like depth image[J]. Image and Vision Computing, 2014(32):260-269.

[8] Yu Tao. Kinect application development combat:The most natural way dialogue with the machine[M]. Beijing: Machinery Industry Press,2012.(in Chinese)

[9] Du G,Zhang P.Markerless human-robot interface for dual robot manipulators using Kinect sensor[J].Robotics and Computer Integrated Manufacturing,2014,30(2):150-159.

[10] Zhen Huan-wu.The quantitative calculation of collision time[J]. Journal of Sichuan Normal University(Natural Science),2001,24(5):23-25.(in Chinese)

[11] Han Yuan-li,Wang Han-dong. Advanced DirectX 11 graphics development technical practices[M]. Beijing: Science Press,2013.(in Chinese)

附中文参考文献

[1] 李波. 健身单车体感游戏设计与实现[D].长沙:湖南大学,2010.

[2] 夏新华,李祥晨,潘志庚. 自行车虚拟综合训练仿真器[J]. 计算机仿真,2005(4):290-293.

[4] 罗元,谢彧,张毅. 基于Kinect传感器的智能轮椅手势控制系统的设计与实现[J]. 机器人,2012(1):110-113.

[5] 顾容,何益明,金丽燕. 基于Kinect骨骼追踪技术的智能教学控制系统的设计与实现[J]. 计算机应用与软件,2013(6):276-280.

[8] 余涛.Kinect应用开发实战:用最自然的方式与机器对话[M]. 北京: 机械工业出版社,2012.

[10] 郑焕武.碰撞时间的定量计算[J].四川师范大学学报,2001,24(5):23-25.

[11] 韩元利,王汉东. DirectX 11高级图形开发技术实践[M].北京: 科学出版社,2013.

赵建敏(1982-),男,内蒙古包头人,硕士,讲师,研究方向为人机交互和模式识别。E-mail:zhao_jm@imust.cn

ZHAO Jian-min,born in 1982,MS,lecturer,his research interests include human-computer interaction, and pattern recognition.

A design of a virtual boxing training system based on Kinect somatosensory sensor

ZHAO Jian-min,ZHAO Zhong-xin,XU Xiao-wei

(School of Information Engineering,Inner Mongolia University of Science and Technology,Baotou 014010,China)

Heavy-bag practice is an effective means for boxing training. Based on Kinect somatosensory interaction technology and virtual reality, we design and implement a virtual heavy-bag boxing training system, which consists of virtual scenes, somatosensory interaction and file management. Virtual scenes are established by loading the square ring model, heavy-bag, boxing gloves and boxing background using Direct 3D interface. The system uses Kinect somatosensory sensors to simulate the real process of boxing training, including tracking and getting the coordinates of the joints of human body, calculating the impact force and speed, and controlling the virtual fists to beat the sandbag. Experimental results show that the proposed design can not only achieve good heavy-bag training effect, but also provide a new method for boxing teaching and playing boxing games.

somatosensory;Kinect sensor;boxing;virtual reality

1007-130X(2015)09-1736-06

2014-12-08;

2015-01-13基金项目:内蒙古科技大学创新基金资助项目(2012NCL027)

TP391.4

A

10.3969/j.issn.1007-130X.2015.09.023

通信地址:014010 内蒙古包头市阿尔丁大街7号内蒙古科技大学信息工程学院

Address:School of Information Engineering,Inner Mongolia University of Science and Technology,7 Aerding St,Baotou 014010,Inner Mongolia,P.R.China

猜你喜欢
关节点沙袋拳头
沙袋的数量
基于深度学习和视觉检测的地铁违规行为预警系统研究与应用
关节点连接历史图与卷积神经网络结合的双人交互动作识别
吊沙袋赶走老寒腿
大型充填沙袋在围堰中的应用及造价分析
纠缠
攥拳头
搞好新形势下军营美术活动需把握的关节点
RGBD人体行为识别中的自适应特征选择方法
“十个拳头”平衡膳食