宜昌老张

基于微软MSRDS的XBOX手柄操控乐高机械手车的编程

0
阅读(4448)

基于微软MSRDS软件的XBOX360手柄操控乐高机械手车 实验全景图

    下文中有实验视频!

    为了这个作品,我特地买了一个微软XBOX360无限电玩手柄,感觉像是原装的,网址:http://item.taobao.com/item.htm?id=9903395970

 

MSRDS软件的安装

    Microsoft Robotics Developer Studio(MSRDS)是机器人领域的应用程式开发工具,支援各式各样的硬体、应用方案及使用者,整合各厂牌的硬体元件,成为机器人软件开发的通用平台。

    希望您的电脑安装Win7操作系统。在安装MSRDS之前,首先要确保计算机上已经安装了Visual Studio Express Editions C# 2010,安装完Visual Studio Express Editions C# 2010后,再安装Microsoft Robotics Developer Studio Express Edition R4。Visual Studio Express Editions C#的下载网址是

http://www.microsoft.com/visualstudio/en-us/products/2010-editions/visual-csharp-express  

    MSRDS有三个版本:商业用的Standard Edition版,学术单位用的Academic Edition版和免费的Express Edition版。想要取得免费的Microsoft Robotics Developer Studio R4 Express Edition,可以在微软机器人MSRDS的http://www.microsoft.com/robotics/网站去下载。

    下载网址:http://www.microsoft.com/en-us/download/details.aspx?id=29081。进入网页后会出现如下画面。

 1.1前言

    Microsoft Visual Programming Language(Visual程式语言,VPL)是微软在机器人开发平台所发展的程式,让开发机器人应用的程式设计师,用流程图的概念来设计机器人应用程式,让非专业程式设计的机器人玩家,也可以轻易设计出动作灵活的机器人。

    Microsoft Visual Programming Language就是利用像Visio流程图软体的概念来做为程式设计的方法。程式设计师一样利用丰富的内建活动元件或服务元件来架构应用程式的每个动作或程序,然后用线条来建立每个动作或程序的相依性与执行的先后性。VPL详细的服务元件请见附录B。

   请点选系统的功能表:【开始】→【所有程序】→【Microsoft Robotics Developer Studio 2010 R4 Express】→【Visual Programming Language 2010 R4 Express】,以启动Visual Programming Language,见图1。启动画面见图2,经过了一小段时间之后,就可以见到Visual Programming Language的设计画面。

 图1 执行VPL

 图2 VPL启动画面

     图3就是VPL的开发环境。在开发环境左侧上方区域1为「基本活动元件」(Basic Activities),左侧下方区域2为「服务元件」(Services),中间区域3为「程序设计区」(Diagram),右侧上方区域4为「项目管理」(Proiect),右侧下方区域5为「元件属性」(Properties)。一个典型的VPL应用程式,都是由「基本活动元件」和「服务元件」内的元件组合而成。把这些元件拖曳到程序设计区,然后通过连线,定义元件与元件之间的关系,也可以在元件属性区定义每个元件自己专有的属性,就可以完成VPL应用程序。

 图3  VPL程式开发环境

     利用VPL所撰写的乐高NXT机器人专属应用程序,要让它在乐高机器人上执行,必须透过蓝牙通讯,PC机与NXT控制器(NXT Brick)连接,才能控制乐高机器人。换句话说,VPL所撰写的机器人应用程序,并不会直接下载到NXT Brick,而是在电脑执行VPL程序,把输出的指令透过蓝牙输入到NXT Brick,进而来操纵机器人的伺服电机或接受传感器所传回的信息。

 

1.2实现乐高机械手车操作的步骤

 

1.2.1乐高机械手车NXT Brick与电脑的蓝牙连接

    如果您的电脑没有蓝牙装置,可以在外接USB接口蓝牙适配器,见图1-1,实现电脑的蓝牙功能。不是所有的蓝牙适配器都适合NXT控制器的蓝牙通讯的,NXT的蓝牙芯片必须是CSR的,所以插在PC机USB口上蓝牙适配器的芯片也要是CSR的。当然很多笔记本电脑本身带蓝牙设备,比如我手头的联想笔记本电脑,就自带蓝牙设备,可以直接与乐高机器人蓝牙通讯。

 

图1-1蓝牙适配器

    首先插入蓝牙适配器,在WIN7操作系统的右下角任务栏中会出现蓝牙图标,鼠标右键点击它,见图1-2,选择添加设备,产生设置窗口,见图1-3。不过在此之前必须打开乐高机器人的NXT 控制器的蓝牙,才能成功添加设备。

图1-2蓝牙快捷菜单

 

图1-3添加设备画面

      再点击【下一步】按钮,会出现图1-4画面,PC机蓝牙适配器与NXT控制器,密码配对,密码为1234,按下NXT控制器的“橙色”按钮,见图1-5,密码配对成功。

图1-4配对画面

 

图1-5 NXT控制器                    

    配对成功后,再右击图1-2蓝牙快捷菜单,点击【打开设置】,在「COM端口」窗口,见图1-6。

 

     蓝牙输入输出端口是多少,记住“传出”端口号。PC机生成的端口号不一定每次都相同,现在我的端口为COM14,这个数值“14”将会出现在下面的MSRDS程序的NXT控制器的NXT Brick模块设置中。

    在WIN7环境下,找到蓝牙设置窗口还有一种方法。

 

    点击控制面板→硬件和声音→添加Bluetooth设备,这样也可以建立PC机与NXT控制器进行蓝牙连接。双击“设备和打印机”,出现下图设备图标,点击NXT设备,即可查询到NXT控制器蓝牙串口信息。

      双击以上红圈标注的设备图标,从出现的窗口,可以看到蓝牙通讯的串口号。

 

