找回密码
 马上注册

QQ登录

只需一步,快速开始

楼主: James.Yang

[教程] LEGO MINDSTORMS NXT编程指南(完整中文版)——自主翻译

   火.. [复制链接]
发表于 2013-1-14 23:08:43 | 显示全部楼层
复制完毕
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复 1 0

使用道具 举报

 楼主| 发表于 2013-1-19 21:16:43 | 显示全部楼层
本帖最后由 James.Yang 于 2013-1-19 21:18 编辑

第23章 校准
当使用声音及光线传感器时,你会发现随着环境的变化,这两个传感器的最小值与最大值会发生改变。例如,如果你的机器人放置在一个照明良好的房间里,传感器得到的最小值(房间内的最暗点)将与在照明不好的房间内得到的最小值完全不同。


注意:NXT2.0机器人套件不包含有光线及声音传感器,但你仍然可能发现你会在某天使用到它们,因此不但要知道在你的2.0智能积木块中如何使用它们,而且还要知道如何校准它们。


本章将向你介绍如何使用校准模块(及其2.0版本软件中内置的校准传感器工具),这样你能信任你的声音及光线传感器接收到的数值。本章没有练习,但如果你是NXT-G 2.0的用户,我还是鼓励你将声音及光线传感器连接到你的智能积木块上来测试校准传感器工具。
校准模块
校准模块仅对光线传感器(NXT及RIS两个版本)和声音传感器有效。图23-1显示了基本的校准模块和它的配置面板。

图23-1  校准模块和它的配置面板

通过传感器部分的下拉菜单,你可以选择光线传感器或者声音传感器。端口部分非常简单,只要选择你将要校准的传感器连接的端口号。
动作部分有一个具有两个选项的下拉菜单:校准和删除。校准选项是你要选择的典型选项,如果你想要重置传感器的最小值或者最大值,选择删除选项来删除现有的设置,然后使用另一个校准模块来得到新值。
数值部分是用来选择你要校准或者删除的是最小值还是最大值。这是要记住的很重要的一点:校准(或者删除)最小值需要一个校准模块,校准(或者删除)最大值需要另一个校准模块。然而,如果你只选择使用一个校准模块,好消息是校准了一个值(例如最小值)将会自动校正另外一个值。但是,为了安全起见,最好使用一个校准模块来校准最小值,使用另一个校准模块来校准最大值。
对校准模块你还需要知道另外一个特征,它关系到多个声音或者光线传感器。如果你使用两个或两个以上相同类型的传感器,从两个校准模块得到的最小值与最大值将适用于那个类型的所有传感器。例如,你不必要使用六个校准模块来校准三个声音传感器——一个校准模块将可以设置三个声音传感器的最小值,另一个校准模块可以设置最大值。
让校准模块工作
如何真正在你的机器人要执行动作的环境中来校准传感器呢?回答很简单,我将对声音传感器与光线传感器的校准给出例子。
首先让我们关注光线传感器。如果你搭建了一个具有一个光线传感器(或者多个光线传感器)的机器人并想在当前环境中校准它们,首先你需要做的是在程序中放入两个校准模块,最好是在程序的开头。在你的NXT套件中的帮助文件有很多建议,我将在这儿用NXT-G的程序代码作为例子使用。
请看下图23-2。

图23-2  校准光线传感器

在这个例子中,我放置了两个校准模块。第一个模块用来校准光线传感器的最小值,第二个模块用来校准光线传感器的最大值。在第一个校准模块后面,我放置了一个触摸传感器等待模块来等待传感器的按钮按下。对第二个校准传感器做了相同的设置。这些NXT-G代码可以放到为你的机器人编写的程序开头。
现在,我要做的第一件事就是将机器人放到房间中最黑暗的地方(或者光线最弱)。完成后,按下触摸传感器按钮,这将使第一个校准模块得到房间内的光线最小值。
然后,我将机器人放置到房间内最亮的地方,按下触摸传感器按钮,第二个校准模块得到房间内的光线最大值。
就这么简单!现在,如果我在这个程序中的任何地方使用光线传感器,光线传感器将对我编程的条件作出正确的反应(如“如果光线传感器得到的值超过30时左转”)。
对声音传感器,我将执行完全相同的步骤。图23-3显示了相同的NXT-G代码只是将设置改为校准声音传感器。

图23-3  校准声音传感器

在这个例子中,我必须尝试将机器人放置在房间内最安静的地方。这将比较困难,我不能预知如观察者或者其它潜在声音的影响因素,但我尽量做好。按下触摸传感器按钮,第一个校准模块将会得到声音传感器的最小值。然后,我将机器人放置到我认为房间中最吵闹的地方并按下触摸传感器按钮,声音传感器的最大值就会重置。
对声音传感器有一件事需要注意,就是传感器与NXT电机的接近程度。要记住,当你的机器人使用任何或所有电机时,如果你在程序中使用声音值来进行决策时,电机产生的声音能够影响声音传感器。你必须实验及测试你的机器人来决定配置你的声音传感器触发值的正确设置。你可能编程让SPOT在声音小于20时左转,当左转的其它所有条件都满足,但从NXT电机传出的声音会给声音传感器评估到的声音值为22或23。这就是为什么要测试、测试、测试。
校准传感器工具
校准模块允许你不管机器人在什么地方,都可以校准传感器。这意味着在竞赛或者测试期间,你没有台式电脑或者笔记本电脑时,你仍然有能力来设置这些传感器的最小值和最大值,并按机器人所处的特定光线和声音条件下来校准它们。还有一个你可以在程序外使用的工具。
一些校准模块不会增加程序大小很多,但如果你可以使用台式电脑或者笔记本电脑,通过删除校准模块,而代之使用校准传感器工具可以节约你的智能积木块上的一些存贮空间,如图23-4所示。

图23-4  校准传感器工具用户界面

要打开校准传感器工具,通过USB线将你的智能积木块连接到台式电脑或者笔记本电脑上并打开智能积木块。你必须至少要连接一个传感器,否则图23-4中所显示的列表部分将会变灰,不能使用。
将智能积木块连接好并打开后,打开NXT-G软件,点击工具菜单,从下拉菜单中选择校准传感器选项。这将会打开一个如图23-4的窗口。
使用校准传感器工具最好使用笔记本电脑,你可以移动你的智能积木块(或者机器人)和笔记本电脑到你的机器人要执行程序的不同地方。例如,如果你连接了光线传感器,将笔记本电脑及机器人放置到机器人将要运行的最黑暗的地方。这种例子包括桌子底下或者一个隧道内。
在工具画面,确保你选择了你要使用的传感器(本例中为光线传感器)及其你连接传感器的端口号码(本例中为端口1)。将机器人放置到最黑暗的地方,按下校准按钮,在智能积木块屏幕上,当校准程序执行完毕后你能听到“哔”的一声,LCD屏幕将会提示它正读取最小值,然后按下回车键(橙色键)来获取读数。再次按下回车键。
下一步,移动你的笔记本电脑及机器人到你的机器人要运行的最明亮的位置,这种例子包括直接在光线照射下或者尽量靠近窗户。看好LCD屏幕,你将会看到一条要求你按回车键来获取最大值的消息。再次按下回车键。
最后,在校准传感器工具窗口上点击刷新按钮,你将看到按机器人的最小值与最大值改变为对现有光线条件下的反映。如图23-5所示。

