用JAVA给乐高NXT机器人编程



用JAVA给乐高NXT机器人编程

用JAVA给乐高NXT机器人编程

2012-03-03 20:33:39
分享:

 

 

Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaSE, JavaEE, JavaME)的总称。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。JAVA普遍应用在我们生活中的每一个角落,从电子仪器到火星探测车都看得到它。

假如您藉由LEJOS与乐高NXT来进入JAVA的世界,那么在实际制作各种机器人的同时,您也已经学会了如何将JAVA应用于电脑程序应用,以及Andriod手机开发了。我也想通过这种方式,来拓展创客制作的视野。

先看我为这篇文章录制的实验视频:

 

如果要用LEJOS NXJ来编程NXT机器人,第一步就是下载和正确安装编程环境,然而讲解这个“第一步”也需要相当的文字量来说明,幸好,有“LeJOS NXJ入门教程”来辅助我的说明,所以这篇文章将采用链接网址,并解释网址内容的方式来说明NXJ如何下载和安装。

LeJOS NXJ入门教程的英文网址:http://lejos.sourceforge.net/nxt/nxj/tutorial/

LeJOS NXJ入门教程的中文网址:http://www.diy-robots.com/resources/LejosNxtTutorial_cn/index.aspx

LeJos NXJ的入门教程中文版是有“动力老男孩”网友组织编译的,动力老男孩博客网址:http://www.diy-robots.com/,看来我的博客并不孤独,还有些同道,在实践自己的创客理想,并且愿意在网络上分享自己的高水准成果。

LeJos NXJ的入门教程中文版由于是2009年编译的,所以有少部分内容已经过时,英文官网当然是最新的,可以结合起来看。

我们在网络上查阅英文资料时,可能遇到英文看不懂的情况,我建议安装“谷歌浏览器”,它可以把网页上的英文自动翻译成中文,当然翻译质量还需进一步提高,但不能不说谷歌浏览器是我们看英文网页的好帮手!但是用谷歌浏览器看翻译后的中文网页,要特别注意两点:1、程序语言的命令是英文格式的,谷歌浏览器也把这些英文命令翻译成中文,初学者会搞混淆,所以您这时应该点击下图“显示原始网页”按钮即可。2、翻译成中文的网页,您要把其中的网址转帖到文档中,然后在文档中再点击该网址,就打开不了网页,这时还是要恢复成英文原始网页,再转帖复制网址,才是正确的网址。

当然还可以用谷歌翻译网页进行翻译,网址:http://translate.google.cn/

 

安装LEJOS NXJ首先要安装三个软件组件,1、USB 驱动程序; 2、蓝牙模块;3、Java开发套件(JDK)。查看网址:http://www.diy-robots.com/resources/LejosNxtTutorial_cn/preliminaries/gettingstartedwindows.php

1、USB驱动程序

微软Windows上运行的LeJOS NXJ,将需要一个适合您的PC上的乐高NXT控制器的USB驱动程序。如果您已经安装标准LEGO MINDSTORMS NXT-G的软件,这个一个驱动程序已安装。如果您的电脑没有安装NXT-G软件,可以在网址:http://mindstorms.lego.com/en-us/support/files/Driver.aspx,下载驱动。

2、蓝牙模块

如果你想通过蓝牙与NXT的沟通,您将需要蓝牙适配器或PC内置的蓝牙支持,LeJOS NXJ可以通过window操作系统自带的Widcomm模块,与NXT控制器蓝牙连接。我曾经写过的Widcomm与NXT蓝牙连接的文章:http://www.eefocus.com/zhang700309/blog/11-11/234292_3ca14.html。建立了蓝牙连接,可以实现程序无线下载,以及用PC机来无线遥控NXT机器人。

3、Java开发套件(JDK)

您还需要在电脑上安装一个Java的开发套件,JDK和JRE。从Sun公司的网站下载最新版本的JAVA开发套件,http://www.oracle.com/technetwork/java/javase/downloads/index.html


点击上图蓝色框标注的图标按钮,找到
jdk-7u3-windows-i586.exe

下载,安装即可。

 

 

安装了三个软件组件,1、USB 驱动程序; 2、蓝牙模块;3、Java开发套件(JDK)。现在开始安装LEJOS NXJ。点击:http://lejos.sourceforge.net/nxj-downloads.php

 

点击上图蓝色框标注的网址,下载最新版NXJ软件。然后安装吧!

 


当你完成安装之后,NXJ固件烧录工具会提示你上传NXJ自带的NXT固件到一台或多台的NXT上面去,可以看下图所示。这时您要把NXT控制器用USB线与PC机连接,并把控制器开机。下载固件到NXT控制器里。

LEJOS NXJ的固件与NXT原厂的固件不同,下载固件后,您看看自己的NXT控制器屏幕上的菜单系统更换成了新的样式,如下图:

NXJ菜单系统如何使用请看网址:  http://lejos.sourceforge.net/nxt/nxj/tutorial/MenuSystem/MenuSystem.htm

注意我在讲解时,您要同时打开LeJOS NXJ入门教程的英文网址:http://lejos.sourceforge.net/nxt/nxj/tutorial/,配合一起看。

 

以前的NXJ安装资料都说,安装完后,需要手工设置电脑环境,现在就按上述方法安装,不需要“手工设置电脑环境”这一步了!

点击windows操作系统的开始→程序→LEJOS NXJ,会发现NXJ的菜单命令。如下图:

您点击NXJ Contorl命令,会出现NXJ Control Center窗口界面,把NXT控制器与PC机联机,再把NXT电机与控制器马达A端口连线,然后在NXJ Control Center窗口界面,点击Search和Connect,再按下Control选项中的“Forward”按钮,您的NXT电机会转。如果电机旋转了,说明NXJ软件的安装是正确的。

 

