2011年1月29日 星期六

Pharo and Seaside

前一陣Jimmy's papa在查資料寫Squeak程式時,找到一個Squeak的特殊分支Pharo,查閱相關開發文件,發覺它支持的Seaside網頁應用程式開發框架(web application framework)可以物件導向的方式很直覺地產生HTML文件,也支援JQuery等等Web 2.0的語法,以下是個簡單的範例 首先,宣告類別JSLCounter,並且定義一個變數count
WAComponent subclass: #JSLCounter
    instanceVariableNames: 'count'
    classVariableNames: ''
    poolDictionaries: ''
    category: 'JimmyScratchLab'
幫JSLCounter宣告一個increase方法
JSLCounter>>increase
    count := count + 1
JSLCounter要顯示的網頁內容則寫在renderContentOn:裡
JSLCounter>>renderContentOn: html
    html heading: 'Welcom to Seaside--JimmyScratchLab'.
    html heading: '歡迎到海邊--機器人積木軟體实驗室'.
    html paragraph: [
        html render: '目前有'.
        html render: count.
        html render: '次點擊'.
    ].
    html anchor
        callback: [ self increase ];
        with: 'Click me'.
這是JSLCounter顯示為網頁的結果,由於Seaside 3.0目前繁體中文只能選擇mac-roman字碼,部份短缺的繁體中文字只能以簡體字代替之,期待Seaside未來的版本支援Big5字碼
寄件者 scratchlab

NXT Artbotics--海綿寶寶(SpongeBot)

這是拿夾娃娃機夾到的海綿寶寶布偶,裝上NXT積木作成的骨架,控制程式是JNXT(Scratch Mod)寫成的,配上吵爆的海綿寶寶卡通主題曲,讓海綿寶寶機器人跳舞直到永遠.........
寄件者 scratchlab
寄件者 scratchlab
很吵的海綿寶寶

2011年1月28日 星期五

用NXT做互動式美勞Artbotics

用NXT做互動式美勞Artbotics,對喜歡做美勞的Jimmy來說似乎蠻有趣的,美勞+NXT機器人+JNXT(Scratch mod)目前來說應該是完美的組合,讚啦!!! 這位老師介紹什麼是Artbotics,Art + Robotics = Artbotics!!! 下面這個研討會老師們展示許多有趣作品

2011年1月25日 星期二

Jimmy's NXT B.B.Call

雖然Jimmy是個小宅男但也跟一般好動的小朋友一樣,常常在客廳,他的電腦辦公室(他常說打電腦就是上班),遊戲間上上下下跑來跑去,每次爸爸媽媽要找他時,不免要氣聚丹田發出獅子吼功才能找到他,長久下來Jimmy's papa實在很怕驚擾到街頭巷尾,剛好趁這次JNXT beta 1.4提供簡訊傳送指令,將電腦當做簡訊發送台,Jimmy隨身攜帶NXT當作簡訊接收端,這樣一來Jimmy's papa就可以隨時呼叫Jimmy卻不會吵到大家了 這是Bricx的畫面,用來將.nxc原始碼編譯.rxe執行程式,但由於Jimmy's papa是在Ubuntu上的wine跑Bricx,無法用Bricx直接傳送.rxe執行程式到NXT機器人,剛好JNXT beta 1.4有提供"推送檔案到NXT(Push NXT File)"的功能可以派上用場
寄件者 scratchlab
利用"推送檔案到NXT(Push NXT File)"的功能,就可以將改好的程式推送出去
寄件者 scratchlab
這是電腦端的JNXT/Scratch程式碼,Jimmy's papa用來呼叫Jimmy
寄件者 scratchlab
寄件者 scratchlab
本來想上傳NXT收到訊息的螢幕畫面,無奈NXT螢幕本身無背光源,相機怎麼拍就是會出現周遭環境的投影,或許我該把讀取IOMAP的積木指令改好一點,直接擷取NXT記憶體裡頭的螢幕畫面,不過一想到影像資料還要用Squeak的語法再次處理,哈,有空再說!!!

2011年1月23日 星期日

JNXT beta 1.4 for Linux--My Scratch Mod我的小貓咪改裝版

這次釋出的JNXT beta 1.4 for Linux可以推送NXT專屬檔案格式.rxe及.rso,還可讀寫NXT機器人內部的簡訊信箱(Inbox),這樣目前網路上眾多現成的NXT的C語言程式(.nxc),如二輪平衡車(NXT Segway)程式,或許只要稍微修改一下,就能以參數簡訊傳送的NXT信箱的方式,讓小朋友在遠端電腦遙控了