图23-5  校准传感器工具将更新传感器的最小值与最大值

声音传感器的操作过程相同。在这种情况下,你将带着你的机器人和笔记本电脑到机器人将要运行的最安静的位置,按下校准按钮并按屏幕指示获取最小值。然后你带着机器人和笔记本电脑到机器人可能会遇到的声音最大的地方,执行相同的操作来获取最大值。
当完成校准后,断开机器人与笔记本电脑的连接,现在你的机器人的声音及光线传感器已被正确校准。要复位传感器到默认条件,只要简单的重新连接智能积木块,进入校准传感器工具,点击默认按钮,这样就会对最小值及最大值重新设置为初始设置。

下一步内容?
好了,这就是校准模块。在第24章中,我将向你介绍如何编程来复位机器人电机,这对你监测电机是非常有用的。继续向前来了解它是如何工作的。
图23-1.JPG
图23-2.JPG
图23-3.JPG
图23-4.JPG
图23-5.JPG
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2013-1-20 13:46:31 | 显示全部楼层
辛苦啦!
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

 楼主| 发表于 2013-1-21 21:12:12 | 显示全部楼层
没人顶起,自己顶一下。看来大家都对英文资料感兴趣。
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

 楼主| 发表于 2013-1-24 18:57:23 | 显示全部楼层
本帖最后由 James.Yang 于 2013-1-24 18:58 编辑

第24章 电机
贯穿整本书,我都使用移动模块来控制电机,在我设计的每个机器人中,我差不多都使用移动模块,但是如果你在完成全书的练习并注意NXT-G软件,你可能会发现有个模块我还没有涵盖——电机模块,你同时也会注意到复位电机模块,该模块对诊断和改正移动问题是非常有用的。
电机模块
图24-1显示了电机模块。它与移动模块工作情况几乎完全一样,但有一些例外。首先,电机模块仅能用于控制单个电机,你不能使用它控制两个或两个以上的电机,因此如果你想要精确控制两个或两个以上电机时,你必须放置两个或两个以上的电机模块。

图24-1  电机模块及其配置面板

你可以象使用移动模块一样使用电机模块来控制方向,功率,持续时间和下一步动作部分,但动作,控制和等待部分工作时有些不同。如果你设置持续时间为不限时间,动作和等待部分将变成灰色并且不可用。只有当你设置电机模块来精确控制持续时间(圈数,角度,或者时间)时,你才能进入动作和等待部分。图24-2显示了我选择了端口B(电机B),并配置电机使用角度选项的持续时间。

图24-2  电机模块将使用角度来控制电机B

在动作部分,下拉菜单中三个选项中选择,如图24-3。它们包括斜坡上升,斜坡下降及常量。

图24-3  电机模块动作部分有三个选项可供使用

如果你选择了斜坡上升并运行程序,你会发现电机B将以恒定的加速度来增加其转速直至到达功率设定的最大值(例子中为75)。斜坡下降将要求电机以恒定的加速度来降低其转速直至功率值为0。从效果来看,你将看到机器人以恒定的速度来增加或降低其转速。你会发现当你的机器人由于电机故障引起加速度突然改变,导致机器人发生跳跃或者改变方向时是非常有用的。
动作部分下拉菜单中的常量选项与斜坡上升与斜坡下降正好相反。如果你将电机的动作部分设置为常量,当模块执行时,电机会立即达到其功率设定值,这对于你想让机器人快速加速是非常棒的,但正如我前面提到的你会发现当其向指定方向移动时会损失一些精度。电机突然加速到最大速度,在光滑表面常可引起机器人移动过程中车轮打滑,或者如在沙滩或草地上等困难表面时的转动阻滞。
那你怎样来降低发生这种情况的机会?简单!选中控制部分中电机功率标签前的复选框,这可以强制电机尝试补偿打滑或阻滞,并强制所有电机同时启动且保持同样的速度。
最后,如果你选中等待完成标签前的复选框,电机模块后的所有NXT-G模块在电机模块完成其程序要求的移动前都不会被执行。例如,如果你编程让电机B转动720度,并选中了该复选框,只有当电机转动2圈后,其后面的模块才会执行。这与声音模块有点类似,如果你允许电机在转动过程中程序继续执行,不要选中该复选框。
复位电机模块
复位电机模块及其配置面板如图24-4所示。它只做一件事——复位电机内部记录(如电机已经转过的圈数),而这件事是你很少(或者从不)使用的。我还未发现其使用的强大功能,但谁知道呢?这可能是你正在寻找的让你的机器人功能正常的模块。

图24-4  复位电机模块及其配置面板

对于这个模块你注意到的第一件事是其配置面板非常简单。你只要简单地选择你要使用复位电机模块的电机端口(A,B和/或者C)。你为什么要这么做呢?让我来解释。
NXT电机的一个伟大之处就是电机同步,这样机器人能够以非常精确的直线前进。智能积木块给电机B和C(我假定你使用电机B和C来控制运动)发出正确的信号,并确保它们以相同的速度旋转,通过这样,你的机器人能以非常精确的直线移动。想象一下,如果一个电机比另一个电机转得快(或转得远),你的机器人将最终不会以非常直的直线移动。同时,通过同步电机,你能确保两个电机以相同的持续时间转动,如300度或2.5圈。这个功能是NXT电机的优点之一。
看一下下面的伪代码:
[我]:SPOT,向前移动360度并等待3秒钟。
[我]:现在向前移动270度并等待3秒钟。
[我]:现在向前移动90度并停止。
这个伪代码的NXT-G程序看起来如图24-5所示。

图24-5  移动SPOT的一个NXT-G程序

