基于体感交互的儿童认知类应用

2018-03-22 11:43孙一帆
读天下 2017年14期
关键词:设备儿童应用

摘要:现在的家庭对于孩子的早教越来越重视,市面上大量的早教启蒙书籍、玩具、应用程序被开发出来,帮助孩子“认字阅读”、“启蒙算数”、“增长知识”、“培养兴趣”等,因此体感交互设备也应运而生。基于此,本文围绕基于体感交互的儿童认知类应用进行了分析。

关键词:儿童;体感交互;设备;应用

一、 引言

随着技术的发展和生活方式的改变,计算机或移动设备辅助儿童教育,变得越来越普遍。而与这些设备之间的交互,一直受限于鼠标键盘或者触摸屏这些传统输入设备。同时,儿童容易对数字设备过于迷恋,长时间面对屏幕、保持不动的姿势、长期封闭在数字世界中不与外界接触,都会对儿童的身心健康带来不良的影响。而如果采用体感交互方式,让儿童像做游戏一样,可以在一个多人的环境中,用一种简单、自然、基于身体动作的方式来参与互动,对于一款面向儿童的娱乐认知类应用来说,会是非常适合的解决方案。

二、 体感交互概述

体感交互,起源于游戏行业,顾名思义,就是通过肢体动作、语言等来和系统进行互动的交互方式。作为一个革命性的技术,正在提供一种新的人机交互方式,为儿童应用软件设计打开了一个新的类型。随着健康生活的理念日益深入人心,这种自然、新颖、容易上手、结合娱乐与运动的交互方式,脱离了鼠标键盘和触摸屏的限制,打开身心,把身体从数字设备的束缚中解放出来,能够让儿童产生更高的学习积极性。因此,将体感交互技术融入到儿童认知类软件,具有非常重要的意义。

三、 案例构思

本文将列举的一款基于体感交互技术的儿童认知类应用,是一款以森林及其中各种动物为主题的互動游戏应用。游戏的设计思路是:投影在墙上的画面,展现出一个卡通风格的森林的景象,森林中隐藏着各种小动物,需要儿童站在大屏幕前,通过做一些动作来模仿某种动物的某个特征,如果动作做对了,就能将它们召唤出来,来到小朋友跟前和小朋友进行互动。这款应用的场景、动画、音乐,特别是交互方式,都大大增加了儿童学习的乐趣,减轻了儿童的认知负担,帮助儿童了解这些动物和植物,在娱乐的同时获得知识,达到寓教于乐的目的。借助肢体动作,摆脱了传统输入设备的限制,并能多人在大屏幕前同时参与,满足了儿童好动的天性,降低传统数字设备对儿童的身心伤害,使儿童无需坐在电脑前,减轻电脑辐射的同时实现了一定程度的运动健身效果。

四、 开发环境

在体感设备方面,早期的体感交互一般需要借助数据手套、3D头盔等穿戴式设备来实现。但随着机器视觉识别技术的发展,出现了直接利用深度摄像头获取人体骨骼和运动数据来实现人机交互的方法。其中之一有微软开发的体感设备Kinect。Kinect是微软在2010为XBOX360游戏机开发的体感外设。它具有即时动态捕捉、影像辨识、麦克风输入、语音辨识、社群互动等功能。它不需要用户接触任何控制器,仅依靠相机捕捉三维空间中玩家的运动,还能辨认声音以接受语音指令。它的主要部件有:一个彩色摄像头、一个红外摄像头、一个红外投影仪、一组麦克风列阵列。彩色摄像头,用于获取视角范围内的彩色视频数据流;红外投影仪,用以投射波长为830纳秒的肉眼不可见空间结构光,只要向视角范围内的空间中打上这种结构光,整个空间就都被做了标记,把一个物体放进这个空间,只要看看物体上面的散斑图案,就可以知道这个物体在什么位置。红外摄像头则专门用于接受红外投影仪所投射出的这种结构光。麦克风阵列,由左边一个和右边三个独立的微型麦克风组成,主要用于捕捉外界的立体声,实现声音辨识,识别语音指令。由于Kinect一开始是作为XBOX360专用外设而开发,需要驱动程序和相关软件开发工具包的支持才能在PC上运行。可用的类库有Openni,KinectSDK,手势库NITE,Kinectmssdk等。我们使用的是微软官方提供的驱动程序和Kinect SDK v2.0。通过Kinect SDK能获取的数据包括:语音,彩色图像,深度图像,骨骼和关节数据(对每个人追踪25个关节点,可同时追踪6人)。

