当大家看到“Microsoft Robotics Studio”这几个英文单词的时候,可能会产生畏惧,因为它提到了Robotics,这个似乎和人工智能相关,或者是那些电子类或自动化类专业的人才所从事的伟大事业,不过,如果你那样想事没有必要,因为我发现,有些电子类或其他专业的学生也一直在问,MSRS到底能做什么?他们每天和单片机或其他的嵌入式设备或机械设备打交道,而如何利用这个基于.NET平台庞然大物他们来说,也是有很大难度的,毕竟他们所做的过于底层,对他们来说是没有必要去了解什么.net的,因为仅仅是单片机或嵌入式方面的技能赚的钱够他们好好的过上美好的生活了,没有必要为了用微软的这个MSRS而去学他,为技术而技术毕竟不是正途 ,为需要而技术才是大道,那么MSRS到底能做什么?搞了这么长时间,我也只能稍略表达下我的浅见,呵呵,废话好多,其实我是个很低调的人。
首先,MSRS是给纯软件开发的技术人员准备的而非专注于单片机等硬件设备的开发人员,确切的说是给纯.NET开发人员准备的,哈哈,看到这句话你有什么感觉?是不是也想试试MSRS呢?
其实说,即使不用MSRS,在单片机上用C/C++/汇编也可以开发机器人,而且功能上也绝不会输给在MSRS开发的机器人,像凌阳的61单片机,凌阳科技就在它上面实现语音识别、图像识别等功能,每年的电子竞赛也有很多学生用它拿了大奖,等等等等,他们可没必要去学什么MSRS,尽管他们看到微软在机器人方面跃跃欲试,看到新技术也想学下,不过我觉得如果他们在MSRS花的时间太多,是容易迷失方向的,毕竟社会是需要大量的单片机嵌入式方面的开发人员的,平时没事玩玩可以,专注于单片机嵌入式方面更重要,把C/C++/ 汇编弄得精通更重要,尽管面对硬件开发很不容易,但搞明白了各个是大牛啊。
当然还要说下,MSRS写的程序也是可以跑着嵌入式设备上的,前提是上面要有windows家族的操作系统,还要安装了.NET Compact Framework,如果你要是精通.NET Compace Framework的话,你绝对最适合学MSRS了,呵呵,因为人们不希望机器人上面托着个笔记本到处跑啊,在机器人上弄个intell或amd那么高端的cpu成本也太高,嵌入式设备最好不过了。
开发一个机器人,要想利用MSRS的话,.NET开发人员和嵌入式开发人员是要相互合作的,同时具备两种技能当然好,但是很难哦,人们不是硬件方面强,就是软件方面强啊,呼呼,
利用MSRS开发的机器人一般是分两个层次的,上位机和下位机,上位机用一个较高端的芯片,运行着windows或wince,下位机当然是单片机之类的芯片8位或16位的芯片,
两方面的开发人员沟通合作机器人就诞生了,呵呵。
对于.NET开发人员,去学这个MSRS ,也是理所当然,因为MSRS就是基于.NET,不要认为自己不是做机器人的,微软这不就给你提供了机会了吗??而且你会发现MSRS提供的架构非常眼熟,这是SOA??Web Service?好眼熟啊,似曾相识的感觉,做过.NET开发的人肯定会有这样的感觉的,不然你就试试看??到最后你会觉得:这个东西不做机器人也可以啊,做游戏都可能哦!呵呵
其次,既然MSRS是给.NET开发人员准备的,那么我们能做什么呢?先看看MSRS提供了什么吧
1、
运行时环境
英文表达是Lightweight REST-style, services-oriented runtime,轻量级的REST结构,面向服务的运行时环境,
包括两个很重要的组件:CCR和DSS,有两篇博客可以在这推荐下,对CCR和DSS做比较多的讲解:
CCR和DSS都是基于.NET平台开发,CCR解决程序并发执行方面的问题,DSS实现了一种分布式的服务运行模型,在一个DSS节点力运行多个服务,DSS节点类似于一个web服务器,而服务类似于web应用程序。
每个服务都提供了一个通过http协议访问的接口,服务维护了一个机器人的状态信息,通过浏览器就可以获得这个机器人的状态信息,状态数据以xml方式呈现,就像是web Service中的soap协议定义的xml,而这里用的是dssp协议。
![](http://www.elooog.cn/upload/xml.jpg)
在MSRS中,服务是一个基本单元,面向服务的架构嘛,所以我们要做的是为相关的机器开发服务,这些服务负责从机器人那里获取数据,如红外传感器,激光测距仪,摄像头数据等,或者负责向机器人发送控制命令,比如控制电机转速,轮子转动方向等等。
这些服务是需要.NET开发人员开发的,内部开发细节还是需要进一步了解的,看到微软为Lego NET机器人开发的服务,这看来似乎不是一个小工程。这些服务做好后,服务的使用者将在VPL这个框图编程工具中使用了,.NET开发人员要做的工作就是要给用vpl的人提供底层服务。
2、
虚拟仿真环境
微软提供了一个虚拟的仿真环境,一个可以模拟现实物理世界的仿真环境,仿真环境中的物体都有重力、摩擦力等物理因素,利用这个仿真环境可以方便的对机器人进行测试,如图是微软提供的一个室内仿真环境:
![](http://www.elooog.cn/upload/room.jpg)
如果你在测试自己的扫地机器人,希望无论放到房间的那个角落,它都能顺利的将整个屋子的地面都清洁到,那这个仿真环境就很有用了,你不必到处跑来跑去的放机器人了,省了很多事哦。
为了提供这样的仿真环境,你需要为你的机器人开发虚拟模型,以及开发这样的一个仿真室内环境,要提到的是,这个三维的虚拟场景是基于
Microsoft XNA Framework.的,这个微软试图来开发游戏的框架,仍旧是基于.NET平台,你可以在上面截图所示的工具中对环境中的物体进行编辑,如图,可以调整iRobot的形态,比如高度,角度,纹理等等。
![](http://www.elooog.cn/upload/vse.jpg)
如果你想自己构建一个机器人模型,可以利用其他的工具来创建模型,然后导入到这个虚拟环境中,例如Google的三维绘图工具,利用这款工具将构建的模型导出为Collada文件,然后用上面的工具导入Collada文件,即可将模型导入了。
虽然模型导入了,但是还有一个问题,如何为这个机器添加传感器呢?如何添加轮子?怎么为传感器和轮子写相关的服务?这方面也是需要.NET开发人员去做的,我还没研究过具体怎么去做,希望过后能看下这方面的资料。
再次,说一下VPL,微软希望通过这个工具来实现机器人的逻辑,通过调用上面提到的底层服务实现对机器人的控制,前面所有的工作全部是服务于VPL的,利用VPL可以实现你自己想要的功能,如循迹、蔽障等等,这些工作可能是做AI的人去研究的吧?怎么使得机器人更加智能?这就需要你在vpl中去写自己的程序了,不过,当程序量太大时,这种数据流框图的可读性个人感觉就差得多了。
利用VPL可以将框图程序进行打包,可以部署到Windows或Wince环境中,还可以将框图程序转换成C#代码,所以,不用VPL同样可以开发的,只是实在很麻烦。
另外说下自己的感觉,用这个微软机器人软件开发平台开发机器人确实要很麻烦,如果不是非要用到他的一些特性的话,还不如直接在嵌入式设备上开发来的快,当所有的服务都做好后,你仍需要在vpl里继续写框图程序,将vpl写的程序部署到机器人上时,整个工作才算是完成了,感觉如果要做个成品机器人,而不要用户在它上面二次开发的话,用msrs就太麻烦了,如果想给用户提供一个可二次开发的机器人,如教育用途的机器人,如Lego NXT,iRobot等,可以用msrs来做,因为msrs许多特性满吸引人的,如数据流式编程,三维虚拟物理仿真环境等。
最后,说点啥呢?其实我在这方面是初学者,在这里胡言乱语,有些东西未必就像我说得那样,哪里不对的话希望各位能提出来,大家讨论,共同进步!!
因为工作原因,有幸能接触Microsoft Robotics Studio,对MSRS也有了自己的理解,希望这篇文章能对您有帮助,对MRSR保持神秘去无从下手的同仁希望这篇文章对您有所引导和启发,如果您精通MSRS,对文章中不对的地方希望能多多指正,非常感激!!
文章转自:http://www.elooog.cn/post/66.html,转自请注明出处。