歡迎下載測試JNXT-beta-1.4-linux.tar.gz

ps.升級Ubuntu 11.04後藍牙可能無法啟動,每次開機時可執行下列命令,讓藍牙啟動

sudo killall bluetoothd
sudo bluetoothd 
寄件者 scratchlab
新增的積木指令有這些
寄件者 scratchlab
這是目前JNXT的積木指令群,最底下的讀取IOMAP的兩個指令還不建議使用
寄件者 scratchlab

2011年1月22日 星期六

pynia--用Python讀取OCZ NIA腦機介面

之前Jimmy's papa在腦機介面--OCZ NIA 介紹過這款腦機介面,剛好最近有網友在問如何以Python擷取NIA的訊號,想用NIA開發腦波念力遊戲的玩家們,Jimmy's papa建議可以下載pynia試試看,你可以透過pynia去擷取低階的原始腦波數據,或者指定幾個腦波頻率作為腦指(BrainFingers),也就是代替你敲鍵盤按滑鼠的手指,它也提供傅立葉轉換的功能,讓你可以很方便地轉換成腦波圖 如果有人閒錢多又不想浪費時間測pynia程式的話,可以贊助NIA給Jimmy's papa,我很樂意幫你測試 到這裡可以下載pynia

2011年1月21日 星期五

想玩Scratch+NXT+Arduino?歡迎贊助喔!!!

目前在網路上好像還沒有人開始將Scratch+NXT+Arduino著手整合在一起?也就是說以Scratch積木指令同時遙控NXT及Arduino,讓小朋友以中文積木指令,運用這些軟硬體同時協力合作的完成一些有趣的事情 目前Jimmy's papa只想到 1.有客人來了,Arduino偵測到門口玄關有動靜,通報NXT機器人端飲料拿拖鞋 2.Arduino偵測到娃娃床上的小Baby哭了,通報NXT機器人快去床邊唱歌跳機器舞 3.Arduino偵測到Jimmy人沒在客廳電視日光燈都沒關,趕緊通報NXT機器人快去跟媽媽打小報告 ......等等,剩下的再叫Jimmy發揮想像力列個清單 想用Scratch+NXT+Arduino做些有趣好玩的事並且住高雄的網友,或許可以借或贊助一片支援藍牙的Arduino,Jimmy's papa我可以幫忙整合到JNXT /Scratch,感謝!!! 當然,整合這三者的事,或許不用等Jimmy's papa來做,搞不好國外很多能人志士已經在計畫中,有空常去逛逛Scratch討論區,說不定哪天就冒出個新mod支援NXT+Arduino

2011年1月20日 星期四

以JNXT傳送簡訊給NXT收件匣

這是JNXT beta 1.4將新增的傳簡訊指令,Mindstorms NXT 2.0提供10個簡訊收件匣(Inbox),我們可以用來傳送參數與已載入到NXT機器人的.rxe執行檔互動,這樣的好處是讓NXT機器人可以保持對現場地形地況的快速偵測機動反應,不需時時將偵測值後送電腦主機等待下一步指示,而電腦主機端的指揮官也可以下達必要的決策指令 這是接收與傳送簡訊的指令積木
寄件者 scratchlab
這是測試程式,要注意簡訊字串不要以空白間隔,否則經過層層轉換後,NXT會將它當作字串結尾
寄件者 scratchlab
這是結果
寄件者 scratchlab

2011年1月14日 星期五

以JNXT讀寫NXT IOMAP

網路上看到網友以NXC讀寫NXT IOMAP上的某些區塊的資料,也想將讀寫IOMAP的指令積木加入將釋出的JNXT beta.1.4....... 待續......

2011年1月10日 星期一

用JNXT寫Line Finder機器人程式

這是使用Scratch改裝版JNXT beta 1.4寫的NXT Line Finder程式 由於是以Bluetooth遙控,所有的判斷都在遠端的電腦完成,所以放慢速度讓機器人可以順利偵測到黑線,程式的邏輯其實蠻簡單的,難在如何調校判斷的參數,還有周遭的光線或地面是否平整都會影響判讀,Jimmy's papa覺得才短短一兩公尺的藍牙遙控就如此困難,何況遠在384,400公里的登月車的遙控,不知道花費多少人力物力啊!!! 以下的程式碼加上一些模糊地帶的判斷邏輯或許可以加快運轉的速度 等我找到時間再修改吧!! 機器人的組裝是參考這裡
寄件者 scratchlab
變數最好是專屬於角色的,而不是全域變數,否則Mesh會持續做Sensor update有可能導致NXT的訊號接收不良,
寄件者 scratchlab