1.2.2乐高机械手车的编程

本次编程要实现的任务:

 

(一)Xbox 360手柄摇杆控制机械手车左右两车轮马达B、C的功率,从而实现机械手车的前进、后退和转向;

(二)Xbox 360手柄Y和A按钮控制机械手车的机械手马达A的功率大小和正负,从而实现机械手抓起或放下物体。

实验视频:

 

开始在VPL中编程:

(1)从软件界面左侧的“Services”库找到「Lego NXT Brick(v2)」服务元件,将它拖曳至程序设计区,见图1-7。

图1-7添加「Lego NXT Brick(v2)」服务元件

(2)再点击NXT控制器模块,在软件界面右侧「编程元件属性」“Properties”设置栏里,设置参数,PC机软件与NXT控制器的通讯方式为Bluetooth,根据操作系统的蓝牙软件中显示的串口号设置串口为“9”,波特率设置为“115200”,意思是让系统来选择合适的波特率。我把NXT控制器模块的名字从原来“LegoNXTBrickV2”改为“LegoNXT1”,见图1-8,(不改名字,随您想法)。注意:SerialPort的参数值必须是:电脑蓝牙设置软件和NXT控制器配对后,产生的“传出”端口号。


图1-8 设置NXT控制器模块参数

(3)设置NXT控制器模块参数完后,拖曳拖曳「XInputController」服务元件和「If」活动元件到程式设计区里。连接「XInputController」服务元件的讯息端与「If」活动元件的输入端,见图1-9。接着弹出“Connections”对话框,选择“ThumbsticksChange”,见图1-10,按下【OK】键。

图1-9    

                          

图1-10

(4)接着编辑「If」活动元件里的逻辑。点击「If」活动元件下方的“+”可以新增逻辑行,编辑过后如图1-11。


图1-11「If」活动元件的逻辑

(5)接着完成两车轮的马达B、C的驱动编程,完成图1-12的编程。接着拖曳「LegoNXTDrive」服务元件至程序设计区,在软件界面右侧“Properties”设置栏里,设置参数,见图1-13。

图1-12   

图1-13「LegoNXTDrive」参数设置

将「Join」输出端连接「LegoNXTDrive」输入端,「Connections」和「Data Connections]

对话框见图1-14。完成后程序为1-15。

 

图1-14「LegoNXTDrive」服务元件的「Connections」和「Data Connections」对话框


图1-15  机械手车轮的驱动程序

(6)类似的,编辑驱动机械手马达A的程序,见图1-15。连接「XInputController」服务元件的讯息端与「If」活动元件的输入端,接着弹出“Connections”对话框,选择“ButtonChanged”。如下图。


图1-15机械手车机械手的驱动程序

(7)程序编写完毕,见图1-16。点击软件界面顶部菜单栏中的“>”运行按钮,当然前提是MSRDS软件与NXT控制器蓝牙连接要正确,然后出现了「Run窗口」。窗口中出现“Your project is now running.”,见图1-17,说明编译正确,MSRDS软件不断发出蓝牙命令,控制着NXT控制器的运行。在VPL程序运行,千万不要点击图1-17的“Stop”按钮。


图1-16机械手车整个程式


图1-17  「Run窗口」

    注意:程序在PC机的MSRS软件中,不在NXT控制器里,NXT控制器只是执行者。NXT控制器发出一声“嘟”的声音,NXT控制器已被MSRDS程序控制,在图1-8中,参数设置栏中的ShowInBrower的“勾”,可以打,如果有“勾”,当程序运行时立即会出现一个浏览器页面,在这个页面中,你可以监视NXT机器人的电气部件动作。见图1-18。


图1-18浏览器监控画面

 

MSRDS R4版程序请下载:11548751835789.zip

    越来越多的行业应用计算机技术来进行仿真,并利用网络技术实现远程控制。当今世界,机器人已经成为一个基本组成部分,真正的机器人已经被广泛地应用到现实生活中。机器人领域的研究费用巨大是很多学者的困扰,仿真软件尤其是机器人软件平台的出现大大减小了这一困扰。微软机器人工作室Microsoft Robotics Studio(MSRS)软件作为一种新兴的专业机器人仿真软件,在机器人仿真方面有其特有的优点。

    目前机器人研究的最大挑战是机器人开发厂商没有提供标准的作业软件,因此,在各种装置上运作的通用运用程式也不存在。某部机器人所用到的程式编码不易运动到另一部机器人身上。但MSRS得推出,使得机器人产业发展达到开放、标准、可重复使用的境界:

(1)机器人的零组件可以重复使用;

(2)所有的机器人硬体,皆遵循一个统一的标准,提供一个标准的存取介面,让程式设计师可以透过这个介面来操控机器人;

(3)为某一机器人所撰写的程式码,可以轻易的植入到另一个机器人上来继续使用;

(4)可以同步处理、分析机器人所装载的感应器,它们所传回来的资料,也可以同步执行不同的动作。

 

这个机械手车作品源于此书,英文名称为Snatcher,它的作者是Laurens Valk,书名是


 The Lego Mindstorms NXT 2.0 Discovery Book,书的封皮介绍如下图: