秦賽玉
編者按:在科技發(fā)展日新月異的今天,信息技術(shù)教學(xué)已經(jīng)遠(yuǎn)離了開、關(guān)機(jī)還需要反復(fù)講解的時(shí)代,三歲孩童熟練地?cái)[弄著iPad已非奇事。自策劃了“Scratch來了”這一專題之后,編輯深刻感受到研究程序語言的老師的可愛,他們的執(zhí)著、他們的探索,使得程序教學(xué)不再那么枯燥,煥發(fā)出勃勃生機(jī)。因此,雜志特別策劃了這一專欄,將陸續(xù)刊發(fā)一些程序教學(xué)領(lǐng)域有代表性的教學(xué)實(shí)踐。也期待更多老師投身到程序教學(xué)中去,通過自身的踐行,推動(dòng)程序教學(xué)的復(fù)興。
好萊塢的科幻電影是讓人期待的,諸多在學(xué)術(shù)界產(chǎn)生的新技術(shù)似乎總要在好萊塢轉(zhuǎn)一圈才能走進(jìn)真實(shí)的世界,雖然電影中的場景并不會(huì)完全在未來實(shí)現(xiàn),但根據(jù)這些影片我們卻能猜想出人機(jī)交互的發(fā)展趨勢。2002年史蒂芬·斯皮爾伯格導(dǎo)演的電影《少數(shù)派報(bào)告》虛擬了一個(gè)未來社會(huì),其中令人印象最深刻的是在2054年華盛頓總部,Tom Cruise在空中揮動(dòng)著手臂,翻閱著浮在空中的如行云流水一般的信息,八年后,這些預(yù)想的“懸空操作全息界面”已不再是科幻了。而微軟的Kinect已進(jìn)入了尋常百姓家,人們甚至不用影片中的數(shù)字手套,就能得到影片中Tom Cruise的體驗(yàn)。
目前,多點(diǎn)觸摸、體感技術(shù)、語音識(shí)別都有了較為成熟的應(yīng)用,在通向自然人機(jī)交互的道路上,影片中的設(shè)想正逐步被印證實(shí)現(xiàn),如微軟的Kinect,已把影片中的“體感操作”帶到現(xiàn)實(shí)中。
● Kinect是什么
Kinect是微軟在2010年6月14日對Xbox 360體感周邊外設(shè)正式發(fā)布的名字,它是一種3D體感攝影機(jī),具有即時(shí)動(dòng)態(tài)捕捉、影像辨識(shí)、麥克風(fēng)輸入、語音辨識(shí)、社群互動(dòng)等功能。骨骼跟蹤是Kinect“體感操作”的基礎(chǔ),系統(tǒng)會(huì)根據(jù)這一特性創(chuàng)建用戶的數(shù)字Avatar(虛擬角色)。當(dāng)用戶玩Xbox游戲時(shí),根據(jù)Kinect傳輸過來的深度數(shù)據(jù),系統(tǒng)將創(chuàng)建一個(gè)玩家“數(shù)字骨架”。因此,無論向左或向右移動(dòng)甚至跳躍時(shí),用戶的Avatar都會(huì)保持一致的動(dòng)作,就像照鏡子一般。Kinect是先識(shí)別人體部位進(jìn)而再推斷出關(guān)節(jié)點(diǎn),這是一個(gè)近似度概率匹配、評估的過程:逐個(gè)地進(jìn)行像素掃描,先局部再總體。骨骼跟蹤及深度數(shù)據(jù)是Kinect的精髓,如果有興趣可以看看余濤所寫的《Kinect應(yīng)用開發(fā)實(shí)戰(zhàn)》,那樣會(huì)更全面地了解它的工作原理。
● Kinect2Scratch的發(fā)展緣由
2012年微軟推出了Kinect的sdk,里面含有Kinect的驅(qū)動(dòng)程序,并且讓有興趣參加Kinect開發(fā)的人員,有一個(gè)簡便的開發(fā)平臺(tái)。之前一直致力于撰寫Scratch與Kinect中介程序的愛爾蘭的電腦教師stephen Howell,也開發(fā)了適用于Win7上的中介程序,相比之前使用的openNI版本,利用Kinect SDK開發(fā)的中介程序,改進(jìn)了校正費(fèi)時(shí)的問題,另外在新版本中的中介程序提供兩名玩家的骨架信息與骨架的XYZ軸的信息,這使得Scratch與Kinect的結(jié)合在信息教育上有更大的發(fā)揮余地。Kinect2Scratch的官方網(wǎng)站網(wǎng)址為http://Scratch.saorog.com/,大家可訪問下載。
但是stephen Howel開發(fā)的Kinect2Scratch中介程序只適合在Scratch1.4上運(yùn)行,由于Scaratch2.0是基于Flash的,官方也明確表示暫時(shí)不會(huì)開發(fā)適合Scratch2.0的Kinect插件。
● Kinect2Scratch的安裝與使用
要在Scratch上使用Kinect一般有三個(gè)重要的步驟,一是硬件的準(zhǔn)備,二是安裝Kinect在電腦上的驅(qū)動(dòng)程序,三是使用Scratch與Kinect的中介程序并完成定位設(shè)定。
1.硬件部分的準(zhǔn)備。除了微軟Xbox 360的Kinect裝置之外,用戶還需要專用的電源供應(yīng)器,因?yàn)橛?jì)算機(jī)上的USB 2.0插座僅能供應(yīng)5W的電力,而Kinect需要12W。Kinect for Xbox 360和Kinect for Windows除了Logo上的差異外,可以看到Kinect for Windows版本的USB電纜被縮短了,并且支持“近景模式”、提升了骨骼跟蹤等API的性能、更好地兼容各種Windows計(jì)算機(jī),其他方面和Kinect for Xbox 360的版本差異不大。
2.安裝Kinect之驅(qū)動(dòng)程序。將Kinect連接到計(jì)算機(jī)之前,請先下載、安裝微軟Kinect SDK,以及Stephen Howell所開發(fā)的Kinect2Scratch軟件(僅支援Windows 7和Windows 8系統(tǒng),當(dāng)然,用戶的計(jì)算機(jī)上也要安裝Scratch程序開發(fā)工具。Kinect SDK安裝完畢后,先接上Kinect的專屬電源再將它插入計(jì)算機(jī)的USB接口,Windows系統(tǒng)將自動(dòng)安裝必要的驅(qū)動(dòng)程序并提示重新開機(jī)。
3.使用Kinect2Scratch軟件捕捉Kinect傳回的體感動(dòng)作。重新開機(jī)之后,再執(zhí)行Kinect2Scratch軟件。按下Kinect2Scratch畫面左上方的“Launch Kinect(啟動(dòng)Kinect)”按鈕,即可看見下圖的兩個(gè)畫面,分別顯示Kinect內(nèi)部兩個(gè)攝影機(jī)傳入的彩色影像和3D深度影像。當(dāng)Kinect感測到人體時(shí),3D深度影像里的人物會(huì)呈現(xiàn)紅色。
● 用Scratch進(jìn)行體感互動(dòng)程序開發(fā)典型范例
在Scratch上編寫使用Kinect程序,方法并不困難,主要是運(yùn)用偵測區(qū)塊中的程序,為了便于說明,我舉個(gè)簡單的例子。
利用骨架的信息可以很輕易地用來控制游戲與動(dòng)畫的進(jìn)行,以制作一個(gè)讓Scratch小貓咪圖像跟著使用者的右手位置移動(dòng)為例,大致步驟如下:
1.Kinect2Scratch軟件維持執(zhí)行狀態(tài),開啟Scratch軟件,然后按下Kinect2Scratch視窗上方中間的“Connect to Scratch(連到Scratch)”按鈕。
2.回到Scratch軟件,點(diǎn)選左上方的“偵測”分類指令。
3.在“偵測器”指令上按鼠標(biāo)右鍵,選擇“啟動(dòng)遠(yuǎn)端感應(yīng)器”指令,Scratch將提示“遠(yuǎn)端感應(yīng)器連接已啟動(dòng)”的訊息。然后偵測值中便會(huì)出現(xiàn)身體各部位關(guān)節(jié)的偵測值,如頭、脖子、肩膀、手肘、手、軀干、腳等的X、Y、Z軸坐標(biāo)的偵測值。Kinect最多可以追蹤20個(gè)骨骼點(diǎn),而且目前只能追蹤人體,其他的物體或者動(dòng)物就不行了。
4.從“動(dòng)作”分類中,拖放"移動(dòng)x:0 y:0"指令以及"x坐標(biāo)"和"y坐標(biāo)"屬性。
5.x坐標(biāo)和y坐標(biāo)屬性可以改成Kinect偵測到的人體參數(shù),如右手的x, y坐標(biāo)屬性指令分別叫做"HandRight_x"及"HandRight_y"。
由于在編寫程序的時(shí)候通常不一定連接著Kinect,建議大家將相關(guān)的偵測值先復(fù)制到程序中使用。另外Stepen Howell 在它的網(wǎng)站上也提供了一些Kinect的Scratch程序供大家測試使用,里面包含小蜜蜂、彈球、互動(dòng)音樂、打磚塊等例子。
● 利用Kinect進(jìn)行Scratch教學(xué)的策略
Scratch教學(xué)在中小學(xué)信息技術(shù)教學(xué)或者是在綜合課程中逐漸流行,現(xiàn)在普遍的教學(xué)方式有:①游戲主題教學(xué)與動(dòng)畫故事創(chuàng)作。在普及課程如信息技術(shù)教學(xué),拓展課程如俱樂部、課外活動(dòng)教學(xué)中,我們通常采用這樣的方式,用1~2節(jié)課完成一個(gè)主題。②以累進(jìn)的方式加強(qiáng)程序的功能。③采用從學(xué)習(xí)生活中提煉的主題。④結(jié)合實(shí)體進(jìn)行程序操控。而Kinect2Scratch插件的運(yùn)用便是基于其中第四點(diǎn)開展的,相較于Scratch控制板,Arduino、MaKey MaKey、Arduino Leonardo等硬件,Kinect在使用中還是具有其獨(dú)特性的。首先它與Scratch程序教學(xué)的銜接點(diǎn)主要是通過骨架偵測值的變化進(jìn)行控制方式的創(chuàng)新應(yīng)用,更能激發(fā)學(xué)生對新技術(shù)的興趣以及作為對程序控制方式的創(chuàng)新應(yīng)用的研究工具。
它可以在Scratch基礎(chǔ)課程后引入,以下是常用的兩種運(yùn)用方式。
第一種方式是思考現(xiàn)有程序的創(chuàng)新控制方式,以學(xué)生編寫的飛機(jī)大戰(zhàn)游戲?yàn)槔?,在引入Kinect設(shè)備后,學(xué)生嘗試把控制方式由鼠標(biāo)鍵盤更改為用身體軀干的左右位置來控制飛機(jī)的x坐標(biāo)位置,而用腳踝的y坐標(biāo)大于多少來觸發(fā)子彈的發(fā)射,把角色的坐標(biāo)設(shè)定為Kinect偵測到的人體位置的坐標(biāo),等等。
第二種方式是在對Kinect2Scratch
的編程原理和應(yīng)用方法有了初步了解后進(jìn)行程序設(shè)計(jì),如設(shè)計(jì)單人跑步訓(xùn)練游戲。在這個(gè)程序中我們把人體的左右移動(dòng)同步于角色的左右移動(dòng),用腳踝y坐標(biāo)變化的幅度來控制背景移動(dòng)的速度。也就是說在體驗(yàn)時(shí)學(xué)生不僅要高抬腿還要左右移動(dòng)以避開障礙物,而成功的條件是碰到障礙物時(shí)激發(fā)的其他角色或者變量的變化。
● 把Kinect引入Scratch教學(xué)的問題及解決
利用Kinect2Scratch進(jìn)行Scratch編程的原理比較簡單,即使沒有設(shè)備也可以先把偵測值復(fù)制到程序中去備用(具體方法是在連接設(shè)備的時(shí)候把偵測值放入一個(gè)角色的程序中然后輸出這個(gè)角色,這樣就可以在需要偵測值的時(shí)候把該角色導(dǎo)入到在編的程序中重用各項(xiàng)偵測值了)。但是由于體感操控對活動(dòng)空間有較高的要求,在課堂教學(xué)中普及應(yīng)用還是存在較大難度的,所以校內(nèi)如有條件可以建立若干個(gè)基于Scratch的體感應(yīng)用的體驗(yàn)點(diǎn),這樣不僅可供創(chuàng)作者去測試、修改程序,也可發(fā)展為一個(gè)學(xué)生科創(chuàng)體驗(yàn)的活動(dòng)中心。
關(guān)于Kinect的各類創(chuàng)意在網(wǎng)絡(luò)上如同雨后春筍一般涌現(xiàn)出來,如用Kinect制作寵物狗看護(hù)機(jī)器人、在空氣中彈吉他、利用Kinect制作倒車?yán)走_(dá)系統(tǒng),或是用來玩經(jīng)典游戲《超級(jí)馬里奧兄弟》。顯然在與Scratch的結(jié)合中,它還可以迸發(fā)出更多的創(chuàng)意,而在實(shí)際的課程設(shè)計(jì)和教學(xué)應(yīng)用中還需要愛好者們投入更多的激情進(jìn)行實(shí)踐和研究。最后感謝stephen Howell。
參考文獻(xiàn):
[1]Kinect for Windows 開發(fā)技術(shù)教程[J/OL].http://www.cnKinect.com/sdk/.
[2]趙英杰.使用Scratch輕松制作Kinect體感互動(dòng)游戲[J/OL].http://swf.com.tw/?p=429.
[3]許惠美.淺談Scratch與Kinect結(jié)合與實(shí)作方法——讓你的Scratch更具互動(dòng)性[J/OL].http://blog.ilc.edu.tw/blog/blog/4950/post/19409/176874,2011.5.
[4]劉鑫,許華榮,胡占義.基于GPU和Kinect的快速物體重建[J].自動(dòng)化學(xué)報(bào),2012(08).
[5]張荻.Kinect應(yīng)用領(lǐng)域的探討[J].物流工程與管理,2012(06).
[6]金燁.Kinect:微軟新生[J].中國經(jīng)濟(jì)和信息化,2011(07).
[7]余濤.Kinect應(yīng)用開發(fā)實(shí)戰(zhàn)[M].北京:機(jī)械工業(yè)出版社,2012.