Microsoft Robotics Studio可以使你在PC机上创建程序来远程控制机器人,在这个软件所支持众多公司的机器人控制器中,当然也支持乐高迷手头的NXT控制器。所以赶快去安装免费的微软机器人软件Microsoft Robotics Studio,简称MSRS。2008版的软件才是免费的!
在安装MSRS之前,首先要确保计算机上已经安装了Visual Studio 2008 Express Editions C##,如果安装该软件,让你重启动,你必须重启,因为重启后,这个软件要继续安装后续程序。彻底安装完Visual Studio 2008 Express Editions C##后,再安装Microsoft Robotics Developer Studio 2008 Express Edition。
Visual Studio 2008 Express Editions下载地址:
http://www.microsoft.com/visualstudio/en-us/products/2008-editions/express
MRDS 2008 R3版下载地址:
http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=17386
软件入门(中文)
http://wenku.baidu.com/view/7573afd349649b6648d747fc.html安装成功后,就可以为NXT机器人套件编程了,看来乐高在国际上还蛮吃香,各大软件公司纷纷把NXT机器人作为他们的硬件对象。MSRS软件与NXT控制器的通讯是蓝牙通讯,你就用XP SP2操作系统自带的蓝牙软件来设置两者通讯接口就行。以下是蓝牙连接方法。
不是所有的蓝牙适配器都适合NXT控制器的蓝牙通讯的,NXT的蓝牙芯片必须是CSR的,所以插在PC机USB口上蓝牙适配器的芯片也要是CSR的,我在淘宝找到一个带天线的适配器,可以用。淘宝网址:http://item.tmall.com/item.htm?id=10422807630&prc=1
插入蓝牙适配器,在XP操作系统的右下角任务栏中会出现蓝牙图标,点击它,产生设置窗口。如果你安装的是精简版XP操作系统,任务栏中就不会出现蓝牙图标,因为精简版XP操作系统精简掉了蓝牙驱动软件。
点击“添加”。
下一步,
PC机蓝牙适配器与NXT控制器,密码配对。密码为1234
按下NXT控制器的“橙色”按钮,密码配对成功。
看看XP操作系统的自带蓝牙软件窗口“COM端口”选项,蓝牙输入输出端口是多少,记住“传出”端口号。你的PC机生成的端口号不一定与我这次配对成功的端口号一样,我的端口为COM7,这个数值“7”将会出现在下面的MSRS程序的NXT控制器模块设置中。
我这次编程的任务很简单,就是:按下NXT控制器上的“Left”按键,A端口电机正转,按下“Right”按键,电机反转,松开按钮,则电机停转。
看看用Microsoft Robotics Studio 给NXT控制器编程的视频演示:
我在网上找到了一个乐高中国代理西觅亚公司撰写的MSRS for NXT入门,可以下载看看。MSRSHadbookforNXT.PDF
Microsoft Robotics Developer Studio 机器人软件为这个任务的编程如下。
程序提供下载。MRDS_test.rar
首先从NXT控制器的设置说起。从软件界面左侧的“Services”库找到“Lego NXT Brick”,双击它,它就自动跑到编程页面上去了。
再点击NXT控制器模块,在软件界面右侧“Properties”设置栏里,设置参数,PC机软件与NXT控制器的通讯方式为Bluetooth,根据XP操作系统自带的蓝牙软件中显示的串口号设置串口为“7”,波特率设置为“0”,意思是让系统来选择合适的波特率。
我把NXT控制器模块的名字从原来“LegoNXTBrickV2”改为“NXT1”,后面介绍的模块也可以改名字。
注意:SerialPort的参数值必须是:XP自带蓝牙设置软件和NXT控制器配对后,产生的“传出”端口号。
上图中,参数设置栏中的ShowInBrower的“勾”,可以打,如果有“勾”,当程序运行时,就会出现一个浏览器页面,用来监视任务中用到的NXT各电气部件动作,视频里有演示。
上图的浏览器页面,就实时监视是否有NXT控制器上的按键被按下。
NXT控制器参数设置好后,就可以从“Basic Activities”库找出“if”模块,从“Services”找出“Lego NXT Buttons”模块,如下图。
用“飘逸”的连线把“NXTButtons”模块的“圆点”输出端口与“if”模块的“三角形”输入端口连接起来。我把模块的名字从“LegoNXTButtonsV2”改为“NXTButtons”。
上图红圈标注的位置值得注意,要按图示方法把“NXTButtons”模块与掌控它的名为“NXT1”的控制器关联起来。
现在开始书写if模块里的逻辑,有趣的是光标位置出现了快捷菜单,提供我选择将要书写的命令,我选择了“PressedLeft”,接着输入了“==”关系符,快捷菜单依然跟着帮助我书写命令,我再选择“true”,于是“if PressedLeft == true”的逻辑就这样“快捷”地生成了。
点击上图“红圈”标注的“+”,产生新的逻辑行,按照上面介绍的方法,“快捷”书写“PressedRight == true”,后面跟着的是“Else”逻辑行,这三个逻辑行的含义是:如果NXT控制器上的“Left”按键按下,则NXT电机正转,如果“Right”按键按下,则电机反转,否则,电机停止。
继续,把“Data”常数模块和“NXTMotor”模块纷纷提取出来,放在编程页面中。
当我连接“Data”模块和“NXTMotor”模块时,那个快捷菜单又出来帮忙了!,太好了,点击选择“SetMotorPower”,意思是“Data”模块里的数值以功率值的形式赋值给“NXTMotor”。
“Data”模块里的数值“1”是满量程功率值,与我们常用的NXT-G软件的功率值不同,NXT-G软件的满量程功率值是“100”。那么用MSRS软件为NXT机器人编程,想把电机功率降低一半,功率值为多少?答案是“0.5”。当有小数点数值时,要把数据格式从上图显示的“int”切换为“double”,否则虽然可以编译通过,但电机不会转,它把“0.5”当成“0”了。
这次任务,我只用了一个电机,把它连接在控制器A马达端口上,在程序中的“NXTMotor”模块也要体现这种连接设置,看下图。
程序全景图中,有三个名字一样的“NXTMotor”模块,它们都指向同一个电机,而且设置也是一样的,我设置好一个“NXTMotor”模块,其它两个,复制粘贴就OK,如果不用这种方法,另两个“NXTMotor”模块无法设置成同名模块。
程序编写完毕,下一步咋办,自然是点击软件界面顶部菜单栏中的“>”运行按钮,当然前提是MSRS软件与NXT控制器蓝牙连接要正确,然后出现了“编译与运行窗口”。
窗口中出现“Your project is now running.”,说明编译正确,MSRS软件不断发出蓝牙命令,控制着NXT控制器的运行。注意:程序在PC机的MSRS软件中,不在NXT控制器里,NXT控制器只是执行者。
NXT控制器发出一声“嘟”的声音,NXT控制器已被MSRS程序控制,立即会出现一个浏览器页面,在这个页面中,你可以监视NXT机器人的电气部件动作。
微软机器人软件支持NXT套件,NI公司的Labview软件也支持NXT套件,说明国际上,NXT机器人的影响是很大的,看来我玩乐高NXT机器人还是有道理的,它可能是目前唯一的较低成本、方便快捷和丰富国际资讯的机器人学习和研究工具。
用户377235 2013-1-6 14:00