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程式碼 未完........

2010年9月19日 星期日

用腦波控制小喵咪--有關ThinkGear Chip

今天在查找關於Scratch感應板資料時,意外發現一塊有趣的晶片
ThinkGear這塊腦波感測晶片為NeuroSky公司所開發,該公司販售一套名為MindSet頭戴式耳機就附有一隻前額腦波偵測器
哈哈,如果讓小朋友用"想"的,就能移動Scratch小喵咪,應該會比用滑桿有趣多了 或是根據小朋友不同的精神狀態,小喵咪會有不同的互動,會有更多樂趣!!! 請參閱what_is_thinkgear

2010年9月17日 星期五

Scratch感應板初測

今天終於拿到Scratch感應板,睡覺前趕緊測一下 我的作業系統是Ubuntu 10.04 Scratch是安裝Linux版的 連接線接上感應板和筆電 滑鼠以右鍵點選偵測Block區最底下兩個任一個 會跳出選單 再點選中間選項<顯示ScratchBoard監視器>即可 就會出現滑桿聲音光線按鈕電阻等偵測值 隨插即用不需要安裝任何驅動程式(ps.在我的Linux環境) OK!準備就寢

有關NXT馬達的調控(Motor Regulation Mode)

用來推進機器人的一對NXT馬達有3種調控方式 就好像住在山上的爸爸媽媽打電話給正在山下的一對小兄弟要他們五點回家 怠惰(IDLE): 原則上五點到家,安全第一,不用急著趕路,這是慈父的叮嚀 定速(SPEED): 命令兩兄弟,不管誰遇到山中老虎或土石流等險阻,兄弟各自努力,五點前要到家就對了,這是嚴母的紀律 同步(SYNC): 兄弟之間要互相幫忙,弟弟爬不動了哥哥要等等,哥哥腿酸了弟弟要陪哥哥歇歇腿,這是爸媽的苦心教誨 不知道小Jimmy聽得懂爸爸的解釋否? 還是乾脆寫隻小程式讓Jimmy測比較快吧?

2010年9月14日 星期二

BYOB--打造JBot的NXT Block--大功告成

打造NXT Block終於告一段落 接下來做什麼呢? 可能方案A:JBOT裝上SmartCam,讓機器人做到視覺辨識,因為這段期間我快受不了那個憋腳的超音波偵測器了,害我的JBOT常常撞牆,不過裝上SmartCam就不會撞牆了嗎?ㄟ....... 可能方案B:讓Scratch/BYOB也能Build出.rxe檔案 再說吧,先給Jimmy玩玩看 否則這小子每天玩氣球到城堡遊戲也不行
寄件者 scratchlab

2010年9月10日 星期五

RT3-I am a Machine超搞笑的機器人演員

機器人演員的網址在此http://www.robothespian.com/ 看來再過不久B咖的搞笑藝人要失業了

BYOB--打造JBot的NXT Block(3)

今天增加幾個偵測器指令Block 讓Jimmy玩玩看 發覺沒有指令參數沒有預設值及下拉選單 小朋友是沒有耐性理解要如何正確填入參數值 於是翻閱一下BYOB Manual看如何設定參數預設值 讓Jimmy只要直接點一下個別指令Block 就能馬上看到JBot機器人的動作 不過在做偵測器指令Block有幾個問題蠻困擾的 去讀取LightSensor值不管室內光線明暗總是傳回1023 而ColorSensor讀取值也怪怪的,不大能理解 也許該回頭用NXT-G測測看才能理解它的運作原理
寄件者 scratchlab

2010年9月9日 星期四

BYOB--打造JBot的NXT Block(2)

除了同步兩個馬達的指令還在測試外,今天大致補齊了馬達指令 明天可以讓Jimmy測測馬達指令各種排列組合的效果
寄件者 scratchlab
這是馬達指令Block的用法 對我來說超簡單 但是對Jimmy來說可能要適應一陣子
寄件者 scratchlab

2010年9月7日 星期二

BYOB--打造JBot的NXT Block(1)

BYOB 3.0 — Build Your Own Blocks是比Scratch更先進的分支版本,它可以讓我打造類似Lego WEDO的馬達指令Block,讓Jimmy能延續之前的學習經驗
寄件者 scratchlab
這是目前做的專屬JBot機器人的NXT Block 這段時間試過NXT-G還有NXC 但畢竟Jimmy才六歲而已 還是BYOB/Scratch的圖形指令積木比較適合他
寄件者 scratchlab
這是程式範例
寄件者 scratchlab

2010年9月2日 星期四

測試NXT-PYTHON與BYOB/Scratch--part 3

右邊那三個按鈕,可以去呼叫NXT機器人執行內存的.rxe程式(以nxc撰寫) 在寫程式的過程中常想,如果我能讓JBot機器人唱整首海綿寶寶主題曲並且跳舞 或是讓它跟Jimmy能來段英文對話一定很有趣,因為Jimmy平常喜歡機哩呱啦 背海綿寶寶或Ben10的劇情卻不太敢開口說英文