APP下载

基于Kinect的体感交互式儿童安全教育平台设计

2018-10-29戴路张洁

软件导刊 2018年8期

戴路 张洁

摘要:为改善现有儿童安全教育体系功能,解决传统安全教育枯燥问题,采用Unity 3D游戏引擎架构,搭建儿童安全教育场景,结合Kinect传感器采集体验者骨架信息。通过简易分析,判断体验者动作状态,导入Unity 3D动画控制器,开发一款基于体感交互的儿童安全教育平台。系统在儿童安全体验馆受到欢迎,是一款互动性良好、儿童易接受、成本适中的安全教育平台。

关键词:Kinect;体感交互技术;儿童安全教育平台

DOIDOI:10.11907/rjdk.181349

中图分类号:TP319

文献标识码:A 文章编号:1672-7800(2018)008-0144-05

英文摘要Abstract:In order to improve the existing children safety education system,an innovative child safety education platform based on the sense of body interaction is developed.To solve the problem of traditional safety education,the system adopts Unity 3D game engine structure to build children safety education scenario,and combines Kinect sensor to collect experiencers' skeleton information.Through simple analysis,we can judge operators' action state and import Unity 3D animation controller to build children safety education platform together.After the completion of the system debugging,it is welcomed by the children and parents in all kinds of exhibitions.Kinect-based somatosensory and interactive children safety education platform is a good-quality,safe,and affordable platform for children.

英文關键词Key Words:Kinect;somatosensory interaction technology;children's safety education platform

0 引言

意外伤害是儿童成长的重要威胁,世界卫生组织和联合国儿童基金会联合出版的《世界预防儿童伤害报告》显示:全世界每天有2 000多个家庭因非故意伤害或意外事故而失去孩子,从而使这些家庭变得支离破碎,而更多的儿童因为意外事故造成永久伤害。如果世界各国采取有效干预,每天可挽救1 000多名儿童的生命。如果儿童具有一定的安全常识,这些伤害大部分是可以避免的[1]。

现今的安全教育一般是通过口头或书面方式,这种方式效果不是很好[2]。而教育效果较好的儿童安全体验馆,因为建设费用高,绝大多数儿童无法通过这条途径获得教育机会。为改善这种现状,本文设计了一款交互性良好、儿童易接受、成本适中的安全教育模式[3]。

1 系统框架

本系统以现有安全教育措施为基础,采用Unity 3D游戏引擎构建虚拟的安全教育场景,将体验者带入虚拟的安全场景中。通过动作捕捉传感器,实时捕捉体验者姿态,并判断其动作,根据体验者的动作反馈进行体感交互[4]。安全场景采用虚拟提示,通过体感的交互方式将体验者“带入”虚拟的安全场景中,“亲自”完成整个安全过程[5],以达到安全教育的目的。

本系统的动作捕捉传感器选择微软公司的Kinect V2。Kinect V2是微软公司于2013年推出的Kinect V1的升级版,其内部的高清摄像头能采集30fps的1 080p的RGB图像,独立的30fps红外传感器能采集30fps的512×424的红外图像数据,还能得到相当于3倍Kinect V1精度的深度数据。Kinect V2还具备同时捕捉6个人体的准确姿态,每个人体能识别出25个重要关节,同时识别两个人体简单手势,还能判断出一个人体的简单表情。前端的麦克风阵列组具备声音定位功能,加入微软推荐的Speech Platform语言包还能实现语音识别 [6]。

2 系统软件设计

2.1 安全体验场景设计

Unity 3D是由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等互动内容的多平台综合型游戏开发工具,是一个全面整合的专业游戏引擎。引擎中自带Asset store,该商店是一个插件交互商店,开发者可售卖自己开发的插件,也可购买大量优秀的成品插件,这种模式大大加快了应用开发的周期[7-8]。

本文通过Asset store获得相关插件,构建了多套不同安全教育场景,虚拟安全场景效果如图3所示。

2.2 Kinect V2在Unity 3D上的应用

Unity 3D上Kinect V2常用插件有:

