2009年12月 文档列表

感谢cnBeta观光团!

在cnBeta潜水好多年,今天终于也投了个稿子,很幸运的被管理员置顶了。

要说CB的影响力就是大,随后而来的观光团兄弟姐妹们几乎把小站踩塌了,还好这里不会有踩踏事故,顶多来个503 Error。刚才看了下统计,今天的访问人数接近一万,比之前一个月的总人数还多好几倍,把我臭美的直流哈喇子。。。

期间听从了某位网友的建议,以迅雷不及掩耳盗铃之势加了一小块google广告,截止到现在赚了巨额广告费——$0.07。

兄弟我终于也有美元了,激动啊,晚上去吃了顿火锅庆祝了一下,嘿嘿。

存个截图留作纪念:

留个纪念 :)

留个纪念 :)

解魔方的机器人攻略15 – 安装 Eclipse

在远古时代,程序员们通常用写字板来编写Java程序,然后用Javac.exe和Java.exe来编译和执行。对于NXT来说,对应的命令是Nxjc和Nxj。写字板的好处是速度飞快,不用安装。据说直到现在还有一些固执的代码狂人会用写字板开发软件,顺便用CPU来爆玉米花。但是对于大多数开发人员来说,选一个好用的IDE(Integrated Development Environment)是非常重要的。

IDE就是传说中的开发环境,比如我们常用的VS2008,Eclipse等等。它可以帮助你记忆类名和函数名,减少代码的输入量,避免拼写错误,高亮显示不同的代码段,还可以中断和调试。
这里大力推荐的NXT开发环境是IBM的Eclipse:

Eclipse开发环境

Eclipse开发环境

安装Eclipse:
1,从www.eclipse.org下载最新版的Eclipse,我用的是3.4版本,可能有点老了
2,Eclipse是不需要安装的,直接把所有文件解压到一个目录。注意这个目录最好不要包含空格,而且安装之后最好不要随意移动
3,双击eclipse.exe就可以运行了,最好在桌面上创建一个快捷方式,比较方便
4,第一次运行Eclipse的时候,会有一些教程信息,有兴趣的可以看看

为Lejos配置Eclipse:
1,创建一个新的工程。选择File > New > Project打开下图所示的新工程选项窗口:

新建工程

新建工程

选择Java Project并单击Next

2,输入你的工程名称,注意这里只能是英文。Eclipse会用这个名字创建一个新的目录:

输入工程名字

输入工程名字

3,设置ClassPath
单击菜单中的 Project > Properties。在左侧选择“Java Build Path”,然后在右侧选择“Libraries”
这时候点击“Add External JARs…”,打开之前安装Lejos的目录,选中classes.jar文件。设置完成的结果如下图:

设置Class Path

设置Class Path

4,接下来我们在Eclipse里面加上几个按钮,帮助我们编译和下载代码
选择菜单中的“Run > External Tools > External Tools Configuations”
先点一下“Program”,然后单击左上角的“New Launch Configuration”创建新的外部工具

添加外部工具

添加外部工具

工具1:编译工具(NXJ compile tool)
location -> D:\lejos_nxj\bin\nxjc.bat (请换成自己的目录)
Working Directory -> ${project_loc}
Arguments-> ${java_type_name}.java

工具2:下载工具(Download To NXJ)
location -> D:\lejos_nxj\bin\nxj.bat
Working Directory -> ${project_loc}
Arguments-> ${java_type_name}

工具3:查看工具(NXT Explorer)
location -> D:\lejos_nxj\bin\nxjbrowse.bat
Working Directory -> D:\lejos_nxj\bin
Arguments-> 空的

5,现在把这三个工具添加到工具栏
点击工具栏中向下的箭头,选择“Organize Favorites”。在打开的窗口中,把刚才添加的三个工具全部加进来。

 

 

 

 

 

添加快捷操作按钮

添加快捷操作按钮

 

6. 验证Eclipse环境搭建是否成功:
在新建的工程中添加一个MyFirstNxtProject.java文件,然后输入以下代码:

import lejos.nxt.*;
public class MyFirstNxtProject {
    public static void main (String[] arg)
        throws InterruptedException
    {
        do
        {
            String s = "test string";
            LCD.clear();
            LCD.drawInt( (int)(Runtime.getRuntime().freeMemory()),0,0);
            LCD.refresh();
            Thread.sleep(10);
        } while (true);
    }
}

