2010年9月30日 星期四

Puzzlebox Brainstorms--用腦波控制NXT機器人

Puzzlebox Brainstorms是一個以Python程式語言開發的開放原始碼專案, 目的是希望教育界可藉由此開放平台,讓學生們在課堂上可以很方便地研究如何以頭戴式腦機介面(BCI)蒐集玩家的腦波數據,並透過藍芽遙控LEGO Mindstorms NXT機器人,也希望各路英雄好漢能貢獻己力,壯大此"石頭湯"效應,有興趣的台灣教師們或許可以跟他們的專案負責人聯絡看看喔,其實如果能採用小喵咪Scratch作為使用者介面(UI),那就可以讓更多的小朋友受惠此專案了 我想,未來的世代不只是要手指頭靈活外,頭腦裡頭的腦神經更要靈活,才能精確地操控更先進的腦機介面 這是使用者的畫面
以下是相關DEMO影片

2010年9月28日 星期二

測試Scratch Board Serial Communication Protocol

根據ScratchBoard_Tech_InfoR2.pdf技術說明文件,Scratch會主動詢問感應板,而感應板會丟出長度為18個Byte的封包,內含韌體版本ID及8個偵測器值,以下的Python程式可以模擬Scratch詢問目前感應板偵測值
1:  import serial
2:  def testScratchBoard():
3:      ser = serial.Serial('/dev/ttyUSB0', 38400, timeout=1)
4:      ser.write(chr(0x01))
5:      b=ser.read(18)
6:      ser.close()
7:      print "Packet : "
8:      for l in xrange(len(b)):
9:          print bin(ord(b[l]))
10: if __name__=='__main__':
11:     testScratchBoard()
以下是感應板送出的封包資料,共有18個Byte,每個偵測器值由一對HighByte & LowByte組成,而HighByte最左端位元為1,而LowByte最左端位元為0,封包的最前面兩個Byte為韌體版本ID
 Packet :
0b11111000
0b00000100
0b10000111
0b00001000
0b10001110
0b01111000
0b10010110
0b01111101
0b10011000
0b01111111
0b10100111
0b00000010
0b10101100
0b00001110
0b10110000
0b00000000
0b10111110
0b01011000
寫到這裡,當初ScratchBoard的設計理念,好像沒打算讓小朋友理解電腦最基礎的0與1的概念,否則應該加進幾個小LED,讓小朋友在某個位元設0或1,就能看到光滅或光亮,不過或許與Scratch沒有位元操作的Block也有關

2010年9月27日 星期一

ThinkGear Socket Protocol & JSON

花了些時間研讀有關ThinkGear相關開發文件,先留下這份筆記,待日後回顧 由於ThinkGear Socket Protocol是基於JSON資料交換格式的協定 所以ThinkGear傳出來的封包字串大概像這樣 {"poorSignalLevel":0,"eSense":{"attention":39,"meditation":42},"eegPower":{"delta":1.15e-4,"theta":1,"highAlpha":1}} {"rawEeg":239} {"rawEeg":281} {"rawEeg":233} 其中有各項腦波數據,專注力及冥想狀態,可運用這些數據來控制遊戲物件甚至是機器人 由於目前BYOB/Scratch無法decode JSON文件,勢必自己動手打造解譯JSON文件的Block ,以下是Block程式碼 未完........