(1)专用插件包KinectFor Windows_UnityPro_2.0,该插件包在微软的官方网站上可下载,下载后导入所有资源及导入场景后,Hierarchy有如图4所示预制项目。

插件包提供的示例场景展示了Kinect的大部分功能,BodyView实现Kinect实时采集人体的25个关节三维坐标,具体关节如图5所示。将每个相连关节搭接起来,形成一具人体骨骼框架[9-10]。

ColorView将Kinect采集的30fps的1 080p RGB图像实时显示,InfraredView将30fps的512×424的红外图像实时显示,DepthBase将深度数据实时显示,具体效果如图6所示。

(2)卡耐基梅隆的KinectWrapper插件包。从Kinect SDK1.0版本就开始支持卡耐基梅隆的KinectWrapper插件包,一直到当前的Kinect SDK2.0。插件包可从Unity 3D自带的Asset Store中获得。下载后导入所有资源及加载AvatarsDemo场景所有的预制项目,如图7所示。

AvatarsDemo這个示例场景通过Kinect传感器读取人体主要关节点的实时坐标以及姿态,将这些数据绑定到一个动画人物的骨架上,可实现虚拟人物实时动态跟踪体验者动作,并同时实现被读取人物的正面和背面动作,还能实现一个虚拟骨骼框架和一个BodyIndex人物大致外廓[11],如图8所示。

安全教育场景需要识别踏步、挥手、下蹲这3组较为简单的动作,涉及到的关节部位较少。为尽量减少计算机的资源开销,本系统选择微软自带的KinectFor Windows_UnityPro_2.0插件包实现体感交互部分。

本应用中计算机有相当部分资源消耗在动画效果渲染上,体验者不需要精准操作,只需要能正确识别动作即可,系统开销小。

2.3 简易人体动作识别

通过人体手、脚的运动轨迹确定动作。采用公式(1)计算任意两帧间关节p(x1,y1,z1)与p(x2,y2,z2)的移动距离。在同一帧内采用公式(1)计算两个关节的间距。踏步、挥手、跳动根据相邻帧间相关关节的运动距离进行判定[12-13]。

计算膝关节的角度能判断人体是否下蹲,只要得到单边髋关节、膝关节、踝关节的坐标,就可根据公式(1)计算出各个关节的距离,再通过余弦定理式(2)计算人体膝关节角度,判断人体是否在完成下蹲动作[14-15]。

相关动作状态判定流程如图9所示。启动系统后打开Kinect传感器,对骨骼进行中值滤波,中值滤波会有一帧的延时,在处理时会根据计算机配置产生一定的延时。根据微软文献,72%的人有100ms的反应时延,因此只要将延时控制在100ms以内,大部分用户是可以接受的[16]。滤波的输入输出及帧数关系如图10所示,中值滤波可以较好地控制关节运动中产生的噪点[17-18]。

通过采用Unity 3D中MonoBehaviour内置的定时器设定100ms的延时读取并记录相关关节数据,再根据当前帧和前项帧的关节坐标判定相应动作。

人体行走的自然步频是95~125步/分,踝关节在走路时是先抬高、后放下。根据最慢步频95计算,踝关节做单程运动每次为0.32ms[19]。据观测,在有动画提示的游戏过程中,体验者会将脚抬得比平时更高,因此在踏步条件中采用单边踝关节的最低单程运动数的1/3时间即100ms,体验者的踝关节运动超过5cm,而另一边踝关节没有运动,据此判定体验者处于踏步状态[20]。

人标准下蹲膝关节的角度为90°,但游戏过程中蹲得太低大大影响体验。因此,当帧内髋、膝、踝关节的夹角小于150°时就判定体验者处于蹲的状态。

挥手动作相对于前两个动作来说相对简单,只要腕关节高于肩关节,且在300ms内移动0.1m就判定当前体验者处于挥手状态[21]。

上述的判断条件及数值还会根据未来具体的体验情况进行相应修正。

2.4 Unity 3D中Animator组件使用