完成后单击工具中的NXJ Compile进行编译,正常情况下不会出现任何错误,表示编译成功。
这时候打开NXT的电源,用USB线连接到电脑,听到“嘟”的一声,表示USB设备已经就绪。
这时候单击工具中的NXJ Download,把编译好的代码下载到NXT内部。
现在在NXT上操作,用按钮选中MyFirstNxtProject并执行,该程序会显示目前NXT可用的内存数。

解魔方的机器人攻略14 – 安装Lejos(下)

第四步:安装Lejos

登陆 Lejos 主页点击 NXT 图片进入 Lejos 下载页面,点击 NXJ 的下载链接;

下载完成后将下载的压缩包解压到指定文件夹。这里注意你所指定的文件夹路径中不要包含空格;比如 C:\Program Files\legos 这个路径就不正确,因为文件夹“Program Files”中包含了一个空格。在使用 Java 开发的过程中空格总会引起这样或那样的问题,所以为了避免不必要的麻烦保存路径中一定不要包含任何空格。

接下来添加运行 Lejos 所需要的系统环境变量,变量添加的方法与添加 JDK 环境变量的方法相同,请参照第一步中的方法打开环境变量窗口进行设置。

添加环境变量: NXJ_HOME,变量值是 Lejos 的安装目录,即解压后 lejos_nxj 的全路径,完成后点击确定;

向环境变量 Path 的变量值后追加 ;%NXJ_HOME%\bin;

重新打开一个命令提示符窗口(原有的命令提示符窗口在设置环境变量以后必须重新打开才能生效)。输入nxj然后回车,用来验证Lejos是否已经安装成功。

验证Lejos安装是否成功

验证Lejos安装是否成功

第五步:安装Libusb

Lejos 需要使用 Libusb 与 NXT 进行通讯。它的安装文件在 Lejos 的安装目录下 lejos_nxj\3rdparty\lib。

运行 Libusb 的安装程序 libusb-win32-filter-bin-0.1.12.1.exe ,点击 Install 开始安装。

这个程序安装以后会自动执行测试程序。

注意!!这个驱动程序在Vista或者Windows7下很可能导致电脑的USB端口全部失效,这种情况下只能卸载。

且慢,现在的鼠标和键盘可能都是USB的,怎么卸载呢?我上次遇到这个问题的时候,被折磨了一个上午,不断的萌生着重装系统或者是砸烂电脑的念头,最后解决方法很简单,借一个古老的PS2鼠标卸载搞定。

正确的装法是在xp兼容模式下安装:在exe文件上鼠标右键单击,选择属性,然后参考下图。我的电脑是英文版的系统,大家凑合对照一下:

在XP兼容模式下安装USB连接驱动

在XP兼容模式下安装USB连接驱动

第六步:刷新NXT的Firmware注意:当你安装 Lejos 后 NXT 原来的标准系统将被覆盖,NXT 中所有的数据也将全部删除,所以开始安装前一定要备份好有用的数据。再注意:据也许可靠的小道消息说,NXT刷新Firmware的次数是有限的。有一个叫做LOCK BIT的数据位,每刷新一次Firmware这个值就会减一。最多刷新100次以后,这个位就会降到0,所以请不要没事刷着玩 ^_^如果想重新安装 NXT 默认的操作系统你可以使用 LEGO Mindstorms software 重新安装 LEGO 的标准系统(具体步骤请参照 Lego 玩具说明书)。 首先把NXT切换到固件上载模式(firmware upload mode),只有在这个模式下才能升级Firmware。切换方式是在开机状态下,用牙签或者曲别针持续按下 NXT 主机背面的重启按钮4秒钟以上。进入NXT的固件上载模式。

进入固件上载模式后,NXT的屏幕上什么也不显示,但是会连续发出微弱的滴答声;

这时候用 USB 线连接 NXT 和计算机,当计算机识别 NXT 的固件上载模式后(看USB图标提示),在“命令提示符”中输入 nxjflash 并回车;

跟刷手机完全不一样,NXT的升级固件非常神速,大概只需要几秒钟;

上载完成后 Lejos NXJ 会自动启动,出现欢迎界面与开始菜单;

在 Lejos 运行的过程中,包括正在运行程序时,同时按下桔色和灰色的按钮(Enter+Space)就可以立即将 NXT 关闭。如果要重新启动只要按下桔黄色的按钮。如果 NXT 突然死机的话,将电池全部取出后重新安上启动即可。

到此我们就完成了Lejos的安装!下面试着运行我们的第一个程序测试一下。

按下桔黄色按钮启动NXT电源,打开命令提示符窗口,切换目录到Lejos自带的样例目录并输入以下代码(请自行修改安装目录):

CD D:\lejos_nxj\samples\Tune (设置程序路径)

d: (切换到指定盘符)

nxjc Tune.java(在电脑上编译程序)

nxj –r Tune(把编译好的程序写入NXT)

几秒钟后NXT会发出一声悦耳的声音,表示程序已经上载成功,你可以在NXT上选择执行这个程序。

如果操作成功的话,你会听到一组声音,并看到“Hello World”的字样。

经历了这么多繁琐的步骤,你的第一个程序终于顺利在 NXT 上运行成功啦

解魔方的机器人攻略13 – 安装Lejos(上)

Firmware(固件)相当于是机器人的操作系统,乐高NXT出厂时已经内置了一套Firmware,并且配备了非常强大的LabVIEW开发平台。基于这种LabVIEW平台,即使是完全不懂编程的小盆友们,也可以成功的做出一些复杂的功能。

LabView软件

LabView软件

 对于萝卜头来说,因为解魔方需要用到一些算法和复杂的功能,很难仅用LabView实现。后来据西觅亚的朋友说,LabView也有开发接口,有兴趣的童鞋可以自己研究一下,我买回来直接就升级Firmware了,懒得再刷回去了。 :)

目前乐高的开发平台很多,本文提到的Lejos 是一个基于 Java 的小型操作系统,习惯windows开发的朋友也可以使用一款微软开发的Microsoft Robotics Studio。安装Lejos以后,我们就可以用常见的Java开发工具来编写机器人的控制程序了。以下是安装Lejos0.6 的步骤(现在已经有0.7的版本,安装方式差不多)

第一步:安装 Java 开发工具包 JDK(Java Development Kit)
首先登陆到 Sun 公司的官方网站下载 Java 开发工具包,这里要求你下载并安装 JDK1.5 或更高的版本,因为Lejos NXJ  0.6 需要在 JDK1.5 或更高版本上方可运行。而且在后续的攻略中,还会介绍如何借助 Eclipse3 平台开发 NXT 的 java 程序,运行 Eclipse 也需要 JDK1.5 或更高的版本的支持。
进入 JDK 下载页面,点击 Download;
选择 Windows 操作系统和默认的多国语言(Multi-Language),然后点击 Continue(下一步);
点击 jdk1.5 下载链接,将安装文件保存至本地;
下载完成后,运行刚刚下载的安装程序,开始安装 JDK;
安装过程中会提示安装 JDK 和 JRE ,我们默认安装全部功能,点击 下一步 继续运行安装程序;
安装成功后会提示安装完成,点击 完成 按钮结束 JDK 的安装。

第二步:设置环境变量
环境变量可以理解为缩写和快捷方式。例如我们把JDK安装在C:\Program Files\Java\jdk1.6.0_07,运行java代码的时候,每次都要输入这一长串路径。为了避免这种麻烦,我们可以定义一个环境变量 %Java_Home%等于这个路径,这样写命令时,只要写这个缩写就可以了。
首先在“我的电脑”上点击右键,选择属性;
在“系统属性”窗口中选择高级选项卡,点击下面的“环境变量”按钮,弹出环境变量窗口;
在环境变量窗口中点击“新建”按钮添加环境变量;
设置变量名为: JAVA_HOME,变量值为 JDK 的安装目录(默认安装是C:\Program Files\Java\jdk1.5.0_15);
填写完成后点击 确定 按钮,关闭对话框;
再选中环境变量 Path,然后点击“编辑”按钮,弹出“编辑系统变量”对话框;
在变量值后追加 JDK 的bin子目录 ;%JAVA_HOME%\bin (多个环境变量值要用 ; 号隔开)
编辑完成后点击确定,关闭对话框。
 
