找回密码
 马上注册

QQ登录

只需一步,快速开始

查看: 9164|回复: 5

LeJOS NXJ入门指南 - 简介

  [复制链接]
发表于 2009-10-15 23:04:12 | 显示全部楼层 |阅读模式
本帖最后由 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协同工作
  • 有一个简单易用的菜单系统
  • 广泛用于大学以及各种教育机构
  • 支持简单的计算机视觉应用
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
头像被屏蔽
发表于 2009-11-8 04:37:18 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2009-12-25 11:08:40 | 显示全部楼层
最近空下来了,也打算学一下,不知道没有java的基础可以学不?
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

 楼主| 发表于 2009-12-25 11:33:18 | 显示全部楼层
最近空下来了,也打算学一下,不知道没有java的基础可以学不?
糖伯虎 发表于 2009-12-25 11:08


如果有C++的基础,学习Java基本就是玩玩一样轻松。如果只有C的基础,在面向对象的思想上花点功夫就行。

没有Java基础,直接学习LeJOS也不是不行,一边玩一边就把Java学了。不过,还是推荐先系统了解一下Java,这样可以事半功倍。

总之很简单的。呵呵……
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2009-12-25 12:43:11 | 显示全部楼层
以前学过段时间c#

谢谢斑竹了
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

 楼主| 发表于 2009-12-25 13:18:49 | 显示全部楼层
以前学过段时间c#

谢谢斑竹了
糖伯虎 发表于 2009-12-25 12:43


C#是发明Java的人发明的,基本思想都差不多的。你可以平滑过渡了。呵呵……
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|中文乐高 ( 桂ICP备13001575号-7 )

GMT+8, 2024-5-1 09:03 , Processed in 0.137825 second(s), 18 queries .

Powered by Discuz! X3.5

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表