在程序中,我添加了三个移动模块和两个等待模块。第一个移动模块让SPOT向前移动360度,然后SPOT等待3秒钟。第二个移动模块让SPOT向前移动270度,然后SPOT再等待3秒钟。最后,第三个移动模块让SPOT向前移动90度,然后停止。SPOT电机B和C总共向前移动了720度或者2圈。现在我同时设置前两个移动模块的动作部分为滑行停止,而第三个模块设置为刹车停止。我这么做是因为我想证明你的NXT智能积木块和它的电机执行的小技巧。
让我们假设SPOT执行完第一个移动模块后,SPOT由于是滑行停止,实际转动了380度。在SPOT的第二次移动中,同样由于滑行停止,它转动了278度。现在如果SPOT在最后转动97度的话,将将总共转动755度,而不是期望的720度。但是,如果你上传这个程序给SPOT并运行它,你会发现SPOT确实向前移动了720度,或者2圈。怎么样?
智能积木块和电机追溯了SPOT滑行的距离(通过继续监测在滑行过程中轮子转动的圈数),并减少第三个移动模块(设置为刹车停止)最后移动角度至62度,而不是90度。通过将最后的移动模块降到62度,SPOT还是能精确的向前移动720度(如果最后一个移动模块设置为滑行停止,而不是刹车停止,这个精度就不能保证)。这就是智能积木块和电机提供的“错误修正”使得你的机器人能做非常精确的移动。
如果你对移动的精确性不关心,想要关闭智能积木块及电机提供的这个“错误修正”功能该怎么办?好的,这就是复位电机模块进入视野的原因。
请看一下图24-6,你将看到对SPOT原始程序作了些小修改。

图24-6  移动SPOT的另一个NXT-G程序
在这个程序中,SPOT将执行相同的动作,但第一个移动模块执行完毕后,复位电机模块将执行,回想一下你的智能积木块和电机相互通讯并追溯你编程让SPOT移动的角度数。如果第一个移动模块最终让SPOT向前移动了380度,复位电机模块简单的将这个数字清除(重置为0),就当SPOT从没有移动过。第二个移动模块又使SPOT向前移动了277度,但第二个复位电机模块同样将该值重置为0。最后,第三个移动模块使SPOT向前移动90度并刹车停止。加起来,SPOT一共向前移动了747度,而不是720度。SPOT额外多移动了27度,因为电机内部的“错误修正”功能被复位电机模块给屏蔽掉了。
练习24-1:真正的读数
这就是电机模块和复位电机模块。如果你觉得你不用关心追溯你的机器人移动的持续时间,且偏向于在移动模块中使用滑行停止(可能是为了省电),那么复位电机模块对你来说可能是有用的。然而对现在,有一个练习:
创建一个程序,使单个电机转过一系列的角度数(使用电机模块),然后滑行停止。发送给LCD屏幕显示由于滑行停止而使轮子转过的实际值。
通过运行这个练习,将展现使用滑行停止对机器人实际移动的距离与程序要求的距离值产生怎样的影响。我给你一个机会来观察滑行停止的影响,让你自己来看一下轮子转过的实际圈数与程序要求的值是怎么的不匹配。如果你需要帮助,我在本章结尾处包含了练习的一个解决方案实例。
下一步内容?
下一章,我将介绍使用蓝牙,以及发送信息模块及接收信息模块,并将学到如何编程让你的NXT机器人与另外的NXT机器人进行通讯。
练习解决方案
图24-7到图24-12显示了练习24-1的完整程序和配置面板。注意电机模块选中了等待结束复选框且下一步动作设置为滑行停止。当电机B停止转动,我添加了一个NXT按钮等待模块来等待你按下左键。在电机B完全停止前不要按左键,这将使旋转传感器模块能读取到电机B转动的总角度数的精确读数。这个数值将被发送给数字转文本模块,然后再发送给显示模块,这样你能看到转动的实际角度数将会大于编程值(360度)。最后一个等待模块将等待你按下右键来结束程序。

图24-7  完整的程序及电机模块的配置面板


图24-8  第一个等待模块的配置面板


图24-9  旋转传感器模块的配置面板


图24-10  数字转文本模块的配置面板

图24-11  显示模块的配置面板


图24-12  第二个等待模块的配置面板
图24-1.JPG
图24-2.JPG
图24-3.JPG
图24-4.JPG
图24-5.JPG
图24-6.JPG
图24-7.JPG
图24-8.JPG
图24-9.JPG
图24-10.JPG
图24-11.JPG
图24-12.JPG
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

 楼主| 发表于 2013-1-27 19:57:39 | 显示全部楼层
第25章 消息
也许在某时,你想让你的NXT机器人与其它NXT机器人进行通讯并共享信息,或者,如果你有第二套NXT套件,你可以使用第二套NXT智能积木块发命令给你的机器人而进行遥控控制。
要实现这个功能需要使用到本章介绍的一些有用的模块。很多人会发现这些模块很难或者令人混淆,如果你了解了发送及接收信息背后的基本概念后,实际上这些是非常简单的。
当然,发送及接收信息需要NXT智能积木块通过蓝牙进行连接。通过蓝牙连接两个或两个以上的智能积木块是非常简单的,我将在本章作简单介绍,但是如果你需要这个任务的更多帮助,请参见NXT软件自带的帮助文件。你可以找到除了发送消息或接收消息模块的指令外,还可以找到使用蓝牙连接模块来连接两个或两个以上的NXT设备的文档。
蓝牙连接模块
如果你有一个以上的NXT智能积木块,你可以使用各种NXT-G模块使它们之间进行通讯。NXT机器人可以通过蓝牙通讯来分享如距离或者记录的传感器值(如房间的光线强度)的信息。使用蓝牙很有趣,但也有一个不足就是在使用时很消耗电池。


注意:不会太技术化,蓝牙只是在近距离设备之间进行无线传输的一种方式。蓝牙需要两个设备要互相识别,且需要交换一个密码以给设备进行通讯的许可。更多信息(及更多技术讨论),访问:http://en.wikipedia.org/wiki/Bluetooth。

预备知识
你可以通过智能积木块的按钮及菜单系统来打开蓝牙;你可以使用相同的菜单来寻找另外的NXT智能积木块,并执行称作查找和配对的选项。查找和配对只是简单的使各个NXT智能积木块让其它智能积木块识别,随后交换密码以使智能积木块之间能安全通讯。查找部分是两个智能积木块给对方发送信号进行侦听及接收。一旦一个设备“看见”另一个设备,它们必须交换密码(也称为密钥)以得到允可进行通讯并共享信息。


注意:如果你想让你的NXT智能积木块与一个或多个NXT智能积木块进行通讯,你必须要确保你已经完成了查找和配对流程。理想情况下,当你的智能积木块与你的台式电脑或笔记本电脑连接时,你能够在NXT-G软件中集中列出其它的NXT设备。关于如何执行此任务的更多信息请查询帮助文件。


一旦智能积木块之间完成查找和配对过程,你可以使用NXT-G程序在智能积木块之间发送及接收数据。发送及接收信息将在本章的后面介绍,但对NXT-2.0,你现在可以打开和关闭蓝牙通讯功能。这对节省电池电量是很有用的特征。
配置连接
图25-1显示了蓝牙连接模块及其你能配置的唯一设置。

图25-1  蓝牙连接模块及其配置面板

