1.1 机械/工业机器人控制系统及软件
1.1.1 机械/工业机器人控制系统
数控机床、自动化设备和机械/工业机器人等产品主要由主体、驱动系统和控制系统3个基本模块组成。主体即机座和执行机构,包括机械臂、夹具、旋转机构、行走机构等。大多数机械/工业机器人有3~6个自由度,驱动系统包括动力装置和窗洞机构,用以驱动执行机构产生动作。控制系统按照输入的程序对驱动系统和执行机构发出指令信号,并进行控制。
传统的机械/工业机器人控制系统的功能如下。
● 记忆:存储作业顺序、运动路径、运动方式、运动速度和与生产工艺相关的信息。
● 示教:离线编程、在线示教等。
● 与外围设备联网:输入/输出、通信网络及同步接口。
● 故障诊断安全保护:运动时的系统状态监视、故障状态下的安全保护和故障自诊断。
●位置伺服:机器人多轴联动、运动控制、速度和加速度控制、动态补偿等。
● 其他:坐标设置、人机接口和传感器接口。
1.控制系统硬件结构
控制系统是自动化装备的核心。近年来随着微电子技术的发展,微处理器的性能越来越高,而价格越来越低,目前市场上已经出现了1~2美元的32位微处理器。高性价比的微处理器为机器人控制系统带来了新的发展机遇,使开发低成本、高性能的机器人控制器成为可能。为了保证系统具有足够的计算与存储能力,机器人控制器多采用计算能力较强的芯片,如ARM系列、DSP系列、POWER PC系列、Intel系列等。此外,已有的通用芯片在功能和性能上不能完全满足某些机器人系统在价格、性能、集成度和接口等方面的要求,催生了机器人系统对片上系统(System on Chip,SoC)技术的需求。将特定的处理器与所需要的接口集成在一起,可简化系统外围电路设计,缩小尺寸,并降低成本。例如,Actel公司将NEOS或ARM7的处理器内核集成在FPGA产品上,形成了一个完整的SoC。在机器人运动控制器方面,研究团队主要集中在美国和日本,如美国的DELTA TAU公司、日本的朋立株式会社等,它们都有成熟的产品面世。运动控制器以DSP(数字信号处理)技术为核心,采用基于PC的开放式结构。
2.控制系统体系结构
在控制系统体系结构方面,研究重点是功能划分和功能之间的信息交换。开放式控制系统体系结构有两种基本类型:一种是基于硬件层次划分的体系结构,该类型体系结构比较简单,如三菱重工株式会社生产的PA210 可携带式通用智能臂式机器人;另一种是基于功能划分的体系结构,它将软件、硬件一同考虑进来,这是控制系统体系结构研究和发展的方向。
当代机械/工业机器人涉及力学、感知、优化、控制、计算机、通信等多个专业学科门类,又涉及各种各样的软件、硬件,还涉及复杂多变的应用场景,要求控制系统的软件体系结构具备高适用性、高稳定性、高可扩展性,对控制系统提出了诸多挑战,例如:
● 支持机器人各种控制策略的实现与切换;
● 实现多层级/多模块间的实时数据交互;
● 保证诸多功能的并行不悖;
● 进行长时间稳定运行而不进入错误状态;
● 设计友好的人机交互。
3.控制系统软件开发环境
在软件开发环境方面,一般的机械/工业机器人公司都有自己独立的开发环境和独立的机器人编程语言,如日本的Motoman 公司、德国的KUKA 公司、美国的Adept 公司、瑞典的ABB 公司等。很多大学在机器人开发环境(Robot Development Environment)方面已进行了大量的研究工作,提供了很多开放的源代码,可在部分机器人硬件结构下进行集成和控制操作,目前已在实验室环境中进行了许多相关实验。国内外现有的机器人开发环境有TeamBots、ARIA、Player/Stage、Pyro、CARMEN、MissionLab、ADE、Miro.v.CVS、MARIE、FlowDesigner、RobotFlow 等。从机器人产业发展来看,对软件开发环境的需求来自机器人最终用户,他们不仅使用机器人,而且希望通过编程赋予机器人更多的功能,这往往需要采用可视化编程环境来实现,如乐高 MindStorms NXT的图形化编程环境和微软Robotics Studio提供的可视化编程环境。
4.专用操作系统
(1)VxWorks。VxWorks是美国WindRiver公司于1983年设计、开发的一种嵌入式实时操作系统(RTOS),是 Tornado 嵌入式开发环境的关键组成部分。VxWorks 具有可裁剪微内核结构;任务管理高效;任务间通信灵活;中断处理是微秒级的;支持 POSIX1003.1b 实时扩展标准;支持多种物理介质、标准及完整的TCP/IP网络协议等。
(2)Windows CE。Windows CE 与 Windows 系列操作系统有较好的兼容性,这无疑是Windows CE推广的一大优势。Windows CE为建立针对掌上设备、无线设备的动态应用程序和服务提供了一种功能丰富的操作系统平台,它能在多种处理器体系结构上运行,并且适用于那些对内存占用具有一定限制的设备。
(3)嵌入式 Linux。由于其源代码公开,人们可以任意修改,以满足自己的应用需求。其中大部分修改都遵从 GPL,嵌入式 Linux是开放源代码并且免费的,用户稍加修改后就可以应用于自己的系统。嵌入式 Linux 有庞大的开发人员群体,不需要专门的人才,只要懂UNIX/Linux 和 C 语言即可,支持的硬件数量庞大。嵌入式 Linux 和普通 Linux 并无本质区别,PC 上用到的硬件几乎都支持嵌入式 Linux,而且各种硬件的驱动程序源代码都可以得到,这为用户编写自己专有硬件的驱动程序带来很大的方便。
(4)μC/OS-Ⅱ。μC/OS-Ⅱ是著名的源代码公开的实时内核,是专为嵌入式应用设计的,可用于8位、16位、32位单片机或数字信号处理器(DSP)。它的主要特点是源代码公开、可移植性好、可固化、可裁剪,以及具有占先式内核、可确定性等。
(5)DSP/BIOS。DSP/BIOS是 TI 公司特别为 TMS320C6000TM、TMS320C5000TM 和TMS320C28x 系列 DSP 平台设计开发的一个尺寸可裁剪的实时多任务操作系统内核,是 TI公司Code Composer Studio开发工具的组成部分之一。DSP/BIOS主要由3部分组成:多线程实时内核;实时分析工具;芯片支持库。利用实时操作系统开发程序,可以方便、快速地开发复杂的DSP应用程序。
5.伺服通信总线技术
目前,国际上还没有专用于机器人系统的伺服通信总线,在实际应用过程中,人们通常根据系统需求,把常用的一些总线技术,如以太网、CAN、1394、SERCOS、USB、RS-485等用于机器人系统中。目前,伺服通信总线大致有两类,即基于 RS-485 和线驱动技术的串行总线及基于实时工业以太网的高速串行总线。
1.1.2 机械/工业机器人控制软件及其重要性
控制软件被誉为系统的“灵魂”。机器人的控制软件由3部分组成:常用动作执行软件、多信息综合处理软件和外部信息识别软件。机器人的常用动作执行软件的功能就是前进、后退、转向、夹取物件等。机器人在执行任务时,各种因素都会影响执行结果,因此多信息综合处理软件要对外部信息、数据库中的信息进行比较后再决策,决策结果就是及时调整机器人的各种动作。软件是决定机器人功能和性能的关键因素。
可以毫不夸张地说,机械/工业机器人的每个动作的完成都离不开控制软件的支持,操作者的每个意图都必须依靠控制软件才能实现。同时,控制软件还有一个明显的发展趋势,那就是它所完成的功能将越来越多。随着大数据、云计算、移动互联网等新一代信息技术同机器人技术相互融合速度的加快,3D 打印、人工智能迅猛发展,机械/工业机器人的软件复杂性越来越高,控制软件的功能安全受到企业和用户的极大关注。
1.1.3 机械/工业机器人控制软件体系结构
机械/工业机器人控制软件系统十分复杂。这是因为机器人需要在一个充满噪声和具有不确定性的环境里实现传感器的实时感知、控制器的实时控制。而且,机器人控制软件系统需要在完成指定任务的同时,监控并对意外情况采取措施,这些功能的协调、异步执行,增加了系统的复杂性。一个严谨、完善的软件体系结构,加上支撑软件体系结构的编程工具,可以很好地应对机器人控制软件系统的复杂性,但是目前尚无适合所有应用的通用软件体系结构。不同的体系结构有不同的优缺点。
1.软件体系结构发展
机器人编程始于1960年,斯坦福大学研究团队开发了名为Shakey的机器人。Shakey由摄像头、测距仪、碰撞传感器组成,其通过音频和视频接口连接到DEC PDP-10和PDP-15,如图1-1所示。
Shakey的软件体系结构分解为3个功能模块,分别是感知(Sensing)、计划(Planning)和执行(Acting)。感知模块把摄像头采集的图像转换成内在环境模型;计划模块结合环境模型和目标,生成一个能达到目标的计划;执行模块拿到计划后,发送指令给机器人。整个体系结构被称为感知-计划-执行(Sense-Plan-Act,SPA)结构,如图1-2所示。在之后的多年内,几乎所有的机器人控制软件体系都遵循这种SPA结构。
20世纪80年代,SPA结构的问题逐步出现。首先,计划生成在任何真实的环境中都要花费很长的时间,机器人可能会一直等待计划模块完成任务而停止所有的动作。其次,也是最重要的是,执行一个计划但没有实时感知周遭环境(与传感器联动)在动态场景下是非常危险的。在这种情况下,一些新的机器人控制软件体系结构开始出现,包括无功规划,计划可迅速生成,并且更依赖传感数据而不是内在的环境模型。当时最有影响力的是Brooks的包容式体系结构,共由不同层次互相作用的有限状态机组成,实现从传感器到执行器的直连。包容式体系结构示例如图1-3所示。
图1-1 机器人Shakey
图1-2 SPA结构
图1-3 包容式体系结构示例
在包容式体系结构中,多种行为可能在任何时候都处于活动状态,因此该体系结构包含了一种仲裁机制——可以使较高级别行为抢占较低级别行为的信号。例如,简单地驱动机器人在随机方向上运动,更高级别的行为可能需要传感器输入、检测障碍物并引导机器人避开障碍物。在没有障碍的环境中,更高级别的行为不会产生信号。但是,如果它检测到障碍物,则会覆盖较低级别的行为并引导机器人避障。一旦障碍消失并且较高级别的行为停止发送信号,较低级别的行为就会再次取得控制权。由此,可以构建多个相互作用的行为层,以生产越来越复杂的机器人。
然而,这种基于行为的机器人能力很快就达到了极限,实现长期目标行为非常困难,并且机器人的行为几乎不可能再优化。例如,在办公楼内投递邮件的机器人,可以通过在办公楼周围徘徊来寻找房间,然后进入房间投递邮件。但是,使用基于行为的体系结构来设计这样一个系统,安排当天的邮件以最优的顺序访问办公室,以最大限度地减少交付时间,是非常困难的。从本质上讲,机器人需要早期体系结构的规划功能,这些功能必须与基于行为的体系结构的反应性相结合,因此促进了多层机器人控制软件体系结构的发展。
2.多层机器人控制软件体系结构
国外科学家设计了一种开始于底层的机器人结构,机器人行为在 Rex 语言中被编程为同步电路。中间层是一个条件序列器,基于并行程序语言实现,它将持续激活和停用 Rex 技能,直到机器人的任务完成。这种三层(3T)结构(计划、执行和行为控制)已被多代机器人应用,如图1-4所示。
图1-4 三层结构原型
Syndicate结构将3T结构扩展到多机器人协作中。在Syndicate结构中,每层的机器人不仅与上、下层的机器人相通,而且在同一层上也与其他机器人相通(见图1-5)。通过这种方式,人们可以在多个抽象级别设计分布式控制循环。
图1-5 Syndicate结构
除此之外,美国国家标准局(NBS)为美国国家航空航天局(NASA)开发的NASA/NBS标准参考模型(NASREM),后来被称为实时控制系统(RCS),是早期的用于遥控机器人的参考模型(见图1-6)。该参考模型是一个多层结构,其中每一层都具有相同的总体结构,但是从伺服层到推理层,运行频率越来越低。
图1-6 实时控制系统(RCS)参考模型
3.机器人软件体系结构实现
机器人软件体系结构提供了大概视图,我们可根据该视图中部件的功能分解(或组成)进行建模。但是,使用高内聚功能模块构成的概念不能被有效地描述和模块化。例如,实时性、容错性和安全性等非功能性要求,是在软件系统多个部分出现且不能被限制在单个模块中的属性。为了满足这些要求,软件开发工作主要集中在保证控制程序的高效实现,以及利用特定硬件平台的功能在特定操作环境中执行特定的一组任务。
机器人软件工程师在设计过程中有时会因关注软件系统性能和代码验证而忽视软件系统的其他质量属性,如可维护性、互操作性和可重用性。因此,机器人研究实验室可能会以开放源代码库的方式提供一大批实现了机器人功能、算法和控制范例的应用程序。但在稍微不同的应用场景下,它们是无法重用的,因为对操作环境的假设和约束在软件实现中是被隐藏和硬编码的。
在过去的几年里,软件工程的许多方法(基于组件开发和基于模型驱动工程)已被逐步引入机器人软件系统的构建中,以简化机器人的开发并提高质量。现代机器人控制系统通常被设计为基于组件、分布式的系统(逻辑上),其中组件是实现单元,在设计中还会考虑系统基于代码的实现方式。
在机器人软件体系结构设计中,组件之间的交互通常比传统业务应用程序的更复杂。在开发机器人时,软件开发人员面临传感器和电机之间及多种处理算法之间基于事件、反应和分布式交互的复杂性问题。管理多个(分布式)活动对共享资源的并发访问是主要问题之一。出于这个原因,机器人特定的、基于组件的框架和工具包被开发出来,它们提供了实时执行、同步和异步通信、数据流和控制流管理及系统配置机制。
4.最新的机器人软件体系结构
1)敏捷机器人开发网络(aRDnet)
aRDnet是德国宇航中心(DLR)机器人和机电一体化研究所开发的软件套件,支持为具有硬实时要求的复杂机电系统开发基于分布式组件的系统。aRDnet 已用于实现在机器人Justin的所有51个自由度(DOF)上运行kHz范围内、计算要求严格的控制回路,如阻抗控制和碰撞规避。机器人控制系统是一个由功能模块和通信链路构成的网络,它们分布在由千兆比特以太网等快速数字总线连接的计算机网络上。
aRDnet 功能块是具有多个输入和输出端口的软件模块,用于隐藏实际的传输协议。例如,用户数据报协议(UDP)套接字或 EtherCAT 与互联模块交换数据。根据同步数据流计算模型,功能块可以由单独的进程执行或者按照同步组进行分组(用于与机器人硬件连接的功能块)。不同的同步组可以通过非阻塞读取和写入操作进行异步交互。
2)YARP机器人平台
YARP是一个开源项目,由意大利热那亚大学的LIRA-Lab 与美国麻省理工学院的计算机科学和人工智能实验室(CSAIL)合作开发。它的设计思想与aRDnet相同,即高自由度机器人,如人形机构,并提供分布式控制系统。它包含一个轻量级的软件库,可在多个操作系统上使用、测试及分布式编程。与 aRDnet类似,分布式软件模块通过输入/输出异步通信端口交换数据。与aRDnet不同的是,YARP 端口可以根据不同的协议(TCP、UDP、多播等)以不同的数据传输速率管理给定模块的多个连接,从而允许配置服务质量(QoS)模块间的通信:输出端口可以将数据发送到多个目的地,而输入端口可以接收来自多个连接的数据。
3)开放机器人控制软件(Orocos)
Orocos是自2001年以来用于机器人开发的开源框架之一。Orocos的研发重点一直是提供一个硬实时功能组件框架,即所谓的实时工具包(RTT),用C语言实现,并且尽可能地独立于任何通信中间件和操作系统。与aRDnet和YARP类似,根据数据流通信范例,组件通过无锁输入/输出端口异步交换数据和事件来相互作用。
Orocos的区别性特征是组件模型的定义,它指定了并发活动的标准行为。具有实时性、确定性和循环行为的组件获得用于计算的固定和循环时间,并且在计算周期内它们必须达到稳定的中间状态。Orocos 组件被实现为基类 TaskContext的扩展(继承),拥有自己的执行线程,并且可以作为共享相同地址空间的对象或利用 CORBA(公共对象请求代理体系结构)中间件进行通信的可执行文件进行部署。
4)SmartSoft
SmartSoft是一个开源框架,专门解决机器人控制系统软件组件之间通信相关的问题。与Orocos类似,它定义了一个基于端口的组件模型,具有一组丰富的标准组件接口(称为通信模式),它具有严格定义的交互语义。
● 发送:定义与客户端/服务器关系的单向通信。
● 查询:定义与客户端/服务器关系的双向请求通信。
● 推送最新/推送定时:具有发布者/订阅者关系的1对 n 分发(广播)事件;具有客户端/服务器关系的异步条件通知。
● 动态接线:具有主/从关系的动态组件接线。
SmartSoft是首批基于 Eclipse 建模项目的机器人软件开发开源工具链的开源框架之一。工具链实现了一个工作流程,通过自动建模到模型转换,指导软件开发人员实现从机器人软件体系结构的高级设计到组件的开发和部署。
5)机器人操作系统(ROS)
ROS是一种基于消息的点对点通信基础设施,支持易于集成/独立开发的软件组件。因此,ROS是由一组彼此通信的节点组成的计算图。节点是功能块,被实现为封装机器人软件库的类,并提供对底层基础结构(ROS 内核)通信的访问机制。节点被组织成分组(包含库、节点和消息定义的文件系统文件夹),这里被分组为专题堆栈,即导航堆栈。消息是可以嵌套到复合消息中的类型化数据,并且以异步方式根据发布/订阅通信范例在节点之间交换,而不需要节点彼此了解及同时参与交互。消息按主题组织,主题对应于订阅者感兴趣的事件。当节点收到属于订阅主题的消息时,异步调用消息处理程序,对消息有效负载执行某些计算并生成给定主题的新消息,以发布计算结果。
ROS的区别性特征是 ROS 库中缺乏强制体系结构。例如,ROS 节点被设计为可单独重用的组件。应用程序是通过配置各个节点来构建的,以便它们交换常见主题的消息。这种特征有利于各种机器人子领域的专家对许多小型封装进行分散式开发。
6)GenoM/BIP
GenoM是由LAAS CNRS机器人组开发的面向组件的软件包,用于指定和实现机器人系统体系结构的功能级别。GenoM 组件是控制服务的集合,它执行有限状态自动机,并由一组称为代码的C 语言函数实现,这些函数在特定的状态转换(启动、执行、报错等)期间得到适当调用。GenoM组件通过共享内存区域交换数据和事件。
GenoM的典型特征是集成了行为-交互-优先级(BIP)框架。BIP是一个软件框架和工具集,用于正式建模和验证复杂、实时的基于组件的系统,以保证机器人控制系统的正确构建。BIP 用于生成正式交互模型,该模型可用于系统级协调以运行(使用 BIP 引擎)由所有GenoM模块组成的功能层。BIP允许使用连接器对复合组件进行分层构建,连接器将GenoM组件的端口互相连接,并为两种基本通信模式(呼叫/提供者和广播/收听者)建模。
7)机器人最佳实践项目(BRICS)
BRICS是上述项目的补充,它是由欧盟委员会资助的联合研究项目。其根据模型驱动工程原理正式确定机器人的开发过程,并提供了工具、模型和功能库,允许减少机器人软件系统的开发时间,特别是在机器人的开发过程中引入了组件框架和软件产品线的概念。这种方法促进了对现有软件或软件知识的常规使用,帮助构建新的软件,从而可以利用应用程序之间的需求、体系结构和设计之间的相似性来实现软件质量、生产力和业务性能方面的实质性收益。