1 簡(jiǎn)介
Lego Mindstorms(樂(lè)高機(jī)器人)是集合了可編程主機(jī)、電動(dòng)馬達(dá)、傳感器、Lego Technic部分(齒輪、輪軸、橫梁、插銷(xiāo))的統(tǒng)稱(chēng)。Mindstorms起源于益智玩具中可編程傳感器模具(programmable sensor blocks)。第一個(gè)Lego Mindstorms的零售版本在1998年上市,當(dāng)時(shí)叫做Robotics Invention System (RIS)。最近的版本是2013年上市的Lego Mindstorms EV3。
許多語(yǔ)言都能對(duì)Mindstorms進(jìn)行編程,Computer Clubhouses是專(zhuān)注于Mindstorms編程的網(wǎng)站。LEGO MINDSTORMS Robotics Invention System(以下稱(chēng)為樂(lè)高機(jī)器人套件),是針對(duì)12歲以上的小孩或大人,對(duì)機(jī)器人有興趣(或者啟發(fā)自動(dòng)控制教育)的教育玩具。這項(xiàng)產(chǎn)品計(jì)劃始于1986,由丹麥樂(lè)高公司和美國(guó)麻省理工學(xué)院的媒體實(shí)驗(yàn)室(Media Lab)進(jìn)行的一項(xiàng)「可程式積木(Programmable Brick)」的合作案。
2 資料
樂(lè)高機(jī)器人套件的核心是一個(gè)稱(chēng)為RCX或NXT或EV3的可程序化積木。RCX具有六個(gè)輸出輸入口:三個(gè)用來(lái)連接感應(yīng)器等輸入設(shè)備,另外三個(gè)用于連結(jié)馬達(dá)等輸出設(shè)備,NXT比RCX多一個(gè)輸入 端口。樂(lè)高機(jī)器人套件最吸引人之處,就像傳統(tǒng)的樂(lè)高積木一樣,玩家可以自由發(fā)揮創(chuàng)意,拼湊各種模型,而且可以讓它真的動(dòng)起來(lái)。
RCX分為1.0(1998年的第一代)、1.5(1999年的小改版)和2.0(從2001年至今的最后改版)等三個(gè)版本。1.0和1.5的差別在于1.0版可以外接電源供應(yīng)器,連接市電(通過(guò)變壓器實(shí)現(xiàn))供電,而1.5版之后只能用電池供電。2.0的差別則是連接電腦的紅外線設(shè)備改用USB,以往則是采用串行端口,最重大的區(qū)別則是2.0版的固件(firmware)和程序開(kāi)發(fā)工具提供了一些新的功能。RCX的固件最主要的用途是把bytecode程序轉(zhuǎn)換成處理器所能理解的機(jī)器碼。還好RCX的固件就像電腦的 BIOS一樣,都是可以更換的,所以不同版本之間的差異其實(shí)不大。RCX的固件存放在SRAM(靜態(tài)可存取記憶體)中,所以實(shí)際上,RCX斷電幾秒鐘之后,固件就消失了。電腦會(huì)在傳送程序時(shí),一并傳送固件給RCX。
如果用傳統(tǒng)的方式學(xué)習(xí)制作機(jī)器人,我們得先學(xué)習(xí)電腦基本概論,接著要了解電子電路、數(shù)位邏輯和微處理器,才能制作出基本的微電腦控制電路。然后還要學(xué)習(xí)匯編語(yǔ)言(Assembly)或C語(yǔ)言,撰寫(xiě)微處理器的程序…對(duì)了,也許最麻煩的是機(jī)械結(jié)構(gòu),我們得決定要用步進(jìn)馬達(dá)還是一般的直流馬達(dá),不同的驅(qū)動(dòng)形式,信號(hào)的驅(qū)動(dòng)和回饋處理方式也不一樣;而且即便是采用最單純的輪胎或履帶作為行走方式,也可能要搭配各種齒輪來(lái)調(diào)配扭力和速度。想到要學(xué)習(xí)、DIY這么多東西,很多對(duì)自制機(jī)器人懷抱憧憬的業(yè)余玩家,滿(mǎn)腔熱血到此就涼了大半截。
樂(lè)高機(jī)器人組合里面,包含RCX、兩個(gè)馬達(dá)、兩個(gè)觸控感測(cè)器和一個(gè)紅外線感測(cè)器,各種大小的輪胎和履帶,以及數(shù)種規(guī)格的齒輪和滑輪,當(dāng)然還有各種積木,幫我們解決了電子電路和機(jī)械結(jié)構(gòu)的問(wèn)題。剩下的「撰寫(xiě)程序」部分,樂(lè)高公司(或者說(shuō)MIT研究人員)也替它開(kāi)發(fā)了一套視覺(jué)化程序編輯工具,叫做RCX Code。就像堆積木一樣,RCX Code的使用者只要把各種代表不同程序邏輯的「積木」在屏幕上堆起來(lái),就能完成RCX的程序。程序撰寫(xiě)完畢后,通過(guò)過(guò)套件提供的紅外線裝置,即可把程序傳入RCX。真的很酷!
不過(guò)每個(gè)人對(duì)「酷」的定義不同。樂(lè)高提供的視覺(jué)化程序工具很適合新手或者對(duì)程序不熟悉的玩家,有些人覺(jué)得用這種接口還寫(xiě)程序反而礙手礙腳。例如,使用RCX Code所「寫(xiě)」出來(lái)的復(fù)雜程序,執(zhí)行效率也許不佳,而且「視覺(jué)化」程序碼也可能不易讀,也不容易維護(hù)。因此,許多樂(lè)高機(jī)器人的愛(ài)好者兼程序設(shè)計(jì)高手,陸續(xù)替它開(kāi)發(fā)出各種「正規(guī)」程序語(yǔ)言。
在這些玩家中,最著名(也許貢獻(xiàn)也最大)的是Kekoa Proudfoot教授,他仔細(xì)地分析了RCX的內(nèi)部結(jié)構(gòu)和I/O協(xié)定,并且在他的RCX Internals網(wǎng)站上發(fā)表了許多文件。另一個(gè)知名的玩家是David Baum,他開(kāi)發(fā)了一種類(lèi)似C語(yǔ)言的程序,稱(chēng)為NQC(Not Quite C),讓程序玩家擺脫視覺(jué)開(kāi)發(fā)工具的束縛。雖然NQC并不是RCX上的第一個(gè)「非官方」程序語(yǔ)言,但大概是最被廣泛采用的一種。NQC本身采用文字接口操作,若想要使用圖形接口式的整合開(kāi)發(fā)環(huán)境(IDE),可以安裝BricxCC(Windows版)或MacNQC(Mac版),甚至NQC for WinCE(適用于PocketPCPDA)。
此外,樂(lè)高的RCX Code視覺(jué)工具程序只有Windows版本,在Mac和Linux系統(tǒng)上只能使用非官方的程序工具。并不是所有玩家僅僅喜愛(ài)或熟悉C語(yǔ)言,Jose Solorzano就開(kāi)發(fā)了一個(gè)稱(chēng)為「Lego Java作業(yè)系統(tǒng)」,簡(jiǎn)稱(chēng)leJOS的Java虛擬機(jī)(JavaVirtual Machine,簡(jiǎn)稱(chēng)JVM,是執(zhí)行Java程序所需的軟體環(huán)境),可以讓RCX執(zhí)行Java程序。Ralph Hempel開(kāi)發(fā)的pbForth(programmablebrick Forth,可程序積木Forth語(yǔ)言的簡(jiǎn)稱(chēng)),也深受某些玩家的喜愛(ài)。Forth語(yǔ)言的第一個(gè)實(shí)作專(zhuān)案是用來(lái)控制天文臺(tái)的大型望遠(yuǎn)鏡(請(qǐng)參閱這個(gè)網(wǎng)頁(yè)的介紹),它的語(yǔ)法和其他常見(jiàn)的電腦語(yǔ)言最大的不同,在于它采用所謂的「反相波蘭式記法(reverse Polishnotation,簡(jiǎn)稱(chēng)RPN)」,例如,運(yùn)算式3 * ( 4 + 7)要寫(xiě)成:3 4 7 + * 另外還有一個(gè)由Markus Noga所開(kāi)發(fā),讓程序設(shè)計(jì)師采用C或C++語(yǔ)言控制RCX的固件,稱(chēng)為legOS。legOS可以讓程序設(shè)計(jì)師徹底發(fā)揮RCX硬體的效能,但是不像NQC,使用者必須熟悉C語(yǔ)言,而且它的開(kāi)發(fā)工具安裝不易,所以使用者也比較少。
除了LEGO MINDSTORMS套件之外,樂(lè)高公司還針對(duì)教育機(jī)構(gòu)發(fā)售一種稱(chēng)為ROBOLAB(姑且翻譯成「機(jī)器人實(shí)驗(yàn)室」)的套件,里面包含更多感應(yīng)器(例如,壓力、音量、溫度檢測(cè)),以及連結(jié)視訊攝影鏡頭(并不限于樂(lè)高自己的Vision Command產(chǎn)品)并提供視覺(jué)辯識(shí)功能,更特別的是,它的軟體還具備資料分析、比較和圖表繪制功能,對(duì)于教學(xué)實(shí)驗(yàn)尤其重要。ROBOLOAB軟體也能透過(guò)網(wǎng)際網(wǎng)路連結(jié)到ROBOLAB Server(包含在本產(chǎn)品的軟體里),把收集到的數(shù)據(jù)呈現(xiàn)在網(wǎng)頁(yè)。ROBOLAB內(nèi)建的軟體有Windows和Mac版。
樂(lè)高機(jī)器人套件最大的缺點(diǎn)在于價(jià)格。在臺(tái)灣的一般零售店和百貨公司,它的定價(jià)超過(guò)臺(tái)幣一萬(wàn)元(美金定價(jià)199元),大陸售價(jià)約為2000元人民幣。而且某些配件的價(jià)格也貴得有點(diǎn)離譜,如一根50cm的連接線售價(jià)高達(dá)數(shù)十元。
樂(lè)高公司推出了新一代的樂(lè)高機(jī)器人,叫做LEGO MINDSTORMS NXT,這款新樂(lè)高機(jī)器人采用了32位微處理器、內(nèi)建USB和藍(lán)牙(這一設(shè)計(jì)極大地提高了程序傳輸?shù)乃俣群头€(wěn)定性),可以讓使用者做出透過(guò)藍(lán)牙裝置(例如PDA或手機(jī))控制的機(jī)器人。NXT內(nèi)附的程序編輯工具支持PC和Mac,為了吸引更多玩家參與擴(kuò)充與改造NXT,樂(lè)高公司特別發(fā)表了開(kāi)放原始碼的固件和開(kāi)發(fā)工具,就連微軟老大哥都忍不住加入機(jī)器人開(kāi)發(fā)軟體的行列,推出MicrosoftRobotics Studio軟體。除了主機(jī)功能大幅增強(qiáng),NXT的馬達(dá)也改采伺服控制,能讓程序精確地調(diào)整速度,而且這次附了三個(gè)馬達(dá);感測(cè)器也變得多樣、功能更強(qiáng):超音波感應(yīng)器(大多用于感應(yīng)障礙物),能夠辯識(shí)顏色和亮度的光線感應(yīng)器…等等,不知道樂(lè)高的玩家們會(huì)用NXT帶來(lái)什么樣的驚喜。
3 樂(lè)高機(jī)器人編程
Lego Mindstorms(樂(lè)高機(jī)器人)是**了可編程Lego磚塊、電動(dòng)馬達(dá)、傳感器、Lego Technic部分(齒輪、輪軸、橫梁)的統(tǒng)稱(chēng)。 許多語(yǔ)言都能對(duì)Mindstorms進(jìn)行編程,包括Logo、Basic、Java的衍生版、Smalltalk和C語(yǔ)言。
內(nèi)容來(lái)自百科網(wǎng)