今天開始,,利用一些制作機器人的空閑時間來翻譯一下LeJOS NXJ的入門。(LeJOS NXJ是LeJOS的NXT版本)
我會同時在自己的BLOG和這里發(fā)布,,希望能給大家?guī)韼椭?。如有更新,以BLOG上的內容為最新,。
翻譯中必然有一些胡言亂語或者不知所云之處,,還請各位在BLOG上留言或者在此回帖予以更正或提出建議。
版權聲明:轉載時請以超鏈接形式標明文章原始出處和作者信息及本聲明
http://programus./logs/48493001.html
英文原文: http://lejos./nxt/nxj/tutorial/Preliminaries/Intro.htm
什么是LeJOS NXJ,?
LeJOS NXJ是運行于LEGO MINDSTORMS NXT ®之上的Java編程環(huán)境,。它讓你可以使用Java語言來編寫樂高(LEGO)機器人。
它主要由以下部分組成:
- 一個包含Java虛擬機的NXT固件系統(tǒng)(firmware),??梢蕴娲鷺藴实腘XT固
件。
- 一套對LeJOS NXJ編程接口(API)的實現(xiàn)類庫——classes.jar
- 一個連接器:可以將用戶編寫
的Java程序與classes.jar類庫連接為能夠在NXT上
運行的二進制文件,。
- 一套運行在PC上的工具,。它們可以幫助你刷新NXT固件、上傳程序,、調試以及其他各種附加功能,。
- 一
套PC API。利用這套API,,你可以使用Java流(stream)來實現(xiàn)PC和NXJ程序的通信,,其中包括通過藍牙、USB以及LEGO Communication
Protocol(LCP)進行的通信,。
- 一些例子程序,。
由于LeJOS與NXT的標準固件并不互相兼容,所以必須將新的LeJOS
NXJ固件刷入NXT才可以讓Java編程成為可能,。而這將替換掉NXT標準固件,,并刪除掉原有固件所安裝的全部文件。不過你隨時可以使用LEGO提供的
軟件還原標準固件,,
LeJOS是建立在sourceforge之上的一個開源項目,。它起源自TinyVM項目——一個在LEGO
MindstormsRCX系統(tǒng)上的Java虛擬機項目。
LeJOS的RCX版本早已在LEGO Mindstorms Robotic
InventionsSystems的人群中被證明具有很高的人氣,,各個版本的下載總數(shù)已達到大約200,000次,。TinyVM和LeJOS的RCX版
本的原作者是JoseSolorzano。
NXT的出現(xiàn),,讓LeJOS開發(fā)團隊有了大幅度擴展LeJOS的機會,。
LeJOS NXJ的優(yōu)點
比起使用NXT-G或者其他NXT編程環(huán)境,使用LeJOS
NXJ有很多優(yōu)點,。比如:
- 使用了符合業(yè)界標準的Java語言(譯注:符合標準意味著更高的兼容性和可維護性)
- 支持面向
對象編程(譯注:面向對象思想特別適合機器人的編程,,可以考慮單獨開專題介紹)
- 是一個眾人拾柴火焰高的開源項目
- 使你
可以自己選擇一個專業(yè)的集成開發(fā)環(huán)境,,例如Eclipse或者Netbeans(譯注:用過的人都說這倆工具真的很強大)
- 有針對
Eclipse和Netbeans的插件(譯注:與開發(fā)環(huán)境結合地更加完美)
- 擁有Java的跨平臺性——支持Windows、
Linux以及Mac OS X等
- 比NXT-G更快
- 全面支持藍牙,、USB,、I2C以及RS485協(xié)議(譯注:我不知
道RS485是什么)
- 提供了更加精確的馬達控制(譯注:這是真的!至少比NXC的方法易懂易用)
- 支持Java 1.6語言特性
- 擁有高級的導航支
持
- 支持定位算法,,例如Monte Carlo Localization(MCL)
- 支持其他機器人學概率算法,,例如
卡爾曼濾波(Kalman filters)
- 提供了行為(Behavior)類以及行為編程架構,使得編寫復雜機器人變得更加簡單(譯
注:詳情請看指南最后一章)
- 支持眾多第三方傳感器
- 支持通過藍牙或者USB的日志遠程輸出,,即在PC上輸出調試日志,,
并可通過System.out或者System.err來輸出。(譯注:這一特性真的很有用,!)
- 支持從PC對LeJOS
NXJ程序的遠程監(jiān)控和追蹤
- 提供了浮點數(shù)的數(shù)學,、三角及其他數(shù)學公式
- 支持JME液晶顯示器用戶接口,比如一些繪圖功
能
- 支持多線程
- 支持listener和event(事件監(jiān)聽機制)
- 支持安全內存管理和垃圾回收
- 支
持基于藍牙,、USB以及RS485的標準Java輸入輸出流
- 可通過標準java.io類來操作NXT的Flash文件系統(tǒng)
- 支
持數(shù)據(jù)日志以及日志的遠程捕捉
- 聲音支持,,可以播放8-bit的wav文件
- 提供了一大票例子程序可供參考
- 支
持從PC上遠程運行大部分API
- 擁有一個網站論壇,可以幫助你解決各種疑難雜癥,、共享大家的偉大想法甚至直接與開發(fā)團隊溝通(譯注:目
錄里提到的有意見你就提,,就可以到那里提)
- 通過TCP/IP實現(xiàn)了對遠程機器人(telerobotics)的支持(譯注:這句不確定,請高手支招)
- 支持NXT之間的藍牙和
RS485通信
- 支持與其它設備的藍牙通信,,比如GPS接收器
- 支持GPS設備,,并支持
javax.microedition.location API
- 支持使用藍牙SPP(Serial Port
Profile)的藍牙鍵盤
- 通過第三方適配器——例如Mindsensors NRLink——支持與RCX間的雙向通信
- 支
持servo motor和Power Function (PF) motor(譯注:專業(yè)名詞太多,偷懶不譯了,,其實也不會翻譯)
- 提
供與LEGO Communications
Protocal(LCP)的兼容能力,,所以很多可以與標準LEGO固件協(xié)同工作的工具也可以與LeJOS協(xié)同工作
- 有一個簡單易用的菜
單系統(tǒng)
- 廣泛用于大學以及各種教育機構
- 支持簡單的計算機視覺應用
|