动作部分的下拉菜单有四个选项:开启,关闭,创建连接,关闭连接。
开启与关闭选项与你想象的完全一样。开启选项将开启你智能积木块上的蓝牙功能,允许它与其它已识别且交换过密码的智能积木块进行通讯。关闭选项将使你的智能积木块失去蓝牙功能。如果你打算使用NXT-G程序来与其它智能积木块通讯并发送和接收数据,我强烈推荐你使用开启与关闭功能。你简单地在程序开头拖放一个蓝牙连接模块,并将其动作配置为开启,在程序结尾拖放另一个蓝牙连接模块,并将其动作配置为关闭,这样,你不必记住在智能积木块上关闭蓝牙功能。
在查找与配对任务过程中,你需要注意其它NXT智能积木块的标识符,这个标识符等同于智能积木块的名字。这个名字存贮在你的NXT智能积木块中且当你打开智能积木块时会出现在LCD屏幕的顶部。你也可以在如图25-2所示的NXT数据窗口中观察名字。点击图25-2中指示的按钮来打开NXT数据窗口。

图25-2  NXT数据窗口将显示你连接的智能积木块的名字

你可能已经注意到列表中有两个设备,都命名为NXT。在理想情况下,所有的智能积木块都有唯一的名字。你可以通过窗口右上角的名字字段输入一个新名字来改变现在连接的智能积木块的名字,如图25-3所示。我将这个智能积木块的名字改为Jim。现在我可以将那个名字给其它NXT智能积木块用户使用,他们能够使用它来发送和接收数据——但是还需完成一个任务以后。

图25-3  用一个唯一并容易记住的名字来重命名你的智能积木块
创建连接
一旦所有的智能积木块已被其它智能积木块所识别,且由他们的持有者交换了密码后,你仍需要告诉你的程序你将要进行通讯的智能积木块的名字。如果你拥有多个NXT智能积木块时尤其重要。
幸运的是,它是非常简单的。在你先前的程序中拖放另一个蓝牙连接模块,并在动作部分选择“创建连接”选项,如图25-4所示。

图25-4  与其它智能积木块创建连接以共享数据

在连接到部分中输入另一个智能积木块的名字(这个例子中为John),并选择一个连接端口——1、2或者3。正如你能看到的,这将使你的NXT智能积木块最多可以与三个NXT智能积木块进行通讯,每个智能积木块具有它自己的通讯端口。你随后会看到在智能积木块中发送与接收数据时这一点是多么有用。
关闭连接
最后,如果你结束了从其它智能积木块发送和接收数据,通过在动作部分选择“关闭连接”选项来关闭与另一个智能积木块的连接是有用的。这可以让另一个智能积木块的拥有者释放他的通讯端口,以供与其它的智能积木块(不是你的)进行通讯之用。图25-5显示了我已经关闭了与那个叫John的智能积木块的连接。配置面板上的连接部分也将显示其它已经被识别并且与你的智能积木块进行通讯的NXT智能积木块。

图25-5  关闭连接将释放其它智能积木块的通讯端口

你可能已经注意到图25-4中的接触部分。这个列表将显示所有已经连接到你的笔记本电脑或者台式电脑上的NXT智能积木块的名字。这对你去要求其它NXT智能积木块用户连接到你的笔记本电脑或台式电脑,以使他们的智能积木块的名字存贮在该列表中来说是很有用处。否则你在创建连接时,必须人工输入名字。
现在你已经知道如何开启和关闭蓝牙,以及如何选择你要进行通讯的特定智能积木块,是时候学习如何在智能积木块间进行真正的发送和接收数据。这由两个容易记住的模块来完成,发送消息及接收消息模块。
发送消息模块
发送消息模块及其配置如图25-6所示。

图25-6  发送消息模块及其配置面板

在配置面板中有两个项目是你必须要理解的。第一个在消息部分,它的下拉菜单有三个选项:文本,数字或者逻辑。通过选择其中之一,你将在下拉菜单下面的文本框内提供正确类型的消息。如果你在下拉菜单中选择文本选项,文本框内必须包含有文本形式的内容。同样,如果你在下拉菜单中选择数字,文本框内必须包含有正整数或负整数值。最后,从下拉菜单中选择逻辑,需要你必须选择真或者假值。


注意:对于大多数高级智能积木块,发送消息模块通过数据线能够被配置为接收文本,数字或者逻辑值,如图25-6所示。注意连接数据接头是一个0到3之间的值用于标识是主NXT设备还是从NXT设备。主设备总是被配置使用0,通过蓝牙至多可以连接3个额外的NXT智能积木块,每个块被标识为1,2或者3。在本章的前面你已经看到蓝牙连接模块是怎样选择通讯端口——1,2或者3——来指定智能积木块的。当在智能积木块之间发送和接收数据时,你应该注意在发送消息和接收消息模块中配置的端口,以使你能从正确的智能积木块得到正确的数据。


现在,这是一个NXT智能积木块给另一个智能积木块发送单个项目的主要方式。例如,一个智能积木块能够监测触摸传感器被触发的次数并将此数值发送给另一个机器人。但是如果你想发送更多的信息那该怎样呢?怎样发送光线传感器的值和电机B已经转过的圈数值给另外一个机器人?这可能吗?
不错,如果你将每个潜在的消息看作一个变量(第18章已介绍),那么答案是肯定的。发送消息和接收消息模块通过使用邮箱的概念,最多允许在智能积木块之间发送和接收10条不同的消息。
每个NXT智能积木块具有10个邮箱,每个邮箱有个编号。第一个邮箱称作邮箱1,第二个邮箱称作邮箱2,以此类推。如果你留意一下发送消息模块的配置面板,你会发现最后部分被称为邮箱,它包含有一个下拉菜单。选择此下拉菜单,你可以看到你可以选择1至10之间的一个数值。就这么简单!例如,当你在邮箱3中放置了文本,数字或者逻辑数值,这些数值就被这个邮箱存贮了(记住,文本数值可以是单个字符或者是多个字符但对邮箱来说仍然是单个数据)。每个邮箱可以容纳5个数据,但是这些数据的类型必须相同(文本,数字,或者逻辑)。例如,如果一个发送消息模块试图将第6个数据加入到邮箱5中,邮箱5中的第一个数据就会被挤出而丢失。在邮箱中的数据被取回之前,加入很多数据到邮箱时一定要小心。
现在,你能猜出其它机器人如何取回存贮在邮箱中的数据?如果你的回答是通过一个接收消息模块,那么你就对了。请看一下图25-7,你可以看到接收消息模块和它的配置面板。

图25-7  接收消息模块及其配置面板

