秦賽玉



編者按:在科技發展日新月異的今天,信息技術教學已經遠離了開、關機還需要反復講解的時代,三歲孩童熟練地擺弄著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.