我们来验证一下刚刚设置的环境变量是否生效。
打开: 开始=>程序=>附件=>命令提示符 (或者用快捷键Windows+R,输入cmd然后回车)
在命令提示符里输入Javac并回车,如果能看到下图所示的信息,就表示JDK和环境变量都设置成功了。

验证JDK是否安装成功

验证JDK是否安装成功

第三步:安装乐高USB驱动程序
如果你的计算机上已经安装了 LEGO 随机附带的 LEGO MINDSTORMS NXT 软件,那么你可以直接进入下一步。因为 LEGO MINDSTORMS NXT 软件的安装过程中已经包含了下面所要安装的 USB 驱动程序。
登陆乐高官方网站下载最新的驱动程序;
下载完成后将压缩包解压,执行里面的 setup.exe 安装 USB 驱动程序;
驱动安装完成后会提示你重新启动计算机,点击 Restart 重新启动计算机;
 
下面验证驱动安装是否正确,计算机重新启动后用 USB 线将 NXT 与电脑连接,确认连接后启动 NXT。右键单击“我的电脑”选择“属性”。选择“硬件”选项卡,点击“设备管理器”,如果在硬件列表中查看到 Lego Devices => Lego Mindstorms NXT ,这说明 LEGO USB 驱动已经成功的安装在你的计算机上。

解魔方的机器人攻略12 – 安装传感器

这一节要介绍搭建结构的最后一个部分–安装各种传感器。之后我会继续发布软件部分的攻略。
正好今天有位小朋友留言问道,能不能分享源代码。我在这里统一回答一下:在这系列的攻略里,会讲到制作萝卜头所有需要的知识点和注意事项,也会逐步贴出所有源代码。但是在攻略写完之前暂时不会提供下载,因为我希望大家最终自己动手实现,这也正是DIY机器人的乐趣所在!在我制作的过程中,遇到了许多困难,你们已经不需要走太多弯路了(谁敢说我小气,我跟他急^_^)。

引用一段和菜头的话:上网以后,我们把信息当做了知识,把收藏当做了学习,把阅读当做了思考,把储存当做了掌握。像个花栗鼠在秋天收藏坚果一样,把自己的阅读器和硬盘塞满,却依旧觉得饥渴难耐。

言归正传了:

颜色传感器需要的颗粒

颜色传感器需要的颗粒

把颜色传感器安装到电机上

把颜色传感器安装到电机上

非常重要的一步!因为传感器的杆很长,需要一根橡皮筋来避免晃动。

非常重要的一步!因为传感器的杆很长,需要一根橡皮筋来避免晃动。知足吧,这一根皮筋是我被折磨了一星期之后才想到的...

 

超声波测距传感器

超声波测距传感器

安装在最高点,它的作用是判断转台上有没有魔方

安装在最高点,它的作用是判断转台上有没有魔方

亮度传感器

亮度传感器

组装成一个奇怪的样子

组装成一个奇怪的样子

安装的目标是这里

安装的目标是这里

安装之后的效果,注意看上面的底盘,贴了一圈白纸,原因在软件部分会介绍

安装之后的效果,注意看上面的底盘,贴了一圈白纸,原因在软件部分会介绍

距离上需要留一个2到3毫米的间隙

距离上需要留一个2到3毫米的间隙

固定NXT主体

固定NXT主体

从另一个角度看看怎么固定

从另一个角度看看怎么固定

最后的一些工作:接线,贴提示的彩条,把剩余的散件用来加固,还有就是化化妆

最后的一些工作:接线,贴提示的彩条,把剩余的散件用来加固,还有就是化化妆

接线方式说明:

电机A:爪子
电机B:魔方的旋转底盘
电机C:颜色传感器电机

传感器1:超声波测距传感器
传感器2:亮度传感器
传感器3:颜色传感器
传感器4:按钮(这个是我调试的时候用来中断的)

解魔方的机器人攻略11 – 爪子

这次不说废话了,直接上图,节约时间:

一大堆散件

一大堆散件

组装起来

组装起来

横杆加固,另外点缀些颜色

横杆加固,另外点缀些颜色

一组连杆,注意蓝色的那根需要磨得薄一点

一组连杆,注意蓝色的那根需要磨得薄一点

组装好的连杆

组装好的连杆

与悬臂的连接

与悬臂的连接

大体框架已经搭成了!