接收消息模块与发送消息模块很类似。在邮箱部分的下拉菜单中选择邮箱号,同样,邮箱号也为1到10。你同样必须在消息部分的下拉菜单中,选择你期望从发送消息模块接收数据的类型(文本,数字,或者逻辑)。
你可能注意到在消息部分有个“比较”文本框。如果你在该文本框内输入一个值,将会得到一个真或者假的逻辑值,通过使用输出数据线,你可以得到这个逻辑值并输送给其它模块。例如,如果邮箱3里面存贮有一个数字类型的数据250,你的接收消息模块被配置为从邮箱3接收一个数字数据,如果你在“比较”文本框内输入了一个250,比较的结果会得到一个真值。
现在,举个快速简单的程序,请看以下的伪代码并将其转换为NXT-G程序。
[我]:SPOT,向前移动直到你的超声波传感器检测到至少离你10英寸前有个物体为止。
[我] :读取你的光线传感器值。
[我]:通过邮箱3将光线传感器的光照强度值发送给SPOT2。
正如你在图25-8中看到的,我创建了一个程序让SPOT向前移动(不限圈数),同时监测它的超声波传感器。当超声波传感器被触发后,第二个移动模块停止电机B和C的转动。光线传感器开始读数,通过数据线发送给被配置为接收数字数据的发送消息模块。

图25-8  使用发送消息模块的程序

现在,如果有第二个机器人(叫做SPOT2),我可以将下述伪代码转换为另一个NXT-G程序以得到光线传感器值:
[我]:SPOT2,检查邮箱3中一个数字数据。
[我]:将这值与你的光线传感器读数进行比较。
[我]:如果你的光线传感器的读数与邮箱3中的值相同,向前移动8圈。
现在,请看一下图25-9中我是怎样将伪代码转换为一个NXT-G程序的。

图25-9  使用接收消息模块的程序

在这个程序中,SPOT2的光线传感器读取了一个数,这个值通过数据线传递给了接收消息模块。现在,当SPOT2检查邮箱3并读取存贮的值时,就会比较这个存贮的值与SPOT2的光线传感器读取的值。这个比较是自动进行的,因为已经给接收消息模块的数字数据端口提供了一个数字数据,同时还从接收消息模块的逻辑数据端口连接了数据线到开关模块。这个配置强制模块进行两个值的比较(从光线传感器得到的数据和配置面板中配置的数据)。如果这两个数值相等,一个真值就会传递给开关模块。图25-9中显示了真选项卡,它包含一个移动模块,这样当邮箱3中的数据与SPOT2光线传感器读取的数据相同时,它将使SPOT2向前移动8圈。
发送消息模块和接收消息模块对两个或两个以上的NXT机器人进行通讯并共享信息是非常基本的内容。本章仅仅涉及了两个模块使用的一点皮毛。我在前面就说过,使用第二套NXT套件,你可以遥控控制你的机器人。为了建立有用的遥控控制,你需要在遥控控制中使用发送消息模块来给机器人发送数字。例如,这些数字可以是让电机B和电机C旋转的圈数或者角度数,或者是电机旋转的速度/功率。有很多种方法可以实现这个目的,没有不正确的方法——只要选取对你来说最好的方法。由于你有三个通讯端口(1,2和3),理论上你最多可以遥控控制三个机器人!只需要记得使用蓝牙连接模块对你想要发送数据的每个智能积木块指定一个通讯端口。你可以使用智能积木块菜单系统中的内置的蓝牙控制,但使用模块将更简单,更快揵测试你所创建的程序——不需要摆弄智能积木块上的按钮来连接其它智能积木块。
下一步内容?
不错,我们还需要介绍一个内容——称为我的模块。你会发现这个模块对创建一些机器人将来可以重复使用的小程序是非常有用的
图25-1.JPG
图25-2.JPG
图25-3.JPG
图25-4.JPG
图25-5.JPG
图25-6.JPG
图25-7.JPG
图25-8.JPG
图25-9.JPG
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2013-1-29 10:02:39 | 显示全部楼层
从10月份延续到现在,真是一个浩大工程。佩服!!!
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

 楼主| 发表于 2013-1-31 08:46:04 | 显示全部楼层
本帖最后由 James.Yang 于 2013-1-31 08:47 编辑

第26章 我的模块就是你的模块
不要傻乎乎地到功能区去寻找一个称为我的模块的真正的NXT-G模块,它不存在。我的模块是需要你来创建的东西。一个我的模块是你已经组合在一起且要重复使用的NXT-G模块的集合。我的模块具有一个特征就是可以让你创建并重复使用组件。因此让我们进入正题来看一下重复使用组件的方法是如何来帮助你的。
创建一个我的模块
请看下面的伪代码及图26-1中与之相对应的NXT-G程序。(对模块加上了一些注释以使更简单地指出哪个是哪个——有很多移动模块来追踪。)如果SPOT执行了这些运动,它将沿正方形路径移动并回到起始点。
[我]:SPOT,向前移动3圈然后左转90度。
[我]:SPOT,再向前移动3圈然后左转90度。
[我]:SPOT,再向前移动3圈然后左转90度。
[我]:SPOT,再向前移动3圈然后左转90度。

图26-1  SPOT的一个简单移动程序

你可以将程序中的前两个移动模块放到一个循环模块中,并配置循环4次,如图26-2所示。

图26-2  SPOT使用循环模块的简单移动程序

但是如果你在后面需要SPOT在第二次左转后检测光线传感器的读数时该怎么办?你必须修改两个NXT-G程序。第一个程序(如图26-1)修改起来还不是很困难,只需要在中间添加一个光线传感器模块就完成了。但对第二个程序(有个循环模块),你必须修改第一个循环模块运行两次,然后插入一个光线传感器模块,最后再为最终两次移动创建一个循环模块,该程序如图26-3所示。
图26-3  修改循环后的程序
现在,修改程序还不是很困难,但想象一下如果程序变得越来越大,SPOT不但要左转,而且还要右转。随着移动模块的不断添加,程序将变得很大。这就是我的模块概念出现的原由。
请看一下图26-4,随后我会解释你所看到的。

图26-4  使用一系列我的模块的程序

