CN104049573A - 具有可扩展的编程环境的机器人任务指挥器 - Google Patents

具有可扩展的编程环境的机器人任务指挥器 Download PDF

Info

Publication number
CN104049573A
CN104049573A CN201310613292.1A CN201310613292A CN104049573A CN 104049573 A CN104049573 A CN 104049573A CN 201310613292 A CN201310613292 A CN 201310613292A CN 104049573 A CN104049573 A CN 104049573A
Authority
CN
China
Prior art keywords
robot
piece
task
control module
task sequence
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201310613292.1A
Other languages
English (en)
Other versions
CN104049573B (zh
Inventor
S.W.哈特
J.D.亚莫科斯基
B.J.怀特曼
D.P.戴恩
D.R.古丁
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
American National Aviation And Space Travel Office
GM Global Technology Operations LLC
National Aeronautics and Space Administration NASA
Original Assignee
American National Aviation And Space Travel Office
GM Global Technology Operations LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by American National Aviation And Space Travel Office, GM Global Technology Operations LLC filed Critical American National Aviation And Space Travel Office
Publication of CN104049573A publication Critical patent/CN104049573A/zh
Application granted granted Critical
Publication of CN104049573B publication Critical patent/CN104049573B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1656Programme controls characterised by programming, planning systems for manipulators
    • B25J9/1661Programme controls characterised by programming, planning systems for manipulators characterised by task planning, object-oriented languages
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/40Robotics, robotics mapping to robotics vision
    • G05B2219/40099Graphical user interface for robotics, visual robot user interface

Landscapes

  • Engineering & Computer Science (AREA)
  • Robotics (AREA)
  • Mechanical Engineering (AREA)
  • Stored Programmes (AREA)
  • Manipulator (AREA)

Abstract

一种用于开发分布式机器人应用级软件的系统,包括具有相关控制模块的机器人和机器人任务指挥器(RTC),控制模块响应于命令的任务控制机器人的运动,机器人任务指挥器通过网络传输层(NTL)与控制模块网络通信。RTC包括脚本引擎和GUI,处理器和库块的中央库由解释性的计算机编程代码构成,并具有输入和输出连接。GUI提供访问可视化程序设计语言(VPL)环境和文本编辑器的入口。在执行方法中,打开VPL,用于机器人的任务从代码库块中建立,数据被分配给识别每个块的输入和输出数据的输入和输出连接。任务序列通过NTL被发送到控制模块,以命令执行任务。

Description

具有可扩展的编程环境的机器人任务指挥器
关于联邦政府资助的研究或开发的声明
本发明在美国航空航天局太空行动协议第SAA-AT-07-003号下由政府支持进行。美国政府可能拥有本发明的某些权利。
技术领域
本公开涉及用于自动机器人的任务规划的系统和方法,尤其涉及一种可用于这种任务规划的具有可扩展的编程环境的机器人任务指挥器(commander)。
背景技术
机器人是能够使用一系列机械链接来操纵物件的自动化装置。这些链接经由电机/致动器驱动的机器人关节而互相连接。典型机器人中的每个关节代表一种独立的控制变量,即自由度。末端执行器是位于机器人机械手末端的特殊装置,机械手用于执行手边的任务,比如抓住工作工具或捕捉物件的3D图像。因此,对机器人的精确控制可由任务规格的级别统筹:物件级控制(即控制由机器人的单个或协作抓握而保持的物件的行为的能力)、末端执行器控制和关节级控制。总的来说,各种控制级别协作以获得机器人移动性、灵活性和与工作任务相关的功能性的所需水平。
机器人的复杂性从常规的3轴或6轴机器人手臂变化至高度复杂的仿人机器人,即具有类人结构或外形的机器人,不论是否作为完整本体、躯干和/或附属物。仿人机器人的结构复杂性主要取决于所执行的工作任务的性质。通常,每个机器人具有其自身专用的编程环境,其中,专家用户根据特殊的任务序列对必须执行的各种任务编程。然后编译程序码,每当新的外围装置和其它硬件元件添加到机器人时,重写通信协议。结果,某些任务编程效率底下可能存在于本领域中,尤其存在于利用不同设计和/或相对复杂性差异悬殊的机器人的大网络环境中。
发明内容
本文公开了一种系统,其包括机器人任务指挥器(RTC)。RTC旨在用于开发分布式机器人应用级软件,即并非实时关键的软件,如在本领域中众所周知的那样。RTC可体现为在一个或多个计算机装置上运行的一组程序,包括具有图形用户界面(GUI)的集成开发环境(IDE)和构造成充当相应脚本引擎的一个或多个程序。GUI用作RTC的图形“前端”,允许专家或非专家用户以直观的方式与脚本引擎配合。GUI还使用户能够观察运行时间诊断信息,以构成可存储在存储器中并经由图形文件浏览器可访问的新脚本,以及将作为“代码库块”的这种存储的脚本“拖放”进新序列中。任务序列同样存储在存储器中,用于在附加序列中作为“任务序列块”分等级地再次使用。
GUI允许用户将作为“应用”的任务序列块配置给脚本引擎。反过来,脚本引擎充当RTC的计算“后端”。应用内的子块可分配给特定的脚本引擎,该特定的脚本引擎必须随后以指定的顺序解译和执行这些特定块。因此,脚本引擎在系统内用于将程序序列数据传输给其它脚本引擎,以及用于将诊断反馈传送给GUI。如本文中使用的诊断反馈可采取两种形式:GUI中的文字窗口和“块高亮”,使得当应用被配置给脚本引擎时,GUI中的相应块可变成不同的颜色,例如,绿色指示正常执行,红色指示错误或故障等。
使用如本文所公开的RTC便于在网络环境中进行自动化机器人任务规划,其中,一个或多个机器人通过网络传输层(NTL)由多个计算装置控制。RTC设计成支持多个网络协议,例如机器人操作系统(ROS)、ZeroMQ、TCP/IP、UDP等,以实施不同脚本引擎、RTC GUI和一个或多个机器人/外围装置之间的网络通信,而不会独属于任何特定协议。因为应用可包括通过使用这些协议而分布在多个脚本引擎的宽网络上的多个块的任务序列,所以可能存在网络延迟。然而,这种延迟在RTC的预期应用级软件开发作用的范围内是完全可以接受的。
RTC所使用的脚本引擎可位于网络上的不同计算机上。每个脚本引擎可发送“触发命令”给其它脚本引擎,例如作为并行执行的一组协调的状态机器。在这种环境中,GUI允许用户立刻精确地理解各分布式脚本引擎内正在发生什么。此外,例如在传感器/图像熔合或图像处理算法的情况下,如果特定库脚本或序列块(下文中统称为“代码库块”)特别密集,则分布式方法允许在整个网络上的计算负载平衡。
在可能的方法中,给定的脚本引擎可专用于网络上相应的机器人。类似地,每个任务序列和代码库块可在不同计算机上的不同脚本引擎上运行。总的来说,每个块的配置在配置之前可由用户在GUI中设定,或者通过标准调度算法(比如“循环”等)自动地分配给网络上的脚本引擎,如本领域中众所周知的那样。连接各个块的特定触发事件通过NTL发送,从而允许RTC恰当地发挥作用,即使在宽广分布式的网络环境中也如此。任务序列本身不需要是线性的。即,单个触发命令可同时触发执行代码的多个块,从而开始并发或并行处理管线等等。
本文中所述的RTC使用专门写入的脚本块来接受来自通过NTL发布的机器人和/或传感器数据的“输入”数据,如本领域中众所周知的那样,以及将“输出”数据发布到NTL本身。当在RTC的GUI中构成时,脚本必须被“抽象地”写入,即对任何特定输入/输出(I/O)数据绑定是不可知的。这样,每个单独脚本块仅了解信息的类型,例如关节位置、关节速度、图像坐标等,并不了解该信息的具体来源。留给用户的是,当在任务序列和/或应用中构成代码块时,通过使用直观图形界面来“绑定”在VPL中的该I/O数据的来源和接收器。因此,本方法的中心是能够在不同的应用中使用和再使用库脚本形式的抽象功能,同时可连接到不同的硬件装置。这些概念将在下面进一步详细讨论。
如本领域普通技术人员所要明白的是,本文所公开的RTC可提供相对于现有命令和控制方法的各种优点。当创建新机器人任务应用时,这种方法可能会欠佳地适于与新添加的外围硬件装置(比如传感器、操纵器和/或第三方软件)以均匀一致的方式配合。在现有技术中可能还缺乏对程序状态和机器人遥测数据(可用于运行时内省和进行中的任务诊断)两者的在线反馈。集成支持用于通过NTL经由通信支持外部软件包,并且其是使这成为可能的多个网络协议的集成支持。总之,这些特征可使先进机器人编程技术的快速原型化和配置适于下一代柔性综合组装制造系统、空间探测系统等。作为额外的益处,通过使用RTC,无论何时将新硬件添加到网络,均不需要重新写入通信协议。
在本文所公开的特定实施例中,该系统具体包括具有相关控制模块的机器人。控制模块响应于命令的任务控制机器人的至少一个关节的运动。该系统还包括上述的RTC,该RTC通过NTL与控制模块网络通信。RTC包括处理器和具有其中可以存储代码库块的中央库的存储器,每个代码库块通过使用解释性语言计算机编程代码经由相关的文字编辑器而构成。每个库代码块还可具有一个或多个I/O连接,该I/O连接在本文中定义为特定的I/O链接,其分别通过NTL作为输入和输出数据的指针通信。RTC还包括与存储器通信的GUI。GUI提供访问VPL环境和文本编辑器的入口。
RTC响应于用户命令执行来自存储器的指令,从而打开VPL,并允许用户选择或开发代码用于经由机器人而要被执行的任务,这包括选择和/或开发一个或多个代码库块。所选择/开发的代码块通过NTL下载到各指定的脚本引擎,其中,所述块根据由特定触发命令指示的流动路径而被执行。在经由脚本引擎处理代码库块后,每个控制模块随后控制由任务指示的所需运动,定期地将其状态经由脚本引擎传送回控制的RTC。前述系统的各实施例将在本文中进一步详细阐述。
结合附图,参考用于实施本发明的最佳模式的下列详细说明,本发明的上述特征和优点以及其它特征和优点将会更加显而易见。
附图说明
图1是分布式机器人系统的示意图,该分布式机器人系统包括多个机器人、单独的控制模块和构造成如下所述的机器任务指挥器(RTC)。
图2是描述使用图1所示系统的RTC进行程序开发的示意流程图。
图3是描述使用RTC进行机器人任务规划的示意流程图。
图4是描述用于图1所示机器人的任务规划的方法的流程图。
具体实施方式
参见附图,其中,在几个视图中,类似的标号代表相同或类似的部件,图1示意性地示出分布式机器人控制网络10。例如,控制网络10可包括如所示的示例仿人机器人12和常规的多轴机器人14,和/或相对于机器人12、14具有较大或较小复杂性的更多或更少的机器人。如本文所阐述,在控制网络10内经由机器人任务指挥器(RTC)13实现用于一个或多个机器人的综合机器人任务规划。
通常,在分布式控制环境中的任务规划在每个机器人12、14的级别下执行,确切地说仅用于那些特殊的机器人12、14。当如本文所述的那样进行构造和使用时,RTC13代替提供图形集成开发环境(IDE),其允许使用可视化程序设计语言(VPL)来写入新的程序码。这发生在第一层中,即图形用户界面(GUI)22,其因此充当RTC13的图形“前端”,如上所述。
可托管在适当构造的计算机装置上的GUI22,允许用户创建新的程序脚本,作为图形块存储脚本,然后根据需要在运行时开始、暂停和停止对这些块的执行,同时接收运行诊断反馈。这样,GUI22可用于应用的开发和配置,其中术语“应用”用于表示任何“顶级”序列块,其可被分派至一个或多个RTC脚本引擎20,脚本引擎又提供控制的第二层。GUI22可包括或提供访问文本编辑器(TE)41、上述VPL和库浏览器(B)的入口,库浏览器显示已创建的脚本和块。因此,经由单个GUI22的图形IDE的二分法以及潜在的许多分布式脚本引擎20便于在分布式环境中进行软件原型化和高级别的任务规划。控制模块(CM)21、31提供控制的第三层,下面将进一步详细描述所有的三层。尽管为了简化起见未示出,但是当块在IDE中被点击时,GUI22可为每个块打开相关的窗口。这个概念将参照图2在下面进一步详细描述。
在特定实施例中,图1的仿人机器人可具有超过42个自由度(DOF),并通过使用其它集成系统部件(比如夹具、2D或3D相机、光、继电器等)以类人水平的灵活性执行自动化的解释性任务。为了获得这种灵活性,机器人12可包括可独立移动和可相互依赖移动的机器人关节,比如但并不限于臂18的肩关节。肩关节的位置大致由箭头A指示。
类似地,肘关节大致由箭头B指示,机器人12还包括腕关节(箭头C)、提供头19的多轴移动的颈关节(箭头D)和提供躯干16的移动的腰关节(箭头E),以及定位在每个机器人手指的指骨之间的各个指关节(箭头F)。每个机器人关节包含并由一个或多个致动器内部地驱动,比如关节电机、线性致动器、旋转致动器等。尽管为了简化说明起见在图1中未示出,但是指关节(箭头F)和/或其它关节可经由使用滚珠丝杆装置的腱而被驱动。
与机器人12相比,多轴机器人14可具有更低的相对复杂性。例如,机器人14可仅相对于三个轴G、H和I移动,和/或其可相对于固定的或移动的基底17旋转。这种机器人通常用在工业中,以执行反复作业。机器人14的示例用途可包括喷涂应用、焊接、物流/材料处理等。两个示例机器人12和14旨在说明相对彼此具有十分不同自由度的机器人。实际用作图1控制网络10的一部分的机器人12、14的复杂性可随应用而改变。为了说明的一致性,下文中将使用图1的简化的两个机器人的示例实施例。
每个机器人12和14的任务执行经由各自的控制模块21、31直接控制,每个控制模块相对于RTC13形成较低级别的控制。在执行任何命令的任务时,控制模块21和31产生或接受用于各关节致动器(例如电机、线性致动器等)的命令输入或控制基准。尽管每个控制模块21、31在图1中显示为单个计算机装置,但是控制模块21、31的各个硬件和软件元件可相对于受控制的机器人12、14被分配。
例如,每个关节可具有以与主电路板(未示出)连通的印刷电路板组件形式的嵌入关节控制器。不管控制模块21、31的物理元件如何分配,每个控制模块21、31包括一个或多个处理器23、33、一个或多个收发器27、37以及一个或多个有形的非短暂性存储装置29、39。同样地,每个控制模块21、31可具有如所示的相关用户界面32、42,向用户提供访问机器人12或14的入口。
就功能性来说,在体现程序码或脚本的任意块经由脚本引擎20处理之后,每个控制模块21、31构造成响应于所接收的来自RTC13的任务指令控制机器人12、14的运动。即,每个控制模块21、31被编程、装备,和/或以其他方式物理上能够执行用于响应来自RTC13的任务规划指令所需的所有必要的控制步骤,而没有进一步的修改。控制模块21、31提供对用于机器人12、14的任何动作所需的精细和粗糙移动的精确运动控制。RTC13有效地告知每个控制模块21、31做什么,而不是精确地如何去做。控制模块21和31被编程或以其他方式构造成确定如何执行由RTC13所分派的顶级任务。
仍参见图1,各个控制模块21、31通过网络传输层(NTL)25与RTC13通信,网络传输层即是在计算机网络中的特殊层,用于形成数据包并将数据包输送到各处理和控制模块,如本领域中众所周知的那样。RTC13支持多网络数据传输协议(例如ROS、ZeroMQ、TCP/IP、UDP等)以实施NTL25,并易于根据开发人员要求通过插件架构可扩展成包括其它协议,如本领域中所理解的那样。该能力便于将RTC13与第三方软件和传感器(可具有它们本身的特定协议)集成。此外,本文所公开的RTC13的结构和功能便于快速集成外围输入传感器装置,比如但并不限于相机、激光测距仪、3D深度传感器、力/扭矩传感器、惯性测量单元或加速器等。I/O块可通过NTL25而易于构造成“听取”或“订阅”由这种外围装置产生的任何限定类型的传感器数据。
脚本引擎20的所需功能性包括协调程序的流(即各个块如何沿着它们的各个连接件而发送触发事件以开始新块)、在控制网络10中的所有计算节点之间的数据流和到达控制模块21、31的参考命令序列。硬件可包括有形的非短暂性存储器(M)、处理器P和收发器(T)以及用于执行图4所示和下述的方法100所必需的记录指令。额外的硬件可包括上述的A/D、D/A和I/O电路,以及任何其它所需的硬件和软件。
由于具有控制模块21、31,RTC13的各脚本引擎20可经由一个或多个计算机或数据处理装置执行,每个计算机或数据处理装置均具有一个或多个处理器(P)、有形的非短暂性存储器(M)以及随机存储器(RAM)和电可擦只读存储器(EEPROM),有形的非短暂性存储器比如是只读存储器(ROM)、光学存储器、快闪存储器等。脚本引擎20的各硬件可包括高速时钟、模数(A/D)电路、数模(D/A)电路以及任何所需的输入/输出(I/O)电路和装置,以及信号调节和缓冲电子装置。
RTC13为在图1的网络10内开发、诊断和配置新机器人应用提供了可扩展的编程环境。这种应用可由通过NTL25连接到RTC13的任何机器人或传感器使用,不管是高自由度的机器人12还是相对低自由度的机器人14,以及处于两者之间的任意机器人。RTC13提供了解释性编程环境,其是既不需要也不使用对计算机可执行代码编译的环境。在该环境中,用户可易于从中央库(即,“代码库块”)中将现有的任务规划脚本块“拖放”进新应用中,和/或创建新任务序列块以解决不断变化的需求和新硬件。下面参考图2说明此概念。
参见图2,图1中示意性示出的RTC13便于在控制的任务规划阶段进行程序开发。尽管为了清楚起见线性地示出,但是单个事件也可同时触发多个块,从而开始并发/并行处理管线。然而,为了说明的一致性,本文中将描述线性序列。
RTC13的用户可从任何计算机装置中加载其上可用的GUI22,并使用文本编辑器41写入源代码141。在可能的实施例中,可使用Python编程语言(例如Python3.3.0或以后的版本)、Lua或其它脚本语言写入源代码141。Python和Lua是非常适合应用开发和任务原型化的解释性编程语言的两个非限制性示例,这些解释性编程语言可在各种平台上运行,包括Windows、Linux/Unix、Mac OS X、OS/2和Amiga。
应由用在替代实施例中的任何其它脚本语言共享的Python和Lua的特征包括清楚、可读的语法和程序代码的自然表示。与非脚本语言(比如C++)不同的是,这种代码不需要编译和链接步骤。虽然在不脱离预期的发明范围的情况下可经由文本编辑器41使用其它解释性编程语言,但是类似的能力将会便于RTC13的有效使用。图2的示例流程图包括一些基本的说明性块,包括I/O连接和状态识别符。每个块代表用于机器人12或14的特定任务或功能的解释性程序。剩下未定义的,即“抽象”,是捆绑在特定I/O连接中的特定硬件。仅定义了脚本必须输入或输出的数据类型,例如关节速度、关节位置、RGBD图像等。
通过图1的GUI22,用户由此写入和/或选择代码库块44,并将它们放到GUI22的编程屏幕中。点击单独块可打开GUI22中的窗口,以显示信息或菜单,例如显示可选择的各脚本引擎20的标签(“设定”标签)、用户可设定用于当前任务序列中脚本特定情况的可修改参数(“参数”标签)等。因此,当用户在文本编辑器41中写入新脚本时,存在代码“钩子”,其允许用户创建具有这样值的新代码变量,也就是该值得以顺应,直到用户将这些变量的值限定在较高级别应用即任务序列块52中。当脚本块的新情况被拖放在新任务序列块52中时,这些变量随着可编辑的文本窗口一起显示。然后,用户可修改这些变量的值,使得用户设定的值在执行期间被解译。
经由文本编辑器41写入的源代码41的单独脚本(每个描述某一顶级任务的一个或多个步骤)可存储在GUI22内的存储器的中央库(作为代码库块44)中,每个代码库块44在图1系统10内的给定计算节点下提供底层编程代码的视觉表示。每个代码库块44可具有随机数量的输入连接46和输出连接48,这些输入连接和输出连接分别到达或来自其它库块以及第三方应用。这些连接在配置期间捕捉进入、离开和位于应用中的块44之间的数据流路径。相应输入和输出连接46和48的实际数量可改变,为了便于说明,每种显示为一个。输入连接46形成引入数据的指针,例如来自作为硬件元件连接至图1机器人12或14之一的相机或阅读关节位置的传感器的彩色图像。类似地,输出连接48是处理输出数据的指针,例如相同图像的黑白处理版本,或者使用相同示例的相应关节命令。因此,图1的RTC13限定了用于给定代码库块44的各种输入和输出的类型,而不是源。
在由图1RTC13提供的IDE中,如上面所提到,VPL环境可用于“拖放”现有的代码库块44进入到期望的任务序列中。任务序列又可存储在图1存储器(M)内的库中。图2示出了简化的示例,如箭头J所指示,代码库块44被“拖放”在另一窗口中,以形成具有其它代码库块144和244的任务序列。与代码库块44类似,其它代码库块144和244中的每个均可具有一组输入和输出连接。这些显示为用于相应代码库块144和244的输入连接146、246和输出连接148、248。
给定序列中的多个相应的输入和/或输出连接46和/或48可链接在一起,并暴露于“较高级别”的任务序列块52中。为了简化起见,类似于连接46和48的I/O连接在任务序列块52上未示出,因为当发生这种暴露时,它们驻留在RTC GUI22中。例如,如果不同的输出连接46、146都指向或连接到相同的图像数据,则输出连接46和146会通过参数化任务序列块52中具有相同名称的这些连接而链接在一起。为了可由给定的脚本引擎20执行,所有任务序列块52必须具有开始和停止状态,以作为应用或者作为较高级别应用中的子任务运行时指示序列52的程序流的入口和出口点。任务序列具有开始状态(0)和结束状态(1)。在代码库块44、144、244的一些或所有之间,传感器数据50可接收和用于该序列中的下一代码库块的执行中,这再次可以是线性或非线性的,例如具有一个或多个步骤的可能并发或并行执行。
如图2的箭头K所指示,整个任务序列可存储在GUI22的存储器内的中央库中或者作为任务序列块52的另一可访问的位置中。结果,在创建其它任务序列时,任务序列块52可通过将任务序列块52拖放进VPL窗口(例如图1所示的GUI22的)中并写入额外的代码库块和/或拖放现有的代码库块而再次使用。VPL窗口内的一个工作可点击任务序列块52,以打开底层结构,其可包括额外的任务序列块52和/或代码库块44。因此,在配置期间,当用户在给定序列块上按GUI22的“播放”时,序列的所有块通过NTL25下载至一个或多个指定的脚本引擎20,加载到脚本引擎的局部存储器M中。
点击任何类型的给定代码库块会导致文本编辑器41打开,使得用户可看见底层代码141。人们可在程序开发期间使用图2的文本编辑器41,以使给定代码库块44或任务序列块52的特定状态与例如颜色(比如绿色、黄色或红色)相关联。经由GUI22,人们可以再后来在运行时观察每个块44或52的状态,并可点击给定的块44、52,从而“深入”到任务序列的下一级别,并实时观察应用层次的子块的状态。
最初,中央库可驻留在GUI22的侧面。即,任何预存在的代码库块44可存储在GUI22从其中运行的任何计算机上的目录中,并经由图1所示的文件浏览器B观察。任何新创建的代码库块44还可保存到相同的目录。因为人们可在不同于执行底层脚本的各脚本引擎20的物理装置上运行GUI22,所以按“播放”以经由GUI22开始给定的任务序列导致通过NTL25将所有相关的代码库块44下载到所需的脚本引擎20,其中块44可存储在构成每个脚本引擎20的物理计算机装置的局部存储器(M)中。
然后,具有最顶级块或“开始”块的任何脚本引擎20再次通过NTL25发出触发命令到图1控制网络10中的所有脚本引擎20。如果任何通知的脚本引擎20已加载在序列中连接到“开始”块的代码库块44,则那些特定的脚本引擎20开始执行那些块44等。对于每个代码库块44,在配置用于自定义其它抽象的任务程序(单独代码库块44的全部创建)之前,I/O连接有效地变成唯一需要的插件,以便由特定的机器人12或14使用(见图1)。
为了再次访问上述点,所有代码库块44在RTC13的级别下保持抽象,同时任务序列块52可以或者不用保持抽象。任何类型的“抽象”块不易于可由第三方硬件和软件使用。因此,RTC13和/或通过图1的NTL25连接到RTC13的控制模块21、31必须采取额外的步骤来渲染这些在控制模块21、31的级别下可使用的抽象块。下面参考图3说明该方法。
参见图3,示出了示例任务规划图70,使用其中仅采用一个机器人的简化系统(在该示例中是机器人12)。添加额外的机器人和额外的脚本引擎20不会改变本方法,但是会添加额外的计算节点。为了简化起见,仅示出了一个脚本引擎20,但是如下面参考图4所说明的,可在各实施例中使用任何数量的脚本引擎20。GUI22可用于拖放必要的代码库块,用于创建任务或任务序列,如上面参考图2所说明。双头箭头65表示到GUI22和脚本引擎20的信息以及来自GUI22和脚本引擎20的信息的双向流动。
给定任务序列的创建,尤其是在VPL环境中,有效地创建了有限状态机器。尽管为了简化起见示出了单个状态机器及因此一个计算节点,但是可使用更多节点,每个节点经由NTL25连通。如本文中所使用的有限状态机器是这样的任何装置,其存储一状态,并可操作输入以改变该状态,和/或针对任何给定的改变导致动作或输出发生。
每个脚本引擎20在整个NTL25上与机器人12通信,而不管机器人所使用的特定操作系统或计算引擎。机器人12的不同硬件装置用于执行给定的任务。例如,机器人12可使用3D相机(未示出)来观察如图1所示的物体11,准备抓住物体11。接近度、力和/或其它传感器可用作执行抓住物体11或不同装置的控制逻辑的一部分。来自机器人12的各硬件装置的数据通过NTL25传输到脚本引擎20。在任何硬件元件输出值之后,数据必须被“发布”到网络,如在本领域中该术语是众所周知的那样,使得通过NTL25通信的任何网络装置或者其它脚本引擎20可访问该数据。
因此,每个硬件模块可包括相应的解译器块(IB)60、62,它们解译原始数据并将其发布到网络。解译器块60、62充当传感处理节点。解译器块60、62可使用独立的软件包,比如但不限于由开源机器人技术基础(OSRF)维持的开源机器人操作系统(ROS),即用于通过NTL25在各种硬件模块和机器人12之间通信的开源协议,允许标准的信息传递协议和数据类型以及各种代码库或模块(可处理传感器数据或计算机器人行为规划)。即,ROS提供标准的网络协议以及操作系统服务,比如硬件抽象、装置驱动器、库、消息传递、打包管理、硬件抽象和低级别装置控制,如本领域中众所周知的那样。在本文中,虽然ROS的消息传递协议可用于通过NTL25访问I/O数据,但是可使用其它第三方网络库,比如来自iMatix公司的ZeroMQ。
参见图4,示出了在分布式环境内用于任务规划的方法100,比如在图1的控制网络10内。在步骤102开始,RTC13初始化,从而建立或验证与被控制的机器人的网络连接。然后,方法100进行到步骤104。
步骤104例如通过点击在GUI22窗口内显示的图标使得访问中央库,该中央库可存在于体现或托管GUI22的任何计算机装置的存储器内。然后,方法100进行到步骤106。
在步骤106,用户确定代码库块44是否存在于用于规划的特定任务的中央库中。如果没有,则方法100进行到步骤108。然而,如果足够的代码库块44存在于中央库中,则方法100代替进行到步骤112。
在步骤108,用户可经由GUI22打开编程窗口,并开始写入适合于任务的给定步骤的编程代码,例如Python或Lua代码。在步骤110,任务的每一步骤可在中央库中存储为新的代码库块44或任务序列块52。一旦所有必要的代码被写入或拖放时,则方法100从步骤110进行到步骤112。
在步骤112,用户经由GUI22打开VPL窗口,并拖放开发的代码库块44,以创建期望的任务序列。该宽度代码库块44、144和244的简化版本显示在图2中,并如上所述。在步骤114,一个或多个任务序列块52可以该方式创建,并且通过使用与期望的任务所需的一样多的链接代码库块44而存储在中央库中。
步骤116包括经由输入块46给代码库块44分配I/O装置,输入块如上所述形成引入数据的指针。还作为步骤116的一部分,可分配输出块48。因此,RTC13在步骤116中用于定义每个代码库块44的输入和输出的类型。作为该步骤的一部分,在配置之前,用户可选择是否“重新绑定”I/O连接,以指向数据流中的不同源或目标。例如,人们可通过点击输入块46或输出块48而重新绑定,输入块或输出块可显示分别与特定块的代码中的变量相关的文本,同时会呈现具有文本区域的对话窗口,其允许用户键入特定的目标或源,即数据的指针,如上所述,比如通过在一个运行控制范围内键入“left_eye_camera_rgb_image”,或者在另一个运行控制范围内键入“right_eye_camera_rgb_image”。
一旦这个完成,则在步骤118中执行任务,该步骤包括下载代码块44或52到所需的图1脚本引擎20。该步骤的一部分可包括使用户选择特定的脚本引擎20来分派,或者步骤118可简单地默认为一个或多个脚本引擎20。在步骤118中,脚本引擎20解译底层编程代码,通过NTL25传输任何I/O数据,并处理任务序列与相关代码库块44之间的任何转换。
此外,当图1的脚本引擎20“分布”在同一附图的整个控制网络10中时,希望分配整个应用给单个脚本引擎20的用户可以这样做。类似地,如果用户希望在不同脚本引擎20上执行每个单独代码库块44和/或任务序列块52,则用户也可这样做,或者这些示例极限之间的范围的任何事情。如上所述,图1中所示的和上面详细所述的RTC13的关键特征在于,RTC13将处理任何及所有任务序列的程序流,即使在每个块44或52分布在图1的整个控制网络10中的情况下也是如此。不同脚本引擎20之间的程序流通过NTL25而得到处理。因此,作为图1所示的流的一部分,用户可分配特定的块44或52给具体的脚本引擎20,以优化处理效率并且平衡计算负载。
最后在步骤118中,任何所需的较低级别控制器,例如图1的控制模块21、31,根据脚本引擎20所解译的任务代码而被命令采取一些动作,比如移动一个或多个关节和/或末端效应器。一旦接收到任务,则控制模块21、31随后根据来自RTC13的任务视需要而定来控制各关节电机和/或其它关节致动器移动。
尽管详细描述了实施本发明的最佳模式,但是熟悉与本发明相关的领域的人要认识到的是,实施本发明的各种替代设计和实施例应在所附权利要求的范围内。

Claims (11)

1.一种系统,包括:
机器人,具有控制模块,其中,所述控制模块构造成响应于所接收的任务序列控制所述机器人的运动;以及
机器人任务指挥器(RTC),通过网络传输层(NTL)与所述控制模块网络通信,并具有:
至少一个脚本引擎;
处理器;
有形的非短暂性存储器;以及
图形用户界面(GUI),具有文本编辑器和文件浏览器,其中,所述GUI构造成提供访问所述文本编辑器的入口,并且经由所述文件浏览器,到达所述存储器中的代码库块的中央库,每个代码库块使用所述文本编辑器由解释性语言计算机编程代码构成,且每个代码库块具有给所需输入和输出数据形成指针的输入和输出块,并提供可视化程序设计语言(VPL)工具和所述文本编辑器;
其中,所述系统构造成经由所述至少一个脚本引擎和处理器执行来自所述存储器的指令,从而打开所述VPL工具,通过使用所存储的代码库块中的至少一些来创建并存储用于所述机器人的任务序列,通过识别用于每个库代码块的所需输入和输出数据将数据分配给输入和输出连接,并通过NTL将任务序列传输到所述控制模块。
2.如权利要求1所述的系统,其中,所述RTC在任务序列运行时经由所述GUI而显示机器人的状态及遥测数据的在线反馈,从而能够实时诊断任务序列的执行。
3.如权利要求1所述的系统,其中,所述输入和输出连接仅是用于自定义由所述机器人执行的任务序列的插件。
4.如权利要求1所述的系统,其中,所述机器人包括具有达6个自由度的第一机器人和具有至少42个自由度的第二机器人。
5.如权利要求1所述的系统,其中,所述解释性语言是Python和Lua编程语言之一。
6.如权利要求1所述的系统,其中,所述机器人包括具有解译器块的硬件元件,所述解译器块解译来自所述硬件元件的原始数据,并将所解译的原始数据通过NTL而发布到网络,并且其中,所述RTC与解译器块通过NTL通信。
7.一种方法,包括:
通过网络传输层(NTL)来将机器人任务指挥器(RTC)置于与机器人的控制模块网络通信,其中,所述RTC包括至少一个脚本引擎和图形用户界面(GUI),所述图形用户界面具有文本编辑器和文件浏览器;
经由所述GUI来开发任务序列,包括:
打开可视化程序设计语言(VPL)环境和所述文本编辑器;
通过使用解释性语言计算机编程代码经由所述文本编辑器来构造一组代码库块;
将来自多个所构造的代码库块中的任务序列存储在存储器中,其中,每个代码库块包括相应的输入和输出连接;
通过识别用于形成任务序列的每个库代码块的所需输入和输出数据来将数据分配给所述输入和输出连接;以及
将所存储的任务序列通过NTL传输给至少一个脚本引擎;
经由所述至少一个脚本引擎来处理所存储的任务序列;以及
响应于所处理的任务序列经由所述控制模块来控制所述机器人的运动。
8.如权利要求7所述的方法,还包括:经由所述GUI来显示机器人在运行时的状态和遥测数据。
9.如权利要求7所述的方法,还包括:I/O连接仅是用于自定义由机器人执行的任务序列的插件。
10.如权利要求7所述的方法,其中,所述机器人包括具有达6个自由度和第一控制模块的第一机器人以及具有至少42个自由度和第二控制模块的第二机器人,并且其中,将所存储的任务序列传输给所述控制模块包括将不同的所存储的任务序列传输给所述第一和第二控制模块中的每个。
11.如权利要求7所述的方法,其中,所述机器人包括具有解译器块的硬件元件,还包括:
经由所述解译器块解译来自所述硬件元件的原始数据;以及
将原始数据通过NTL发布到网络。
CN201310613292.1A 2013-03-14 2013-11-27 机器人系统及其任务规划方法 Active CN104049573B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/803,017 US8868241B2 (en) 2013-03-14 2013-03-14 Robot task commander with extensible programming environment
US13/803,017 2013-03-14

Publications (2)

Publication Number Publication Date
CN104049573A true CN104049573A (zh) 2014-09-17
CN104049573B CN104049573B (zh) 2017-06-16

Family

ID=51418659

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310613292.1A Active CN104049573B (zh) 2013-03-14 2013-11-27 机器人系统及其任务规划方法

Country Status (3)

Country Link
US (1) US8868241B2 (zh)
CN (1) CN104049573B (zh)
DE (1) DE102013113370B4 (zh)

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106444633A (zh) * 2016-11-09 2017-02-22 湖南戈人自动化科技有限公司 一种运动控制系统
TWI579668B (zh) * 2015-04-22 2017-04-21 汪宏璋 多工同步無等待機器人控制程式系統及其控制方法
CN106610632A (zh) * 2015-10-26 2017-05-03 韩华泰科株式会社 机器人控制系统及方法
TWI585559B (zh) * 2015-04-22 2017-06-01 汪宏璋 多工同步無等待機器人控制程式控制方法
CN107710082A (zh) * 2015-09-29 2018-02-16 宝马股份公司 用于控制和/或调节机器人系统的外部控制系统的自动配置方法
CN107848109A (zh) * 2015-07-08 2018-03-27 优傲机器人公司 用于利用第三方贡献包扩展工业机器人的最终用户编程的方法
CN109891855A (zh) * 2016-08-22 2019-06-14 西安姆贝拉有限公司 用于服务器上的传感器和/或致动器数据处理的方法和设备
CN111352360A (zh) * 2018-12-24 2020-06-30 深圳市优必选科技有限公司 机器人的控制方法、装置、机器人及计算机存储介质
CN112130723A (zh) * 2018-05-25 2020-12-25 第四范式(北京)技术有限公司 用于针对数据执行特征处理的方法及系统
CN113158146A (zh) * 2020-01-07 2021-07-23 网联清算有限公司 脚本管理方法、脚本管理平台、计算设备及介质
CN114423574A (zh) * 2019-09-15 2022-04-29 谷歌有限责任公司 确定针对机器人任务的环境调节的动作序列

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9977661B2 (en) * 2013-06-28 2018-05-22 Tencent Technology (Shenzhen) Company Limited Method and system for generating a user interface
JP5850004B2 (ja) * 2013-08-09 2016-02-03 株式会社安川電機 ロボット制御装置及びロボット制御方法
JP5939213B2 (ja) * 2013-08-09 2016-06-22 株式会社安川電機 ロボット制御装置及びロボット制御方法
JP6455050B2 (ja) * 2014-09-30 2019-01-23 セイコーエプソン株式会社 ロボット
US9687982B1 (en) 2015-05-27 2017-06-27 X Development Llc Adapting programming of a robot and/or control of the robot based on one or more parameters of an end effector of the robot
US9724826B1 (en) 2015-05-28 2017-08-08 X Development Llc Selecting physical arrangements for objects to be acted upon by a robot
US9707680B1 (en) 2015-05-28 2017-07-18 X Development Llc Suggesting, selecting, and applying task-level movement parameters to implementation of robot motion primitives
US9682476B1 (en) 2015-05-28 2017-06-20 X Development Llc Selecting robot poses to account for cost
EP3112965A1 (en) * 2015-07-02 2017-01-04 Accenture Global Services Limited Robotic process automation
WO2018187029A1 (en) * 2017-04-03 2018-10-11 Innovation First, Inc. Mixed mode programming
US11645046B2 (en) * 2017-07-03 2023-05-09 Unqork, Inc. Systems and methods for development and deployment of software platforms having advanced workflow and event processing components
CN109421044A (zh) * 2017-08-28 2019-03-05 富泰华工业(深圳)有限公司 智能机器人
JP7095262B2 (ja) * 2017-11-10 2022-07-05 株式会社安川電機 プログラミング支援装置、ロボットシステム及びプログラム生成方法
JP7069971B2 (ja) * 2018-03-30 2022-05-18 セイコーエプソン株式会社 制御装置、ロボット、およびロボットシステム
CN109822549B (zh) * 2018-12-31 2021-05-11 深圳市越疆科技有限公司 一种机器人编程方法、装置及控制器
KR20200102295A (ko) * 2019-02-21 2020-08-31 삼성전자주식회사 멀티 태스크 관리 방법 및 이를 위한 전자 장치
US11497564B2 (en) * 2019-06-07 2022-11-15 Verb Surgical Inc. Supervised robot-human collaboration in surgical robotics
JP7334784B2 (ja) * 2019-08-22 2023-08-29 日本電気株式会社 ロボット制御システム、ロボット制御方法、及び、プログラム
JP7440227B2 (ja) * 2019-08-28 2024-02-28 ファナック株式会社 ロボットプログラミング装置及びロボットプログラミング方法
JP7437910B2 (ja) 2019-10-29 2024-02-26 株式会社東芝 制御システム、制御方法、ロボットシステム、プログラム、及び記憶媒体
CN113031526A (zh) * 2019-12-24 2021-06-25 沈阳智能机器人创新中心有限公司 基于4diac的分布式多轴运动控制系统实现方法
US11204690B1 (en) 2020-03-05 2021-12-21 Unqork, Inc. Systems and methods for software development and deployment platforms having advanced workflow and event processing capabilities and graphical version controls
EP3960396A1 (en) * 2020-08-31 2022-03-02 Siemens Aktiengesellschaft Enhancement of human-machine interface (hmi) for controlling a robot
WO2022072887A1 (en) * 2020-10-02 2022-04-07 Building Machines, Inc. Systems and methods for precise and dynamic positioning over volumes
US20220395977A1 (en) * 2021-06-15 2022-12-15 X Development Llc Robot instruction distribution framework
CN117086866B (zh) * 2023-08-07 2024-04-12 广州中鸣数码科技有限公司 一种基于编程机器人的任务规划训练方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070150102A1 (en) * 2005-12-09 2007-06-28 Joong Ki Park Method of supporting robot application programming and programming tool for the same
CN102844760A (zh) * 2010-04-09 2012-12-26 微软公司 用于快速设备开发的集成开发环境
CN102906652A (zh) * 2010-05-25 2013-01-30 西门子产品生命周期管理软件公司 用于闭环控制器编程的方法和系统

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2873222B2 (ja) * 1997-05-12 1999-03-24 川崎重工業株式会社 ロボット情報処理装置
JP2001150374A (ja) * 1999-11-25 2001-06-05 Sony Corp ロボットの故障診断システム
JP2003205483A (ja) * 2001-11-07 2003-07-22 Sony Corp ロボットシステム及びロボット装置の制御方法
DE102005034168A1 (de) * 2005-07-21 2007-02-01 Siemens Ag Verfahren zum Bedienen und Beobachten eines Steuergeräts, hiermit korrespondierendes Bedien-/Beobachtungsgerät, Steuergerät sowie Maschine mit einem solchen Steuergerät und Verwendungen des Verfahrens sowie Datenspeichermedien
WO2008083489A1 (en) * 2007-01-12 2008-07-17 Hansjorg Baltes Method and system for robot generation
US20090082879A1 (en) * 2007-09-20 2009-03-26 Evolution Robotics Transferable intelligent control device
US8260460B2 (en) 2009-09-22 2012-09-04 GM Global Technology Operations LLC Interactive robot control system and method of use

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070150102A1 (en) * 2005-12-09 2007-06-28 Joong Ki Park Method of supporting robot application programming and programming tool for the same
CN102844760A (zh) * 2010-04-09 2012-12-26 微软公司 用于快速设备开发的集成开发环境
CN102906652A (zh) * 2010-05-25 2013-01-30 西门子产品生命周期管理软件公司 用于闭环控制器编程的方法和系统

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI579668B (zh) * 2015-04-22 2017-04-21 汪宏璋 多工同步無等待機器人控制程式系統及其控制方法
TWI585559B (zh) * 2015-04-22 2017-06-01 汪宏璋 多工同步無等待機器人控制程式控制方法
US10850393B2 (en) 2015-07-08 2020-12-01 Universal Robots A/S Method for extending end user programming of an industrial robot with third party contributions
CN107848109A (zh) * 2015-07-08 2018-03-27 优傲机器人公司 用于利用第三方贡献包扩展工业机器人的最终用户编程的方法
CN107710082B (zh) * 2015-09-29 2021-01-26 宝马股份公司 用于控制和/或调节机器人系统的外部控制系统的自动配置方法
CN107710082A (zh) * 2015-09-29 2018-02-16 宝马股份公司 用于控制和/或调节机器人系统的外部控制系统的自动配置方法
US10786898B2 (en) 2015-09-29 2020-09-29 Bayerische Motoren Werke Aktiengesellschaft Method for the automatic configuration of an external control system for the open-loop and/or closed-loop control of a robot system
US10780583B2 (en) 2015-10-26 2020-09-22 Hanwha Precision Machinery Co., Ltd. System and method of controlling robot
CN106610632A (zh) * 2015-10-26 2017-05-03 韩华泰科株式会社 机器人控制系统及方法
CN109891855B (zh) * 2016-08-22 2022-07-29 西安姆贝拉有限公司 用于服务器上的传感器和/或致动器数据处理的方法和设备
CN109891855A (zh) * 2016-08-22 2019-06-14 西安姆贝拉有限公司 用于服务器上的传感器和/或致动器数据处理的方法和设备
CN106444633B (zh) * 2016-11-09 2020-02-14 湖南戈人自动化科技有限公司 一种运动控制系统
CN106444633A (zh) * 2016-11-09 2017-02-22 湖南戈人自动化科技有限公司 一种运动控制系统
CN112130723A (zh) * 2018-05-25 2020-12-25 第四范式(北京)技术有限公司 用于针对数据执行特征处理的方法及系统
CN111352360A (zh) * 2018-12-24 2020-06-30 深圳市优必选科技有限公司 机器人的控制方法、装置、机器人及计算机存储介质
CN114423574A (zh) * 2019-09-15 2022-04-29 谷歌有限责任公司 确定针对机器人任务的环境调节的动作序列
CN113158146A (zh) * 2020-01-07 2021-07-23 网联清算有限公司 脚本管理方法、脚本管理平台、计算设备及介质

Also Published As

Publication number Publication date
DE102013113370A1 (de) 2014-09-18
DE102013113370B4 (de) 2015-06-03
CN104049573B (zh) 2017-06-16
US8868241B2 (en) 2014-10-21
US20140277743A1 (en) 2014-09-18

Similar Documents

Publication Publication Date Title
CN104049573A (zh) 具有可扩展的编程环境的机器人任务指挥器
CN101286058B (zh) 机器人模块化分布式自适应控制系统及方法
Liu et al. Digital twin-enabled advance execution for human-robot collaborative assembly
Krueger et al. A vertical and cyber–physical integration of cognitive robots in manufacturing
Brugali Model-driven software engineering in robotics: Models are designed to use the relevant things, thereby reducing the complexity and cost in the field of robotics
EP3864480B1 (en) Object marking to support tasks by autonomous machines
Balakirsky Ontology based action planning and verification for agile manufacturing
Dobrescu et al. Process simulation platform for virtual manufacturing systems evaluation
Wang et al. A function block based approach for increasing adaptability of assembly planning and control
WO2018176025A1 (en) System and method for engineering autonomous systems
Brunner et al. Task-directed programming of sensor-based robots
Mower et al. ROS-PyBullet Interface: A framework for reliable contact simulation and human-robot interaction
Weyns et al. Decentralized control of automatic guided vehicles: applying multi-agent systems in practice
Koukas et al. ODIN architecture enabling reconfigurable human–robot based production lines
Krauß et al. Digital manufacturing for smart small satellites systems
CN114114902A (zh) 机器控制装置
Wang et al. Outlook of cloud, CPS and IoT in manufacturing
Heuss et al. Integration of autonomous task planning into reconfigurable skill-based industrial robots
Fernández et al. Using hierarchical binary Petri nets to build robust mobile robot applications: RoboGraph
Frei et al. Self-organising assembly systems formally specified in Maude
Naidoo et al. A distributed framework for programming the artificial intelligence of mobile robots in smart manufacturing systems
Yasuda Discrete event behavior-based distributed architecture design for autonomous intelligent control of mobile robots with embedded petri nets
Kuts et al. Digital Twin: Universal User Interface for Online Management of the Manufacturing System
Makris et al. On the Coordination of Multiple Cooperating Robots in Flexible Assembly Systems Using Mobile Robots
Grüner et al. An approach for interconnection and unification of state models in discrete manufacturing

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant