基于kinect骨骼追踪技术的机器人运动系统的设计与实现∗
2017-12-18李茜宋梦文豪
李茜 宋梦 文豪
(陕西科技大学电气与信息工程学院 西安 710021)
基于kinect骨骼追踪技术的机器人运动系统的设计与实现∗
李茜 宋梦 文豪
(陕西科技大学电气与信息工程学院 西安 710021)
为了实现自然人机交互,提高用户体验,尝试引入微软公司的一款体感周边外设Kinect设备,利用Kinect传感器获取的人体骨骼追踪识别点,结合Opencv图像处理算法,画出左右手六种手势状态,然后利用通过Windows Socket网络编程的TCP/IP协议把相应的运动指令传输给机器人,实现与系统的交互控制,结果表明,通过此方式能较好地实现人机交互。
手势状态识别;Kinect;网络通讯
1 引言
随着计算机技术的发展和广泛应用,人机交互已经成为当今重大科学技术之一[1]。人机交互技术的研究内容主要有表情识别、声音识别和手势识别等。手势作为一种自然直观的人机交互模式,具有直观、自然和信息量丰富等众多优点。目前,手势识别主要应用于机器人控制[2~3]、虚拟鼠标、体感游戏[4]、PC控制[5]等方面。
为此,笔者利用Kinect传感器的骨骼跟踪技术,利用opencv图像处理技术,捕获用户手势状态作为控制指令输出,控制机器人相应的运动,实现了较好的人机交互。
2 Kinect简介
2.1 Kinect设备
2010年,Kinect是微软推出的最新的基于体感交互的人机交互设备。Kinect最初作为Xbox360游戏机的外接设备发布,利用即时动态追踪、影像识别、麦克风输入、语音识别等功能让玩家摆脱传统游戏手柄的束缚,通过自己的肢体动作来控制游戏。
2012年,微软并没有将这一先进的技术局限在游戏行业,而是紧接着将Kinect技术推广到Windows平台,开发了Kinect for Windows,旨在鼓励众多开发者设计基于Kinect体感交互技术的应用,从而在各个行业领域里改变人们工作、生活和娱乐的方式。
2014年,微软发布第二代Kinect for Windows,从硬件上对第一代做了很大改进。
图1 kinect设备
·三只眼睛:彩色摄像头、深度(红外)摄像头、红外线投影机
·彩色摄像头:用于拍摄视角范围内的彩色视频图像。
·红外投影机:主动投射近红外光谱,照射到粗糙物体、或是穿透毛玻璃后,光谱发生扭曲,会形成随机的反射斑点(称为散斑),进而能被红外摄像头读取。
·深度(红外)摄像头:分析红外光谱,创建可视范围内的人体、物体的深度图像。
·四只耳朵:四元线性麦克风阵列。
声音从4个麦克风采集,内置数字信号处理器DSP等组件,同时过滤背景噪声,可定位声源方向。
Kinect可以同时获取RGB和深度图像数据,支持实时的全身的骨骼追踪,并可以识别一系列的动作。图1是它的外观图,左边镜头为红外线发射器,中间镜头是一般常见的RGB彩色摄像头,右边镜头是红外线CMOS摄像头所构成的3D深度传感器。
Kinect设备的配置和访问是通过Kinect SDK实现的。Kinect SDK由Kinect驱动、摄像头栈、USBAudio栈和NUI API四个部分组成。NUI API是其重要核心组件,它提供了本文所使用的深度帧数据流信息和骨骼关节点信息的访问接口[6]。
2.2 kinect核心技术
2.2.1 深度信息
深度(红外)摄像头:分析红外光谱,创建可视范围内的人体、物体的深度图像。Kinect红外线发射器(Infrared Projector)发射出雷射光,通过红外发射器镜头前的光栅(diffuser),均匀的投射到测量空间,测量空间的粗糙物体反射,形成随机的散斑,再通过红外摄影机(Infrared Camera)记录空间的每个散斑,通过晶片的计算便的得到3D深度图像。
在Kinect 2.0中,深度坐标空间的范围是(高*宽=424*512)。从深度信息Frame中提取数据,主要就是把Frame中的数据转存到一个数组中。
Kinect会对获得的深度图像进行“像素级”评估。首先分析比较接近Kinect的区域,判断最有可能是“人体”的目标,其次逐点扫描这些深度区域深度图像的像素,来判断32个不同的人体部位。
Kinect主要通过红外发射器和3D深度传感器获取空间图像信息。采用一种不同于传统的TOF或者结构光测量技术的光编码(light coding)技术向空间投射激光散斑,这种散斑具有高度随机性,也会随着距离的不同而变换图案,空间中任意两处的散斑都会是不同的图案。通过红外接收装置记录下每个散斑,然后根据物体上的散斑图案就可以推测出物体的实际深度[7]。
目标物体的深度数据(又称Z轴、范围、距离)是Kinect的核心技术,主要通过红外摄像头来实现。根据摄像头的成像原理,红外摄像头大致可以分成两种:一种是基于飞行时间(ToF)的原理,另一种是基于结构光测量技术。ToF是Time of Flight的缩写,从字面意思可以看出是计算飞行时间。首先让设备向目标物体发射一束脉冲光,然后在发射处接收目标物体的反射光,由时间差计算出目标物体的距离。光学测距是ToF目前较为可行、精确的技术,但是对于Kinect这种消费电子产品来说价格昂贵,不适用。Kinect使用特殊的Light Coding技术进行深度数据的处理,属于结构光技术的范畴,Light Coding的光源称为”激光散斑”,是激光在散射体表面的漫反射或通过毛玻璃片后形成的衍射斑点;这种散斑具有高度的随机性,不同的距离会有不同的图案,也就是说任意两个地方的散斑图案都是不同的,相当于对空间进行了编码。Kinect通过红外线向物体所在的空间投射这种散斑,然后通过CMOS接收装置记录目标物体表面的图案就可以知道这个物体放在什么位置了。
Kinect 2.0可以同时追踪六个人的骨架,因此每次我们需要先调用函数,获得六个骨架信息(如果没有人,那么那个骨架类就是空指针)。
骨骼跟踪技术在实现深度信息提取的基础上,通过处理深度数据来计算各个关节点的位置信息,并用坐标(x,y,z)表示。不同的开发平台定位的关节点个数不同,对于研究使用微软发布的Kinect SDK V2.0版本,可以获取25个关节点的三维坐标,对于每个节点可以给出TRACKED、NOT_TRACKED和INFERRED三种状态,这25个点组成一幅人体骨架图。用Kinect SDK可以对这25个骨骼点的3D坐标进行30帧/s的实时跟踪,而且骨骼模型对于人体的体型和尺寸、人体的肤色、衣着颜色,复杂背景以及光照强度变化有较强的鲁棒性。Kinect SDK每次最多可以捕捉到六个人,但是只能显示二个人的手势状态信息。测量范围:0.5~4.5m,每一个像素为16bit,该数据表示从深度(红外)摄像头到该物体的距离,单位mm。
图2 手势观察者图像
2.2.2 骨骼追踪
骨骼数据是动作识别的基础,也是Kinect最引人注目的地方。骨骼跟踪是在实现深度信息提取的基础上进行的,首先把深度数据中出现的用户与背景分割出来,然后通过对深度数据进行机器学习,快速进行人体部位分割,最后根据机器学习的结果,进一步识别关节点的三维坐标。最新版Kinect for Windows SDK v2.0能够检测到视野范围内6个人体的骨骼位置,还可以同时“骨骼跟踪”两个用户,得到每个用户25个关节点的位置,每个点的位置用三维坐标(x,y,z)表示,这25个节点分别为:头部(head)、双肩中央(shoulder center)、脊柱中段(spine)、臀部中央(hip center)、左臀部(hip left)、右臀部(hip right)、左手(hand left)、右手(hand right)、左腕关节(wrist left)、右腕关节(wrist right)、左肘关节(elbow left)、右肘关节(elbow right)、左肩(shoulder left)、右肩(shoulder right)、左膝盖(knee left)、右膝盖(knee right)、左踝关节(ankle left)、右踝关节(ankle right)、左脚(foot left)和右脚(foot right),(spine shoulder),(hand tip left),(thumb left),(hand tip right),(thumb right)如图3所示。用 Kinect SDK可以对这25个骨骼点的3D坐标进行30帧/s的实时跟踪,而且骨骼模型对于人体的体型和尺寸、人体的肤色、衣着颜色,复杂背景以及光照强度变化有较强的鲁棒性[7]。对于每个节点可以给出TRACKED,NOT TRACKED和INFERRED三种状态,这25个点用线连起来组成一幅人体骨架图,如图3所示。Kinect获取的骨骼点越多,骨架图就越形象。
图3 人体骨骼图形
2.2.3 人物二值图
如果某个点被判断为属于人的一部分,就是黑色,否则(背景部分)就是白色。
2.2.4 手势状态
手势状态leftHandState和rightHandState都是HandState类,这个类有五种状态:open,closed,lasso,not tracked,unknown。其中前三种是特殊手势,后两种大同小异,反正就是无法识别了。比较特殊的是lasso,这个手势在官网有说明,具体形状是:伸出剪刀手,然后把食指和中指合并在一起,就是lasso状态了。事实上只用食指伸出来也可以被判断为lasso,但是食指和中指一起用,追踪效果更佳稳定。
3 机器人总体结构和工作原理
本控制系统以Kinect体感传感器作为图像采集工具,结合机器人控制技术,实现了人体动作对机器人的控制,使机器人更加智能化。整个系统由上位机图像采集输出和下位机运动控制两部分组成。
上位机系统由PC机,kinect体感传感器等组成[8]。上位机主要用于人体骨骼追踪,并结合Opencv图像处理算法,把对应手势状态画出到界面显示出来,并把相应手势状态的对应的运动命令通过Windows socket的TCP/IP协议发送给下位机。
下位机系统是由网口转串口模块、路由器、主控板,二个有刷电机组成,网口转串口模块接收到了上位机客户端发来的运动命令后,发送给处理器,处理器处理后去控制机器人小车的相应运动[9]。
机器人小车是由两个左右有刷电机组成,Kinect传感器把人体骨骼信息和对应的手势状,态信息传给电脑PC机显示后,自己定义把左手开为为机器人小车向前运行、左手合为机器人小车向后运行,左手剪刀手为机器人小车停止运动;右手开为机器人小车左转、右手合为机器人小车右转、右手剪刀手为机器人小车肩旋转运动。然后基于Windows Socket套接字的TCP/IP通讯,其中服务器和客户端在同一网段中把对应的运行指令传给服务器端,服务器端通过与路由器连接的网口转串口接收到客户端的运动命令后通过串口传给服务器端的控制器,从而控制左右有刷电机的运动[10]。
图4 整体控制系统
4 六种手势状态
如图6~10所示是左右手六种手势状态对应机器人相应的运动。
图5 机器人小车前进
图6 机器人小车后退
图7 机器人小车停止
图8 机器人小车右转
图9 机器人小车左转
图10 机器人小车肩旋转
5 软件流程图
首先明确通讯和Kinect各变量的定义,然后Kinect默认初始化,读取Kinect总端口成功后,读取骨骼、深度图信息和二值图信息,把对应读取的信息画到Opencv图像库的MAT中,画出手势状态后,把手势状态对应的运动命令通过TCP/IP通讯后输出给客户端,控制器机器人小车前进、后退、停止。
图11 软件流程图
6 结语
本文利用Kinect骨骼追踪技术,追踪到人体25个骨骼信息,结合Opencv图像处理技术把对应的手势状态画出来后,把三种手势对应运动命令通过Windows socket编程的TCP/IP传输给小车,去控制小车的前进、后退、停止、左转、右转、肩旋转,创造性地实现了人机交互。
[1]冯志全,蒋彦.手势识别研究综述[J].济南大学学报(自然科学版),2013,27(4):336-341.FENG Zhiquan,Jiang Yan.A survey of hand gesture recognition[J].Journal of University of Jinan(Science and Technology),2013,27(4):336-341.
[2]Luo R C,Wu Y C.Hand gesture recognition for human-robot Interaction for service robot.Multisensor Fusion and Integration for Intelligent Systems(MFI)[C]//IEEE Conference,2012:318-323.
[3]刘博,张奇志,周亚丽.类人足球机器人球识别方法的研究[J].北京信息科技大学学报(自然科学版),2010,25(3):75-79.LIU Bo,ZHANG Qizhi,ZHOU Yali.Research on ball identification method of humanoid robot soccer[J].Journal of Beijing Information Science&Technology University(Nature Science Edition),2010,25(3):75-79.
[4]Guangsong L,Qiaoxin O,Jiehong L.An improved hu-moment algorithm in gesture recognition based on kinect sensor[J].Information Technology Journal,2013,12(14):2963-2968.
[5]Lai K,Konrad J,Ishwar P.A gesture-driven computer interface using Kinect.Image Analysis and Interpretation(SSIAI)[C]//IEEE Southwest Symposium on,IEEE,2012:185-188.
[7]余涛.kinect应用开发实践[M].北京:机械工业出版社,2013:200-202.YU Tao.Kinect Application Development and Practice[M].Beijing:China Machine Press,2013:200-202.
[8]Yang M H,Ahuja N.Recognizing hand gestures using motion trajectories[M].Face Detection and Gesture Recognition for Human-Computer Interaction.Springer US,2001:53-81.
[9]Lee H K,Kim J H.An HMM-based threshold model approach for gesture recognition[J].Pattern Analysis and Machine Intelligence,IEEE Transactions on,1999,21(10):961-973.
[10]Darrell T,Pentland A.Space-time gestures[C]//Computer Vision and Pattern Recognition,1993.Proceedings CVPR'93,1993 IEEE Computer Society Conference on.IEEE,1993:335-340.
Design and Implementation of the Robot Movement System Based on Skeleton Tracking Technology
LI QianSONG MengWEN Hao
(Shannxi University of Science&Technology,Xi'an 710021)
In order to achieve the natural human computer interaction,and improve the user experience,Microsoft's a motion-sensing peripheral device of peripheral equipment is introduced,using human body skeleton tracking device sensors to identify point,combining with opencv image processing algorithms,drawing three gestures state and then using TCP/IP protocol through Windows Socket network programming the corresponding commands to the robot motion,the interaction with the system control is realized,the results show that by this way the human-computer interaction can be better realized.
gestures state recognition,Kinect,Network communication
TP391
10.3969/j.issn.1672-9722.2017.11.022
Class Number TP391
2017年5月12日,
2017年6月17日
李茜,女,教授,硕士研究生导师,研究方向:工业自动化和智能控制。宋梦,男,硕士研究生,研究方向:工业自动化和人工智能。文豪,男,硕士研究生,研究方向:工业自动化和人工智能。