這裡是Jimmy的實驗室用來發表Jimmy的Scratch程式作品,還有LEGO WEDO & NXT機器人設計 & Android, (本部落格引用圖文為教育教學目的合理使用) 想與我(Jimmy的爸爸 )聯絡 jimmyscratchlab@gmail.com
![]() |
| 寄件者 scratchlab01 |
這個變形(MORPH)機器人,是過完農曆年派給Jimmy小朋友的寒假作業,讓他挑戰這個複雜度蠻高的機器人作品,是因為他最近很喜歡看變形金剛卡通, 想藉此給他足夠的動力完成,而且小孩子難免會弄丟一些小零件,若不趁早組裝以後可能就沒法子組裝了,原本預期Jimmy開學前能完成,不過Jimmy覺得組這個機器人很難,要求每天只組一兩個部位 ,所以大概花了兩個星期多才完成,組裝到最後階段,哈哈,跟我先前預料的一樣短少了幾個零件,Jimmy向我求救問我是不是沒辦法組裝了,我跟他說"我們可以一起動腦筋想辦法以其他零件代替啊!!!" 於是我看他開心的摸著頭,努力地用他的小腦袋想著.....
![]() |
| 寄件者 scratchlab01 |
![]() |
| 寄件者 scratchlab01 |
![]() |
| 寄件者 scratchlab01 |
能夠以Smalltalk/Squeak/Pharo操控LEGO MINDSTORMS NXT 2.0樂高機器人,一直以來是Jimmy's papa的夢想,直到最近與Squeak FFI奮戰多日後,終於將Talk2NXT的部份功能實作出來,同時也寫了測試MotorA,MotorB以及port2的Color Sensor的簡單範例,提供給有興趣的網友鑑賞,目前我僅在Ubuntu 10.10的環境下測試過,這段時間讓我對Smalltalk有更深一層的理解,敲下程式碼毫不遲疑,然後不斷地重構(Refactoring)再重構,收穫不少!!!
ps.Jimmy's papa擅長寫又臭又長的程式碼命名(美其名所謂的"程式即說明文件"),但是請不要害怕,善用Tab key就讓Jimmy's papa撰寫Smalltalk的過程輕鬆不少
![]() |
| 寄件者 scratchlab01 |
![]() |
| 寄件者 scratchlab01 |
![]() |
| 寄件者 scratchlab01 |
![]() |
| 寄件者 scratchlab01 |
![]() |
| 寄件者 scratchlab01 |
![]() |
| 寄件者 scratchlab01 |
Jimmy's papa終於等到2012年的到來,這個傳說中充滿挑戰的一年
Jimmy's papa新年的新計畫打算將JNXT的middleware(以nxt-python開發的)換掉,改以暫名為talk2NXT的新專案代替,讓Pharo/Smalltalk直接透過FFI存取C Library,將可提供更多細部指令且更有效率的驅動LEGO Mind Storms NXT機器人
哇咧!想不到原本只是想改寫Scratch添上遙控NXT的陽春功能給我兒子玩玩的,想不到越搞越專業囉!!!
https://csrg.inf.utfsm.cl/twiki/pub/ACS/LesTat/lestat-0.2.tar.gz需求
* 以藍牙控制,則需確定bluez-libs-3.20 已安裝
* 以USB連接線控制,則需確定libusb-0.1.12 已安裝
* 確定編譯工具 scons 已安裝
* 解壓縮 lestat-0.2.tar.gz
* 在解開的程式碼目錄底下執行編譯 run scons
* 若編譯無誤則執行測試範例./main_test
int main()
{
BlueComm nxt;//以藍牙通訊
try{
nxt.connect("xx:xx:xx:xx:xx:xx");//用hcitool scan可查出NXT編號
}catch(NxtEx &ex){
cout<<ex.toString()<<endl;
return -1;
}
try{
Opcodes op(&nxt);
op.playTone(523,500);//音頻
op.playTone(587,500);//音頻
op.playTone(523,500);//音頻
printf("Battery level: %hu [mv]\n",op.getBatteryLevel());//顯示目前電池電力
unsigned char status=1;
op.setOutputState(0x00,80,0x01,0x00,50,0x20,980,true,&status);//驅動A馬達
sleep(1);
op.setOutputState(0x01,80,0x01,0x00,50,0x20,980,true,&status);//驅動B馬達
sleep(1);
nxt.disconnect();
}catch(NxtEx &ex){
cout<<ex.toString()<<endl;
nxt.disconnect();
return -1;
}
return 0;
}
Physical Etoys這套軟體,讓小朋友可藉由Etoys簡易的開發環境,以物件導向的方式拖拉腳本程式碼區塊,就能玩多種教育性機器人與硬體
目前支援的硬體有
Arduino
Nintendo Wiimote
Parallel port
RoboSapien v2
Roboquad
I-Sobot
Lego Mindstorms Nxt
下載軟體
Physical Etoys 1.8.1 for Windows
Physical Etoys 1.7 for Linux
進入主畫面,會出現Physical Etoys目前支援哪些機器人,Jimmy's papa當然選小兒Jimmy平常在玩的NXT機器人
![]() |
| 寄件者 scratchlab01 |
![]() |
| 寄件者 scratchlab01 |
![]() |
| 寄件者 scratchlab01 |
![]() |
| 寄件者 scratchlab01 |
![]() |
| 寄件者 scratchlab01 |
以下是jimmy's papa整理的相關資料連結,如果能深入研究的話
對機器人操作平台基礎架構會有一定的概念,Jimmy's papa已經安裝好SL4A(Scripting Layer for Android)在平板上,改天再找時間研究看看如何安裝ROS
ROS的介紹
http://www.ros.org/wiki/ROS/Introduction
VMI Android Mobile Main Package
http://www.ros.org/wiki/android
rosjava
http://code.google.com/p/rosjava/
http://www.ros.org/wiki/rosjava
Get ROS running on Android
https://vmi.lmt.ei.tum.de/svn/vmi-ros-pkg/trunk/vmi_android/android/README
Android running ROScore
https://vmi.lmt.ei.tum.de/projects/ros/wiki/Androidinstall
Using Lego NXT with ROS
http://www.ros.org/wiki/Robots/NXT
http://www.ros.org/wiki/nxt/Installation
![]() |
| 寄件者 scratchlab |