如果您还不知道,Lego Mindstorms 套件是乐高集团出品的机器人套件,零售价约为 200 美元。为此,您将获得大量的乐高积木、一个包含 CPU、LCD 和一些连接器(称为 RCX)的大型砖块、几个电机以及一些光线和触摸传感器,这些传感器使您能够与外部世界互动。
RCX 套件的当前版本是 1.5 版,它将在 2001 年春季被 RCX 2.0 取代。目前,在本文档中,我所说的“RCX”都指的是“RCX 1.x”。1.0 和 1.5 版本之间的差异很小,但 1.5 和 2.0 版本之间的变化可能很大——确切的变化程度尚不清楚。
如果您想更详细地了解硬件(想想:极其详尽的细节,来自那些为了了解其工作原理而真正拆解了 RCX 的人),请访问两个重要的网站:Russell Nelson 的 Lego Mindstorms 内部结构 和 Kekoa Proudfoot 的 RCX 内部结构。没有这两个网站,以下大部分软件都不可能存在。
理解各种 Linux 选项的关键首先是理解 Mindstorms 套件在 MS Windows 下的正常运行方式。简而言之,乐高提供了一个 MS Windows 软件工具,让您(或者更可能是 12-14 岁的孩子)以图形方式为 Mindstorm 组装程序,使用积木隐喻来创建代码。一旦程序以这种方式“组装”完成,该软件会将您的程序编译成字节码。然后,这个字节码被下载到机器人,RCX 的固件在那里处理字节码,并根据字节码中的指令控制机器。除了解析字节码之外,RCX 固件还具有许多类似操作系统的功能:它控制硬件、线程,特别是控制用于与机器人通信的红外端口。它还能够接受来自红外端口或特殊遥控器的特定命令(与完整程序相对),并根据这些命令移动机器人。
标准固件目前是 1.0 版本(即使您购买的是 RIS 1.5 版本)。它有相当严重的限制——例如,由于每个变量都存储在寄存器中而不是 RAM 中,因此最多只能有 32 个变量。但是,您仍然可以使用它做一些非常酷的事情,并且 2.0 版本的固件(现在可以从 LEGO 获取 beta 版)将显著减少这些限制,并且向后兼容 1.x 硬件。
不同的 Linux Mindstorms 程序充当了上一节讨论的软件链中不同部分的替代品。有些程序完全用它们自己的类操作系统系统或语言解释器替换了默认固件。另一些程序生成与标准乐高字节码匹配的字节码,并使用标准固件来解释生成的字节码。最后,还有一些程序仅仅生成遥控代码,使您可以从主机 PC 控制机器人,而无需选择在机器人本身上运行任何程序。这些程序也使用标准乐高固件。
由于这些工具大多数是基于命令行的,因此硬件要求极低——基本上任何 Linux 系统都应该能够运行它们。
一个例外是串口,它必须存在,但在一些较新的“无传统接口”机器上可能不存在。与 RCX 的所有通信都通过红外塔完成,红外塔通过串口连接到机器。因此,如果您没有串口连接,您将无法使用 RCX,除非您可以购买适配器。此外,在某些情况下,可能会出现 IRQ 或串口冲突问题。如果您的调制解调器使用 /dev/ttyS0,则尤其可能出现这种情况。有三种解决方法:首先,尝试使用您的第二个串口连接红外塔。在大多数情况下,这应该有效。如果这没有帮助,那就不要同时使用您的调制解调器和 RCX。如果这是不可接受的,那么请在您的内核编译选项中(在“扩展哑串口驱动程序选项”下)查找“支持共享串口中断”。确保它已启用,并重新编译。
由于 Mac 没有标准串口,LinuxPPC 用户可能需要购买适配器并进行一些修改才能使用这些工具。NQC 作者和 Mac 用户 Dave Baum 编写了关于如何执行此操作的说明。
除了 RIS 之外,乐高还生产另外两个机器人系统——CyberMaster(仅在欧洲销售)和 Scout。不幸的是,我认为这些工具中只有一个(NQC,在第 5 节中讨论)可以与这些其他工具一起使用。一般来说,如果您正在考虑购买 Scout,除非您的经济状况非常拮据,否则还是购买 RCX——额外的投资是值得的。
Vision Command 套件是 Mindstorms 产品线的新增产品,它使用 USB 摄像头来完成一些很酷的事情。不幸的是,由于 Linux 下的 USB 摄像头支持(特别是 USB Quickcam 支持)仍然不稳定,该产品目前在 Linux 下尚不受支持。如果您想自己研究破解它,您可能需要查看此页面,该页面提供了类似 Quickcam 的驱动程序。
由于下面讨论的许多程序都使用官方乐高固件,您可能需要您的 MS Windows CD。您无需启动 MS Windows——您的正常运行时间是安全的 :) 但是,(如果您运行 NQC 或 RCX.pm 等程序),当您的电池没电时,您可能需要挂载 CD 以获取固件。如果您想尽量减少这种情况,请找到文件firm0309.lgo在 CD 上,并将其复制到 Linux 分区上的安全位置。