LEGO可视化控制语言:NXT-G

在十一月份TIOBE语言排名中,一门特殊的编程语言NXT-G首次跻身跃入排行榜的前20,位列第17名。NXT-G编程语言的特殊之处在于其并非是提供给专业程序开发者的编程语言,而是由丹麦著名玩具制造商 乐高(LEGO)公司为NXT机器人玩具设计的可视化编程语言。

头脑风暴(Mindstorms)是乐高出品的可编程机器人系列玩具,NXT 2.0是目前乐高机器人系列的主打产品。第一代Mindstorms机器人于1998年问世,定名为RIS(Robotics Invention System),搭载了由日本瑞萨电子提供的8位微控制器,由专用红外接口向处理器中载入设计好的程序来控制机器人行为。时隔8年后,乐高于2006年发布了新一代机器人Mindstorms NXT,并在2009年推出了功能升级后的NXT 2.0,以满足玩家在组装机器人时对颜色传感、蓝牙设备等高级功能的需求。

NXT的核心是一块被称为智能积木的处理器,能够通过RJ12规格的4芯水晶头线缆接受四路传感信号,并能够控制三个马达协同运转。此外,NXT智能积木搭载了一块100×64像素的单色LCD显示器,可以在机器人运行中通过内置的层级菜单接受用户的按键命令或组织简单的处理步骤。

NXT-G是对应智能积木处理器的可视化编程控制语言,能够帮助机器人实现简单或复杂的控制流程,如马达驱动、传感器输入合并、完成计算任务并实现流程控制。完成后的程序通过USB或蓝牙传输将程序和音频文件装载到NXT模块中,以赋予LEGO机器人生命,NXT还支持模块间文件拷贝和通过智能手机的蓝牙连接进行实时控制。

NXT-G的交互式编程环境基于国家仪器(National Instruments)的LabVIEW软件提供,LabVIEW最大的特色就是以图形化编程G语言来组织程序,编写程序的展现形式为具备特定逻辑结构的框图。各模块功能实现则由LabVIEW中能完成各项编程任务的庞大函数库提供,包括数据采集、数据显示、数据存储、GPIB通用接口总线、串口控制、数据分析、蓝牙通讯等。此外,LabVIEW可视化编程环境提供了与传统IDE环境相同的程序调试工具,如断点设置、以动画方式显示数据及其子程序的结果、单步执行等功能。

NXT-G编程环境对Windows和Mac OS X都提供了良好支持。除了NI LabVIEW软件外,还有不少支持NXT-G编程的软件程序。包含NXT-G零售版和NXT-G教育版、LEGO基于LabVIEW简化定制的RoboLab工具,乐高机器人专用的汇编指令NBC,以及基于NBC编译器实现且语法与C语言相似的高级语言NXC等。

目前乐高公司已将NXT智能积木的固件设计开源,BricxCC(Bricx Command Center)支持开发者使用C、C++、Pascal、Forth以及Java语言完成乐高RCX模块的程序控制。同时,BricxCC能够在NXC(Not eXactly C)和NBC(Next Byte Codes)的支持下完成面向LEGO Mindstorms NXT机器人的编程控制。

在教育应用方面,LEGO每年还举办充满乐趣的主题聚会LEGO工程大会,旨在为LEGO MINDSTORMS系统在教育社区和社团中的推广提供交流机会。在一年一度的LEGO工程大会上,教师们能够相互分享经验和想法,集思广益为LEGO MINDSTORMS在课堂上的应用寻找新的思路。

NXT-G在TIOBE语言排名中的提升,从一个侧面反映了可视化编程语言的流行趋势。如果你是喜欢自己动手又对自动控制感兴趣的程序开发者,不妨尝试一下乐高NXT积木和NXT-G编程环境,LEGO一定会为你带来丰富的体验和乐趣。

本文曾发表于《程序员》杂志-2010年12期-“程序天下事”栏目。