Unity 3D的Animator组件是一个能在多个动画直接切换的控制器,也称为动画状态机,可在Assets中Create的Animator Controller组件进行相关状态设置,如本系统体验者的站立、踏步、下蹲、挥手4个状态及其转换路径见图11。在每个状态的Motion参数里添加对应的人物动作片段,之后在参数中设置状态转换变量,见图12。当脚本状态变量改变时,场景中的人物就会从当前动作切换到新的状态中 [22]。

系统通过Kinect采集并实时分析体验者动作,并将体验者动作状态通过动画状态机在游戏中实时响应,将体验者带入到虚拟的安全场景中,让体验者在游戏中达到安全教育的目的。

3 结语

本系统采用体感的交互方式,让儿童能在友好的环境下愉快学习安全知识,效果等同于市面上的儿童安全教育体验馆,但成本大大降低。系统在相关展览会上受到广大儿童及家长欢迎,体验效果如图13所示。

图13 测试现场

参考文献:

[1] PEDEN M,OYEGBITE K,OZANNE-SMITH J,et al.World report on child injury prevention[R].World Health Organization,2008:3-4.

[2] 杨余香.幼儿对安全相关概念认知的研究[D].南京:南京师范大学,2008.

[3] 吕瑶.体感技术何时闯入教育[J].中国远程教育,2012,23(16):75-78.

[4] 王森.Kinect体感程序设计入门[M].北京:科学出版社,2014:33-35.

[5] AOI.Unity将角色变成玩家[EB/OL].http://bbs.9ria.com/thread-285690-1-1.html.

[6] 孙运达.多视点非接触式人体运动捕捉研究[D].北京:北京交通大学,2006.

[7] 卢金浩,张帅伍,传敏,等.基于Unity 3D三维游戏场景与AI系统的设计与实现[J].三明学院学报,2013,12(6):33-35.

[8] 吴志达.一个基于Unity 3D游戏引擎的题干游戏研究与实现[D].广州:中山大学,2012.

[9] Kinect和U3d结合开发基础之基本的动作识别[EB/OL].http://blog.csdn.net/zhaoshouyue/ article/details/51225442.

[10] 黄露丹,严利民.基于Kinect深度数据的人物检测[J].计算机技术与发展,2013,36(3):121-124.

[11] Kinect和U3d结合开发基础之KinectWrapperPackage[EB/OL].http://blog.csdn.net/zhaoshouyue/ article/details/51178614.

[12] 于芝枝.基于Kinect的人体姿势识别与校正[D].广州:广东工业大学,2014.

[13] 吴淳,孙心佩,程健,等.体感CF2.0三维场景游戏之开发[J].电子世界,2014,34(9):13-14.

[14] 董傲霜.使用Kinect深度图像的静态人体动作识别[D].阜新:辽宁工程技术大学,2014.

[15] 罗鸣.基于Kinect传感器的骨骼定位研究[D].武汉:武汉科技大学,2013.

[16] 如何平滑处理Kinect采集的骨骼数据[EB/OL].http://www.cnblogs.com/microcampus/archive/ 2013/05/06/3063625.html.

[17] 钱堑,马旭东,戴先中.基于抽象隐马尔可夫模型的运动行为识别方法[J].模式识别与人工智能,2009,22(3):433-439.

[18] CHANG Y J,CHEN S F.A Kinect-based system for physical rehabilitation:a pilot study for young adults with motor disabilities [J].Research in Developmental Disabilities,2011,32(6):2566-2570.

[19] 刘开余,夏斌.基于Kinect的实时人体姿势識别[J].电子设计工程,2014(19):31-34.

[20] 韩旭.应用Kinect的人体行为识别方法研究与系统设计[D].济南:山东大学,2013.

[21] 邓小园.基于Kinect运动捕捉的高尔夫挥杆分析与辅助训练系统的研制[D].北京:北京邮电大学,2013.

[22] Mecanim Animator使用详解[EB/OL].http://blog.csdn.net/myarrow/article/details/45242403.

(责任编辑:杜能钢)