2.1 工作流和可视化编程工作流用来构建、管理和支持商业流程,它提供了一种用于人机工作分离的新模式:

我们想要的是人只做计算机无法做的。

计算机软件做一切可以自动化的工作。

工作流假设组件和服务已经预先开发好,并专注于组件和服务的接口和互联。

工作流更好地分离了软件架构师和程序员的任务。

图2-1展示了几个主要的软件提供商和软件标准机构开发的工作流语言,它们用于商业和网页应用程序的开发。

机器学习可视化图解 机器人可视化编程软件_机器学习可视化图解

可视化编程通常用来使工作流的概念和结构变得更易于人类构建和理解,特别是在游戏和机器人应用领域已经开发了多个可视化编程语言环境,包括:

  • MIT的Scratch:一个桌面机上的可视化游戏编程环境,广泛用于小学课程中的电影制作和游戏开发。
  • CMU的Alice:一个桌面机上的3D游戏和电影开发环境。它采用阶梯式的方法给用户提供了一个下拉列表来选择可用的函数,广泛用于中学课程中的电影制作和游戏开发。
  • MIT的App Inventor:它使用了一种拖放方式的拼图来构建Android平台的手机应用,广泛地用于高中和大学课程中的手机游戏和应用程序开发。
  • Lego NXT 2.0 & EV3:一个可视化机器人应用开发环境,针对乐高NXT和EV3机器人,广泛用于中学课程中的机器人编程。
  • Intel的IoT Services Orchestration Layer(SOL):一种可视化构建语言,用于连接IoT设备以及组建基于设备的各种功能。SOL运行在Linux操作系统上,泛用于大学课程中的嵌入式系统开发。
  • 微软机器人开发工作室(MRDS)的VPL(Visual Programming Language):发布于2006年,可用于不同提供商的机器人编程,广泛用于高中以及大学课堂中。
  • ASU的VIPLE:本书所使用的主要编程语言环境,它通过连接基本组件来实现物联网和机器人设备的各种功能。

这些可视化编程环境能够让初级程序员使用工作流级别的可视化构件来开发复杂应用程序。Scratch(https://scratch.mit.edu)采用简单的步骤就可以构建一个简单的电影或者游戏。图2-2给出了这些步骤。

机器学习可视化图解 机器人可视化编程软件_嵌入式_02

Alice(http://alice.org)是一个可视化编程环境,支持面向对象的编程规范。它同时支持事件驱动(或者可交互式的)编程规范。Alice在用途和功能上与Scratch相似,但是程序能力更加强大。图2-3展示了Alice程序的一个例子,其中下拉菜单用来选择功能。模块可以用来定义封装一个独立的功能。

机器学习可视化图解 机器人可视化编程软件_嵌入式_03

MIT的App Inventor包含一个基于网页的GUI(Graphic User Interface,图形用户界面)设计器和一个可视化编程环境,用于定义网页GUI的功能。用户可以使用一个模拟器或者真实的Android手机来演示开发的App。App的GUI可以在浏览器的网站中开发(美国的网站是http://appinventor.mit.edu,中国的网站是http://app.gzjkw.net/)。

图2-4展示了在模拟器中进行游戏设计的一个例子及其可视化代码。

可视化编程语言广泛用于机器人编程和教育领域。Lego EV3可视化编程环境是针对EV3机器人的编程而设计的。它允许将一排顺序的功能模块拼接起来。图2-5展示了一个用EV3可视化语言开发的程序,它用到了颜色传感器。

Intel最近发布的SOL使用预定义的组件和服务,用户可以用拖曳的方式设计GUI以及工作流代码。如图2-6所示,左侧的工具箱列出了用于GUI和工作流设计的工具。右侧则显示了一个GUI设计、工作流设计以及应用程序的执行图。

微软机器人开发工作室(MRDS)的VPL(http://msdn.microsoft.com/en-us/robotics/aa731520)是一个设备编程和可视化语言的旗舰产品。如图2-7所示,它是基于强大的.NET框架构建的,并有一个丰富的库支持。

机器学习可视化图解 机器人可视化编程软件_操作系统_04

VPL可用于编程和控制乐高NXT机器人和多种机器人,包括iRobot、Fischertechnik、LEGO Mindstorms NXT、Parallax robots和微软的仿真机器人等。VPL可用于编程从简单到复杂的各种应用,从2006年发布至今,VPL建立了一个巨大的用户社区。遗憾的是,在微软的重构过程中,VPL项目终止了。尽管微软继续支持VPL的免费下载,但VPL不再支持新的机器人平台,例如,VPL不支持取代二代乐高NXT的三代EV3机器人。为了让VPL的用户社区能够继续他们的机器人程序开发,基于对工作流和可视化语言多年的研究和开发,亚利桑那州立大学(ASU)于2015年发布了机器人开发平台ASU VIPLE。VIPLE具有以下特点:

  • 继承了VPL的属性和编程模式,使VPL用户可以直接使用VIPLE。
  • 扩展了VPL支持的机器人平台,例如,VIPLE可以编程乐高的EV3机器人。
  • 在VIPLE程序与机器人之间采用了面向服务的标准通信接口JSON和开源的机器人中间件,可让通用机器人平台接入。
  • 开发了以Linux为操作系统的VIPLE中间件并以Intel Edison机器人作为默认平台和套件。VIPLE中间件已经移植到其他机器人平台。Galileo和Edison的机器人价格不到乐高EV3的一半。
  • 除了具备VPL的机器人编程功能外,VIPLE还支持通用的服务计算。VIPLE支持C#源代码模块的插入,也可以调用Web服务来完成VIPLE库程序中没有的功能。

机器学习可视化图解 机器人可视化编程软件_嵌入式_05

机器学习可视化图解 机器人可视化编程软件_可视化编程_06

ASU VIPLE采用可视化编程。开发者只需绘制应用程序的流程图(规格)而无须编写文本代码。开发环境中的编译工具能够把流程图直接转换成可执行的程序,从而使软件开发变得更容易、更快速。整个软件的开发,就是一个简单的拖放过程。把代表服务的模块拖放到流程图的设计平面,然后用连线把它们连接起来。这个简单的过程可以使没有程序设计经验的人在几分钟内创建自己的机器人应用程序。经过一个学期的学习和动手实践后,学生可以编出较为复杂的智能程序,使机器人能探索未知迷宫并走出迷宫。