다음을 통해 공유


Microsoft Robotics Studio与LEGO机器人

image   

何宗键,微软Windows Embedded MVP,同济大学软件学院的讲师。目前负责"微软——同济移动与嵌入式中心"的工作。主要兴趣为基于Windows

CE的嵌入式系统与Windows Mobile移动设备。熟悉Platform Builder和Windows CE内核以及BSP开发。

 

 原文地址:https://omale.blogcn.com/diary,12431003.shtml

盖主席(Bill Gates)20年前发表过一篇语录,说:“要让每个家庭的桌子上都有一台PC机,每个PC上都跑的是Windows操作系统”。经过广大无产阶级革命群众二十年的艰苦奋斗之后,现在再回头看,语录的内容虽然没完全实现但是也差不多了。

去年,盖主席在接受《科学美国人》杂志采访的时候,又大海航行靠舵手般创造性高屋建瓴的为革命群众指明了新的路线方针和政策:“二十年后每个家庭都要有一个机器人,每个机器人上也要跑Windows操作系统”。伟大革命群众接到最高指示与最新指示后无不欢欣鼓舞,以饱满的热情投入新的革命事业。

为了响应Chairman的号召,微软党支部迅速成立了Robotics革命委员会,该委员会高举机器人都要“带三个表”的伟大旗帜,以科学机器人观为指导思想,经过将近一年的火红革命战斗历程,终于隆重推出了Microsoft Robotics Studio 1.0。为每个家庭都有一个机器人打下了坚实的基础。

以上纯属娱乐,今天我们要说的,是Robotics Studio与LEGO机器人开发平台。

首先说一下LEGO机器人:

legorobot
图:LEGO NXT

目前的机器人主要有专用,通用等几类。专用的如流水线控制等等,这种基本是不可能走入寻常百姓家的。可能走进百姓家的就是一些通用机器人,例如可以帮你打扫垃圾什么的。

乐高公司以前是做儿童玩具的,后来开始做机器人,最早的一个版本叫RCX,现在在做的叫NXT。RCX是8位处理器,功能什么的都不是很强。而NXT则大大强化了硬件功能,列表如下:

主处理器 32 位ARM7 处理器
协处理器 8 位AVR 处理器
蓝牙无线通讯
输入端口 4个6 线数字接口
输出端口 3个六线数字接口

乐高提供的是一大堆积木,再加一个控制电脑以及一些传感器,图上的那个机器人是我们用积木自己拼出来的,这个机器人可谓左青龙右白虎武装到牙齿了,左手是音频传感器,右手是压敏传感器,控制系统在中间,脑袋是超声波传感器,两个腿是两个马达,某部位还有一个广电传感器。当然还可以拼出很多其它形状的机器人。它的肚子,就是控制的关键模块。

因为有了蓝牙功能,所以使NXT可以跟众多的拥有蓝牙的外设交换数据,我们现在做的很简单,就是让它跟我们的Smartphone通过蓝牙进行交互。这样子,Smartphone可以收到机器人上传感器采集的数据,然后也可以通过蓝牙给机器人发送命令。这样子,一些复杂的多媒体处理(图像处理,语音识别,TTS等)都可以在Smartphone上面完成,然后机器人负责比较简单的机械动作和传感器数据采集。

架构有了,还要介绍一下我们现在在做的功能。想想中的功能很多,例如实现简单的人机对话,然后通过图像识别帮你捡垃圾什么的。目前第一步要做的,是让机器人能够24 X 7运行。要解决的第一个问题是电源问题。NXT是可以充电的,充一次电可以跑8个小时左右。我们现在正在做的是让机器人在房间里兜圈子,然后通过Smartphone的摄像头采集视频数据,然后分析墙上的插座位置,分析到了之后干嘛呢?找到了之后就让机器人自己跑到插座边上,自己把插座插上去,然后自己给自己充电,充满了再把插座拔出来,继续兜圈子。目前正在进行中,效果还是不错的。再加上简单的TTS根语音识别技术。以后还想做机器人自己把自己插到电脑上,更新自己脑子里的内容,做好之一定后会让一群人大吃一惊,呵呵。做完之后我们会拍一个Video,放在MS的网站上,让大家欣赏。

作为程序员的你,是不是对如何给机器人写Code激动上了,选择很多,可以用C语言,可以用java。甚至还可以用乐高公司提供的所谓的G语言,就是跟VB差不多,一大堆东西,用鼠标拖拖拽拽,不用写代码,就可以生成一系列的逻辑,控制机器人乱跑了。

其实偶们现在的系统,虽然是Embedded,但是没有用到Robotics Studio,只是借鉴了一些MSRS的一些思想。最后说一下Robotics Studio是什么吧。

像乐高这种提供机器人平台的公司目前世界上不止一家。微软现在正在做的事情,就是把这些机器人厂商提供的开发平台统一封装一层,给上层提供一个统一的接口。,懒得画图了,就用ASCII码画一个架构图:

------------------------
| MS VPL 
------------------------
------------------------
| CCR / DSS |
------------------------
------------------------
| 统一封装 |
------------------------
------------------------
|  LEGO | iRobot |…… |
------------------------

最底下是不同公司提供的机器人平台,例如了高,例如iRobot等。然后上面是微软为这个机器人平台做的一层统一封装,其实可以看作是Robotics Studio对于不同硬件平台的驱动程序。有了这一层统一封装之后,就可以向上层提供一个统一的接口。然后上面可以说是MSRS的真实内容。微软不愧是一个软件公司,在MSRS中,CCR和DSS两个平台其实是跟机器人一点都不沾边的基于.NET技术的纯软件,微软跟他叫服务,提供了很多异步啊,并发啊,容错啊等服务。哎,这一层做的很复杂,其实用在非机器人平台也可以,但是也就是这一层,把很多初学者吓跑了。最上面的一层是微软开发的一个语言叫VPL,跟乐高的G语言差不多,托托拽拽写代码。只不过乐高的G语言只能跑在自己的机器人上,而微软这个VPL语言可以跑在很多机器人平台上。也就是这点显示了MS统一机器人平台的决心。无论你玩的是什么机器人,都可以用MSRS和C#写程序。