安装了NXJ,如何程序编写、编译、调试、下载和运行呢?LEJOS NXJ官方并没有自己的windows编程环境,传统的方法是用文本编辑软件编写程序,并存储为JAVA后缀文件,这种文本编辑软件可以是记事本或者是Notepad++。然后用DOS命令来完成JAVA程序的编译、调试、下载和运行工作。可参见网址:http://www.diy-robots.com/resources/LejosNxtTutorial_cn/preliminaries/compileandrun.php。这种传统的方法现在看来太落后了。

如今可以用IBM公司出品的Eclipse软件进行windows环境下的可视化操作了,Eclipse软件可以把对NXT控制器的JAVA程序编程、编译、调试和下载、运行在一个可视化编程环境下一体化完成。所以下面又要讲解Eclipse软件如何下载安装和如何在Eclipse里加入LEJOS NXJ组件。

在网址下载Eclipse软件,http://www.eclipse.org/downloads/,选择下图蓝色框标注的版本,Eclipse IDE for Java Developers

 

Eclipse软件如何下载安装,请用谷歌浏览器看网址:http://lejos.sourceforge.net/nxt/nxj/tutorial/Preliminaries/UsingEclipse.htm。您也可以把需要翻译的英文逐一贴到谷歌翻译网页进行翻译,http://translate.google.cn/

在 Eclipse软件中加入LEJOS NXJ组件时,在键入NXJ组件网址时,要注意把中文网页恢复成英文原始网页,再转帖复制网址才行。(双击图片,放大看,才能知道网址粘贴在哪!)

 

另外JAVA编程是以项目为文件包的,而且针对NXT的编程有两种类型的项目,一种是NXT项目,另一种是PC项目,NXT项目的程序可以下载到NXT控制器里,然后NXT控制器可以运行程序,而PC项目,程序并没有下载到NXT控制器里,程序是在PC里运行,PC机通过蓝牙或者USB线遥控NXT控制器。如果想脱离开PC机控制,直接在NXT控制器里运行程序,那就创建NXT项目的程序,如果我想用PC机的键盘来控制NXT机器人,那该用什么项目类型的程序呢?答案是PC项目的程序。

好了,通过耐心地看Eclipse软件使用网页:http://lejos.sourceforge.net/nxt/nxj/tutorial/Preliminaries/UsingEclipse.htm,已经通过Eclipse把LeJOS NXJ武装到了牙齿。现在可以用Eclipse软件,这个强大武器进行JAVA for NXT编程了!

第一个JAVA for NXT例子,当然要简单,任务是按下触动传感器,NXT电机转,松开时,电机停止。这个任务如何用JAVA for NXT编程?

NXJ程序:

 

//触动传感器控制NXT电机
import lejos.nxt.*;//载入LEJOS.NXT类库
import lejos.util.Delay;//载入Delay类
public class button_motor {
     public static void main(String[] args) {
    //按下NXT控制器的“取消”键可以结束程序运行
    Button.ESCAPE.addButtonListener(new ButtonListener()
    {
          public void buttonPressed(Button b){System.exit(1);}
           public void buttonReleased(Button b){}
    });
//把touch定义为TouchSensor类变量,并制定触动传感器连接在NXT控制器的S1端口
    TouchSensor touch = new TouchSensor(SensorPort.S1);
     Motor.A.setSpeed(450);//设定A端口电机的转速为450度/秒
//无限循环
    while(true)
    {
//如果触动传感器被按下
          if(touch.isPressed())
            {
                 Motor.A.forward();//电机正转
             }
          else//否则
            {
                 Motor.A.stop();//电机停止
             }
       }
   }
}
   以往我们在使用NXT-G或是NXC程序时,由于是使用LEGO MindStorms官方的固件,所以按下NXT控制器的灰色取消键就可以终止程序,但是LeJOS则必须定义程序的结束的条件,因此需要程序中我用红色字体标注的程序段,才能用取消键来结束程序。
     当准备好上传你的程序,在eclipse界面的项目管理器中找到将下载的JAVA文件,右键单击它,出现快捷菜单,点击菜单中的“Run As”选项,又出现了一个下级菜单,点击其中的“LeJOS NXT Program”,于是开始编译和下载程序。注意现在NXT控制器已经在运行程序了,控制器运行程序时是黑屏的,我这时按下触动传感器,NXT电机会转,松开时,电机会停止。按下NXT控制器的灰色取消键就可以终止程序,这时NXT控制器LCD屏幕上会重新出现菜单系统。

 

这个JAVA程序,我给出了详细的注释,大概可以看得懂,详细命令解释可以看“动力老男孩”的LeJOS NXJ入门教程的中文网址:http://www.diy-robots.com/resources/LejosNxtTutorial_cn/index.aspx。这个网址已经是中文的了,千万不要用谷歌浏览器的翻译功能!

      台湾已经出版了一本NXJ书籍,淘宝可以购买,需要输入这本书的繁体字书名才可以在淘宝找到。书名:機器人程式設計與實作:使用Java,有了这本书用NXJ给乐高NXT机器人编程,更没问题了,我已经购买了。
此书是台湾CAVA教育团队组织编写的,网址:http://tw.myblog.yahoo.com/lego-caveschool/,需要翻墙软件才可以看到。台湾在创客文化方面与国际接轨很快啊!
http://www.eefocus.com/zhang700309/blog/12-03/239228_00d8a.html
http://wenku.baidu.com/view/85190a0fbb68a98271fefaee.html?pn=51