473 积分 | 关注 @jadudm 贝里亚学院 Matt 热衷于嵌入式控制可用语言的设计和开发。您可以在 concurrency.cc 上看到他的一些作品,这是一个在流行的 Arduino 平台上进行并行编程的集结点。然而,大部分时间 Matt 作为贝里亚学院的教员忙碌着。 思想开放 版主精选奖 作者 创始成员
撰写的评论
嗨,James,
请看我之前的回复。你绝不会被乐高提供的工具所束缚。
嗨,Greg,
我不想在这篇文章中纠缠于任何一个平台;Mindstorms 在开源方面有着有趣的历史。
RCX 是封闭的,但是当 RCX 被完全逆向工程时,乐高(明智地)没有提起诉讼。pbForth 是我最喜欢的 RCX 项目之一:<a href="http://www.hempeldesigngroup.com/lego/pbForth/homePage.html">一个在乐高积木上运行的完整 Forth 解释器</a>。你发送文本给它,它会在 32KB 的空间中编译并运行。 (我喜欢 Forth。我的意思是,原则上... 一种可扩展语言的语言,你可以用不到 1KB 的闪存启动它。太棒了... 但我离题了。)还有 <a href="http://bricxcc.sourceforge.net/nqc/">NQC</a> (Not Quite C) 和许多其他获得相当大进展的努力。(不过,将软件移植到 RCX 很痛苦... 你所做的一切都是通过红外链接完成的,所以如果你让固件崩溃了,你就失去了调试能力...)
当 NXT 问世时,乐高非常明智地承认了它的社区。它将黑客社区的关键成员聚集在一起,并听取了他们的意见。固件是开放的(但我认为其中有一个受版权保护的短语或其他类似的东西),从一开始,人们就在为 NXT(一个 60MHz、ARM7 驱动的设备)破解新的运行时和语言。可以在设备上获得 JTAG 端口,但作为黑客,你可能想做的大部分事情都可以通过 USB 连接完成。
<a href="http://www.botmag.com/articles/10-31-07_NXT.shtml">已经开发了许多用于编程 NXT 的语言和工具</a>。NXC (not eXactly C)、pbLua(也是 pbForth 的开发者 Ralph Hempel 开发的)和 NXJ(用于 LEGO NXT 的 Java 环境)都是开放解决方案。我已经好几年没有接触过这些了,所以我无法权威地评价它们的成熟度。<a href="http://bricxcc.sourceforge.net/nbc">NXC 是从 RCX 移植的 NQC</a>,因此是一个成熟的工具链,<a href="http://lejos.sourceforge.net/">NXJ 是 leJOS</a> 的修订版,leJOS 是 RCX 的 Java 运行时。Ralph Hempel 是一位伟大的开发者,他是一个很好的例子,说明一个人在对某件事充满热情时能做什么---我认为 pbForth 和 <a href="http://www.hempeldesigngroup.com/lego/pbLua/">pbLua</a> 的绝大多数工作都是他完成的。
(无耻地宣传一下:我们的并行编程环境最近被移植到了 NXT;它<a href="http://projects.cs.kent.ac.uk/projects/kroc/trac/browser/kroc/trunk/tvm/nxt/">现在在我们的代码树中</a>,但在我们将其集成到我们的开发环境并可以用文档支持它之前,还需要一些改进。)
因此,NXT 为人们用他们的乐高机器人做酷炫的、开放的事情铺平了道路。我本应该在文章中更好地强调这一点,但我觉得它可能会变得有点冗长。这就是我们有评论的原因,尽管如此。:)