在开发引擎方面,目前主流的游戏开发引擎,有Cocos2D、Unity3D、虚幻等。每一款游戏开发引擎都有其独特的优缺点,只有深入了解引擎的开发环境和技术特点以及产品的表现力需要,并通过详细的分析和充分的比较后,才能选出一款合适的游戏引擎软件,来进行接下来的开发。首先本款应用的画面风格是2D卡通风格,另一个需要满足的需求是:能便利地接入Kinect SDK。而Unity3D恰好能很好地满足这两点。并且,Unity3D是一个非常成熟的游戏开发引擎,拥有大量的开发者,意味着有大量的讨论、学习资料、活跃的技术社区,还有大量的第三方插件和资源。Unity3D是一个原生三维引擎,但用它来制作2D游戏也是完全无障碍。因为在Unity中,2D和3D只是一种视角上的转换,所有的物体都是有3D坐标信息的,在Vector3转为Vector2,并且视图方式由透视变为正交的时候,Z轴信息就没有意义了,也就从3D变为了2D。在2D模式下,层级视图中只有一个正交摄像机(Projection选择的是Orthographic)。Unity3D还为提供了专门用于2D模式的Sprite和SpriteRenderer组件,来使用图片资源。Unity3D可使用C#来作为编程语言。调用Kinect方面,在正确安装好Kinect官方驱动和SDK后,可到微软官方网站下载最新的For Unity3D示例封包,里面如有必需的支持文件和示例场景,在新建项目中引入封包后,就可以打开示例场景测试了。接下来,按照示例中的相关代码,很容易就懂得了Kinect SDK的主要API的用法。

五、 动作识别机制

首先需要定义一个标准动作。我们先考虑如何定义一个特定动作。从Kinect我们可以取得的数据有:关节点定位,即判断相关的关节点是否落在一定的范围内;骨骼角度,即判断相关骨骼的角度是否处于一定范围内,这个需要通过两端关节的定位计算出来;关节角度,这是在看MSDN的Kinect SDK文档时发现的,关节角度值就是该关节和下一关节的夹角。关节角度非常适合用来判断特定动作,其无关于个体身高体型、站位远近。那么不同的动作可以很方便地通过累计相关关节角度与标准动作关节角度的差值来评价。

在此项目中,用以召唤动物的动作,可以选取与特定动作相关的几个关节用以评价,而不需要评价全身关节,否则反而容易因次要关节数据造成动作误判。比如,兔子选取了:左右腕、左右肘、左右肩共6个关节。我们写了一个程序可以方便地输出指定关节的定义文件。由于在不同的环境下,Kinect获取的数据总会有一定的抖动噪音,因此我们会先记录一个较长时间范围的数据然后取其平均值以消除抖动。

现在,我们有了一组关节的定义,在游戏中,只需要取得用户对应关节的角度数据,将其依次与标准动作数据比较,累计下它们的差值,最后得到全部定义关节的差值总量,就可以判断目标动作是否与标准动作匹配了。当然,也需要用平均值消除抖动。这是比较简便、粗浅的评价方法,对所有关节同等对待,并没有考虑给不同关节不同加权。

六、 最终效果

在交互区边上,有一张动作示意海报,上面展示了动物的种类以及可以召唤出它们的肢体动作。比如,双手支在耳朵上模仿兔子,用手遮在眉毛上模仿猴子,双手上举张开手指模仿雄鹿等。玩家走到投影屏幕前,做出预设的动作,位于前方的Kinect捕捉玩家人体骨架数据。通过比较若干关键骨骼的角度,如果玩家动作与预设动作相匹配,画面中会出现一个该动物的识别图标,提示玩家已识别出有效动作;同时图标外会出现一个环形进度条,提示玩家保持这个动作一定时间。当玩家持续保持动作几秒钟,就能召唤出这种动物。首先是从森林中传来该动物的叫声,然后可以看到该动物缓步从森林中走出,来到玩家所在位置跟前。此时玩家可以通过一些动作与动物互动,如引起动物注视、让动物跟随等。随后,该动物回到森林,自行离去。玩家可以进行下一个动作的识别。为了增加多人合作的趣味性,培养孩子的互相沟通与交流,游戏中设置了一些需要两人合作完成的动作,作为奖赏,合作召唤出的动物在形象和出场气氛上都更激动人心。

从最终的现场展示效果来看,该应用系统色彩明快、形象生动,交互方式新颖有趣,深受小朋友们的欢迎和喜爱。体感交互让儿童以非接触的自然方式与数字世界进行交流,使他们在游戏中获得认知,达到了寓教于乐的目的。

作者简介:

孙一帆,江苏省苏州市,苏州工艺美术职业技术学院。

猜你喜欢
设备儿童应用
调试新设备
GM(1,1)白化微分优化方程预测模型建模过程应用分析
煤矿井下坑道钻机人机工程学应用分析
气体分离提纯应用变压吸附技术的分析
会计与统计的比较研究
留守儿童
六一儿童
认一认
视听设备行情
“六·一”——我们过年啦!