本帖最后由 Programus 于 2009-10-15 23:40 编辑
今天开始,利用一些制作机器人的空闲时间来翻译一下LeJOS NXJ的入门。(LeJOS NXJ是LeJOS的NXT版本)
我会同时在自己的BLOG和这里发布,希望能给大家带来帮助。如有更新,以BLOG上的内容为最新。
翻译中必然有一些胡言乱语或者不知所云之处,还请各位在BLOG上留言或者在此回帖予以更正或提出建议。
版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://programus.blogbus.com/logs/48493001.html
英文原文: http://lejos.sourceforge.net/nxt/nxj/tutorial/Preliminaries/Intro.htm
什么是LeJOS NXJ?
LeJOS NXJ是运行于LEGO MINDSTORMS NXT ®之上的Java编程环境。它让你可以使用Java语言来编写乐高(LEGO)机器人。
它主要由以下部分组成:- 一个包含Java虚拟机的NXT固件系统(firmware)。可以替代标准的NXT固件。
- 一套对LeJOS NXJ编程接口(API)的实现类库——classes.jar
- 一个连接器:可以将用户编写的Java程序与classes.jar类库连接为能够在NXT上运行的二进制文件。
- 一套运行在PC上的工具。它们可以帮助你刷新NXT固件、上传程序、调试以及其他各种附加功能。
- 一套PC API。利用这套API,你可以使用Java流(stream)来实现PC和NXJ程序的通信,其中包括通过蓝牙、USB以及LEGO Communication Protocol(LCP)进行的通信。
- 一些例子程序。
由于LeJOS与NXT的标准固件并不互相兼容,所以必须将新的LeJOS NXJ固件刷入NXT才可以让Java编程成为可能。而这将替换掉NXT标准固件,并删除掉原有固件所安装的全部文件。不过你随时可以使用LEGO提供的软件还原标准固件,
LeJOS是建立在sourceforge之上的一个开源项目。它起源自TinyVM项目——一个在LEGO MindstormsRCX系统上的Java虚拟机项目。
LeJOS的RCX版本早已在LEGO Mindstorms Robotic InventionsSystems的人群中被证明具有很高的人气,各个版本的下载总数已达到大约200,000次。TinyVM和LeJOS的RCX版本的原作者是JoseSolorzano。
NXT的出现,让LeJOS开发团队有了大幅度扩展LeJOS的机会。
LeJOS NXJ的优点
比起使用NXT-G或者其他NXT编程环境,使用LeJOS NXJ有很多优点。比如:- 使用了符合业界标准的Java语言(译注:符合标准意味着更高的兼容性和可维护性)
- 支持面向对象编程(译注:面向对象思想特别适合机器人的编程,可以考虑单独开专题介绍)
- 是一个众人拾柴火焰高的开源项目
- 使你可以自己选择一个专业的集成开发环境,例如Eclipse或者Netbeans(译注:用过的人都说这俩工具真的很强大)
- 有针对Eclipse和Netbeans的插件(译注:与开发环境结合地更加完美)
- 拥有Java的跨平台性——支持Windows、Linux以及Mac OS X等
- 比NXT-G更快
- 全面支持蓝牙、USB、I2C以及RS485协议(译注:我不知道RS485是什么)
- 提供了更加精确的马达控制(译注:这是真的!至少比NXC的方法易懂易用)
- 支持Java 1.6语言特性
- 拥有高级的导航支持
- 支持定位算法,例如Monte Carlo Localization(MCL)
- 支持其他机器人学概率算法,例如卡尔曼滤波(Kalman filters)
- 提供了行为(Behavior)类以及行为编程架构,使得编写复杂机器人变得更加简单(译注:详情请看指南最后一章)
- 支持众多第三方传感器
- 支持通过蓝牙或者USB的日志远程输出,即在PC上输出调试日志,并可通过System.out或者System.err来输出。(译注:这一特性真的很有用!)
- 支持从PC对LeJOS NXJ程序的远程监*控和追踪
- 提供了浮点数的数学、三角及其他数学公式
- 支持JME液晶显示器用户接口,比如一些绘图功能
- 支持多线程
- 支持listener和event(事件监听机制)
- 支持安全内存管理和垃圾回收
- 支持基于蓝牙、USB以及RS485的标准Java输入输出流
- 可通过标准java.io类来操作NXT的Flash文件系统
- 支持数据日志以及日志的远程捕捉
- 声音支持,可以播放8-bit的wav文件
- 提供了一大票例子程序可供参考
- 支持从PC上远程运行大部分API
- 拥有一个网站论坛,可以帮助你解决各种疑难杂症、共享大家的伟大想法甚至直接与开发团队沟通(译注:目录里提到的有意见你就提,就可以到那里提)
- 通过TCP/IP实现了对远程机器人(telerobotics)的支持(译注:这句不确定,请高手支招)
- 支持NXT之间的蓝牙和RS485通信
- 支持与其它设备的蓝牙通信,比如GPS接收器
- 支持GPS设备,并支持javax.microedition.location API
- 支持使用蓝牙SPP(Serial Port Profile)的蓝牙键盘
- 通过第三方适配器——例如Mindsensors NRLink——支持与RCX间的双向通信
- 支持servo motor和Power Function (PF) motor(译注:专业名词太多,偷懒不译了,其实也不会翻译)
- 提供与LEGO Communications Protocal(LCP)的兼容能力,所以很多可以与标准LEGO固件协同工作的工具也可以与LeJOS协同工作
- 有一个简单易用的菜单系统
- 广泛用于大学以及各种教育机构
- 支持简单的计算机视觉应用
|