大体框架已经搭成了!

加个小人点缀一下

加个小人点缀一下

解魔方的机器人攻略10 – 爪子电机

今天刚刚听说lego有一个叫做LDD的软件,可以直接生成搭建图。三人行必有我师,在这里感谢一下程序猎人

真是应了一句老话“独学而无友,孤陋而寡闻”。从我决定开始做魔方机器人以来,基本上都是自己闭门造车。后来为了发攻略,又重头搭建了一遍,途中拍了无数照片。早知道就不费这个牛劲了,更郁闷的是搭完以后程序员的兽性大发,改了n多地方和无数代码。。。。

不过话说回来,牛劲既然已经费了,我还是坚持把这一系列照片发完,嘿嘿。大家先凑合看,如果有时间的朋友愿意帮我转成LDD的搭建图,本人将不胜感激。

下面是萝卜头小爪子的驱动电机搭建过程:

准备一个电机

准备一个电机

连接电机轴,引出动力

连接电机轴,引出动力

几个连接件

几个连接件

不知道该说啥,照葫芦画瓢吧

不知道该说啥,照葫芦画瓢吧

这是下面的支架

这是下面的支架

和大底盘的对接过程

和大底盘的对接过程

看!搭起来了,请注意这里的角度和距离都是计算过的,最好不要变化

看!搭起来了,请注意这里的角度和距离都是计算过的,最好不要变化

这是两个悬臂,其实一个就可以了,两个是为了结实点,也更好看

这是两个悬臂

连杆的安装位置

两个悬臂的安装位置

悬臂安装以后,为了更结实,又增加了一个

悬臂安装以后,为了更结实,又增加了一个

安装完成了

安装完成了

绕到后面看一眼

绕到后面看一眼

这个版本的爪子电机,可以看出是由电机直接连转轴驱动的。在很多次朋友参观的过程中,这个爪子由于力气不够大,被魔方卡住了,让我感到非常没有面子(算了,萝卜头表现欠佳,归根结底还是我没培养好)
下面就是兽性大发的部分了:改用了一对3:1的齿轮组,把萝卜头的臂力增强了3倍,所以现在彻底解决了爪子被卡住的问题。搭建过程没有再拍照了,只能看看结果照片,大家自由发挥吧:

添加了减速齿轮组的爪子电机

添加了减速齿轮组的爪子电机

换个角度来个特写

换个角度来个特写

解魔方的机器人攻略9 – 颜色传感器电机

接下来的任务是安装驱动颜色传感器的电机。为什么我们要把这这部分安装在斜面支架上呢?因为颜色传感器是用来读魔方颜色的,按照说明书的要求,读数时必须距离2~3厘米,并垂直于目标物体的表面。所以魔方是斜的,传感器也必须是斜的。

有人给我提意见,怎么每次都只更新这么一点,一次多发点吧。

其实帖子就像姑娘的裙子,太短了盖不住主题,太长了又没有吸引力,差不多就行啦:)

之前我试过发特别长的攻略,我家娘子打开页面的时候,被不断缩短的滚动条吓的手一哆嗦。。。。又关掉了。。。

下面进入正题:

准备一个延长杆和一个直角连杆

准备一个延长杆和一个直角连杆准备好电机和一些连接件

准备好电机和一些连接件

准备好电机和一些连接件

神奇吧,电机正好连上,不过还有点晃晃悠悠的

神奇吧,电机正好连上,不过还有点晃晃悠悠的真是两个加固的小件

这步有点费解,刚才的两个小件是加到了连杆的下面,另外因为件不够了,我把上面的普通横杆换成了疙里疙瘩的连杆

这步有点费解,刚才的两个小件是加到了连杆的下面,另外因为件不够了,我把上面的普通横杆换成了疙里疙瘩的连杆

准备延长底座,一直要延伸到爪子那边

准备延长底座,一直要延伸到爪子那边

延长后的底座,正好顺路看看刚才比较费解的电机连接部分

延长后的底座,正好顺路看看刚才比较费解的电机连接部分

这一部分拍的照片有点少,不过乐高积木就是有这点好处,你想怎么蹂躏它都可以,只要接在一起就可以了,不一定非要完全按照我的接法。下一篇我们将要连上驱动爪子的电机!

解魔方的机器人攻略8 – 底座电机

