来自:中国机器人网
机器人的“操作系统”:Microsoft Robotic Studio
――让你的机器人像个人电脑一样
2 Microsoft Robotic Studio的功能
2.1 机器人服务(Robotic Server)
Microsoft Robotics Studio是基于Windows平台,使学生、爱好者和商业开发者们都能够很容易的创建跨硬件平台的机器人技术应用。Microsoft Robotics Studio仿真运行时技术提供的运行环境能够满足了大部分机器人应用的需求:
1. 当程序运行时,它必须能够监控状态和与单个组件进行互动。
2. 当程序运行时,它必须能够发现、创建、停止和重起组件。
3. 它必须能够处理从多个传感器来的并发输入,并将这些输入变成互不干扰的任务列表。
4. 它必须能够处理自治系统,也能够在本地或者通过网络控制机器人应用。
5. 运行时必须是轻量级的并能够运行在不同的环境中。
6. 应用环境必须具有可扩展性和灵活性,来适应多种不同的软硬件环境。
为了满足这些需求, Microsoft Robotics Studio 运行时提供一个面向服务的架构,它结合了传统基于WEB架构的主要理念和WEB服务来提供高灵活性和轻量级,分布式的应用模型。Web架构主要着眼于轻便性,互操作性和松耦合性。运行在Http协议之上,基于Web的应用已经证明是可伸缩的,具备互操作性,并且能够灵活的适应多种不同的应用场景。
根据微软《Robotics Studio用户指南》,运行时环境包括了CCR(并发与协调运行时)与DSS(分散软件服务)部件,而这些部件必须满足下列需求集:必须能监控状态;当应用运行时能与部件交互;能发现、创建、终止和重新启动部件;能并发地处理多个传感器的输入,并将这些输入组织为任务,而不会有这些任务之间无意干扰的风险;能通过网络同时处理本地与远程的自动与受控机器人应用;运行时重量必须足够轻,从而能在广泛的环境中执行;应用环境必须为可扩展,并有足够的灵活性,以适应各种硬件与软件环境的交互。
CCR通过一个面向信息的变成模型支持异步与并发操作,该模型可以自动揭示出并行硬件与协议信息,而无需使用手工线程、锁定或信标。这种方案使设计者能够建立起更松散耦合的软件模块或部件。独立的CCR .NET DLL可以从任何面向.NET 2.0 CLR(公共语言运行时)的语言中访问。微软在CCR上建立了DSS运行时,且DSS并不依赖于微软Robotics Studio中的任何其它部件。它为管理服务提供了一个主控环境,以及一组架构服务,可以用于服务创建、发现、记录、调试、监控与安全。DSS支持一种轻量级的面向服务应用模型,它结合了传统REST基于Web的架构,以及部分Web服务架构。DSS定义了一个应用模型,它建立在REST模型上,通过它们的状态和对该状态的一组统一操作而展示服务,但通过增加结构化数据操作、事件通知以及服务组织扩展了HTTP(超文本传输协议)应用模型。
DSS的主要目标时提供服务之间的互操作性,不管这些服务是否运行在相同结点或网络上。DSS用HTTP和DSSP(分散软件服务协议)作为服务间交互的基础。基于DSSP的轻量级SOAP(简单对象存取协议)支持结构化状态与事件模型的操作,这改变了结构化状态的驱动。
2.2 可视化编程语言(Visual Programming Language)
微软VPL(虚拟编程语言)图形编辑开发环境采用一种数据流编程模型,而不是控制流模型。一个VPL数据流包括一个连接的动作序列,数据流将其表示为带输入和输出的块,可以将它们连接到其它动作块上。动作可以表示为预构的服务、数据流控件、函数或其它代码模块;动作也可以包含其它动作的组合。VPL面向初级程序员,但该编程语言也吸引高级程序员用作快速原型开发或代码开发。
Microsoft 可视化编程语言 (VPL) 是一种应用程序开发环境,它基于图形化的数据流式编程模型基础上设计,而不是传统编程中常用的控制流。数据流程序更像生产线上接到材料后完成其所负责任务的一组工人,而不是顺序执行的一系列强制命令。因此,VPL 很适合于各种并行或分布式处理情况下的编程。
VPL 面向的是对变量和逻辑等概念有基本理解的初级编程人员。但是,VPL 并不是仅供初学者使用。此编程语言的组合特性对于追求快速原型设计和代码开发的高级编程人员也极具吸引力。另外,尽管它的工具箱是专为开发机器人应用程序而设计的,但其基础结构并不仅限于机器人编程,还可以用于其他用途。因此,VPL 受到包括学生、热衷者和业余爱好者在内的众多用户的广泛欢迎,有些 web 开发人员以及专业程序员也为之所深深吸引。
在Microsoft Robotics Studio中,即使不懂编程的爱好者都可以用可视化编程语言(VPL)像堆积木一样,选择一些服务(比如Lego NXT已经被很好支持),把这些服务按顺序连接,给出输入参数,定义一些计算方法,然后运行,就可以控制一台Lego NXT这样简单的机器人了。
如图2所示,服务列表中列出了很多基本的的服务,如Lego电机、XBOX手控器等,只需把它们拖动到框图板上,设置所需的参数,然后将服务之间顺序连接起来,一个机器人控制程序就完成了。当然,你也可以自定义服务,如果使用到基本过程,那么也同样简单。如果你使用过Matlab的Simulink或是NI公司的LabView,那么这些对你来说更是易如反掌了。