在图26-4中,你会看到四个我的模块项目,每个这种模块包含有2个移动模块,第一个移动模块使机器人向前移动3圈,第二个移动模块将左转90度,你所做的就是图26-1中的程序中将一对移动模块组成一组。将原来八个NXT-G模块(见图26-1)代替为四个我的模块!
你能看到使用我的模块的价值吗?你现在拥有一个可重复使用的NXT-G模块,每当你需要机器人向前移动3圈然后左转90度的时,你可以将它放置到这个程序中(或者将来任何程序)。你可以创建一个类似的让机器人向前移动3圈,然后右转的我的模块。这种选项是无穷的。
通过使用这个概念,你可以创建NXT-G模块的集合来完成一些特定的动作,然后将它们打包到一个我的模块中以供不断的重复使用。随着时间的推移,你创建的我的模块集合将会增长,你可以节省时间而不用重复创建一些特定动作(如转动180度,向前移动2圈,读取光线传感器读数——所有这三个动作能够打包到一个单一的我的模块。
下面,让我来展示一下如何来创建它。
第一步是创建你想要打包到我的模块中的可重复动作。为了理解我前面讲的例子,如图26-5所示添加两个移动模块用于让SPOT向前移动3圈并左转90度。

图26-5  开始创建我的模块

当创建完你想要重复使用的NXT-G模块集合后,点击并拖放以选中这些模块,如图26-6所示。

图26-6  点击并拖放选中你想要包含在我的模块中的模块

下一步,点击编辑菜单,并从可选的选项中选择“创建一个新的我的模块”,如图26-7所示。

图26-7  从编辑菜单中选择创建一个新的我的模块


注意:如果你运行的是NXT-G 1.0版本,你的编辑菜单看起来有些细微不同,因为在编辑菜单底部缺少定义常量选项。


将出现我的模块创建窗口(如图26-8)。

图26-8 我的模块创建窗口

填入如图26-9所示的详细内容,在模块名字字段中给我的模块一个对你来说有用的名字,并且在模块描述文本框内输入更详细的描述。点击下一步按钮为你新创建的我的模块选择一个图标,或者点击结束按钮来结束我的模块创建过程。

图26-9  为你创建的我的模块提供一个名字和描述

如果你点击下一步,你会看到一个图标创建画面,如图26-10所示。你可以从窗口底部拖放一个或几个小图标到图标创建窗格。你能够在图标创建工作区的右边来预览你新创建的我的模块图标样子。

图26-10  为你新创建的我的模块创建一个自定义图标

点击完成按钮,就这么简单。你所选的模块(在图26-6中)将转换为一个我的模块并具有一个指定的名字和图标(见图26-11)。

图26-11  你创建完成的我的模块

你可以点击自定义面板且移动鼠标到我的模块设计工具来访问你新创建的我的模块,如图26-12所示(悬浮鼠标指针到一个图标时,我的模块的名字将会显现)。

图26-12  新创建的我的模块在自定义面板中显现

你必须要注意的是我的模块同样可以通过数据线接收和发送数据。要使数据线能够工作的关键是,在你选择要加入到我的模块中的模块并从编辑菜单中你选择“创建新的我的模块”之前,必须要将它们的数据线配置好。所有你选择的进入或退出模块的任何数据端口将会作为数据接头出现在你创建后的我的模块中。练习26-1将给你一个怎样来完成这一点的例子。
练习26-1:我的模块数据接头
创建一个我的模块它可以接受单根数据线来接收数字数据。这个数字数据将发送给两个随机模块来设置它们的最大值。随机模块的最小值为1。每个随机模块将它们产生的数字发送到LCD显示屏幕。比较你的解决方案与我在本章结束处的解决方案。
你已准备好了!
好的,这就是所有内容!好吧,不完全是。尽管我已经介绍了你的基本软件中可利用的所有NXT-G模块,但这并不意味着你没有什么要学习的了。随着LEGO及第三发展方创建更多的模块,你将有能力在你的面板中添加新的NXT-G模块,你需要使用和练习它们来学习它们所提供的所有功能和特征。
NXT-G是学习机器人编程的伟大方法,它的拖放界面很容易使用,你将会发现使用它可以创建很多超强的程序。
继续学习,练习,并发展新方法来使你的机器人更快响应,更多智能,及更深印象。这多么有趣!
练习解决方案
图26-13到图26-23显示了包含在名字为“TwoRandomsLCD”我的模块中的模块及其配置面板及其创建我的模块的步骤。记住,为了给我的模块包含一个数据接头需要在我的模块选择区域内有一个数据线连接到一个或几个模块。图26-13显示了怎样从一个变量模块连接数据线到第一个随机模块。第二个随机模块使用另外的数据线从第一个随机模块得到一个相同的值。同时注意图26-20你选择了除变量模块外的所有模块。你不想让我的模块包含有变量模块因为你想要让我的模块通过数据接头接收数据,并且你不在意数字数据来源。变量模块简单地用来提供一根数据线,这样最终的我的模块将包含一个输入数据接头。最后,第一和第二个显示模块将分另在第的4行和第6行提供产生的随机数字。

图26-13  完整的程序及变量模块的配置面板


图26-14  第一个随机模块的配置面板


图26-15  第二个随机模块的配置面板

图26-16  第一个数字转文本模块的配置面板


图26-17  第二个数字转文本模块的配置面板


图26-18  第一个显示模块的配置面板


图26-19  第二个显示模块的配置面板

图26-20  选择所有模块以转换为我的模块(不包括变量模块)


图26-21  为我的模块提供一个名字及其描述

图26-22  模块组转换为具有一个数据接头的单个我的模块


图26-23  新的我的模块在我的模块弹出菜单中列出
图26-1.JPG
图26-2.JPG
图26-3.JPG
图26-4.JPG
图26-5.JPG
图26-6.JPG
图26-7.JPG
图26-8.JPG
图26-9.JPG
图26-10.JPG
图26-11.JPG
图26-12.JPG
图26-13.JPG
图26-14.JPG
图26-15.JPG
图26-16.JPG
图26-17.JPG
图26-18.JPG
图26-19.JPG
图26-20.JPG
图26-21.JPG
图26-22.JPG
图26-23.JPG
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2013-2-1 03:40:21 | 显示全部楼层
太牛了,自己翻译。支持啊
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

 楼主| 发表于 2013-2-4 20:27:21 | 显示全部楼层
附录A  NXT的数学基础
当给机器人编程时,你会发现很多时候为了正确的引导他们你需要执行一些基本的运算。虽然我不可能全部介绍每一个你可能会用到的数学计算方法,但我会集中关注你可能会发现很有用的三个简单的主题。第一主题是角度与圈数之间的转换;第二个是计算按照你配置的角度数或圈数走过的路程;第三个是简单介绍你的智能积木块上X/Y坐标系统是如何工作的。
角度与圈数的转换
当我们来到移动模块配置面板的持续时间设置项时,我发现大部分人通常偏向于配置他们的机器人移动一个特定的距离:有些人使用角度,另外一些人使用圈数。很少一部分人会使用秒数(基于时间的移动),但是如果你的机器人完全依赖于精确移动,你不能简单地编程让机器人向前移动如5秒钟,并认为这样一个事实,每次都会移动相同的距离(这问题实际来源于电池——由于电池电量会变低,电机功率就会降低,后面5秒钟移动的距离就会短于先前运行的5秒钟距离)。
不管你偏爱角度还是圈数,你会发现有时需要用到另一种方法;一本书或一遍文章可能包含你正在复制的机器人,其移动模块使用角度设置,而你通常使用圈数。
不错,当你知道在角度与圈数之间相互转换是非常简单时你会很高兴。请看图A-1,我将会给出一些例子。

图A-1  角度与圈数转换的等式

图A-1包含两个简单的公式,上面一个公式是将圈数转换为角度,下面一个公式是将角度转换为圈数。下面我将对每个公式举一个例子。
让我们假设你想让SPOT向前移动9.5圈(9圈半)——很简单,但你的朋友要求将你的程序与她共享,并要求所有的移动模块配置为角度,这个也很简单。你只要简单地看一下图A-1,想要得到一个角度值,你只需将圈数乘以360。通过计算器或人工计算,你将得到角度为3420度。你打开移动模块的配置面板,将持续时间设置改为角度,输入3420,然后与你的朋友分享程序。
好了,一个星期以后,你的朋友通过e-mail给你发了一份她修改后的程序版本,你打开.rbt文件,发现她将所有移动模块的配置使用了角度,但你偏爱使用圈数。这个也很简单修改。图A-1中下面的公式显示你所需要做的只是将角度数除以360。在她的第一个移动模块中,她配置了电机B旋转7543度,如果你计算正确,你会发现7543除以360等于20.95277777!这能行吗?
不错,答案是移动模块只允许你输入最多3位小数,输入20.953作为圈数比较保险,但你会发现NXT电机的精度只能为一位小数位。这由你决定,你需要多次实验才能得到精度,但在大多数情况下,你输入20.9或者21还是比较保险的。再一次,如果必须要保证精度,你需要很多次实验来调整这个值。你可以从21开始,然后每次试验减0.1直到你从电机得到正确的行为。
角度和圈数转换为距离
不错,你编程让SPOT向前移动720度,但他实际将移动多远呢?你所需要的能力只是将角度或圈数转换为英寸或者厘米。好吧,请看一下图A-2,你将看到更多的公式。

图A-2  使用圈数计算距离

在我给你一个例子之前,记得要计算距离,你必须将持续时间换算为圈数。因此,如果你的移动模块中配置为角度,使用图A-1中的第一个公式将其转换为圈数。
现在,让我给你介绍怎样使用这些简单的公式。在我们的例子中,我们想要知道如果将持续时间设置为1080度,SPOT将移动多远。首先我们需要将角度转换为圈数,因此我们简单的将角度数除以360,我们得到3圈。
下一步,根据图A-2,我们需要决定另一个值——轮子周长。这个简单,我给你一个小图来帮助你。你首先要测量轮子直径,直径实际上为轮子中最远两点的距离(同样也是轮子的中点)。你用英寸或者厘米测量轮子直径无关紧要,只要记住你计算的最终距离需要使用相同的单位。
如果你取一个NXT2.0的轮子进行测量,你会发现轮子的直径约为1.75英寸(4.445厘米)。(NXT2.0轮子大约为2.25英寸或者5.715厘米。 )图A-2告诉我们将轮子直径乘以3.14(称为π,π是一个很长数字,但对我们的计算,3.14是足够保险的近似值)就得到轮子周长。如果我们计算正确,我们得到轮子周长为5.495英寸(或者13.9573厘米)。
下一步,图A-2告诉我们移动的总距离为将轮子周长乘以转动的圈数。再一次,如果我们计算正确,5.495英寸乘以3圈我们得到16.485英寸(或者41.8719厘米)。
就这么简单!现在你可以在角度与圈数之间互相转换,同时也能计算电机旋转的距离(也即你的机器人移动的距离)。还有一个小计算留给你,但需要访问互联网。
你是否想知道如何计算向左或向右转所需要的角度或者圈数?如果你想让机器人在原地转弯而不向前或向后移动,你怎样计算某个电机需要转动的圈数或者角度,以完成左转或右转?
答案(及例子),在浏览器地址栏内输入以下URL:
http://thenxtstep.blogspot.com/2006/10/reader-question-submission-2.html
NXT的X/Y坐标系统
我要提供的最后一点信息是如何解释你的NXT智能积木块上LCD屏幕的坐标系统。该LCD屏幕的水平分辨率为100像素,垂直分辨率为64像素,这简单的表明你能够在水平方向放置100个小点,垂直方向放置64个小点。实际的值是从0开始的,因此X坐标范围为0-99,Y坐标范围为0-63.
当使用显示模块(或者其它需要在LCD屏幕上指明位置的任何模块),你可以使用水平值(X坐标)及垂直值(Y坐标)来指定位置。因此, 当需要直接在屏幕中央放置一个像素(或者点),你需要一个显示模块在X坐标为50,Y坐标为32的地方来画一个点(显示模块的详细使用请见第3章)。
有些人认为使用坐标系统需要一些技巧,但实际上很简单:坐标从0开始,0位于LCD屏幕的左下角。当你向右移动时,X值会增加,向上移动时,Y值会增加。
总结一下,左下角位置像素的X/Y值为0/0。右上角坐标值为99/63。记住,当你只是在LCD屏幕上向上移动时只增加Y值,因此左上角位置像素的坐标值为0/63,右下角位置像素的坐标值为99/0(见图A-3)。

图A-3  智能积木块上LCD屏幕的X/Y坐标系统
图A-1.JPG
图A-2.JPG
图A-3.JPG
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

 楼主| 发表于 2013-2-7 21:52:41 | 显示全部楼层
本帖最后由 James.Yang 于 2013-2-7 22:06 编辑

附录B  SPOT搭建指导
在完成本书的练习时,你可以自己搭建你自己的机器人,但我想在这个附录中提供一个可以使用1.0及2.0版本的机器人套件来搭建一个非常简单的机器人,我称他为SPOT。你将发现你可以在5分钟以内很容易搭建SPOT,使之成为一个测试你的NXT-G程序的伟大的小巧的机器人。
图B-1显示了搭建SPOT时用到的部件。图B-2显示了一个完整的SPOT机器人的两个侧面——分别使用了1.0及2.0版本的轮胎。在这两幅图中间的图显示了搭建机器人一步步的步骤。
图B-1.JPG
图B-1-1.JPG
图B-1-2.JPG
图B-1-3.JPG
图B-1-5.JPG
图B-1-7.JPG
图B-1-9.JPG
图B-1-11.JPG
图B-1-13.JPG
图B-1-15.JPG
图B-1-17.JPG
图B-1-19.JPG
图B-2.JPG
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2013-2-8 08:53:45 | 显示全部楼层
本帖最后由 dxlwf 于 2013-2-8 08:58 编辑

楼主辛苦了!能坚持翻译这样一本书下来,真不容易!
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

 楼主| 发表于 2013-2-8 20:53:12 | 显示全部楼层
附录C 图像编辑器
我在第3章提到过,NXT 2.0版本软件具有一个能够允许你创建自己的可以在LCD屏幕上显示的小图像的工具。这个工具称为图像编辑器,它使用非常简单。本附录我将与你一起探讨创建自定义图像。
打开一个图像
打开你的NXT-G软件(2.0版本)后,点击工具菜单并从下拉菜单中选择图像编辑器。图C-1显示了打开后的图像编辑器。

图C-1  图像编辑器允许你为你的程序创建自定义图像

学习如何使用这个工具的最好方法之一是打开一个现成的图像,然后作些修改。要做到这一点,点击图像编辑器左上角的打开按钮,你将会打开一个显示目前存贮在你计算机硬盘上的图像列表的新窗口,如图C-2所示。

图C-2  选择一个现成的图像来作些修改
我选择了Boom.ric但你可以随便选取任何你喜欢的图像。当你点中了文件后,点击确定按钮,这个图像将会在图像编辑器中打开,如图C-3所示。

图C-3  选中的图像将装载到图像编辑器中


注意:在编辑现有图像或者创建自己的图像时必须牢记,能在NXT智能积木块的LCD屏幕上显示的图像大小被限制在图像编辑器工作区的可见部分。如果你想要让图像在屏幕上显示,它必须适合网格工作区。

修改一个图像
我现在想编辑图像内部的文字“Boom”并将其改成其它东西。要做到这一点,我将用到图像编辑器左侧的可以使用的按钮工具。在图C-4中,我选择了擦除工具,我简单的按下鼠标按钮并拖动指针到我想擦除的任何像素。

图C-4  擦除工具允许你从图像中擦除像素

下一步,我选择了画笔工具。当我按下鼠标按钮后,画笔工具经过的任何像素将被填充。我还可以回去使用擦除工具来修正错误。图C-5显示了我的新图像,我称之为“Zap”。

图C-5  画笔工具允许你填充屏幕上的像素

我可以在图像编辑器右上角的预览窗口中看到我编辑的效果。除了擦除及画笔工具外,我还可以使用矩形工具来画正方形及矩形,椭圆工具来画圆及椭圆,文本工具来放置文本到屏幕上。还有一个选择工具来圈住部分图像,然后将选择的部分进行移动。在工具按钮下方是小,中,大按钮,这些按钮允许你来改变使用矩形或椭圆工具画图时边的粗细。最后,在图像编辑器左下方还有撤消及重做按钮,允许你来修正错误(点击撤消按钮)或者返回一些东西如被你擦除的图像部分(点击重做按钮)。
保存图像
当完成创建自己的图像后(或者修改了原有图像),你所需做的就是保存你的工作。点击保存按钮并给你的新图像一个名字,如图C-6所示。如果你是修改原有图像,不要覆盖原来的图像——始终记得给你编辑的图像一个新名字。图C-6显示我将文件保存为Zap。

图C-6  用一个简短而唯一的名字保存你的图像
保存你的图像后,点击关闭按钮来关闭图像编辑器工具。
使用你的图像
现在所欠缺的就是通过显示模块来显示你的图像。拖放一个显示模块到你的程序中,并滚动文件清单直到找到你创建的新图像文件名。图C-7显示了我已定位到Zap图像并选中它让其在LCD屏幕上显示。

图C-7  使用显示模块将你的新图像显示在智能积木块的LCD屏幕上

这就是图像编辑工具!我有一个自定义的图像,我可以在我的NXT-G程序中使用它并在LCD屏幕上显示一个大大的“Zap!”。
图C-1.JPG
图C-2.JPG
图C-3.JPG
图C-4.JPG
图C-5.JPG
图C-6.JPG
图C-7.JPG
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

 楼主| 发表于 2013-2-9 20:03:38 | 显示全部楼层
本帖最后由 James.Yang 于 2013-2-9 20:18 编辑

翻译后记
翻译是件痛苦的事,对于一个业余的非专业的新手来说,尤其痛苦。期间曾多次想放弃,但想到一开始我就作出了承诺——自主翻译完整版,我必须要完成它。虽然论坛上有很多高手,他们可能不需要这本书了。但当我想到其间也有许多象我一样的新手,他们可能苦于找不到合适的中文资料而放弃加入LEGO这个队伍;可能还有一些孩子,当他们拿到父母买给他们的LEGO机器人时,由于找不到合适的中文资料而让其束之高阁;可能还有一些父母,想教孩子学习LEGO机器人,但由于找不到合适的中文资料而放弃这个念头。所有这些,都成为我要完成这篇教程翻译的巨大动力。
经过几个月寂莫的、没有任何回报的辛苦,现在终于完成了整个翻译工作。在翻译的前期,我一直是个纯粹的理论空谈家,没有LEGO机器人进行实际操作,感谢我的爱人给予我的支持,使我真正拥有了一台属于自己的LEGO机器人;还要感谢我的女儿,她一直吵着要学习LEGO机器人,这是我完整个翻译工作的主要动力,她还是我翻译文稿的第一阅读人。
还要感谢中文乐高论坛提供了这个平台,使我们这些初学者能有一个学习交流的空间,同时也要感谢论坛上的一些朋友,糖伯虎在我第一天发布这个文档时,就给我了100乐币的奖励,ycbb也给了我10乐币的奖励,还要感谢其它一些朋友的鼓励话语,这些都是我坚持下去的动力。虽然后续回复少了,但看到帖子浏览人数的上升,说明还是我很多朋友在关注我,这也是我坚持下去的动力。
由于本人水平有限,书中的翻译有不足之处,有些专业术语使用不当,请各位读者能够批评指正。
本中文教程仅供各位学习之用,不能用于任何商业用途。任何用于商业用途的行为都是对原作者的侵权,由此造成的后果由其承担,本人不承担任何责任。同时本人保留所有权利。


杨喜刚

2013-2-9除夕
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复 3 0

使用道具 举报

 楼主| 发表于 2013-2-9 20:32:45 | 显示全部楼层
本帖最后由 James.Yang 于 2014-6-23 13:33 编辑

LEGO MINDSTORMS NXT编程指南(中文版).pdf

LEGO MINDSTORMS NXT编程指南(中文版).part1.rar

6.2 MB, 下载次数: 16321

LEGO MINDSTORMS NXT编程指南(中文版).pdf

LEGO MINDSTORMS NXT编程指南(中文版).part2.rar

5.37 MB, 下载次数: 14311

LEGO MINDSTORMS NXT编程指南(中文版).pdf

评分

参与人数 2乐币 +2 人气 +2 收起 理由
robotlego + 1 + 1
萤火虫_Crystal + 1 + 1 非常感谢楼主分享!学习中

查看全部评分

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-21 18:18 , Processed in 0.106698 second(s), 20 queries .

Powered by Discuz! X3.5

Copyright © 2001-2020, Tencent Cloud.

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