论文阅读:Knowledge-based instruction of manipulation tasks for industrial robotics
0. 摘要
当机器人在动态环境中工作时,与缺乏广泛的机器人技术知识的人接近时,强烈需要简化用户交互并使系统尽可能自动执行,只要可行。 对于制造业中与人类并肩工作的工业机器人,必须使用AI系统来降低对编程时间和系统集成专业知识的需求。 只有通过构建具有适当知识和推理服务的系统,才能充分简化机器人编程以满足这些需求,同时仍能获得强大而有效的任务执行。
在本文中,我们介绍了一个我们已经意识到可以满足上述要求的系统。 本文着重于为机器人设备和制造任务创建的本体中的知识,并提供了AI相关服务的示例,这些服务使用技能的语义描述来帮助用户充分地指导机器人。
1. 介绍
高效,廉价的计算和存储硬件的可用性,一方面是对大数据和适当处理算法的深入研究,另一方面是语义网和推理算法的深入研究,使得人工智能研究的现有结果在许多应用领域中都具有吸引力 。
基于知识的范式的采用速度不仅取决于领域的复杂性,还取决于所使用的经济模型和主要参与者的观点。 可以通过与工业机器人技术(面向应用程序,私有的)对抗服务机器人技术领域(主要是研究型,大多数是由公共资助,使用开源解决方案,在非标准化且尚未合法编纂的领域中开展工作)来很好地说明这一点。 资金(使用常闭软件)在法律上严格控制的环境中增强解决方案的可重复性和可靠性)。
当机器人在动态环境中工作时,与缺乏广泛的机器人编程知识的人接近的情况下,强烈需要简化用户交互并使系统尽可能自动地执行(但要尽可能合理)。 这也促使将AI技术集成到机器人系统中。 对于在制造业中与人类并肩工作的工业机器人,基于AI的系统对于降低所需时间和专业知识的编程成本是必要的。 我们相信,只有通过构建具有适当知识和推理服务的系统,我们才能充分简化机器人编程,以满足这些需求,同时仍然能够实现强大而高效的任务执行。
在本文中,我们提出了一个基于知识的系统,旨在满足上述要求。 本文重点讨论了我们为机器人制造领域创建的知识和本体,并介绍了AI相关服务的示例,这些示例使用技能的语义描述来帮助用户充分指导机器人。 尤其是,采用的语义方法使我们能够将技能视为机器人制造中的说明性,可移植性和直接适用知识的组成部分。
本文的结构如下:首先介绍机器人技能,然后介绍系统体系结构。 下一节介绍了知识库中可用的机器人技能本体和其他相关本体,以及系统提供的一些服务。 接下来,我们介绍面向用户的界面,即工程系统,并简要描述以非平凡的方式利用知识的程序执行环境,然后描述相关的研究。 最后,我们建议未来的工作。
2. 机器人技能
我们的方法基于机器人技能的概念,因为人类和机器可以通过许多不同的方式来理解它,因此需要在我们的应用领域中对其进行正确定义并使其可用。 本节中的介绍采用了历史的观点,表明了我们对技能的理解如何推动了我们已创建系统的能力。
我们最早部署的系统是在欧盟项目SIARAS:可重新配置的自动化系统的基于技能的检查和组装的背景下开发的。 它的主要目标是建立智能系统的基础,该系统称为技能服务器,能够支持现有制造流程的自动和半自动重新配置。 尽管技能的概念很重要,但我们仍将设备视为本体的起源。 那时我们的想法是,技能只是设备的功能:没有它们,就不会存在(制造)技能。 一台设备可以提供一个或多个技能,而一个或多个设备可以提供一种技能。我们没有介绍这种区分的任何细节。 从某种意义上讲,所有技能都是原始的,并且与AI计划系统所理解的操作员相对应(世界上的操作模型,使用前提条件,后置条件,有时还包括维护条件来描述)。 这种理解为机器人技能本体siaras.owl的发展奠定了基础,该本体被用于验证给定当前机器人单元程序以(线性)顺序功能图(SFC)表示的特定任务的可配置性。 已经证明这种方法是有效的,但是由于数十个机器人都有各自不同的变体,因此本体的发展非常迅速,并且变得难以维护,因此增加了设备数量。 SIARAS方法的细节已在[16]中进行了描述。 图1和2说明了siaras.owl本体中可用技能的基本层次。
在图1和图2中已经示出了设备的双重层次结构。 在图3和图4中可以看到,而图5显示了可以归因于设备的某些属性。
SIARAS本体的不足,即技能和设备的原子性,固定的参数化和可伸缩性问题,使我们重新考虑了这一想法。 这些计时设备不再扮演中心角色,而技能已成为中心。 在ROSETTA项目中,技能的定义基于所谓的生产(PPR)三角:产品,过程,资源[9](见图6)。 所制造的工件保持在以产品为中心的视图中。 使用与不同抽象级别相对应的概念(即任务,步骤和操作)描述制造本身(即过程)。 最后,资源会在设备中实现(能够感应或制造)。 技能的中心概念将所有这三种观点联系在一起,并且是表示形式的基础之一。
在基于机器人的生产系统的情况下,技能可以定义为参数化动作的协调。 这种协调可以在几个级别上发生,包括排序(例如,通过有限状态机或类似形式表示),配置(通过适当的运动参数设置)和适配(通过传感器估计)。 在此方法的基础上,在我们的案例中基于特征框架概念[10],我们构建了一组与任务级别描述相关的推理方法,例如任务计划。 以下各节介绍了详细信息。
3. 架构
图7说明了描述我们方法预期用途的通用设置。图8非常粗略地描述了系统体系结构。知识集成框架(KIF)是一台包含数据存储库和本体的服务器。 它提供计算和推理服务。 KIF服务器的客户端主要有两种类型:工程系统和机器人任务执行系统,工程系统是机器人编程环境。
任务执行系统是在本机机器人控制器之上构建的一层。 给定任务后,执行系统利用在线代码生成(请参见第5节)生成运行时代码文件,然后编译并执行代码。
工程系统使用KIF提供的本体对工作空间对象建模,并从技能库中下载技能和任务。 同样,工程系统可以将新的对象和技能添加到知识库中。 使用经典编程工具(例如各种状态机编辑器,例如JGrafchart2 [32])创建的技能可以进行解析,并自动用语义数据进行注释,并存储在技能库中。
本文稍后将描述的服务主要由工程系统用于对任务进行编程,计划和安排。
4. 知识整合框架
知识集成框架(KIF)是一个模块,包含一组机器人本体,一组动态数据存储库,并托管为存储的知识和数据提供的许多服务。 它的主要存储结构是芝麻三重存储和一组存储在Apache Tomcat servlet容器中的服务。我们在系统中使用的本体来自多种来源,并用于不同的目的。 主要的核心本体Rosetta.owl是一项持续的开发,旨在为工业机器人技术创建通用的本体。 它的起源是在第2节中早些时候描述的FP6 EU项目SIARAS。它已在FP6 EU项目RoSta(机器人标准和参考体系结构,http://www.robot-standards.eu/,[24])中进行了进一步修改。 在FP7 EU Rosetta项目中,此本体已被扩展,重构并在公共KIF本体服务器http://kif.cs.lth.se/ontologies/rosetta.owl上在线提供。 但是,这只是KIF上可用的一组本体中的第一个,对于推理机器人任务很有用。
本体层次结构如图9所示,其中箭头表示本体导入操作。 为了表示物理单位和尺寸,我们广泛使用了QUDT本体和词汇表(数量,单位,尺寸和类型,由NASA发起,可从http://www.qudt.org获得)。 对该本体进行了稍微修改,以适应我们的推理机的需求。 但是,由于QUDT本体导致不一致,因此我们引入了基于替代OM本体7 [27]建立数量,单位和尺寸的可能性。
Rosetta本体的核心(作为其前身)主要集中在机器人设备和技能上。 据此,每个设备都可以提供一个或多个技能,而每个技能都可以由一个或多个设备提供。 生产过程分为任务(可以视为规范),每个任务都由某种技能(实施)来实现。 技能是组成要素:有基本技能(不可分割的)和复合技能。 如果硬件资源和约束允许,则可以并行执行技能。
在核心本体之上,我们创建了许多“可插拔”本体,有以下几种用途:
框架:frames.owl本体处理物理对象(通常是任务中涉及的工件)的特征框架和对象框架。 特别地,特征框架与几何位置有关,因此位置的表示在这里是最重要的。 特征框架之间的约束条件是用运动学链表示的[10],也由该本体引入。
伤害:injury.owl本体处理人类和机器人合作或至少共享公共空间时的伤害风险级别。 本体指定了可能的伤害类型,而从早先的工作[11]中提取或在Rosetta项目[21]期间收集的相关数据被提供为可用于计算伤害风险或伤害风险的上限值。 机器人的回避轨迹。
参数:每个技能可以通过多种方式进行参数设置,具体取决于控制的粒度级别,可用信息或对技能的要求。 为了提供有关知识服务的技能参数化的知识(例如任务一致性检查),params.owl本体描述技能及其强制性和可选参数,其单元和约束。
SFC:sfc.owl本体使用可执行状态机的变体来表征各种行为表示(顺序功能图是其中之一;其他功能包括OpenPLC,Statecharts,rFSM和IML)。 它也包含几种基于图形的程序集表示的语义描述,例如程序集图,约束图或任务图[20],尽管处于相当高的抽象水平,它们也可以被视为行为规范。
此解决方案说明了组成性和增量性的两个重要原则:每个非平凡的知识库都必须由较简单的元素组成,可以由单个设计师或团队创建,而无需使其与所有其他元素保持一致。 将元素插入系统后,应自动(半)执行对齐或冲突解决(例如,不一致)。 因此,应仅强制每个“顶级”本体遵守QUDT(或OM)和ROSETTA本体,而可能忽略并行存在的其他元素。
增量性原则可确保每个“顶级”本体都应适应增量变化,而不会破坏整个系统。 因此,对例如Params本体的更改不应影响例如SFC本体的一致性和实用性。 另一方面,人们可以想象这样一种情况,其中一个模块的更改(例如,在frames.owl中描述的特征帧之间引入新的约束类型)可能会促进另一个模块的改进(例如,给定技能的参数更容易指定, 在params.owl中进行了描述)。
除了存储本体之外,KIF的三重存储还提供了动态语义存储,供工程系统用于更新,修改和重新加载场景图和任务定义。 根据所用存储库的类型,可能会为存储功能提供一些推理支持。 KIF服务提供了更高级的推理以及任意类型数据的通用存储,如下所述。
5. 基于知识的服务
知识库为其客户提供存储和推理服务。 它提供的最基本的服务是访问具有对象和技能的库,用户可以在其中上载和下载对象描述和任务说明。 其中一些存储有语义注释,例如三元组,例如工件,场景图或技能定义。 其他工具则存储为统一的数据块,没有语义上可见的结构(例如RAPID程序或COLLADA文件),尽管其他工具可能会出于各种目的进行访问和有意义地操作。
这些服务主要是面向用户的,提供了编程帮助,并且可以逐步用于创建工作区,然后将任务序列从高级规范细化为低级代码。 通过向场景中添加机器人,工具,传感器和工件,为对象属性提供相关值并定义对象之间的关系来创建工作空间(请参见第6节)。
用户使用工件及其关系指定任务。在最高级别上,任务由装配图表示[20]。图10显示了手机的示例装配图。装配图通常是一棵树(不一定是二叉树)。叶片是原始工件,它们被连接到以父节点表示的子装配体中,而整个装配体则以根表示。可以用更多信息来注释每个子组件,例如对象之间的几何关系或使用哪种类型的连接机制(例如,胶合,卡扣,拧紧)。该树对操作施加了部分顺序,其中必须首先执行子程序集。从汇编图给出的任务规范转到可执行程序时,必须对任务进行顺序化。根据机器人或协作机器人的数量,可以通过几种方式(技能)来实现顺序。最初,服务验证技能的设备要求。图11显示了将屏蔽罐插入印刷电路板(PCB)上的技术实现的设备要求。此技能仅具有三个设备要求:已安装的工具(这是操作要求),固定装置和力传感器(尽管未在图中显示)必须垂直对齐。在计划序列时,计划者会添加满足前提条件的动作(请参见图12中的示例),例如将对象移动到适当位置。
但是,该序列也可以由用户手动创建,也可以使用自然语言指令界面直接创建。 以后,可以使用同一计划者来验证序列是否满足每个动作的先决条件(图13)。
自然语言界面在其他地方有更详细的描述[29,30]。 用户在文本字段中指定或键入英语说明(请参见图14中的示例)。 输入的文本被发送到KIF上的自然语言服务,其中的句子被解析为谓词(动词)及其对应的自变量。 每个动词都有不同的含义,具体取决于上下文和含义,例如谓词take in脱掉鞋子的含义为take.01,但是在比赛中的Take句子中的含义为take.09。 鞋子和比赛是谓词的论据。 每种感觉都有许多预定义的自变量,例如,执行任务的演员,被操纵的对象,源或目的地。 这些自变量标记为A 0,A 1等。动词的意义和自变量均使用[4]中所述的统计方法确定。
自然语言服务输出从句子派生的程序语句的初步形式。但是,与世界上现有的动作和对象的匹配是在工程系统中完成的。最简单的形式是,程序语句包含一个动作(谓词)和一些自变量(对象)。然后将动作映射到机器人程序模板,同时使用参数的名称和类型将参数映射到工作空间中的物理对象。以这种方式描述的动作可以是拾取,放置,移动和定位对象。可以使用动作期间或停止动作时必须保持的条件来表达更复杂的程序结构,例如在x方向上搜索“ Search”直到接触,而在z方向上保持5N。使用图14中给出的使用ShieldCanInsertion将屏蔽罐组装到PCB的示例语句具有技巧ShieldCaInsertion作为要使用的参数(这又是嵌套的嵌套参数,请参见图15的底部)。使用不会映射到机器人动作,而是会提示您在KIF库中搜索相应的技能。以参数作为参数来实例化该技能,或者在找不到匹配的参数时使用默认值来实例化该技能。例如,在本体中描述了ShieldCanInsertion,其中有一个驱动对象和一个固定对象,它们映射到A 1 –屏蔽罐和A 2 – PCB。
这些程序可以在物理机器人上或在工程系统的虚拟环境中进一步编辑或直接执行。
还存在调度服务,该服务可帮助用户将操作分配给资源有限的系统。 服务的当前实现是基于列表计划的。 操作技巧需要不同的末端执行器,例如用于抓握和拧紧。 通过在单元中添加工具更换器,机器人可以在任务期间更换末端执行器。 更改工具所花费的时间被添加为对操作优先级的惩罚。 当有多条手臂时,在进行两手臂操作时,一个手臂当然可以在等待另一手臂完成其操作的同时更换工具。 服务的典型输入可以是在具有三个工具和一个力传感器的两臂机器人上安排部分订购的任务。 每个操作都列出了其估计时间以及资源要求,所需的工具和资源。 给定估计的更换工具时间和周期数,该服务将输出建议的时间表,以最大程度地减少总时间。
这里命名的最后一个服务是任务执行系统使用的代码生成服务。 下文第7节对此进行了描述。
6.工程系统
工程系统是一个高级编程接口,可作为编程和仿真IDE ABB RobotStudio的插件实现,如图16所示。创建工作站时,可以手动生成对象,例如机器人,工件,传感器,托盘和固定装置 在工作站上下载或从KIF下载以及相应的本体。物理对象的特征在于其局部坐标框架,对象框架和许多称为特征框架的相对坐标框架,请参见图17。几何约束表示为特征框架之间的关系,并且可以如图18所示。
图19中显示了一个示例程序序列。该程序具有嵌套的层次结构,其中的步骤(例如拾取或放置)可能包含原子运动和机械手动作。
7. 执行
图19中的序列被发送到执行系统,执行系统依次调用代码生成服务,该服务返回完整的状态机(在XML文件中序列化),该状态机使用JGrafchart工具[32]进行可视化,编译和执行。 它创建一个任务状态机,其中每个状态要么是对机器人上原始函数的调用,要么是嵌套技能。 图20显示了生成状态机的一小部分。 每种技能都可以从KIF检索并使用新参数实例化,或者通过为给定的机器人和对象创建闭合运动学链从头开始生成。 供应商特定的代码使用本地机器人控制器执行,而更复杂的基于传感器的技能则使用外部控制系统执行[6],状态机在必要时在这两个控制器之间切换。
为了确保安全执行,使用存储在KIF中的数据评估了不同速度下的受伤风险,并适当调整了最终机器人速度。
8. 相关工作
任务表示法一直是机器人技术领域的重要领域,尤其是对于自主机器人研究而言。最初的方法是基于逻辑作为表示的通用语言。可以在[7]中找到有关早期工作的良好概述。第一个自主机器人SHAKEY将这种方法发挥到了极致:其计划系统STRIPS,计划执行和监视系统PLANEX及其学习组件(三角表)均基于一阶逻辑和推论[26]。这种思维方式继续存在,导致了诸如Patrick Hayes(参见[7])的“天真物理学”或“机器人物理” [28]之类的努力。由于当时可用的计算能力不足,该开发停止了,但是最近在语义Web的更广泛上下文中受到了很多关注。尽管一般的自动化问题通常仍超出此限制,但规划技术[14]也已取得很大进步,并且如今可用于复杂程度很高的情况。
后来,出现了混合体系结构,其顶部是推理层,底部是反应层,中间是各种形式的同步机制。 如今,这种构建自主机器人的方法非常流行[3],研究人员试图在抽象,说明性描述和任何控制方法之间找到合适的接口。 该问题一直持续到今天,只有其复杂性(或解决方案的复杂性)随时间和可用的计算能力而增长。
工业机器人技术环境中的任务描述也采用分层表示和控制的形式,但是所使用的语言受到更多限制(因此更适合有效实施)。 存在许多标准化方法,例如,基于为可编程逻辑控制器设计的IEC 61131标准[18]或由机器人制造商提供的专有解决方案,但是,这些解决方案在很大程度上相互不兼容。 像RoSta9这样的欧盟项目正试图改变这种状况。
在理论层面上,将连续形式和离散形式主义相结合的所有方法都可以视为混合系统的变体或扩展[15],可能是分层的。 混合控制体系结构允许我们在某种程度上分离关注点,其中连续和实时现象在系统的一部分中处理,而离散方面则通过适当的离散工具进行处理。 我们早期的工作试图以声明方式指定这种混合系统,但仅限于基于知识的配置[16]。
机器人系统通常由许多分布式异构硬件和软件组件构建而成,这些异构硬件和软件组件必须在执行阶段进行无缝交互。 为了简化配置,通信并隐藏系统的复杂性,并提高可移植性和模块化,存在几种用于机器人中间件的框架(请参阅综合调查[12,23])。 模块功能可以作为ROS10环境中的节点提供,也可以作为RT-components [1]中的标准化组件提供,其中模块可以提供具有明确规定的接口的黑盒类型的计算。
任务描述根据上下文,应用程序域,所考虑的抽象级别,可用工具等而有不同的伪装。通常,任务是由技能组成的,被理解为可用设备的功能[5],但是是找到合适组成的方法 从很多工作流程中的手动排序,到受AI影响的任务计划[14],混合自动机开发工具[15],状态图[17]和顺序功能图(SFC)[18],iTaSC规范[10],到 用具体的机器人编程语言开发整体程序,例如ABB RAPID。
已经进行了几次尝试来编纂和标准化机器人技术的词汇。 存在一个旧的ISO标准8373,但是需要进行重大修订以适合现代机器人技术的需求。 IEEE机器人与自动化学会正在引导一些工作,以实现机器人本体的标准化。 尤其是,虽然没有像本文所述的ROSETTA本体那样发达,但还是有机器人核心本体的初稿[8]。 关于工业机器人技术,起源于NIST [2]的关于套件本体的工作可能被认为是解决该问题的早期尝试。
在服务机器人领域,有几种系统利用基于知识的方法,并依赖于基础本体,例如在ROBOHOW项目中使用的KNOWROB [31](基于通用OPENCYC本体[22])或该系统的一些参与者。 机器人项目12 [33]。 但是,由于服务机器人中任务和技能的差异非常大,因此他们并未尝试对领域进行标准化。 另一方面,KNOWROB本体已成为数个实验机器人系统中使用的事实上的标准。
9. 总结
我们已经展示了基于知识的通用系统架构及其在工业机器人系统中的可能用途。特别是,我们采用了这种方法来表示和实现在工业环境中由单臂和两臂ABB机器人实现的力控制任务。提出的通用本体要么是新颖的,要么是我们先前研究的衍生。语义工具和显式知识在工业机器人技术中的使用尚处于初期阶段,仅有少数其他已发表的示例[2]。这些想法已通过实验验证,并在当前正在进行的欧盟项目PRACE13和SMErobotics中运行良好。实施的系统只是概念的证明,从这项工作中衍生的系统必须经过可用性,安全性和性能测试,然后才能被认为可用于工业实践。但是现在已经可以强调的是,基于知识的方法使我们能够创建非平凡的组装技能的可组合表示形式,这些表示形式在不同型号的ABB机器人之间是可重复使用的,而且还可以移植到其他供应商和控制体系结构(例如在[19]中报道并在Kuka LWR4机器人上运行的机器人)。
上面介绍的工作已经在持续进行中,涉及到一个异构系统的集成,该异构系统由运行基于ROS的控制系统的移动机器人平台(Rob @ Work)和运行特定于ABB的控制的实时启用的ABB操纵器组成 软件,因此这两个部分可以作为集成的,基于知识的生产型机器人系统无缝地一起运行。 这项工作包括在选定的机器人中间件环境中部署基于知识的服务。
未来的工作包括为IEEE标准化工作做出贡献,并与其他研究小组协调并共享机器人本体。 还需要有关ROSETTA核心本体的在线文档。 基于知识的服务的数量应通过执行期间的在线推理,几何推理以及集成的路径规划和优化来扩展。 我们还在其他制造领域(例如木工和机械加工)中验证了这种方法,期望适当地扩展本体。
我们在本文描述的工作中发现,技能不仅仅是执行协调动作的潜力。 [25]中已经提出了这种思路,其中指出了技能的业务方面。 我们计划在不久的将来探讨这个主题。