秦赛玉
编者按:在科技发展日新月异的今天,信息技术教学已经远离了开、关机还需要反复讲解的时代,三岁孩童熟练地摆弄着iPad已非奇事。自策划了“Scratch来了”这一专题之后,编辑深刻感受到研究程序语言的老师的可爱,他们的执著、他们的探索,使得程序教学不再那么枯燥,焕发出勃勃生机。因此,杂志特别策划了这一专栏,将陆续刊发一些程序教学领域有代表性的教学实践。也期待更多老师投身到程序教学中去,通过自身的践行,推动程序教学的复兴。
好莱坞的科幻电影是让人期待的,诸多在学术界产生的新技术似乎总要在好莱坞转一圈才能走进真实的世界,虽然电影中的场景并不会完全在未来实现,但根据这些影片我们却能猜想出人机交互的发展趋势。2002年史蒂芬·斯皮尔伯格导演的电影《少数派报告》虚拟了一个未来社会,其中令人印象最深刻的是在2054年华盛顿总部,Tom Cruise在空中挥动着手臂,翻阅着浮在空中的如行云流水一般的信息,八年后,这些预想的“悬空操作全息界面”已不再是科幻了。而微软的Kinect已进入了寻常百姓家,人们甚至不用影片中的数字手套,就能得到影片中Tom Cruise的体验。
目前,多点触摸、体感技术、语音识别都有了较为成熟的应用,在通向自然人机交互的道路上,影片中的设想正逐步被印证实现,如微软的Kinect,已把影片中的“体感操作”带到现实中。
● Kinect是什么
Kinect是微软在2010年6月14日对Xbox 360体感周边外设正式发布的名字,它是一种3D体感摄影机,具有即时动态捕捉、影像辨识、麦克风输入、语音辨识、社群互动等功能。骨骼跟踪是Kinect“体感操作”的基础,系统会根据这一特性创建用户的数字Avatar(虚拟角色)。当用户玩Xbox游戏时,根据Kinect传输过来的深度数据,系统将创建一个玩家“数字骨架”。因此,无论向左或向右移动甚至跳跃时,用户的Avatar都会保持一致的动作,就像照镜子一般。Kinect是先识别人体部位进而再推断出关节点,这是一个近似度概率匹配、评估的过程:逐个地进行像素扫描,先局部再总体。骨骼跟踪及深度数据是Kinect的精髓,如果有兴趣可以看看余涛所写的《Kinect应用开发实战》,那样会更全面地了解它的工作原理。
● Kinect2Scratch的发展缘由
2012年微软推出了Kinect的sdk,里面含有Kinect的驱动程序,并且让有兴趣参加Kinect开发的人员,有一个简便的开发平台。之前一直致力于撰写Scratch与Kinect中介程序的爱尔兰的电脑教师stephen Howell,也开发了适用于Win7上的中介程序,相比之前使用的openNI版本,利用Kinect SDK开发的中介程序,改进了校正费时的问题,另外在新版本中的中介程序提供两名玩家的骨架信息与骨架的XYZ轴的信息,这使得Scratch与Kinect的结合在信息教育上有更大的发挥余地。Kinect2Scratch的官方网站网址为http://Scratch.saorog.com/,大家可访问下载。
但是stephen Howel开发的Kinect2Scratch中介程序只适合在Scratch1.4上运行,由于Scaratch2.0是基于Flash的,官方也明确表示暂时不会开发适合Scratch2.0的Kinect插件。
● Kinect2Scratch的安装与使用
要在Scratch上使用Kinect一般有三个重要的步骤,一是硬件的准备,二是安装Kinect在电脑上的驱动程序,三是使用Scratch与Kinect的中介程序并完成定位设定。
1.硬件部分的准备。除了微软Xbox 360的Kinect装置之外,用户还需要专用的电源供应器,因为计算机上的USB 2.0插座仅能供应5W的电力,而Kinect需要12W。Kinect for Xbox 360和Kinect for Windows除了Logo上的差异外,可以看到Kinect for Windows版本的USB电缆被缩短了,并且支持“近景模式”、提升了骨骼跟踪等API的性能、更好地兼容各种Windows计算机,其他方面和Kinect for Xbox 360的版本差异不大。
2.安装Kinect之驱动程序。将Kinect连接到计算机之前,请先下载、安装微软Kinect SDK,以及Stephen Howell所开发的Kinect2Scratch软件(仅支援Windows 7和Windows 8系统,当然,用户的计算机上也要安装Scratch程序开发工具。Kinect SDK安装完毕后,先接上Kinect的专属电源再将它插入计算机的USB接口,Windows系统将自动安装必要的驱动程序并提示重新开机。
3.使用Kinect2Scratch软件捕捉Kinect传回的体感动作。重新开机之后,再执行Kinect2Scratch软件。按下Kinect2Scratch画面左上方的“Launch Kinect(启动Kinect)”按钮,即可看见下图的两个画面,分别显示Kinect内部两个摄影机传入的彩色影像和3D深度影像。当Kinect感测到人体时,3D深度影像里的人物会呈现红色。
● 用Scratch进行体感互动程序开发典型范例
在Scratch上编写使用Kinect程序,方法并不困难,主要是运用侦测区块中的程序,为了便于说明,我举个简单的例子。
利用骨架的信息可以很轻易地用来控制游戏与动画的进行,以制作一个让Scratch小猫咪图像跟着使用者的右手位置移动为例,大致步骤如下:
1.Kinect2Scratch软件维持执行状态,开启Scratch软件,然后按下Kinect2Scratch视窗上方中间的“Connect to Scratch(连到Scratch)”按钮。
2.回到Scratch软件,点选左上方的“侦测”分类指令。
3.在“侦测器”指令上按鼠标右键,选择“启动远端感应器”指令,Scratch将提示“远端感应器连接已启动”的讯息。然后侦测值中便会出现身体各部位关节的侦测值,如头、脖子、肩膀、手肘、手、躯干、脚等的X、Y、Z轴坐标的侦测值。Kinect最多可以追踪20个骨骼点,而且目前只能追踪人体,其他的物体或者动物就不行了。
4.从“动作”分类中,拖放"移动x:0 y:0"指令以及"x坐标"和"y坐标"属性。
5.x坐标和y坐标属性可以改成Kinect侦测到的人体参数,如右手的x, y坐标属性指令分别叫做"HandRight_x"及"HandRight_y"。
由于在编写程序的时候通常不一定连接着Kinect,建议大家将相关的侦测值先复制到程序中使用。另外Stepen Howell 在它的网站上也提供了一些Kinect的Scratch程序供大家测试使用,里面包含小蜜蜂、弹球、互动音乐、打砖块等例子。
● 利用Kinect进行Scratch教学的策略
Scratch教学在中小学信息技术教学或者是在综合课程中逐渐流行,现在普遍的教学方式有:①游戏主题教学与动画故事创作。在普及课程如信息技术教学,拓展课程如俱乐部、课外活动教学中,我们通常采用这样的方式,用1~2节课完成一个主题。②以累进的方式加强程序的功能。③采用从学习生活中提炼的主题。④结合实体进行程序操控。而Kinect2Scratch插件的运用便是基于其中第四点开展的,相较于Scratch控制板,Arduino、MaKey MaKey、Arduino Leonardo等硬件,Kinect在使用中还是具有其独特性的。首先它与Scratch程序教学的衔接点主要是通过骨架侦测值的变化进行控制方式的创新应用,更能激发学生对新技术的兴趣以及作为对程序控制方式的创新应用的研究工具。
它可以在Scratch基础课程后引入,以下是常用的两种运用方式。
第一种方式是思考现有程序的创新控制方式,以学生编写的飞机大战游戏为例,在引入Kinect设备后,学生尝试把控制方式由鼠标键盘更改为用身体躯干的左右位置来控制飞机的x坐标位置,而用脚踝的y坐标大于多少来触发子弹的发射,把角色的坐标设定为Kinect侦测到的人体位置的坐标,等等。
第二种方式是在对Kinect2Scratch
的编程原理和应用方法有了初步了解后进行程序设计,如设计单人跑步训练游戏。在这个程序中我们把人体的左右移动同步于角色的左右移动,用脚踝y坐标变化的幅度来控制背景移动的速度。也就是说在体验时学生不仅要高抬腿还要左右移动以避开障碍物,而成功的条件是碰到障碍物时激发的其他角色或者变量的变化。
● 把Kinect引入Scratch教学的问题及解决
利用Kinect2Scratch进行Scratch编程的原理比较简单,即使没有设备也可以先把侦测值复制到程序中去备用(具体方法是在连接设备的时候把侦测值放入一个角色的程序中然后输出这个角色,这样就可以在需要侦测值的时候把该角色导入到在编的程序中重用各项侦测值了)。但是由于体感操控对活动空间有较高的要求,在课堂教学中普及应用还是存在较大难度的,所以校内如有条件可以建立若干个基于Scratch的体感应用的体验点,这样不仅可供创作者去测试、修改程序,也可发展为一个学生科创体验的活动中心。
关于Kinect的各类创意在网络上如同雨后春笋一般涌现出来,如用Kinect制作宠物狗看护机器人、在空气中弹吉他、利用Kinect制作倒车雷达系统,或是用来玩经典游戏《超级马里奥兄弟》。显然在与Scratch的结合中,它还可以迸发出更多的创意,而在实际的课程设计和教学应用中还需要爱好者们投入更多的激情进行实践和研究。最后感谢stephen Howell。
参考文献:
[1]Kinect for Windows 开发技术教程[J/OL].http://www.cnKinect.com/sdk/.
[2]赵英杰.使用Scratch轻松制作Kinect体感互动游戏[J/OL].http://swf.com.tw/?p=429.
[3]许惠美.浅谈Scratch与Kinect结合与实作方法——让你的Scratch更具互动性[J/OL].http://blog.ilc.edu.tw/blog/blog/4950/post/19409/176874,2011.5.
[4]刘鑫,许华荣,胡占义.基于GPU和Kinect的快速物体重建[J].自动化学报,2012(08).
[5]张荻.Kinect应用领域的探讨[J].物流工程与管理,2012(06).
[6]金烨.Kinect:微软新生[J].中国经济和信息化,2011(07).
[7]余涛.Kinect应用开发实战[M].北京:机械工业出版社,2012.