2011年1月9日 星期日

Kinect也可以玩Scratch小貓咪程式

有個愛爾蘭的網友,教大家如何使用Kinect玩Scratch小貓咪程式 詳情請到Stephen Howell's Mind 或者到Scratch官網討論串了解進一步的訊息 Jimmy的爸爸在想,如果拿電腦的視訊攝影機是否也能達到類似的效果? 以下是他提供的影片

Scratch and Kinect from Stephen Howell on Vimeo.

超簡單的貓咪到城堡遊戲(Tower Defend Game)

最近看Jimmy小宅男一直玩各種系列的守城遊戲,覺得該趁機教他守城遊戲基本的設計原理,照例趁他睡前半小時抓他一起寫程式,基本的遊戲架構很簡單,小貓咪大軍會排隊沿著馬路走到城堡,這時噴火魔龍會在半路埋伏阻止小貓咪大軍進入城堡
寄件者 scratchlab
要讓貓咪大軍乖乖的沿著馬路走其實很簡單,只要知道哪幾個要轉彎點的xy座標,還有走完每一小段路的時間即可
寄件者 scratchlab
寄件者 scratchlab
為何是"城堡門把"負責計算幾個貓咪進城門,而不是"城堡" 原因是因為城堡面積太大,會造成同一個貓咪多次偵測到碰撞而重複加總變數
寄件者 scratchlab
按一下,可以連結到在Scratch官網的這個程式作品喔!!! 原本這作品是有聲音檔音效,可惜上傳到官網後會成執行不順,拿掉播放聲音檔的指令後便可順利執行,有興趣的網友,可自行下載後擺上播放聲音檔的指令即可 Scratch Project

2011年1月4日 星期二

超簡單的Squeak/Smalltalk語法

大家聽到Smalltalk程式語言,有資工背景的人第一個念頭可能是,那不就是教科書提到的那個只聞其名不知其實的元祖級純物件導向程式語言嗎?記得Jimmy的爸爸第一次看過Smalltalk程式,是在早期的BYTE雜誌一篇文章上,那時密密麻麻的程式碼對我猶如天書一般,但是基於對純物件導向語言的崇敬,那本雜誌供在Jimmy的爸爸的書桌上好久,記得還拿到課堂上跟老師瞎掰一番,當時認為這輩子大概不可能玩到它了,不過有緣者終將見面,為了將Scratch改裝成JNXT,Jimmy的爸爸不得不一把年紀了還撩下去掀開這阿祖級純物件導向程式的神秘面紗........

以下是語法的簡單例子

---------------------------------------------
aJNXT       小寫開頭為區域變數
Ajnxt       大寫開頭為全域變數
self        虛擬變數
---------------------------------------------
9           十進位整數
2r101       二進位整數
1.5         浮點數
2.4e7       指數
$j          字元
’JimmyScratchLab’  字串
#Hello      符號
#(1 2 3)    靜態陣列
{1. 2. 1+2} 動態陣列
---------------------------------------------
"a comment" 註解
---------------------------------------------
|x y|       宣告變數
x := 1      指定變數值
[x + y]     運算區塊
---------------------------------------------
3 factorial 一元訊息
3 + 5       二元訊息
2 raisedTo: 6 modulo: 10 關鍵字訊息
---------------------------------------------
^true       傳回值
Transcript show: ’hello’. Transcript cr. 表達式分隔符號 (.)
Transcript show: ’hello’; cr             訊息串連符號 (;)
(待續....)

Scratch作品---貓咪老師請同學們輪流報數

Jimmy昨天晚上很早就吃完宵夜,趕快利用睡前半小時跟他一起寫隻小小的程式,程式很簡單,只是讓各個角色輪流廣播訊息,程式的舞台背景是Jimmy畫的,這是他最愛的部分
寄件者 scratchlab
這是貓咪老師的程式碼
寄件者 scratchlab
這是1號猴子同學的程式碼
寄件者 scratchlab
這是2號男同學的程式碼
寄件者 scratchlab
這是3號大頭妹的程式碼
寄件者 scratchlab
這是4號飛天魔龍同學的程式碼
寄件者 scratchlab
這是5號愛爬爬走女同學的程式碼
寄件者 scratchlab
按一下,可以連結到在Scratch官網的這個程式作品喔!!! Scratch Project

2011年1月2日 星期日

Jimmy介紹他的作品

Jimmy說今年是中華民國100年,他要做個特別的展覽介紹他的作品,要求我一定要幫他錄影,想說讓他培養自己的簡報技巧也好,畫面有點暗,不過聽他講得頭頭是道,或許他有成為Sales的天份吧!