底座完工以后,需要把它连接到电机上。需要注意的是,我们还需要把这个底座变成一个40度左右的斜坡。为什么要有坡度呢,肯定不是吃饱了撑的。因为萝卜头只有一个爪子用来翻转魔方,有了坡度以后,借助重力作用,轻轻一推就可以翻过去。
经过我多次实验,坡度太大的时候魔方容易滚出台外,坡度太小了又翻不过去,这个40度左右刚刚好。

说起这个,我想起前不久的老同学聚会,有些同学太“爽快”,聚会非要喝到人仰马翻为止。其实任何事物都要掌握一个度,所谓“酒饮微醉,花看半开”。不喝酒没气氛,喝多了太伤身,还鬼哭狼嚎的。。。就像这个斜坡似的,恰到好处最合适。

又扯远了,先远观一下我们即将要做的部分(下图的右边部分)

接下来要介绍右侧的电机和斜坡支架

接下来要介绍右侧的电机和斜坡支架

好,接下来继续看图说话:

在底盘背面加上四个转向固定连杆

在底盘背面加上四个转向固定连杆

插上以后的效果

插上以后的效果

电机连接需要的配件

电机连接需要的配件

电机连接效果

电机连接效果

后来发现那个大直角插件有问题,换成黄色的这个了,懒得再拍一遍,凑合看吧

后来发现那个大直角插件有问题,换成黄色的这个了,懒得再拍一遍,凑合看吧

连上以后的效果,领会精神吧,自己试试

连上以后的效果,领会精神吧,自己试试

支架需要的配件

支架需要的配件组装后的支架

我最爱的转向“插销”,又结实又好用

我最爱的转向“插销”,又结实又好用

支架和电机连接

支架和电机连接

加一个蓝色插销加强一下

加一个蓝色插销加强一下

连上一个大直角,这个是以后用的,先放着

连上一个大直角,这个是以后用的,先放着

准备做另一边的支架

准备做另一边的支架

组装后的第二个支架

组装后的第二个支架

支架与电机连接

支架与电机连接

这些是固定宽度的撑杆

这些是固定宽度的撑杆

这个支架还没有完全连起来,给它添加一个直角连接,连接的照片忘拍了,自己试试吧

这个支架还没有完全连起来,给它添加一个直角连接,连接的照片忘拍了,自己试试吧

完工了!看看四脚朝天的效果图

完工了!看看四脚朝天的效果图

解魔方的机器人攻略7 – 底座

接下来的几篇攻略会以图片为主,基本上每个步骤都加上了下一个步骤需要的颗粒,相信聪明的你肯定能理解。
首先要制作的是魔方的底座,就是下面这个东东:

可选择的魔方底座

可旋转的魔方底座

(我家娘子看了上面这张图,第一反应是“结婚戒指呢?”。哭,好不容易找的角度,居然被慧眼如炬的识破了……:)
下面是看图说话环节:

双层的齿轮盘+两个连杆

双层的齿轮盘+两个连杆

这个是背面,接上转向连接件

这个是背面,接上转向连接件

没啥好说的

没啥好说的

装上了“擂台的四个柱子”

装上了“擂台的四个柱子”

这些将是“擂台的围栏”

这些将是“擂台的围栏”

两个围栏的最后合影,从此天各一方

两个围栏的最后合影,从此天各一方

另外两个围栏

另外两个围栏

四面围栏搞定,准备开始铺地砖

四面围栏搞定,准备开始铺地砖

定位销钉

定位销钉

这是几块“地砖”

这是几块“地砖”

继续铺地砖

继续铺地砖

地砖安装前

地砖安装前

大功告成,看看效果

大功告成,看看效果

两点说明:
1,这样装完的底盘是有沟壑的,翻转魔方的时候会有很大摩擦力,需要铺上一层光滑的纸或塑料;我从零食盒上剪了一块方形的塑料贴上了。
2,就在我制作的过程中,国甲魔方出了第二代,比标准的魔方小一点,为56mm(标准Rubik’s是57.15mm)。因为这一点点误差,萝卜头回国以后一直水土不服,直到我把四周的护栏缩小了一圈。各位同学到时候请根据自己买的魔方来做相应调整。

这是最近的样子:

调整后最新的样子

调整后最新的样子