乐高NXT机器人系统C++程序设计
2012-09-19薛清平李卫红
薛清平,李卫红
(平顶山市科技进修学校 河南 平顶山 467000)
NXT-G、RoboLab 2.9都是乐高公司提供的乐高 LEGO MINDSTORMS NXT机器人系统的图形化的编程工具,除此以 外 , 还 有 Bricx Command Center、RobotC、NI LabVIEW Toolkit、leJOS NXJ、pbLua等第三方提供的编程工具。随着2010年教育部与乐高集团合作的“技术教育创新人才培养计划”项目的开展,乐高LEGO MINDSTORMS NXT机器人系统在各地中小学的推广速度也将加快[1],服务于此,有必要对乐高LEGO MINDSTORMS NXT机器人系统的相关问题尤其是二次开发问题做进一步深入探讨、研究。
1 FantomSDK
作为一个开放式的扩展平台,乐高集团提供了进行乐高LEGO MINDSTORMS NXT系统二次开发所需要的LEGO MINDSTORMS NXT Hardware Developer Kit[2]、LEGO MINDSTORMS NXT Direct Commands[3]、LEGO MINDSTORMS NXT Bluetooth Developer Kit[4]、LEGO MINDSTORMS NXT Communication protocol[5]、Mobile Application Software[6]以 及 作为二次开发不可或缺的SDK文件FantomSDK[7]的非常详尽的资料。
FantomSDK支持C++及NI Labview开发环境,可运行于Windows或MAC系统。乐高LEGO MINDSTORMS NXT机器人系统可通过USB或蓝牙两种方式与PC系统进行连接、通信,对 USB方式,LEGO提供的驱动程序Fantom.sys与NXT设备直接通信;对蓝牙方式,则是把NXT设备映射到一个COM端口,然后通过Win32文件访问端口进行通信。USB和蓝牙两种连接、通信方式,均得到FantomSDK的支持。
FantomSDK提供了Fantom的头文件、Labview的vi支持库以及基本封装类型的使用帮助。iNXTIterator对象用于遍历注册到系统上的 NXT设备,获得iNXT对象,iFileIterator对象、iModuleIterator对象用于获得NXT设备的文件、模块信息。
2 程序应用
2.1 获取设备
NXTIterator对象用于搜索注册到系统上的 NXT设备,获得iNXT对象。createNXTIterator方法产生一个NXT实例,使用后,通过destroy方法进行释放。createNXTIterator(ViBoolean,ViUInt32,tStatus)方法中 ViBoolean 参数为 true,则搜索通过USB、蓝牙连接的所有NXT设备。若ViBoolean参数为false,则仅搜索通过USB连接的NXT设备。获取NXT设备的具体C++代码如下:


编译、运行后,如果成功搜索到系统上的 NXT设备,通过 getDeviceInfo获 得 NXT 设 备 名 称 (name), 通 过getFirmwareVersion获得系统的通讯协议版本(protocolVersion)、固 件版 本 (firmwareVersion)、Flash 剩 余空间(availableFlash)信息。……
