CN114269525B - 对共享工作空间中的多个机器人的运动规划 - Google Patents
对共享工作空间中的多个机器人的运动规划 Download PDFInfo
- Publication number
- CN114269525B CN114269525B CN202080059714.3A CN202080059714A CN114269525B CN 114269525 B CN114269525 B CN 114269525B CN 202080059714 A CN202080059714 A CN 202080059714A CN 114269525 B CN114269525 B CN 114269525B
- Authority
- CN
- China
- Prior art keywords
- robot
- robots
- motion
- processor
- obstacle
- 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.)
- Active
Links
- 230000033001 locomotion Effects 0.000 title claims abstract description 489
- 238000001514 detection method Methods 0.000 claims abstract description 70
- 230000004044 response Effects 0.000 claims abstract description 24
- 238000000034 method Methods 0.000 claims description 105
- 230000007704 transition Effects 0.000 claims description 20
- 230000000903 blocking effect Effects 0.000 abstract description 3
- 238000004422 calculation algorithm Methods 0.000 description 23
- 238000004891 communication Methods 0.000 description 18
- 238000010586 diagram Methods 0.000 description 15
- 230000003068 static effect Effects 0.000 description 13
- 230000008447 perception Effects 0.000 description 12
- 238000012545 processing Methods 0.000 description 10
- 230000008859 change Effects 0.000 description 7
- 238000011156 evaluation Methods 0.000 description 7
- 230000008569 process Effects 0.000 description 7
- 238000003491 array Methods 0.000 description 6
- 230000001953 sensory effect Effects 0.000 description 6
- 238000013459 approach Methods 0.000 description 5
- 238000006243 chemical reaction Methods 0.000 description 5
- 239000000463 material Substances 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 238000010276 construction Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 239000012636 effector Substances 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000007689 inspection Methods 0.000 description 3
- 230000002085 persistent effect Effects 0.000 description 3
- 230000009466 transformation Effects 0.000 description 3
- 230000001052 transient effect Effects 0.000 description 3
- 241001465754 Metazoa Species 0.000 description 2
- 235000014676 Phragmites communis Nutrition 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 2
- 238000007728 cost analysis Methods 0.000 description 2
- 238000005265 energy consumption Methods 0.000 description 2
- 230000007613 environmental effect Effects 0.000 description 2
- 239000012530 fluid Substances 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 238000012549 training Methods 0.000 description 2
- 241000207875 Antirrhinum Species 0.000 description 1
- 241000879777 Lynx rufus Species 0.000 description 1
- 102000055788 SPARC family Human genes 0.000 description 1
- 108700015859 SPARC family Proteins 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 239000004020 conductor Substances 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 230000004043 responsiveness Effects 0.000 description 1
- -1 signal buses Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B25—HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
- B25J—MANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
- B25J9/00—Programme-controlled manipulators
- B25J9/16—Programme controls
- B25J9/1656—Programme controls characterised by programming, planning systems for manipulators
- B25J9/1664—Programme controls characterised by programming, planning systems for manipulators characterised by motion, path, trajectory planning
- B25J9/1666—Avoiding collision or forbidden zones
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B25—HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
- B25J—MANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
- B25J9/00—Programme-controlled manipulators
- B25J9/16—Programme controls
- B25J9/1602—Programme controls characterised by the control system, structure, architecture
- B25J9/1605—Simulation of manipulator lay-out, design, modelling of manipulator
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B25—HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
- B25J—MANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
- B25J9/00—Programme-controlled manipulators
- B25J9/16—Programme controls
- B25J9/1679—Programme controls characterised by the tasks executed
- B25J9/1682—Dual arm manipulator; Coordination of several manipulators
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B2219/00—Program-control systems
- G05B2219/30—Nc systems
- G05B2219/35—Nc in input of data, input till input file format
- G05B2219/35148—Geometric modeling for swept volume of moving solids
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B2219/00—Program-control systems
- G05B2219/30—Nc systems
- G05B2219/40—Robotics, robotics mapping to robotics vision
- G05B2219/40446—Graph based
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B2219/00—Program-control systems
- G05B2219/30—Nc systems
- G05B2219/40—Robotics, robotics mapping to robotics vision
- G05B2219/40475—In presence of moving obstacles, dynamic environment
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B2219/00—Program-control systems
- G05B2219/30—Nc systems
- G05B2219/40—Robotics, robotics mapping to robotics vision
- G05B2219/40512—Real time path planning, trajectory generation
Landscapes
- Engineering & Computer Science (AREA)
- Robotics (AREA)
- Mechanical Engineering (AREA)
- Automation & Control Theory (AREA)
- Manipulator (AREA)
- Control Of Position, Course, Altitude, Or Attitude Of Moving Bodies (AREA)
Abstract
在对在共享工作空间中操作的多个机器人中的任何给定机器人执行运动规划时,在机器人的运动规划中有用的碰撞检测有利地将多个机器人中的每个的规划运动表示为障碍,包括考虑在碰撞评估期间规划的运动。至少部分地基于碰撞评估,给运动规划图的边分配成本值。障碍可以在相应的运动完成时被削减。运动规划请求可以排队,并且一些机器人例如响应于错误或阻挡状况被跳过。
Description
技术领域
本公开总体上涉及机器人运动规划,特别地涉及通过处理器电路执行碰撞检测来产生运动规划以驱动共享工作空间中的机器人等的系统和方法。
背景技术
相关技术的描述
运动规划是机器人控制和机器人学中的一个基本问题。通常,为了在不与操作环境中的任何障碍碰撞或者减少与操作环境中的任何障碍碰撞的可能性的情况下完成任务,运动规划指定了机器人从开始状态到目标状态能够遵循的路径。运动规划面临的挑战包括即使环境特征发生变化,也能够以非常快的速度执行运动规划。例如,环境中一个或更多个障碍的位置或方向等特征可能会随着时间变化。挑战还包括使用成本较低的设备、以较低的能耗和有限的存储量(例如,存储器电路,例如处理器芯片电路)来执行运动规划。
机器人学中的一个问题是两个或更多个机器人在共享工作空间(工作空间通常被称为工作单元)中的操作,例如,该在共享工作空间,机器人或机器人的机器人附肢可能在执行任务期间彼此干扰。
一种在公共工作空间操作多个机器人的方法能够称为任务级方法。任务级方法可以采用教和重复训练。工程师可以通过定义工作空间的共享部分,并对单个机器人进行编程,使得在任何给定时间点只有一个机器人处于共享工作空间中,来确保机器人没有碰撞。例如,当第一个机器人开始进入工作空间时,第一个机器人设置一个标志。控制器(例如,编程逻辑控制器(PLC))读取该标志,并防止其他机器人移动到共享工作空间中,直到第一机器人在退出工作空间时解除该标志。这种方法直观,易于理解、实现和故障排除。然而,因为任务级碰撞消除的使用通常导致至少一个机器人在相当长的时间内空闲,因此即使空闲机器人在共享工作空间中执行有用的工作在技术上是可能的,这种方法也必然具有低的工作吞吐量。
在公共工作空间中操作多个机器人的另一种方法采用离线规划,以便实现比上述基于任务级消除碰撞的方法高的工作吞吐量。为此,系统可以尝试在所有机器人或机器人附肢的组合关节空间中解决规划问题。例如,如果两个6自由度(DOF)附肢在一个工作空间中,则必须解决12DOF规划问题。虽然这种方法实现了较高的性能,但规划可能会非常耗时。12DOF的问题对于常规运动规划算法来说显得太大,以至于无法使用当前可用的体系结构来解决。
解决这些问题的一种策略是优化第一机器人/机器人附肢的运动,然后手动优化第二机器人/机器人附肢的运动。这可以采用迭代模拟运动来确保机器人/机器人附肢不会相互碰撞,这可能需要许多小时的计算时间。此外,如果对工作空间的修改导致机器人/机器人附肢之一的轨迹发生变化,则必须重新验证整个工作流程。
发明内容
本文描述的结构和算法有助于在共享工作空间或工作单元中操作的两个或更多个机器人的操作,防止或至少降低机器人或机器人的机器人附肢在操作以在共享工作空间中执行各自任务时相互碰撞的风险。
本文描述的结构和算法使得高自由度机器人能够避免碰撞并在变化的共享环境中继续工作。一种有效的规划方法能够在有或没有硬件加速的情况下加速,以在几毫秒内产生无碰撞的运动规划。在任务执行期间,超快“实时”运动规划允许在运行时决定机器人路径,而不需要训练或耗时的路径优化。这能够有利地允许多个机器人在共享工作空间中的协调。
在至少一些实施方式中,本文描述的结构和算法可以保证多个机器人在紧密、共享的工作空间中的无碰撞机器人协调。即使在高速运行时,机器人的所有部件(例如,机器人附肢、臂端工具、末端执行器)也都可以保证无碰撞运动。
通过执行自主规划,本文描述的结构和算法可以有利地减少多机器人工作空间的编程工作。在至少一些实施方式中,操作员不需要对任何安全区域、时间同步或联合空间轨迹进行编程。输入可以限于要执行的任务的描述和机器人的几何模型。输入还可以包括固定物体的表示,或者可选地包括具有不可预测轨迹的物体(例如,人)。
本文描述的结构和算法可以有利地动态分配要由机器人执行的任务。一个或更多个目标姿势在任务执行期间可能改变。即使给定的机器人出现故障或被阻挡,任务的整体操作或执行也可以继续。
在至少一些实施方式中,本文描述的结构和算法可以允许机器人例如经由非专有通信信道(例如,以太网连接)来共享信息,这可以有利地促进来自不同制造商的机器人集成在共享工作空间中。
在至少一些实施方式中,本文描述的结构和算法可以在没有摄像机或其他感知传感器的情况下操作。在至少一些实施方式中,机器人之间的协调依赖于机器人的几何模型、机器人传达它们的各自运动规划的能力以及共享工作空间的几何模型。在其他实施方式中,例如为了避开可能进入或占据共享工作空间的部分的人或其他动态障碍,可以可选地采用视觉或其他感知。
各种各样的算法被用来解决运动规划问题。这些算法中的每个通常需要能够确定机器人的给定姿势或从一个姿势到另一个姿势的运动是否导致与机器人本身或环境中的障碍的碰撞。碰撞评估或检查能够使用处理器“在软件中”执行,该处理器执行来自存储的一组处理器可执行指令中的处理器可执行指令以执行算法。碰撞评估或检查能够使用一组专用硬件电路(例如,在现场可编程门阵列(FPGA)、专用集成电路(ASIC)中实现的碰撞检查电路)“在硬件中”执行。这种电路可以例如表示在相应运动或两种状态之间的转换期间由机器人/机器人附肢或其部分扫过的体积(即,扫掠体积)。这些电路可以例如产生布尔评估结果,该布尔评估结果指示运动是否会与任何障碍碰撞,其中至少一些障碍表示在共享工作空间中操作的其他机器人在执行运动或转换时扫过的体积。
方面1.描述了一种控制多个机器人在公共工作空间中操作的方法,所述公共工作空间为所述机器人在其中的运动范围交叠的工作空间。所述方法可以概括为包括:
为所述多个机器人中的机器人R1生成第一运动规划;
对于至少一个机器人Ri中的每个,从i等于2到i等于n,其中,n是所述多个机器人中机器人的总数,并且n是等于或大于2的整数,
将至少机器人R1的多个运动表示为至少一个障碍;
相对于所述至少一个障碍的表示,针对机器人Ri的至少部分的至少一个运动执行碰撞检测;以及
至少部分地基于针对所述机器人Ri的至少部分的至少一个运动的碰撞检测,生成机器人Ri的第一运动规划;并且所述方法还包括:
至少部分地基于所述多个机器人中的相应机器人的相应第一运动规划,提供信号以控制机器人R1到机器人Rn中的至少一个机器人的操作。
方面2.根据方面1所述的方法,还包括:
响应于所述机器人R1完成至少一个运动,更新障碍的表示以消除与所述机器人R1完成的至少一个运动对应的部分。
方面3.根据方面1所述的方法,还包括:
响应于机器人R2到机器人Rn中的任一个或更多个机器人完成至少一个运动,更新障碍的表示以消除与机器人R2到机器人Rn中的相应机器人完成的至少一个运动对应的部分。
方面4.根据方面1所述的方法,还包括:
为所述多个机器人中的机器人R1生成第二运动规划;
对于至少一个机器人Ri中的每个,从i等于2到i等于n,其中,n是所述多个机器人中机器人的总数,并且n是等于或大于2的整数,
将至少机器人R1的多个运动表示为至少一个障碍;
相对于至少一个障碍的表示,针对机器人Ri的至少部分的至少一个运动执行碰撞检测;以及
至少部分地基于针对机器人Ri的至少部分的至少一个运动的碰撞检测,生成机器人Ri的第二运动规划;并且所述方法还包括:
至少部分地基于所述多个机器人中的相应机器人的相应第二运动规划,提供信号以控制机器人R1到机器人Rn中的至少一个机器人的操作。
方面5.根据方面4所述的方法,其中,为机器人R1到机器人Rn生成第一运动规划的步骤从i等于1到i等于n连续发生。
方面6.根据方面5所述的方法,其中,为机器人R1到机器人Rn生成第二运动规划的步骤从i等于1到i等于n连续发生。
方面7.根据方面5所述的方法,其中,为机器人R1到机器人Rn生成第二运动规划不从i等于1到i等于n连续发生。
方面8.根据方面4所述的方法,其中,至少部分地基于所述多个机器人中的相应机器人的相应第一运动规划,提供信号以控制机器人R1到机器人Rn中的至少一个机器人的操作包括提供使一个机器人Ri在所述机器人R1之前移动的信号,并且还包括:
响应于机器人Ri完成至少一个运动,在为多个机器人中的机器人R1生成第二运动规划之前,更新障碍的表示以消除与机器人Ri完成的至少一个运动对应的部分。
方面9.根据方面1所述的方法,还包括:
为多个机器人中的机器人R1生成第二运动规划;
对于两个或更多个机器人Ri中的一些但不是全部,从i等于2到i等于n,其中,n是所述多个机器人中机器人的总数,并且n是等于或大于3的整数,
将至少机器人R1的多个运动表示为至少一个障碍;
相对于至少一个障碍的表示,针对机器人Ri的至少部分的至少一个运动执行碰撞检测;和
至少部分地基于针对机器人Ri的至少部分的至少一个运动的碰撞检测,生成所述机器人Ri的第二运动规划;并且所述方法还包括:
至少部分地基于所述多个机器人中的相应机器人的相应第二运动规划,提供信号以控制机器人R1到机器人Rn中的至少一个机器人的操作。
方面10.根据方面9所述的方法,其中,跳过为机器人R2到机器人Rn之一生成第二运动规划。
方面11.根据方面9所述的方法,其中,响应于机器人R2到机器人Rn中的一个机器人被机器人R2到机器人Rn中的另一个机器人阻挡而无法移动,跳过为机器人R2到机器人Rn中的相应机器人生成第二运动规划。
方面12.根据方面9所述的方法,其中,响应于机器人R2到机器人Rn中的一个机器人具有指示错误状况已经发生的错误状态,跳过为机器人R2到机器人Rn中的相应机器人生成第二运动规划。
方面13.根据方面1所述的方法,其中,将至少机器人R1的多个运动表示为至少一个障碍包括,对于至少一个机器人Ri+1,在针对机器人Ri+1的至少一个运动执行碰撞检测之前,将机器人R1到机器人Ri中的两个或更多个机器人的运动表示为障碍。
方面14.根据方面13所述的方法,其中,在针对机器人Ri+1的至少一个运动执行碰撞检测之前,将机器人R1到机器人Ri中的两个或更多个机器人的运动表示为障碍包括:使用先前在运行前计算的一组扫掠体积,每个扫掠体积表示当机器人R1到机器人Ri中的相应机器人的至少部分沿着由相应运动表示的轨迹移动时,由机器人R1到机器人Ri中的相应机器人的所述部分扫掠的相应体积。
方面15.根据方面13所述的方法,还包括:
接收先前在运行前计算的一组扫掠体积,每个扫掠体积表示当机器人R1到机器人Ri中的相应机器人的至少部分沿着由相应运动表示的轨迹移动时,由机器人R1到机器人Ri中的相应机器人的至少部分扫掠的相应体积。
方面16.根据方面13所述的方法,其中,在针对机器人Ri+1的至少一个运动执行碰撞检测之前,将机器人R1到机器人Ri中的两个或更多个机器人的运动表示为障碍包括:将机器人R1到机器人Ri中的两个或更多个机器人的运动表示为占用网格、分层树或欧几里德距离场中的至少一个。
方面17.根据方面1所述的方法,其中,将至少机器人R1的运动中的每个表示为至少一个障碍包括:使用相应的扫掠体积来表示相应的运动,所述扫掠体积对应于在相应运动期间由至少机器人R1的至少部分所扫掠的体积,并且其中,相对于所述至少一个障碍的表示,针对机器人Ri的至少部分的至少一个运动执行碰撞检测包括,使用先前在运行前计算的扫掠体积的表示来执行碰撞检测,所述扫掠体积表示当机器人Ri的至少部分沿着由相应运动表示的轨迹移动时机器人Ri的所述部分扫掠的相应体积。
方面18.根据方面1所述的方法,还包括:
对于多个机器人中的机器人R1到机器人Rn中的每个,通过相应的运动规划图表示相应机器人,每个运动规划图包括多个节点和边,所述节点表示相应机器人的相应状态,所述边表示相应节点对中由所述边连接的相应节点对表示的相应状态之间的有效转换。
方面19.描述了一种控制多个机器人在公共工作空间中操作的系统,所述公共工作空间为所述机器人在其中的运动范围交叠的工作空间。所述系统可以概括为包括:
至少一个处理器;和
至少一个非易失性存储介质,其通信地联接到所述至少一个处理器,并且存储处理器可执行指令,所述处理器可执行指令在被所述至少一个处理器执行时,使得所述至少一个处理器:
为所述多个机器人中的机器人R1生成第一运动规划;
对于至少一个机器人Ri中的每个,从i等于2到i等于n,其中,n是所述多个机器人中机器人的总数,并且n是等于或大于2的整数,
将至少机器人R1的多个运动表示为至少一个障碍;
相对于所述至少一个障碍的表示,针对机器人Ri的至少部分的至少一个运动执行碰撞检测;以及
至少部分地基于针对所述机器人Ri的至少部分的至少一个运动的碰撞检测,生成机器人Ri的第一运动规划;并且进一步:
至少部分地基于所述多个机器人中的相应机器人的相应第一运动规划,提供信号以控制机器人R1到机器人Rn中的至少一个机器人的操作。
方面20.根据方面19所述的系统,其中,所述处理器可执行指令在被所述至少一个处理器执行时,使得所述至少一个处理器进一步:
响应于所述机器人R1完成至少一个运动,更新障碍的表示以消除与所述机器人R1完成的至少一个运动对应的部分。
方面21.根据方面19所述的系统,其中,所述处理器可执行指令在被所述至少一个处理器执行时,使得所述至少一个处理器进一步:
响应于机器人R2到机器人Rn中的任一个或更多个机器人完成至少一个运动,更新障碍的表示以消除与机器人R2到机器人Rn中的相应机器人完成的至少一个运动对应的部分。
方面22.根据方面19所述的系统,其中,所述处理器可执行指令在被所述至少一个处理器执行时,使得所述至少一个处理器进一步:
为所述多个机器人中的机器人R1生成第二运动规划;
对于至少一个机器人Ri中的每个,从i等于2到i等于n,其中,n是所述多个机器人中机器人的总数,并且n是等于或大于2的整数,
将至少机器人R1的多个运动表示为至少一个障碍;
相对于至少一个障碍的表示,针对机器人Ri的至少部分的至少一个运动执行碰撞检测;以及
至少部分地基于针对机器人Ri的至少部分的至少一个运动的碰撞检测,生成机器人Ri的第二运动规划;并且进一步:
至少部分地基于所述多个机器人中的相应机器人的相应第二运动规划,提供信号以控制机器人R1到机器人Rn中的至少一个机器人的操作。
方面23.根据方面22所述的系统,其中,为机器人R1到机器人Rn生成第一运动规划的步骤从i等于1到i等于n连续发生。
方面24.根据方面23所述的系统,其中,为机器人R1到机器人Rn生成第二运动规划的步骤从i等于1到i等于n连续发生。
方面25.根据方面23所述的系统,其中,为机器人R1到机器人Rn生成第二运动规划不从i等于1到i等于n连续发生。
方面26.根据方面22所述的系统,其中,为了至少部分地基于所述多个机器人中的相应机器人的相应第一运动规划,控制机器人R1到机器人Rn中的至少一个机器人的操作,所述处理器可执行指令在被所述至少一个处理器执行时,使得所述至少一个处理器提供使一个机器人Ri在所述机器人R1之前移动的信号,并且进一步:
响应于机器人Ri完成至少一个运动,在为多个机器人中的机器人R1生成第二运动规划之前,更新障碍的表示以消除与机器人Ri完成的至少一个运动对应的部分。
方面27.根据方面19所述的系统,其中,所述处理器可执行指令在被所述至少一个处理器执行时,使得所述至少一个处理器进一步:
为多个机器人中的机器人R1生成第二运动规划;
对于两个或更多个机器人Ri中的一些但不是全部,从i等于2到i等于n,其中,n是所述多个机器人中机器人的总数,并且n是等于或大于3的整数,
将至少机器人R1的多个运动表示为至少一个障碍;
相对于至少一个障碍的表示,针对机器人Ri的至少部分的至少一个运动执行碰撞检测;和
至少部分地基于针对机器人Ri的至少部分的至少一个运动的碰撞检测,生成所述机器人Ri的第二运动规划;并且进一步:
至少部分地基于所述多个机器人中的相应机器人的相应第二运动规划,提供信号以控制机器人R1到机器人Rn中的至少一个机器人的操作。
方面28.根据方面27所述的系统,其中,跳过为机器人R2到机器人Rn之一生成第二运动规划。
方面29.根据方面27所述的系统,其中,响应于机器人R2到机器人Rn中的一个机器人被机器人R2到机器人Rn中的另一个机器人阻挡而无法移动,跳过为机器人R2到机器人Rn中的相应机器人生成第二运动规划。
方面30.根据方面27所述的系统,其中,响应于机器人R2到机器人Rn中的一个机器人具有指示错误状况已经发生的错误状态,跳过为机器人R2到机器人Rn中的相应机器人生成第二运动规划。
方面31.根据方面19所述的系统,其中,为了将至少机器人R1的多个运动表示为至少一个障碍,所述处理器可执行指令在被所述至少一个处理器执行时,使得所述至少一个处理器:对于至少一个机器人Ri+1,在针对机器人Ri+1的至少一个运动执行碰撞检测之前,将机器人R1到机器人Ri中的两个或更多个机器人的运动表示为障碍。
方面32.根据方面31所述的系统,其中,为了将机器人R1到机器人Ri中的两个或更多个机器人的运动表示为障碍,所述处理器可执行指令在被所述至少一个处理器执行时,使得所述至少一个处理器:使用先前在运行前计算的一组扫掠体积,每个扫掠体积表示当机器人R1到机器人Ri中的相应机器人的至少部分沿着由相应运动表示的轨迹移动时,由机器人R1到机器人Ri中的相应机器人的所述部分扫掠的相应体积。
方面33.根据方面31所述的系统,其中,所述处理器可执行指令在被所述至少一个处理器执行时,使得所述至少一个处理器进一步:
接收先前在运行前计算的一组扫掠体积,每个扫掠体积表示当机器人R1到机器人Ri中的相应机器人的至少部分沿着由相应运动表示的轨迹移动时,由机器人R1到机器人Ri中的相应机器人的至少部分扫掠的相应体积。
方面34.根据方面31所述的系统,其中,为了在针对机器人Ri+1的至少一个运动执行碰撞检测之前,将机器人R1到机器人Ri中的两个或更多个机器人的运动表示为障碍,所述处理器可执行指令在被所述至少一个处理器执行时,使得所述至少一个处理器:将机器人R1到机器人Ri中的两个或更多个机器人的运动表示为占用网格、分层树或欧几里德距离场中的至少一个。
方面35.根据方面19所述的系统,其中,为了将至少机器人R1的运动中的每个表示为至少一个障碍,所述处理器可执行指令在被所述至少一个处理器执行时,使得所述至少一个处理器:使用相应的扫掠体积来表示相应的运动,所述扫掠体积对应于在相应运动期间由至少机器人R1的至少部分所扫掠的体积,并且其中,为了相对于所述至少一个障碍的表示,针对机器人Ri的至少部分的至少一个运动执行碰撞检测,所述处理器可执行指令在被所述至少一个处理器执行时,使得所述至少一个处理器:至少部分地基于先前在运行前计算的扫掠体积的表示来执行碰撞检测,所述扫掠体积表示当机器人Ri的至少部分沿着由相应运动表示的轨迹移动时机器人Ri的所述部分扫掠的相应体积。
方面36.根据方面19所述的系统,其中,对于多个机器人中的机器人R1到机器人Rn中的每个,通过相应的运动规划图表示相应机器人,每个运动规划图包括多个节点和边,所述节点表示相应机器人的相应状态,所述边表示相应节点对中由所述边连接的相应节点对表示的相应状态之间的有效转换。
附图说明
在附图中,相同的附图标记表示相似的元件或动作。附图中元件的大小和相对位置不一定按比例绘制。例如,各种元件的形状和角度不是按比例绘制的,并且这些元件中的一些被任意放大和定位以提高绘图的易读性。此外,所绘制的元件的特定形状并不旨在传达关于特定元件的实际形状的任何信息,而是仅仅是为了便于在附图中识别而选择的。
图1是根据一个所示实施方式的机器人系统的示意图,该机器人系统包括在共享工作空间中操作以执行任务的多个机器人并且包括运动规划器,该运动规划器考虑到其他机器人的规划运动来动态地产生机器人的运动规划,并且该机器人系统可选地包括感知子系统。
图2是根据一个所示实施方式的环境的功能框图,在该环境中,第一机器人由机器人控制系统控制,该机器人控制系统包括运动规划器,向其他机器人的其他运动规划器提供运动规划,并且还包括单独的、与运动规划器不同的规划图源。
图3是根据一个所示实施方式的用于在共享工作空间中操作的机器人的C空间的示例运动规划图。
图4是示出根据至少一个所示实施方式在基于处理器的系统中产生运动规划图和扫掠体积的操作方法的流程图。
图5A和图5B是示出根据一个所示实施方式在基于处理器的系统中产生运动规划并可选地控制在共享工作空间中操作的多个机器人的操作方法的流程图。
图6是示出根据至少一个所示实施方式在基于处理器的系统中产生运动规划并可选地控制在共享工作空间中操作的多个机器人的操作方法的流程图。
具体实施方式
在以下描述中,阐述了某些特定细节,以便提供对各种公开实施例的透彻理解。然而,相关领域的技术人员将认识到,实施例可以在没有一个或更多个这些特定细节的情况下或者利用其他方法、组件、材料等来实施。在其他情况下,与计算机系统、致动器系统和/或通信网络相关联的公知结构没有详细示出或描述,以避免不必要地模糊对实施例的描述。在其他情况下,用于生成一个或更多个物体等的感知数据和体积表示的公知计算机视觉方法和技术没有详细描述,以避免不必要地模糊对实施例的描述。
除非上下文另有要求,否则在整个说明书和所附权利要求书中,词语“包括”及其变型应被解释为开放的、包含的意思,即“包括但不限于”。
在整个说明书中提到“一个实施方式”或“实施方式”或者“一个实施例”或“实施例”意味着结合该实施例描述的特定特征、结构或特性包括在至少一个实施方式或至少一个实施例中。因此,在整个说明书的不同地方出现的短语“一个实施方式”或“实施方式”或者“一个实施例”或“实施例”不一定都指同一实施方式或实施例。此外,在一个或更多个实施方式或实施例中,特定特征、结构或特性可以以任何合适的方式组合。
如在本说明书和所附权利要求中所使用的,除非内容另有明确规定,否则单数形式“一”、“一个”和“所述”包括复数个指代物。还应该注意,除非上下文明确另有规定,否则术语“或”通常以其包括“和/或”的含义使用。
如在本说明书和所附权利要求中所使用的,当在是否会发生或导致碰撞的上下文中使用时,术语“确定”及其变型意指对给定姿势或两个姿势之间通过多个中间姿势的移动是否会导致机器人的一部分与某个物体(例如,机器人的另一部分、另一机器人的部分、持久障碍、例如人之类的瞬时障碍)之间的碰撞进行评估或预测。
本文提供的公开的标题和摘要仅仅是为了方便,并不解释实施例的范围或含义。
图1示出了根据一个所示实施方式的机器人系统100,该机器人系统包括在共享工作空间104中操作以执行任务的多个机器人102a、102b、102c(统称为102)。
机器人102能够采取多种形式中的任何一种。通常,机器人将采取或具有一个或更多个机器人附肢的形式。机器人102可以包括具有一个或更多个关节的一个或更多个连杆,以及联接并可操作以响应控制或驱动信号来移动连杆的致动器(例如,电动机、步进电动机、螺线管、气动致动器或液压致动器)。气动致动器可以例如包括一个或更多个活塞、气缸、阀、储气器和/或压力源(例如压缩机、鼓风机)。液压致动器可以例如包括一个或更多个活塞、气缸、阀、流体储存器(例如低压缩性液压流体)和/或压力源(例如压缩机、鼓风机)。机器人系统100可以采用其他形式的机器人102,例如自动车辆。
尽管在某些有限的实施方式中,共享工作空间104可以表示二维空间,但是共享工作空间104通常表示机器人102a-102c可以在其中操作和移动的三维空间。共享工作空间104是在其中机器人102的至少部分在空间和时间上可以交叠或者在不控制运动以避免碰撞的情况下发生碰撞的体积或区域。注意,工作空间104不同于机器人102a-102c的相应“配置空间”或“C空间”,这将在下面例如参照图3描述。
如本文所解释的,当从另一机器人102b的角度考虑时(即,当对另一机器人102b进行运动规划时),机器人102a或其部分可能构成障碍。共享工作空间104还可以包括其他障碍,例如机器(例如,输送机106)、桩、柱子、墙壁、天花板、地板、桌子、人和/或动物。共享工作空间104还可以包括一个或更多个工作物品或工件108,机器人102作为执行任务的一部分来操纵这些工作物品或工件108,例如一个或更多个包裹、包装、紧固件、工具、物品或其他物体。
机器人系统100可以包括一个或更多个机器人控制系统109a、109b、109c(共示出三个,109),所述一个或更多个机器人控制系统包括一个或更多个运动规划器,例如分别用于每个机器人102a、102b、102c的相应运动规划器110a、110b、110c(共示出三个,110)。在至少一些实施方式中,可以采用单个运动规划器109为两个、更多个或所有机器人102生成运动规划。运动规划器110通信地联接以控制机器人102中的相应机器人。运动规划器110还通信地联接以接收各种类型的输入,例如包括机器人几何模型112a、112b、112c(也称为运动学模型,统称为112)、任务消息114a、114b、114c(统称为114)以及对在共享工作空间104中操作的其他机器人102的运动规划或运动的其他表示116a、116b、116c(统称为116)。机器人几何模型112例如在机器人102的各自的C空间和/或关节、自由度、尺寸(例如,连杆的长度)方面限定给定机器人102的几何形状(如图2所示,机器人几何模型112到运动规划图的转换可以在运行前或任务执行前发生,例如由基于处理器的系统执行,该系统使用多种技术中的任何一种与机器人系统100不同并分离)。任务消息114例如根据相应机器人102的结束姿势、结束配置或结束状态和/或中间姿势、中间配置或中间状态来指定要执行的任务。姿势、配置或状态可以例如根据相应机器人102的关节位置和关节角度/旋转(例如,关节姿势、关节坐标)来定义。
运动规划器110可选地通信地联接以接收静态物体数据118a、118b、118c(统称为118)作为输入。静态物体数据118是工作空间104中静态物体的代表(例如,大小、形状、位置、占用的空间),其例如可以是先验已知的。静态物体可以例如包括工作空间中的一个或更多个固定结构,例如桩、柱子、墙壁、天花板、地板、输送机106。因为机器人102在共享工作空间中操作,所以对于每个机器人来说,静态物体通常是相同的。因此,在至少一些实施方式中,提供给运动规划器110的静态物体数据118a、118b、118c将是相同的。在其他实施方式中,对于每个机器人,提供给运动规划器110的静态物体数据118a、118b、118c可以例如基于机器人102在环境中的位置或方向或者机器人102的环境视角而不同。另外,如上所述,在一些实施方式中,单个运动规划器110可以为两个或更多个机器人102生成运动规划。
运动规划器110可选地通信地联接以接收例如由感知子系统124提供的感知数据120作为输入。感知数据120代表工作空间104中先验未知的静态和/或动态物体。感知数据120可以是通过一个或更多个传感器(例如,摄像机122a、122b)感测的和/或由感知子系统124转换成障碍的数字表示的原始数据。
可选的感知子系统124可以包括一个或更多个处理器,该处理器可以执行一个或更多个机器可读指令,该指令使得感知子系统124生成环境的相应离散化表示,机器人102将在该环境中操作以执行各种不同场景的任务。
可选传感器(例如,摄像机122a、122b)向感知子系统124提供原始感知信息(例如,点云)。可选的感知子系统124可以处理原始感知信息,并且得到的感知数据可以被提供为点云、占据网格、盒(例如,边界盒)或其他几何物体,或者表示环境中存在的障碍的体素流(即,“体素”相当于3D或体积像素)。障碍的表示可以可选地存储在片上存储器中。感知数据120可以表示在环境中哪些体素或子体积(例如,盒)在当前时间(例如,运行时间)被占据。在一些实施方式中,当表示环境中的机器人或另一障碍时,机器人或障碍(例如,包括其他机器人)的相应表面可以表示为体素或多边形网格(通常是三角形)。在某些情况下,将物体表示为盒(矩形棱柱、边界盒)或其他几何物体是有利的。由于物体不是随机成形的,因此体素的组织方式可能存在大量的结构;物体中的许多体素在3D空间中彼此紧邻。因此,将物体表示为盒可能需要少得多的位(即,可能只需要盒的两个相对角的x、y、z笛卡尔坐标)。此外,对盒执行相交测试在复杂性上与对体素执行相交测试相当。
至少一些实施方式可以组合多个传感器的输出,并且传感器可以提供非常精细粒度的体素化。然而,,为了使运动规划器有效地执行运动规划,可以使用较粗糙的体素(即,“处理器体素”)来表示环境和当在各种状态、配置或姿势之间进行转换时被机器人102或其部分扫过的3D空间中的体积。因此,可选的感知子系统124可以相应地变换传感器(例如,摄像机122a、122b)的输出。例如,摄像机122a、122b的输出可以在每个轴上使用10位精度,因此直接源自摄像机122a、122b的每个体素具有30位ID,并且有230个传感器体素。对于18位处理器体素ID,系统200a(图2)可以在每个轴上使用6位精度,并且将有218个处理器体素。因此,例如,每个处理器体素可以有212个传感器体素。在运行时,如果系统200a确定处理器体素内的任何传感器体素被占用,则系统200a认为处理器体素被占用,并相应地生成占用网格。
在图1中各种通信路径用箭头表示。通信路径可以例如采取一个或更多个有线通信路径(例如,电导体、信号总线或光纤)和/或一个或更多个无线通信路径(例如,经由RF或微波无线电和天线、红外收发器)的形式。注意,运动规划器110a-110c中的每个都直接或间接地彼此通信地联接,以将机器人102a-102c中的相应一个的运动规划提供给另外的运动规划器110a-110c。例如,运动规划器110a-110c可以经由网络基础设施彼此通信地联接,网络基础设施例如非专有网络基础设施(例如,以太网网络基础设施)126。这样可以有利地允许来自不同制造商的机器人在共享工作空间中操作。
术语“环境”用于指机器人的当前工作空间,该工作空间是两个或更多个机器人在同一工作空间中操作的共享工作空间。该环境可以包括障碍和/或工件(即机器人要与其交互或作用于其或与其一起作用的物品)。术语“任务”用于指机器人任务,其中机器人在不与其环境中的障碍发生碰撞的情况下从姿势A转换到姿势B。该任务可能涉及抓取或不抓取物品、移动或放下物品、旋转物品或取回或放置物品。从姿势A到姿势B的转换可以可选地包括一个或更多个中间姿势之间的转换。术语“场景”用来指一类环境/任务对。例如,一个场景可以是“在有3英尺的桌子或传送带的环境中,在大小和形状在给定范围内的x和y障碍之间的取放任务”。根据目标的位置以及障碍的大小和形状,可以有许多不同的任务/环境对符合这些标准。
运动规划器110可操作以动态地产生运动规划116,使机器人102在考虑其他机器人102的规划运动(例如,由相应的运动规划116或所得到的扫掠体积表示的运动)的同时,在环境中执行任务。当产生运动规划116时,运动规划器110可以可选地考虑先验静态物体118和/或感知数据120的表示。可选地,运动规划器110可以考虑其他机器人102在给定时间的运动状态,例如另一机器人102是否已经完成给定的运动或任务,并且允许基于正在完成的其他机器人之一的运动或任务来重新计算运动规划,从而使得先前排除的路径或轨迹可供选择。可选地,运动规划器110可以考虑机器人102的操作状况,例如故障状况的发生或检测、阻挡状态的发生或检测、和/或请求加速或延迟或跳过运动规划请求的发生或检测。
图2示出了根据一个所示实施方式的环境,在该环境中第一机器人控制系统200a包括第一运动规划器204a,该第一运动规划器生成第一运动规划206a以控制第一机器人202的操作,并且通过至少一个通信信道(由接近的箭头指示,例如,发射器、接收器、收发器、无线电、路由器、以太网)向其他机器人控制系统200b的其他运动规划器204b提供第一运动规划206a和/或作为障碍的运动表示,以控制其他机器人(图2中未示出)。
同样,其他机器人控制系统200b的其他运动规划器204b生成其他运动规划206b来控制其他机器人(图2中未示出)的操作,并将其他运动规划206b提供给第一运动规划器204a和其他机器人控制系统200b的其他运动规划器204b中的其他运动规划器。运动规划器204a、204b也可以接收指示各种机器人202的运动何时已经完成的运动完成消息209。这可以允许运动规划器204a、204b基于环境的当前或更新状态生成新的或更新的运动规划。例如,在第一机器人202已经完成作为由第一机器人执行的任务的一部分或全部运动之后,共享工作空间的一部分可以变得可用于第二机器人执行任务。
机器人控制系统200a、200b可以例如经由至少一个通信信道(由接近的箭头指示,例如,发射器、接收器、收发器、无线电、路由器、以太网)通信地联接,以从运动规划图208和/或扫掠体积表示211的一个或更多个源212接收运动规划图208和/或扫掠体积表示211。根据一个所示实施方式,运动规划图208和/或扫掠体积211的源212可以是单独的,并且与运动规划器204a、204b不同。运动规划图208和/或扫掠体积211的源212例如可以是可以由机器人202的相应制造商或由一些其他实体操作或控制的一个或更多个基于处理器的计算系统(例如,服务器计算机)。运动规划图208可以各自包括一组节点214(图2中只标出了两个)和一组边216(图2中只标出了两个),节点214表示相应机器人的状态、配置或姿势,边216连接相应节点对214的节点214并且表示状态、配置或姿势之间的合法或有效转换。状态、配置或姿势可以例如表示各个机器人202的每个关节的关节位置、方向、姿势或坐标的集合。因此,每个节点214可以表示机器人202或其部分的姿势,完全由包括机器人202的关节的姿势来定义。运动规划图208可以在运行前确定、设置或限定(即,在执行任务之前限定),例如在运行前或配置时间期间。扫掠体积211表示机器人202或其部分在执行对应于运动规划图208的相应边的运动或转换时将占据的相应体积。扫掠体积211可以以多种形式中的任何一种来表示,例如表示为体素、欧几里德距离场、几何物体的分层结构。这有利地允许一些计算最密集的工作在运行前被执行,此时响应性不是特别重要。
每个机器人202都可以包括一组连杆、关节、臂端工具或末端执行器和/或可操作以使连杆围绕关节移动的致动器218a、218b、218c(三个共同示出为218)。每个机器人202都可以包括接收控制信号(例如以运动规划206a的形式)并提供驱动信号来驱动致动器218的一个或更多个运动控制器(例如,马达控制器)220(仅示出一个)。
每个机器人202可以有各自的机器人控制系统200a、200b,或者一个机器人控制系统200a可以为两个或更多个机器人202执行运动规划。出于说明的目的,将详细描述一个机器人控制系统200a。本领域的技术人员将认识到,该描述能够应用于其他机器人控制系统200b的类似或甚至相同的另外实例。
机器人控制系统200a可以包括一个或更多个处理器222,以及一个或更多个相关联的非易失性计算机或处理器可读存储介质,例如系统存储器224a、磁盘驱动器224b和/或处理器222的存储器或寄存器(未示出)。非易失性计算机或处理器可读存储介质224a、224b经由一个或更多个通信信道(例如系统总线226)通信地联接到处理器222a。系统总线226能够采用任何已知的总线结构或体系结构,包括具有存储器控制器的存储器总线、外围总线和/或本地总线。一个或更多个这样的部件也可以或替代地经由一个或更多个其他通信信道彼此通信,一个或更多个其他通信信道例如一个或更多个并行电缆、串行电缆或能够高速通信的无线网络信道,例如通用串行总线(“USB”)3.0、高速外围组件互连(PCIe)或经由
机器人控制系统200a还可以可通信地联接到一个或更多个远程计算机系统,例如服务器计算机(例如运动规划图212的源)、台式计算机、膝上型计算机、超便携式计算机、平板计算机、智能手机、可穿戴计算机和/或传感器(图2中未示出),它们例如经由网络接口227直接可通信地联接或间接可通信地联接到机器人控制系统200的各部件。远程计算系统(例如,服务器计算机(例如,运动规划图的源212))可用于对机器人控制系统200a和机器人控制系统200内的各部件编程、配置、控制或以其他方式与之交互或向它们输入数据(例如,运动规划图208、扫掠体积211、任务规范215)。这种连接可以通过一个或更多个通信信道,例如一个或更多个广域网(WAN),例如以太网或使用互联网协议的互联网。如上所述,运行前计算(例如,运动规划图族的生成)可以由独立于机器人控制系统200a或机器人202的系统执行,而运行时计算可以由机器人控制系统200的处理器222执行,在一些实施方式中,处理器222可以在机器人202上。
如上所述,机器人控制系统200a可以包括一个或更多个处理器222(即电路)、非易失性存储介质224a、224b和联接各系统部件的系统总线216。处理器222可以是任何逻辑处理单元,例如一个或更多个中央处理单元(CPU)、数字信号处理器(DSP)、图形处理单元(GPU)、现场可编程门阵列(FPGA)、专用集成电路(ASIC)、可编程逻辑控制器(PLC)等。系统存储器224a可以包括只读存储器(“ROM”)226、随机存取存储器(“RAM”)228、FLASH存储器230、EEPROM(未示出)。能够形成ROM 226的一部分的基本输入/输出系统(“BIOS”)232包含有助于例如在启动期间在机器人控制系统200内的元件之间传递信息的基本例程。
驱动器224b可以是例如用于读写磁盘的硬盘驱动器、用于读写固态存储器的固态(例如闪存)驱动器和/或用于读写可移动光盘的光盘驱动器。在各种不同的实施例中,机器人控制系统200a还可以包括这些驱动器的任意组合。驱动器224b可以通过系统总线226与处理器222通信。如相关领域的技术人员所知,驱动器224b可以包括联接在这些驱动器与系统总线226之间的接口或控制器(未示出)。驱动器224b及其相关联的计算机可读介质为机器人控制系统200提供计算机或处理器可读和/或可执行指令、数据结构、程序模块和其他数据的非易失性存储。相关领域的技术人员将会理解,可以采用能够存储计算机可访问数据的其他类型的计算机可读介质,例如WORM驱动器、RAID驱动器、盒式磁带、数字视频盘(“DVD”)、伯努利盒式磁带、RAM、ROM、智能卡等。
可执行指令和数据能够存储在系统存储器224a中,例如操作系统236、一个或更多个应用程序238、其他程序或模块240和程序数据242。应用程序238可以包括使处理器212执行以下各项中的一项或更多项的处理器可执行指令:生成机器人202将在其中操作的环境(包括环境中的障碍和/或目标物体或工件)的离散化表示,在该环境中,其他机器人的计划运动可以表示为障碍;生成运动规划或路线图,包括要求或以其他方式获得碰撞评估的结果,设置运动规划图中的边的成本值,以及评估运动规划图中的可用路径;和/或可选地存储所确定的多个运动规划或路线图。运动规划构建(例如,碰撞检测或评估、基于碰撞检测或评估来更新运动规划图中的边的成本、以及路径搜索或评估)能够如本文所述(例如,参照图4和图5A和图5B)以及通过引用并入本文中的参考文献中执行。碰撞检测或评估可以使用本文别处描述的各种结构和技术来执行。应用程序238还可以包括一个或更多个机器可读和机器可执行指令,这些指令使得处理器222执行其他操作,例如可选地处理(通过传感器捕获的)感知数据。应用程序238还可以包括一个或更多个机器可执行指令,这些指令使得处理器212执行在本文描述的以及通过引用并入本文中的参考文献中描述的各种其他方法。
在各种实施例中,上述一个或更多个操作可以由经由网络接口227通过通信网络(例如,网络210)链接的一个或更多个远程处理设备或计算机执行。
虽然在图2中示出为存储在系统存储器224a中,但是操作系统236、应用程序238、其他程序/模块240和程序数据242能够存储在其他非易失性计算机或处理器可读介质上,例如驱动器224b。
机器人控制系统200a的运动规划器204a可以包括专用的运动规划器硬件,或者可以全部或部分地通过处理器222和存储在系统存储器224a和/或驱动器224b中的处理器可执行指令来实现。
运动规划器204a可以包括或实现运动转换器250、碰撞检测器252、成本设置器254和路径分析器256。
运动转换器250将其他机器人的运动转换成障碍的表示。运动转换器250从其他运动规划器200b接收运动规划204b或运动的其他表示。然后,运动转换器250确定对应于运动的面积或体积。例如,运动转换器能够将运动转换成相应的扫掠体积,即由相应机器人或其部分在运动规划所表示的姿势之间移动或转换时扫掠的体积。有利地,运动规划器250可以简单地对障碍(例如,扫掠体积)进行排队,并且可以不需要确定、跟踪或指示相应运动或扫掠体积的时间。虽然被描述为给定机器人202的运动转换器250将其他机器人202b的运动转换成障碍,但是在一些实施方式中,其他机器人202b可以向给定机器人202提供特定运动的障碍表示(例如,扫掠体积)。
碰撞检测器252执行碰撞检测或分析,确定给定机器人202或其部分的转换或运动是否会导致与障碍的碰撞。如上所述,其他机器人的运动可以有利地表示为障碍。因此,碰撞检测器252能够确定一个机器人的运动是否将导致与在共享工作空间中移动的另一机器人的碰撞。
在一些实施方式中,碰撞检测器252实现基于软件的碰撞检测或评估,例如执行边界盒-边界盒碰撞评估或基于机器人202、202b或其部分在移动期间扫过的体积的几何(例如,球体)表示的分层结构进行评估。在一些实施方式中,碰撞检测器252例如采用一组专用硬件逻辑电路来表示障碍和通过专用硬件逻辑电路的运动的流表示来实现基于硬件的碰撞检测或评估。在基于硬件的碰撞检测或评估中,碰撞检测器可以采用一个或更多个可配置的电路阵列(例如一个或更多个FPGA 258),并且可以可选地产生布尔碰撞评估。
成本设置器254能够至少部分基于碰撞检测或评估来设置或调整运动规划图中的边成本。例如,成本设置器254能够为表示导致或可能导致碰撞的状态之间的转换或姿势之间的运动的边设置较高的成本值。同样例如,成本设置器254能够为表示不会导致或可能不会导致碰撞的状态之间的转换或姿势之间的运动的边设置较低的成本值。设置成本能够包括通过一些数据结构(例如,字段、指针、表)设置与相应边逻辑关联的成本值。
路径分析器256可以使用具有成本值的运动规划图来确定路径(例如,最优或优化的)。例如,路径分析器256可以构成用于确定两个状态、配置或姿势(由运动规划图中的相应节点来表示)之间的最低或较低成本路径的最小成本路径优化器。考虑到与代表碰撞可能性的每个边相关联的成本值,路径分析器256可以使用或执行任何种类的路径寻找算法,例如最低成本路径寻找算法。
可以使用用于确定最小成本路径的各种算法和结构,包括实现贝尔曼-福特算法的算法和结构,但是也可以使用其他算法和结构,包括但不限于任何这样的过程,其中最小成本路径被确定为运动规划图208中两个节点之间的路径,使得其组成边的成本或权重之和最小化。该过程通过使用将其他机器人的运动表示为障碍的运动规划图和碰撞检测来改进机器人102、202的运动规划技术,以提高效率和响应时间,从而找到“最佳”路径来无碰撞地执行任务。
运动规划器204a可以可选地包括削减器260。削减器260可以接收表示其他机器人完成运动的信息,该信息在本文被命名为运动完成消息209。或者,可以设置标志来指示完成。作为响应,削减器260可以移除表示现在完成的运动的障碍或障碍的一部分。这可以允许为给定的机器人生成新的运动规划,这可能更有效或者允许给定机器人专注于执行先前由于另一机器人的运动而被阻止的任务。这种方法有利地允许运动转换器250在生成运动的障碍表示时忽略运动的时机,同时仍然实现比使用其他技术好的吞吐量。运动规划器204a还可以发送信号、提示或触发,使得在给定障碍更改的情况下,碰撞检测器252执行新的碰撞检测或评估以产生更新的运动规划图(在更新的运动规划图中,与边相关联的边权重或成本已经被更改),并且使得成本设置器254和路径分析器256更新成本值并相应地确定新的或修改的运动规划。
运动规划器204a可以可选地包括将来自可选传感器262(例如,数码摄像机)的输出(例如,环境的数字化表示)转换成障碍的表示环境转换器263。因此,运动规划器204a能够执行考虑到环境中的暂时物体(例如人、动物等)的运动规划。
处理器212和/或运动规划器204a可以是或可以包括任何逻辑处理单元,例如一个或更多个中央处理单元(CPU)、数字信号处理器(DSP)、图形处理单元(GPU)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、可编程逻辑控制器(PLC)等。商用计算机系统的非限制性示例包括但不限于美国公司提供的Celeron、Core、Core 2、Itanium和Xeon系列微处理器;美国AMD公司提供的K8、K10、Bulldozer和Bobcat系列微处理器;美国AppleComputer公司提供的A5、A6和A7系列微处理器;美国Qualcomm公司提供的Snapdragon系列微处理器;以及美国Oracle公司提供的SPARC系列微处理器。图2所示的各种结构的构造和操作可以实现或采用在2017年6月9日提交的标题为“MOTION PLANNING FOR AUTONOMOUSVEHICLES AND RECONFIGURABLE MOTION PLANNING PROCESSORS”的国际专利申请No.PCT/US2017/036880中描述的或与之类似的结构、技术和算法;2016年1月5日提交的标题为“SPECIALIZED ROBOT MOTION PLANNING HARDWARE AND METHODS OF MAKING AND USINGSAME”的国际专利申请公开No.WO 2016/122840;和/或2018年1月12日提交的标题为“APPARATUS,METHOD AND ARTICLE TO FACILITATE MOTION PLANNING OF AN AUTONOMOUSVEHICLE IN AN ENVIRONMENT HAVING DYNAMIC OBJECTS”的美国专利申请No.62/616,783。
尽管不是必需的,但是将在计算机可执行指令的一般上下文中描述许多实施方式,例如存储在计算机或处理器可读介质上并由一个或更多个计算机或处理器执行的程序应用模块、对象或宏,所述计算机或处理器可以执行障碍表示、碰撞评估和其他运动规划操作。
运动规划操作可以包括但不限于生成或者将以下中的一个、更多个或全部转换为数字形式:基于几何模型112(图1)、任务114(图1)的机器人几何形状的表示;以及机器人在各状态下或姿势中和/或在状态或姿势之间移动期间占据的体积(例如,扫掠体积)的表示,其中所述数字形式例如是点云、欧几里德距离场、数据结构格式(例如,分层格式、非分层格式)和/或曲线(例如,多项式或样条表示)。运动规划操作可以可选地包括但不限于生成或者将以下中的一个、更多个或全部转换为数字形式:静态或持久障碍118(图1)的表示和/或静态或瞬时障碍120(图1)的感知数据表示,其中所述数字形式例如是点云、欧几里德距离场、数据结构格式(例如分层格式、非分层格式)和/或曲线(例如多项式或样条表示)。
运动规划操作可以包括但不限于使用各种碰撞评估技术或算法(例如,基于软件的、基于硬件的)来确定或检测或预测机器人的各状态或姿势的碰撞或机器人在状态或姿势之间的运动。
在一些实施方式中,运动规划操作可以包括但不限于确定一个或更多个运动规划图、运动规划或路线图;存储所确定的规划图、运动规划或路线图,和/或提供规划图、运动规划或路线图来控制机器人的操作。
在一个实施方式中,响应于函数调用或类似过程来执行碰撞检测或评估,并向其返回布尔值。碰撞检测器252可以通过一个或更多个现场可编程门阵列(FPGA)和/或一个或更多个专用集成电路(ASIC)实现,以执行碰撞检测,同时实现低延迟、较低的功耗,并增加能够处理的信息量。
在各种实施方式中,这样的操作可以完全在硬件电路中执行,或者作为存储在诸如系统存储器224a之类的存储器中的软件,且由一个或更多个硬件处理器222a来执行,例如一个或更多个微处理器、数字信号处理器(DSP)、现场可编程门阵列(FPGA)、专用集成电路(ASIC)、图形处理单元(GPU)处理器、编程逻辑控制器(PLC)、电可编程只读存储器(EEPROM),或者作为存储在存储器中的硬件电路和软件的组合来执行。
在2017年6月9日提交的标题为“MOTION PLANNING FOR AUTONOMOUS VEHICLESAND RECONFIGURABLE MOTION PLANNING PROCESSORS”的国际专利申请No.PCT/US2017/036880、2016年1月5日提交的标题为“SPECIALIZED ROBOT MOTION PLANNING HARDWAREAND METHODS OF MAKING AND USING SAME”的国际专利申请公开号WO2016/122840、2018年1月12日提交的标题为“APPARATUS,METHOD AND ARTICLE TO FACILITATE MOTIONPLANNING OF AN AUTONOMOUS VEHICLE IN AN ENVIRONMENT HAVING DYNAMIC OBJECTS”的美国专利申请No.62/616,783以及2019年6月3日提交的标题为“APPARATUS,METHODS ANDARTICLES TO FACILITATE MOTION PLANNING IN ENVIRONMENTS HAVING DYNAMICOBSTACLES”的美国专利申请No.62/856,548中也描述了可以全部或部分采用的感知、规划图构建、碰撞检测和路径搜索的各方面。相关领域的技术人员将理解,所示实施方式以及其他实施方式能够用其他系统结构和布置和/或其他计算系统结构和布置来实践,包括机器人、手持设备、多处理器系统、基于微处理器或可编程的消费电子产品、个人计算机(“PC”)、联网PC、微型计算机、大型计算机等的那些。实施方式或实施例或其部分(例如,在配置时和运行时)能够在分布式计算环境中实践,其中,任务或模块由通过通信网络链接的远程处理设备执行。在分布式计算环境中,程序模块可以位于本地和远程存储器存储设备或介质中。然而,特定类型的信息存储在哪里以及如何存储对于帮助改进运动规划很重要。
例如,各种运动规划解决方案将路线图(即,运动规划图)“烧”到处理器(例如,FPGA)中,并且路线图中的每个边对应于处理器的不可重新配置的布尔电路。将规划图“烧”到处理器中的设计带来了问题,即处理器电路对于存储多个或大型规划图是有限的,并且通常不能重新配置以用于不同的机器人。
一种解决方案提供了将规划图信息放入存储器中的可重新配置的设计。这种方法将信息存储在存储器中而不是“烧”到电路中。另一种方法采用模板化的可重新配置电路来代替存储器。
如上所述,在运行前的配置时间期间,一些信息(例如,机器人几何模型)可以被捕获、接收、输入或提供。可以在配置时间期间处理接收到的信息,以产生经处理的信息(例如,运动规划图),从而在运行期间使操作加速或降低计算复杂度。
在运行时,可以对整个环境执行碰撞检测,包括对于任何姿势或姿势之间的运动,确定机器人的任何部分是否将碰撞或预计将碰撞机器人自身的另一部分、其他机器人或其部分、环境中的持久或静态障碍、或环境中的具有未知轨迹的瞬时障碍(例如,人)。
图3示出了机器人102(图1)、202(图2)的示例运动规划图300,其中,机器人102、202的目标是在避免与静态障碍和动态障碍碰撞的同时执行任务,障碍可以包括在共享工作空间中操作的其他机器人。
规划图300分别包括由边310a-310i(在图中表示为节点对之间的直线)连接的多个节点308a-308i(在图中表示为开圆)。每个节点隐含地或明确地表示表征机器人102、202在机器人102、202的配置空间中的状态的时间和变量。配置空间通常被称为C空间,并且是规划图300中表示的机器人102、202的状态或配置或姿势的空间。例如,每个节点可以表示机器人102、202的状态、配置或姿势,其可以包括但不限于位置、方向或姿势(即,位置和方向)。状态、配置或姿势可以例如由机器人102、202的关节的一组关节位置和关节角度/旋转(例如,关节姿势、关节坐标)来表示。
规划图300中的边表示机器人102、202的这些状态、配置或姿势之间的有效或允许的转换。规划图300的边不表示笛卡尔坐标中的实际运动,而是表示在C空间中状态、配置或姿势之间的转换。规划图300的每条边表示机器人102、202在相应节点对之间的转换。例如,边310a表示机器人102、202在两个节点之间的转换。具体地,边310a表示机器人102、202在与节点308b相关联的特定配置中的状态和机器人102、202在与节点308c相关联的特定配置中的状态之间的转换。例如,机器人102、202当前可能处于与节点308a相关联的特定配置中。尽管节点示出为彼此相距不同的距离,但这只是为了说明的目的,与任何物理距离无关。对规划图300中的节点或边的数量没有限制,然而,在规划图300中使用的节点和边越多,运动规划器能够根据机器人102、202的一个或更多个状态、配置或姿势来确定执行任务的最佳路径就越准确和精确,这是因为最低成本路径可以从更多的路径中选择。
每条边都被分配或关联一个成本值。成本值可以表示关于由相应边表示的运动的碰撞评估。
通常,希望机器人102、202避开某些障碍,例如共享工作空间中的其他机器人。在一些情况下,可能希望机器人102、202接触或接近共享工作空间中的某些物体,例如抓握或移动物体或工件。图3示出了规划图300,运动规划器使用该规划图来识别在机器人102、202的目标是在执行任务(例如,拾取和放置物体)时移动通过多个姿势的同时避免与一个或更多个障碍碰撞的情况下机器人102、202的路径。
障碍可以被数字地表示为例如边界盒、有向边界盒、曲线(例如,样条曲线)、欧几里德距离场或几何实体的分层结构,无论哪种数字表示最适合障碍的类型和将要执行的碰撞检测的类型,其本身都可以取决于所采用的特定硬件电路。在一些实施方式中,主代理102的路线图中的扫掠体积被预先计算。在2017年6月9日提交的题为“MOTION PLANNINGFOR AUTONOMOUS VEHICLES AND RECONFIGURABLE MOTION PLANNING PROCESSORS”的国际专利申请No.PCT/US2017/036880;2018年8月23日提交的标题为“COLLISION DETECTIONUSEFUL IN MOTION PLANNING FOR ROBOTICS”的美国专利申请62/722,067;以及在2016年1月5日提交的标题为“SPECIALIZED ROBOT MOTION PLANNING HARDWARE AND METHODS OFMAKING AND USING SAME”的国际专利申请公开No.WO 2016/122840中描述了碰撞评估的示例。
运动规划器或其部分(例如,图2的碰撞检测器252)确定或评估运动或转换(由边表示)将导致与障碍碰撞的可能性或概率。在一些情况下,该确定导致布尔值,而在其他情况下,该确定可以表示为概率。
对于规划图300中的节点,其中,节点之间的直接转换可能导致与障碍碰撞,运动规划器(例如,图2的成本设置器254)将成本值或权重分配给在这些节点之间转换的规划图300的边(例如,边310a、310b、310c、310d、310e、310f、310g、310h),指示与障碍碰撞的概率。在图3所示的示例中,较高概率的区域表示为图形部分314,但是不对应于物理区域。
例如,运动规划器可以为规划图300的多个边中的每个边分配一个等于或接近零的值的成本值或权重,其中,规划图300的每个边具有与比定义的碰撞阈值概率低的相应障碍碰撞概率。在本示例中,运动规划器已经为规划图300中表示机器人102、202的转换或运动的一些边分配了零的成本值或权重,这些边不具有任何与障碍碰撞的可能性或与障碍碰撞的可能性很小。对于规划图300的多个边中与环境中的障碍碰撞的相应概率高于所定义的碰撞阈值概率的每个边,运动规划器为成本值或权重分配显著大于零的值。在本示例中,运动规划器已经将大于零的成本值或权重分配给规划图300中与障碍碰撞概率较高的那些边。用于碰撞概率的特定阈值可以变化。例如,阈值可以是碰撞概率的40%、50%、60%或更低或更高。此外,为成本值或权重分配大于零的值可以包括分配量值大于零的权重,该量值对应于相应的碰撞概率。例如,如规划图300所示,运动规划器已经将成本值或权重5分配给具有较高碰撞概率的边310f和310i,但是已经将具有较低量值1的成本值或权重分配给被运动规划器确定为具有低得多碰撞概率的边310p和310g。在其他实施方式中,成本值或权重可以表示碰撞和无碰撞之间的二元选择,在将成本值或权重分配给边时只有两个成本值或权重可供选择。
运动规划器可以基于碰撞概率之外的因素或参数来分配、设置或调整每个边的成本值或权重。
在运动规划器至少部分地基于碰撞评估来设置表示机器人102、202与障碍的碰撞概率的成本值或权重之后,运动规划器(例如,图2的路径分析器256)执行优化以在为机器人102、202提供运动规划的所得规划图300中识别出与包括在共享工作空间中操作的其他机器人在内的障碍没有碰撞可能性或碰撞可能性较低的路径312。
在一个实施方式中,一旦规划图300的所有边成本已经被分配或设置,运动规划器(例如,图2的路径分析器256)就可以执行计算以确定到达或朝向由目标节点表示的目标状态的最小成本路径。例如,路径分析器256(图2)可以执行从规划图300中机器人102、202的当前状态到可能的状态、配置或姿势的最小成本路径算法。然后,运动规划器选择规划图300中成本最小(最接近零)的路径。如上所述,成本不仅可以反映碰撞的概率,还可以反映其他因素或参数。在本示例中,在规划图300中机器人102、202的当前状态、配置或姿势为在节点308a处,并且在规划图300中该路径被描绘为路径312(粗线路径,包括从节点308a延伸到节点308i的线段)。
尽管在规划图300中被示为具有许多急转弯的路径,但是这种转弯不代表路线中的相应物理转弯,而是机器人102、202的状态、配置或姿势之间的逻辑转变。例如,所识别的路径312中的每个边可以表示在环境中相对于机器人102、202的物理配置的状态变化,但不一定是机器人102、202的与图3所示的路径312的角度对应的方向变化。
图4示出了根据至少一个所示实施方式在基于处理器的系统中产生运动规划图和扫掠体积的操作方法400。方法400可以在运行前,例如在配置时间期间执行。方法400可以由基于处理器的系统(例如,服务器计算机)执行,该系统与一个或更多个机器人和/或一个或更多个机器人控制系统分离且不同并且可能与之远离。
在402,基于处理器的系统接收一个或更多个机器人运动学模型。机器人运动学模型提供了各机器人的几何规格。
在404,基于处理器的系统基于相应的机器人运动学模型生成机器人的运动规划图。运动规划图将机器人的每个状态、配置或姿势表示为相应的节点,并将状态、配置或姿势对之间的有效转换表示为连接相应节点对的边。虽然以图形的形式描述,但是运动规划图不一定需要表示或存储为常规的图形,而是能够使用任何种类的数据结构(例如,记录和字段、表格、链表、指针、树)来例如逻辑地表示,或在存储电路或计算机处理器中表示。
在406,基于处理器的系统为运动规划图的每个边生成扫掠体积。扫掠体积表示机器人或其部分在执行对应于相应边的运动或转换时所扫掠的体积。扫掠体积可以以多种形式中的任何一种来表示,例如体素、欧几里德距离场、球体分层结构或其他几何物体。
在408,基于处理器的系统向机器人控制系统和/或运动规划器提供运动规划图和/或扫掠体积。基于处理器的系统可以通过非专有通信信道(例如,以太网)提供运动规划图和/或扫掠体积。在一些实施方式中,来自不同机器人制造商的各机器人可以在共享工作空间中操作。在一些实施方式中,各机器人制造商可以操作专有的基于处理器的系统(例如,服务器计算机),该系统为机器人制造商生产的各机器人生成运动规划图和/或扫掠体积。每个机器人制造商能够提供各自的运动规划图和/或扫掠体积,供机器人控制器或运动规划器使用。
图5A和图5B示出了根据至少一个所示实施方式,在基于处理器的系统中产生运动规划并可选地控制在共享工作空间中操作的多个机器人的操作方法500。方法500可以在运行时,例如在配置时间之后执行。方法500可以由一个或更多个基于处理器的系统执行,该系统采用一个或更多个机器人控制系统的形式。机器人控制系统例如可以与相应机器人共同定位或“在其上”。
例如响应于机器人和/或机器人控制系统的通电,响应于来自调用例程的调用或引用或者响应于任务的接收,方法500开始于502。
在504,基于处理器的系统可选地接收一个或更多个机器人的运动规划图。例如,基于处理器的系统可以从在配置时间期间生成运动规划图的另一基于处理器的系统接收所述运动规划图。运动规划图将机器人的每个状态、配置或姿势表示为相应的节点,并将状态、配置或姿势对之间的有效转换表示为连接相应节点的边。虽然以图表的形式进行描述,但是每个运动规划图表不一定需要表示或存储为常规的图表,而是能够使用任何种类的数据结构(例如,记录和字段、表格、链表、指针、树)来例如逻辑地表示,或在存储电路或计算机处理器中表示。
在506,基于处理器的系统可选地接收一个或更多个机器人的一组扫掠体积。例如,基于处理器的系统可以从在配置时间期间生成运动规划图的另一基于处理器的系统接收该组扫掠体积。可选地,基于处理器的系统可以例如基于运动规划图自己生成一组扫掠体积。扫掠体积表示机器人或其部分在执行对应于相应边的运动或转换时所扫掠的相应体积。扫掠体积可以以多种形式中的任何一种来表示,例如体素、欧几里德距离场、球体分层结构或其他几何物体。
在508,基于处理器的系统接收例如以任务规范形式的多个任务。任务规范指定了要由机器人执行的机器人任务。任务规范可以例如指定机器人从第一位置移动到第二位置,在第二位置处抓住物体,将物体移动至第三位置,并在第三位置处释放物体。任务规范可以采取多种形式,例如需要解析到较低级别规范的高级规范(例如,散文和语法)。任务规范可以采取低级规范的形式,例如指定一组关节位置和关节角度/旋转(例如,关节姿势、关节坐标)。
在510,基于处理器的系统可选地接收或生成在共享工作空间中操作的多个机器人R1-RN中的每个的运动规划请求的集或集合。请求的集或集合被命名为请求的列表或队列,但是这不一定意味着列表或队列中的任务的顺序或排列对应于任务应该或将要被执行或完成或处理的顺序。请求能够根据每个机器人要执行的任务生成。在一些情况下,在请求队列中,请求可以相对于彼此排序,例如第一机器人应该在第二机器人执行第二运动(例如,在第一位置处抓取工件)之前执行第一运动(例如,在第一位置处释放工件)的情况。
在512,对于第一排队请求I,基于处理器的系统为相应的机器人(例如机器人Ri)生成相应的运动规划。生成运动规划可以例如包括:执行碰撞检测或评估,基于碰撞检测或评估来设置机器人Ri的运动规划图中的边的成本值,以及使用具有成本值的运动规划图例如通过最小成本分析来确定路径。虽然本说明书对请求和执行请求的机器人采用相同的计数值,但这只是为了便于理解。如本文所述,执行任务的任何给定请求可以由能够执行相应任务的任何给定机器人来执行。例如,第i个请求可以由第i+3个机器人完成,例如,第i+3个机器人是第i个请求被服务时可用的机器人。通常,任务会比机器人多得多,因此任何给定的机器人Ri都将执行队列中除第i个请求之外的其他请求。因此,请求与机器人之间不一定是一对一的关系。
在514,基于处理器的系统将来自一个或更多个机器人(例如机器人Ri)的运动规划的运动表示为其他机器人的障碍。例如,基于处理器的系统可以将对应于每个运动的扫掠体积作为障碍排列在障碍队列中。扫掠体积可以是先前针对每个边已经确定或计算的,并且通过数据结构(例如,指针)与存储器中的每个边逻辑关联。如前所述,扫掠体积可以以多种形式中的任何一种来表示,例如作为体素、欧几里德距离场、球体分层结构或其他几何物体。
在516,基于处理器的系统可选地控制相应机器人(为该机器人生成了运动规划,例如机器人Ri)的操作。例如,基于处理器的系统可以向一个或更多个运动控制器(例如,马达控制器)发送控制信号或驱动信号,以使一个或更多个致动器根据运动规划移动一个或更多个连杆。
在518,基于处理器的系统可选地确定相应的运动是否已经完成。监控运动的完成能够有利地允许基于处理器的系统在随后的碰撞检测或评估期间将对应于运动的障碍移除不考虑。基于处理器的系统可以依赖于相应机器人的坐标。坐标可以基于来自运动控制器、致动器和/或传感器(例如,摄像机、旋转编码器、簧片开关)的信息,以确定给定的运动是否已经完成。
在520,基于处理器的系统响应于确定给定运动已经完成,生成或发送运动完成消息或设置标志。
在522,基于处理器的系统对每个附加的排队请求i+1执行迭代循环。在迭代循环的每一遍中,基于处理器的系统执行下述动作524至544中的一个或更多个。虽然被描述为迭代循环,但是基于处理器的系统可以针对任务或运动规划请求的集、列表或队列中的每个任务或运动规划请求执行方法500的一个或更多个动作。针对任何给定任务或运动规划请求的运动规划可以相对于任一个选定机器人来执行,该选择可以由基于处理器的系统基于一个或更多个标准来自主做出,例如如下面参照图6所述。
在524,基于处理器的系统确定是否已经生成或接收到运动完成消息,或者已经设置标志。
在526,基于处理器的系统响应于确定已经生成或接收到运动完成消息或者已经设置标志,削减对应于给定运动的一个或更多个障碍。例如,基于处理器的系统可以从障碍队列中移除相应的障碍。这有利地允许碰撞检测或评估在扫掠体积不再作为障碍存在的环境中进行。这也有利地允许再不需要跟踪运动或相应的扫掠体积的时机的情况下,跟踪运动和相应的扫掠体积。
在532,基于处理器的系统为机器人(例如,Ri+1)执行碰撞检测或评估。基于处理器的系统可以采用本文描述的或通过引用并入本文中的材料中描述的各种结构和算法中的任何一种来执行碰撞检测或评估。碰撞检测或评估可以包括针对障碍队列中的每个障碍对每个运动执行碰撞检测或评估。
在534,基于处理器的系统至少部分基于机器人(例如,Ri+1)的碰撞检测或评估来设置运动规划图中边的成本值。基于处理器的系统可以采用本文描述的或在本文通过引用并入的材料中描述的各种结构和算法中的任何一种来执行成本值设置,通常将没有或具有低碰撞风险的边的成本设置或调整为较低的值(例如,零),并将会导致碰撞或具有高碰撞风险的边的成本设置或调整为较高的值(例如,十万)。
在536,基于处理器的系统至少部分基于碰撞检测或评估来生成机器人(例如,Ri+1)的运动规划。基于处理器的系统可以采用本文描述的或在本文通过引用并入的材料中描述的各种结构和算法中的任何一种来生成运动规划,例如对具有设定成本值的运动规划图执行最小成本分析。
在538,基于处理器的系统将当前机器人(例如,Ri+1)的来自运动规划的运动表示为其他机器人的障碍。例如,基于处理器的系统可以将对应于每个运动的扫掠体积作为障碍排列在障碍队列中。扫掠体积可以是先前针对每个边已经确定或计算的,并且通过数据结构(例如,字段、指针)与存储器中的每个边逻辑相关联。如前所述,扫掠体积可以以多种形式中的任何一种来表示,例如表示为为体素、欧几里德距离场、球体分层结构或其他几何物体。
在540,基于处理器的系统控制当前机器人(为该机器人生成运动规划,例如,机器人Ri+1)的操作。例如,基于处理器的系统可以向一个或更多个运动控制器(例如,马达控制器)发送控制信号或驱动信号,以使一个或更多个致动器移动一个或更多个连杆。
在542,基于处理器的系统可选地确定相应的运动是否已经完成。监控运动的完成能够有利地允许基于处理器的系统在随后的碰撞检测或评估期间将对应于运动的障碍移除不考虑。基于处理器的系统可以依赖于相应机器人的坐标。坐标可以基于来自运动控制器、致动器和/或传感器(例如,摄像机、旋转编码器、簧片开关)的信息,以确定给定的运动是否已经完成。
在544,基于处理器的系统响应于确定给定运动已经完成,生成或发送运动完成消息。
在546,基于处理器的系统确定是否已经到达队列的末端。例如,基于处理器的系统可以确定在运动规划请求队列中是否还有任何运动规划请求,和/或所有任务是否都已经完成。在至少一些实施方式中,任务集(例如,任务队列)可能暂时耗尽,新的或附加的任务可能稍后到达。在这样的实施方式中,基于处理器的系统可以执行等待循环,不时地检查新的或附加的任务,或者等待指示新的或附加的任务可被处理和执行的信号。
方法500可以终止于548。替选地,方法500可以重复,直到例如由于断电状态或状况而肯定地停止。在一些实施方式中,方法500可以作为多线程进程在一个或更多个处理器上执行。
虽然操作方法500是根据有序流程来描述的,但是在许多实施方式中,各种动作或操作将同时或并行执行。通常,当一个或更多个机器人执行任务时,可以执行一个机器人执行一个任务的运动规划。因此,机器人执行任务可能与一个或更多个运动规划器执行运动规划交叠或同时或并行。机器人的任务执行可能与其他机器人的任务执行交叠或同时或并行。在一些实施方式中,一个机器人的运动规划的至少一些部分可以与一个或更多个其他机器人的运动规划的至少一些部分交叠或同时或并行。
图6示出了根据至少一个所示实施方式,在基于处理器的系统中产生运动规划并可选地控制在共享工作空间中操作的多个机器人的操作方法600。方法600可以在运行时,例如在配置时间之后执行。方法600可以由一个或更多个基于处理器的系统执行,该基于处理器的系统采用一个或更多个机器人控制系统的形式。机器人控制系统例如可以与相应一个机器人的共同定位或“在其上”。方法600可以与方法500一起使用(图5A和图5B)。
例如响应于机器人和/或机器人控制系统的通电、响应于来自调用例程的调用或引用、或者响应于任务集或列表或队列的接收,方法600开始于602。
在604,基于处理器的系统从要执行的任务的集或列表或队列中选择任务。这些任务可以共同实现一个目标。例如,任务可以包括拾取和放置物体,而目标是由在公共工作空间中操作的两个或更多个机器人将一堆物体分类成相应类型物体的两个或更多个不同的物体堆。
基于处理器的系统可以从任务集(例如,任务队列)中选择任务。这些任务可以采取运动规划请求的形式,或者对应于运动规划请求,或者可以根据特定的系统架构产生相应的运动规划请求。任务队列中的任务可以排序,也可以不排序。任务可以基于任一个或更多个标准来选择,例如,为了完成目标一个任务相对于另一个任务的顺序、任务相对于其他任务的优先级、完成目标的效率(例如,完成目标的时间、能量消耗、完成目标的移动数量、并行操作机器人的能力、最小化机器人的等待时间)、机器人的可用性、和/或适于执行特定类型任务的机器人的可用性(例如,具有特定类型的臂端工具或末端执行器的机器人的可用性)。
在606,基于处理器的系统选择机器人来执行所选任务。基于处理器的系统可以基于任一个或更多个标准来选择机器人,所述一个或更多个标准例如机器人的可用性、机器人执行任务的适用性、其他机器人不适合执行任务或执行机器人不适合执行的其他类型的任务、状况(例如,错误状况、低功率状况、阻挡状态的状况、磨损状况、预定服务状况)存在或不存在。
在608,基于处理器的系统为成对的所选任务和所选机器人执行运动规划。例如,基于处理器的系统可以如参考方法500(图5A和图5B)一般描述的那样执行运动规划。
在610,基于处理器的系统确定是否存在会导致所选机器人对所选任务的执行被跳过或延迟的状况。状况可以包括指示所选机器人或相应机器人控制系统中的操作或机械错误的错误状况。状况可以包括指示由运动规划指示的机器人的给定运动当前被阻挡或者不能实现的阻挡状况。状况可以包括所选机器人的低功率状况、磨损状况或预定服务状况,所有这些都表明所选机器人可能无法在给定时间完成任务。状况还可以包括其中给定的机器人或机器人控制系统断言对任务或运动规划请求的覆盖的跳过状况。附加地或替代地,基于处理器的系统可以处理包括使给定任务或运动规划请求加速的超驰请求的加速状况,将给定任务或运动规划请求移动到任务或运动规划请求队列中的其他任务或运动规划请求之前,或者以其他方式提高任务或运动规划请求相对于一个或更多个其他任务或运动规划请求的优先级。
响应于在610确定存在将导致所选机器人对所选任务的执行被跳过的状况,或者基于处理器的系统将控制返回到606以选择不同的机器人来执行所选任务。可选地,控制可以传递到604以选择新任务,先前的任务保留在要执行的任务队列中或者被添加回要执行的任务队列中。这可能有助于选择在此期间可能已添加到任务队列中的较紧急的任务。
响应于在610确定不存在状况,控制转到612,其中用于执行所选任务的运动规划被发送到所选机器人。这能够例如包括通过有线或无线通信信道向所选机器人提供高级指令或低级指令(例如,电机控制指令)。
在614,所选择的机器人执行或实施运动规划。例如,一个或更多个致动器使机器人附肢和相关的臂端工具执行任务。
在616,基于处理器的系统确定在集、列表或队列中是否存在要服务的附加任务或运动规划请求。在至少一些实施方式中,任务集(例如,任务队列)可能暂时耗尽,同时新的或附加的任务可能稍后到达。在这样的实施方式中,基于处理器的系统可以执行等待循环,不时地检查新的或附加的任务,或者等待指示新的或附加的任务可被处理和执行的信号。
方法600可以终止于618。或者,方法600可以重复,直到例如由于断电状态或状况而肯定停止。在一些实施方式中,方法600可以作为多线程进程在一个或更多个处理器上执行。例如,多个任务的运动规划可以同时执行。
前述详细描述已经通过使用框图、示意图和示例阐述了设备和/或过程的各种实施例。在这样的框图、示意图和示例包含一个或更多个功能和/或操作的范围内,本领域的技术人员将理解,这样的框图、流程图或示例中的每个功能和/或操作可以通过广泛的硬件、软件、固件或实际上它们的任何组合来单独地和/或共同地实现。在一个实施例中,本主题可以通过布尔电路、专用集成电路(ASIC)和/或FPGA来实现。然而,本领域技术人员将认识到,本文公开的实施例能够整体或部分地以各种不同实施方式在标准集成电路中实现为在一个或更多个计算机上运行的一个或更多个计算机程序(例如,实现为在一个或更多个计算机系统上运行的一个或更多个程序),实现为在一个或更多个控制器(例如,微控制器)上运行的一个或更多个程序,实现为在一个或更多个处理器(例如,微处理器)上运行的一个或更多个程序,实现为固件或实现为实际上它们的任意组合,并且根据本公开,设计电路和/或为软件和/或固件编写代码将完全在本领域普通技术人员的技能范围内。
本领域的技术人员将认识到,本文阐述的许多方法或算法可以采用附加的动作,可以省略一些动作,和/或动作可以以不同于指定的顺序执行。
此外,本领域的技术人员将理解,本文教导的机制能够在硬件中实现,例如在一个或更多个FPGA或ASIC中实现。
上述各种实施例能够组合以提供进一步的实施例。本说明书中提及的和/或在申请数据表中列出的所有共同转让的美国专利申请公开、美国专利申请、外国专利和外国专利申请,包括但不限于2017年6月9日提交的标题为“MOTION PLANNING FOR AUTONOMOUSVEHICLES AND RECONFIGURABLE MOTION PLANNING PROCESSORS”的国际专利申请No.PCT/US2017/036880,以及2016年1月5日提交的标题为“SPECIALIZED ROBOT MOTION PLANNINGHARDWARE AND METHODS OF MAKING AND USING SAME”的国际专利申请公开No.WO 2016/122840;2018年1月12日提交的标题为“APPARATUS,METHOD AND ARTICLE TO FACILITATEMOTION PLANNING OF AN AUTONOMOUS VEHICLE IN AN ENVIRONMENT HAVING DYNAMICOBJECTS”的美国专利申请No.62/616,783;2018年2月6日提交的标题为“MOTION PLANNINGOF A ROBOT STORING A DISCRETIZED ENVIRONMENT ON ONE OR MORE PROCESSORS ANDIMPROVED OPERATION OF SAME”的美国专利申请No.62/626,939,2019年6月3日提交的标题为“APPARATUS,METHODS AND ARTICLES TO FACILITATE MOTION PLANNING INENVIRONMENTS HAVING DYNAMIC OBSTACLES”的美国专利申请No.62/856,548,以及2019年6月24日提交的标题为“MOTION PLANNING FOR MULTIPLE ROBOTS IN SHARED WORKSPACE”的美国专利申请No.62/865,431的全部内容通过引用并入本文。根据以上详细描述,能够对实施例进行这些和其他改变。总体上,在所附权利要求中,所使用的术语不应被解释为将权利要求限制于说明书和权利要求中公开的特定实施例,而是应被解释为包括所有可能的实施例以及这些权利要求的等同物的全部范围。因此,权利要求不受本公开的限制。
Claims (34)
1.一种控制多个机器人在公共工作空间中操作的方法,所述机器人在所述公共工作空间中的运动范围交叠,所述方法包括:
为所述多个机器人中的机器人R1生成第一运动规划;
对于机器人Ri中的至少一个中的每个,从i等于2到i等于n,其中,n是所述多个机器人中机器人的总数,并且n是等于或大于2的整数,
将至少机器人R1的多个运动表示为至少一个障碍;
相对于所述至少一个障碍的表示,针对机器人Ri的至少部分的至少一个运动执行碰撞检测;
至少部分地基于针对所述机器人Ri的至少部分的至少一个运动的碰撞检测,生成机器人Ri的第一运动规划;
至少部分地基于所述多个机器人中的相应一个机器人的相应第一运动规划,提供信号以控制机器人R1到机器人Rn中的至少一个机器人的操作;并且
响应于所述机器人R1完成至少一个运动,更新障碍的表示以消除与所述机器人R1完成的至少一个运动对应的部分。
2.根据权利要求1所述的方法,还包括:
响应于机器人R2到机器人Rn中的任一个或更多个机器人完成至少一个运动,更新障碍的表示以消除与机器人R2到机器人Rn中的相应一个机器人完成的至少一个运动对应的部分。
3.根据权利要求1所述的方法,还包括:
为所述多个机器人中的所述机器人R1生成第二运动规划;
对于所述机器人Ri中的至少一个中的每个,从i等于2到i等于n,其中,n是所述多个机器人中机器人的总数,并且n是等于或大于2的整数,
将至少机器人R1的多个运动表示为至少一个障碍;
相对于所述至少一个障碍的表示,针对机器人Ri的至少部分的至少一个运动执行碰撞检测;以及
至少部分地基于针对机器人Ri的至少部分的至少一个运动的碰撞检测,生成机器人Ri的第二运动规划;并且所述方法还包括:
至少部分地基于所述多个机器人中的相应一个机器人的相应第二运动规划,提供信号以控制机器人R1到机器人Rn中的至少一个机器人的操作。
4.根据权利要求3所述的方法,其中,为机器人R1到机器人Rn生成第一运动规划的步骤从i等于1到i等于n连续发生。
5.根据权利要求4所述的方法,其中,为机器人R1到机器人Rn生成第二运动规划的步骤从i等于1到i等于n连续发生。
6.根据权利要求4所述的方法,其中,为机器人R1到机器人Rn生成第二运动规划不从i等于1到i等于n连续发生。
7.根据权利要求3所述的方法,其中,至少部分地基于所述多个机器人中的相应一个机器人的相应第一运动规划,提供信号以控制机器人R1到机器人Rn中的至少一个机器人的操作包括提供使一个机器人Ri在所述机器人R1之前移动的信号,并且其中:
响应于机器人Ri完成至少一个运动更新障碍的表示以消除与机器人Ri完成的至少一个运动对应的部分在执行为多个机器人中的所述机器人R1生成第二运动规划之前发生。
8.根据权利要求1所述的方法,还包括:
为多个机器人中的所述机器人R1生成第二运动规划;
对于两个或更多个机器人Ri中的一些但不是全部,从i等于2到i等于n,其中,n是所述多个机器人中机器人的总数,并且n是等于或大于3的整数,
将至少机器人R1的多个运动表示为至少一个障碍;
相对于所述至少一个障碍的表示,针对机器人Ri的至少部分的至少一个运动执行碰撞检测;和
至少部分地基于针对机器人Ri的至少部分的至少一个运动的碰撞检测,生成所述机器人Ri的第二运动规划;并且所述方法还包括:
至少部分地基于所述多个机器人中的相应一个机器人的相应第二运动规划,提供信号以控制机器人R1到机器人Rn中的至少一个机器人的操作。
9.根据权利要求8所述的方法,其中,跳过为机器人R2到机器人Rn之一生成第二运动规划。
10.根据权利要求8所述的方法,其中,响应于机器人R2到机器人Rn中的一个机器人被机器人R2到机器人Rn中的另一个机器人阻挡而无法移动,跳过为机器人R2到机器人Rn中的相应一个机器人生成第二运动规划。
11.根据权利要求8所述的方法,其中,响应于机器人R2到机器人Rn中的一个机器人具有指示错误状况已经发生的错误状态,跳过为机器人R2到机器人Rn中的相应一个机器人生成第二运动规划。
12.根据权利要求1所述的方法,其中,将至少机器人R1的多个运动表示为至少一个障碍包括,对于至少一个机器人Ri+1,在针对机器人Ri+1的至少一个运动执行碰撞检测之前,将机器人R1到机器人Ri中的两个或更多个机器人的运动表示为障碍。
13.根据权利要求12所述的方法,其中,在针对机器人Ri+1的至少一个运动执行碰撞检测之前,将机器人R1到机器人Ri中的两个或更多个机器人的运动表示为障碍包括:使用先前在运行前计算的一组扫掠体积,每个扫掠体积表示当机器人R1到机器人Ri中的相应一个机器人的至少部分沿着由相应运动表示的轨迹移动时,由机器人R1到机器人Ri中的相应一个机器人的所述部分扫掠的相应体积。
14.根据权利要求12所述的方法,还包括:
接收先前在运行前计算的一组扫掠体积,每个扫掠体积表示当机器人R1到机器人Ri中的相应一个机器人的至少部分沿着由相应运动表示的轨迹移动时,由机器人R1到机器人Ri中的相应一个机器人的所述部分扫掠的相应体积。
15.根据权利要求12所述的方法,其中,在针对机器人Ri+1的至少一个运动执行碰撞检测之前,将机器人R1到机器人Ri中的两个或更多个机器人的运动表示为障碍包括:将机器人R1到机器人Ri中的两个或更多个机器人的运动表示为占用网格、分层树或欧几里德距离场中的至少一个。
16.根据权利要求1所述的方法,其中,将至少机器人R1的运动中的每个表示为至少一个障碍包括:使用相应的扫掠体积来表示相应的运动,所述扫掠体积对应于在相应运动期间由至少机器人R1的至少部分所扫掠的体积,并且其中,相对于所述至少一个障碍的表示,针对机器人Ri的至少部分的至少一个运动执行碰撞检测包括,使用先前在运行前计算的所述扫掠体积的表示来执行碰撞检测,所述扫掠体积表示当机器人Ri的至少部分沿着由相应运动表示的轨迹移动时机器人Ri的所述部分扫掠的相应体积。
17.根据权利要求1所述的方法,还包括:
对于所述多个机器人中的机器人R1到机器人Rn中的每个,通过相应的运动规划图表示相应机器人,每个运动规划图包括多个节点和边,所述节点表示相应机器人的相应状态,所述边表示由所述边连接的相应节点对中的相应节点表示的相应状态之间的有效转换。
18.一种控制多个机器人在公共工作空间中操作的系统,所述机器人在所述公共工作空间中的运动范围交叠,所述系统包括:
至少一个处理器;和
至少一个非易失性存储介质,其通信地联接到所述至少一个处理器,并且存储处理器可执行指令,所述处理器可执行指令在被所述至少一个处理器执行时,使得所述至少一个处理器:
为所述多个机器人中的机器人R1生成第一运动规划;
对于机器人Ri中的至少一个中的每个,从i等于2到i等于n,其中,n是所述多个机器人中机器人的总数,并且n是等于或大于2的整数,
将至少机器人R1的多个运动表示为至少一个障碍;
相对于所述至少一个障碍的表示,针对机器人Ri的至少部分的至少一个运动执行碰撞检测;以及
至少部分地基于针对所述机器人Ri的至少部分的至少一个运动的碰撞检测,生成机器人Ri的第一运动规划;并且进一步:
至少部分地基于所述多个机器人中的相应一个机器人的相应第一运动规划,提供信号以控制机器人R1到机器人Rn中的至少一个机器人的操作;并且
响应于所述机器人R1完成至少一个运动,更新障碍的表示以消除与所述机器人R1完成的至少一个运动对应的部分。
19.根据权利要求18所述的系统,其中,所述处理器可执行指令在被所述至少一个处理器执行时,使得所述至少一个处理器进一步:
响应于机器人R2到机器人Rn中的任一个或更多个机器人完成至少一个运动,更新障碍的表示以消除与机器人R2到机器人Rn中的相应一个机器人完成的至少一个运动对应的部分。
20.根据权利要求18所述的系统,其中,所述处理器可执行指令在被所述至少一个处理器执行时,使得所述至少一个处理器进一步:
为所述多个机器人中的所述机器人R1生成第二运动规划;
对于所述机器人Ri中的至少一个中的每个,从i等于2到i等于n,其中,n是所述多个机器人中机器人的总数,并且n是等于或大于2的整数,
将至少机器人R1的多个运动表示为至少一个障碍;
相对于所述至少一个障碍的表示,针对机器人Ri的至少部分的至少一个运动执行碰撞检测;以及
至少部分地基于针对机器人Ri的至少部分的至少一个运动的碰撞检测,生成机器人Ri的第二运动规划;并且进一步:
至少部分地基于所述多个机器人中的相应一个机器人的相应第二运动规划,提供信号以控制机器人R1到机器人Rn中的至少一个机器人的操作。
21.根据权利要求20所述的系统,其中,为机器人R1到机器人Rn生成第一运动规划的步骤从i等于1到i等于n连续发生。
22.根据权利要求21所述的系统,其中,为机器人R1到机器人Rn生成第二运动规划的步骤从i等于1到i等于n连续发生。
23.根据权利要求21所述的系统,其中,为机器人R1到机器人Rn生成第二运动规划不从i等于1到i等于n连续发生。
24.根据权利要求20所述的系统,其中,为了至少部分地基于所述多个机器人中的相应一个机器人的相应第一运动规划,控制机器人R1到机器人Rn中的至少一个机器人的操作,所述处理器可执行指令在被所述至少一个处理器执行时,使得所述至少一个处理器提供使一个机器人Ri在所述机器人R1之前移动的信号,并且进一步:
响应于机器人Ri完成至少一个运动,在为多个机器人中的机器人R1生成第二运动规划之前,更新障碍的表示以消除与机器人Ri完成的至少一个运动对应的部分。
25.根据权利要求18所述的系统,其中,所述处理器可执行指令在被所述至少一个处理器执行时,使得所述至少一个处理器进一步:
为所述多个机器人中的机器人R1生成第二运动规划;
对于两个或更多个机器人Ri中的一些但不是全部,从i等于2到i等于n,其中,n是所述多个机器人中机器人的总数,并且n是等于或大于3的整数,
将至少机器人R1的多个运动表示为至少一个障碍;
相对于所述至少一个障碍的表示,针对机器人Ri的至少部分的至少一个运动执行碰撞检测;和
至少部分地基于针对机器人Ri的至少部分的至少一个运动的碰撞检测,生成所述机器人Ri的第二运动规划;并且进一步:
至少部分地基于所述多个机器人中的相应一个机器人的相应第二运动规划,提供信号以控制机器人R1到机器人Rn中的至少一个机器人的操作。
26.根据权利要求25所述的系统,其中,跳过为机器人R2到机器人Rn之一生成第二运动规划。
27.根据权利要求25所述的系统,其中,响应于机器人R2到机器人Rn中的一个机器人被机器人R2到机器人Rn中的另一个机器人阻挡而无法移动,跳过为机器人R2到机器人Rn中的相应一个机器人生成第二运动规划。
28.根据权利要求25所述的系统,其中,响应于机器人R2到机器人Rn中的一个机器人具有指示错误状况已经发生的错误状态,跳过为机器人R2到机器人Rn中的相应一个机器人生成第二运动规划。
29.根据权利要求18所述的系统,其中,为了将至少机器人R1的多个运动表示为至少一个障碍,所述处理器可执行指令在被所述至少一个处理器执行时,使得所述至少一个处理器:对于至少一个机器人Ri+1,在针对机器人Ri+1的至少一个运动执行碰撞检测之前,将机器人R1到机器人Ri中的两个或更多个机器人的运动表示为障碍。
30.根据权利要求29所述的系统,其中,为了将机器人R1到机器人Ri中的两个或更多个机器人的运动表示为障碍,所述处理器可执行指令在被所述至少一个处理器执行时,使得所述至少一个处理器:使用先前在运行前计算的一组扫掠体积,每个扫掠体积表示当机器人R1到机器人Ri中的相应一个机器人的至少部分沿着由相应运动表示的轨迹移动时,由机器人R1到机器人Ri中的相应一个机器人的所述部分扫掠的相应体积。
31.根据权利要求29所述的系统,其中,所述处理器可执行指令在被所述至少一个处理器执行时,使得所述至少一个处理器进一步:
接收先前在运行前计算的一组扫掠体积,每个扫掠体积表示当机器人R1到机器人Ri中的相应一个机器人的至少部分沿着由相应运动表示的轨迹移动时,由机器人R1到机器人Ri中的相应一个机器人的所述部分扫掠的相应体积。
32.根据权利要求29所述的系统,其中,为了在针对机器人Ri+1的至少一个运动执行碰撞检测之前,将机器人R1到机器人Ri中的两个或更多个机器人的运动表示为障碍,所述处理器可执行指令在被所述至少一个处理器执行时,使得所述至少一个处理器:将机器人R1到机器人Ri中的两个或更多个机器人的运动表示为占用网格、分层树或欧几里德距离场中的至少一个。
33.根据权利要求18所述的系统,其中,为了将至少机器人R1的运动中的每个表示为至少一个障碍,所述处理器可执行指令在被所述至少一个处理器执行时,使得所述至少一个处理器:使用相应的扫掠体积来表示相应的运动,所述扫掠体积对应于在相应运动期间由至少机器人R1的至少部分所扫掠的体积,并且其中,为了相对于所述至少一个障碍的表示,针对机器人Ri的至少部分的至少一个运动执行碰撞检测,所述处理器可执行指令在被所述至少一个处理器执行时,使得所述至少一个处理器:至少部分地基于先前在运行前计算的所述扫掠体积的表示来执行碰撞检测,所述扫掠体积表示当机器人Ri的至少部分沿着由相应运动表示的轨迹移动时机器人Ri的所述部分扫掠的相应体积。
34.根据权利要求18所述的系统,其中,对于所述多个机器人中的机器人R1到机器人Rn中的每个,通过相应的运动规划图表示相应机器人,每个运动规划图包括多个节点和边,所述节点表示相应机器人的相应状态,所述边表示由所述边连接的相应节点对中的相应节点表示的相应状态之间的有效转换。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962865431P | 2019-06-24 | 2019-06-24 | |
US62/865,431 | 2019-06-24 | ||
PCT/US2020/039193 WO2020263861A1 (en) | 2019-06-24 | 2020-06-23 | Motion planning for multiple robots in shared workspace |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114269525A CN114269525A (zh) | 2022-04-01 |
CN114269525B true CN114269525B (zh) | 2024-03-26 |
Family
ID=74039067
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080059714.3A Active CN114269525B (zh) | 2019-06-24 | 2020-06-23 | 对共享工作空间中的多个机器人的运动规划 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20200398428A1 (zh) |
EP (1) | EP3969233A4 (zh) |
JP (1) | JP7332199B2 (zh) |
CN (1) | CN114269525B (zh) |
TW (1) | TW202107232A (zh) |
WO (1) | WO2020263861A1 (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11890758B2 (en) * | 2019-08-30 | 2024-02-06 | Intrinsic Innovation Llc | Robot planning from process definition graph |
US10954081B1 (en) | 2019-10-25 | 2021-03-23 | Dexterity, Inc. | Coordinating multiple robots to meet workflow and avoid conflict |
US11724387B2 (en) * | 2020-04-03 | 2023-08-15 | Fanuc Corporation | Fast robot motion optimization with distance field |
CN111846726B (zh) * | 2020-07-30 | 2022-04-19 | 重庆惠科金渝光电科技有限公司 | 一种运输设备的搬运方法和运输设备 |
US20220289501A1 (en) * | 2021-03-15 | 2022-09-15 | Dexterity, Inc. | Singulation of arbitrary mixed items |
GB2607699B (en) * | 2021-04-14 | 2023-11-08 | Bae Systems Plc | Robotic cells |
EP4074471A1 (en) * | 2021-04-14 | 2022-10-19 | BAE SYSTEMS plc | Robotic cells |
US20230063370A1 (en) * | 2021-08-30 | 2023-03-02 | Rapyuta Robotics Co., Ltd. | Multi-robot route planning |
CN114019912B (zh) * | 2021-10-15 | 2024-02-27 | 上海电机学院 | 一种群体机器人运动规划控制方法及系统 |
US20230147624A1 (en) * | 2021-11-11 | 2023-05-11 | Rapyuta Robotics Co., Ltd. | Autonomous mobile robots for coverage path planning |
TW202406697A (zh) * | 2022-04-06 | 2024-02-16 | 美商即時機器人股份有限公司 | 採用前瞻規劃之共享工作空間中機器人的運動規劃和控制 |
WO2024011062A1 (en) * | 2022-07-05 | 2024-01-11 | Realtime Robotics, Inc. | Robust motion planning and/or control for multi-robot environments |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107206592A (zh) * | 2015-01-26 | 2017-09-26 | 杜克大学 | 专用机器人运动规划硬件及其制造和使用方法 |
CN108789416A (zh) * | 2018-07-27 | 2018-11-13 | 中国科学院自动化研究所 | 用于控制双机械臂柔性带电作业的系统及方法 |
CN108858183A (zh) * | 2017-05-11 | 2018-11-23 | 株式会社安川电机 | 机器人、机器人的控制方法、工件的制造方法 |
CN108942920A (zh) * | 2018-05-30 | 2018-12-07 | 北京极智嘉科技有限公司 | 一种加工食品的拣选系统和方法 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10065317B2 (en) * | 2016-06-30 | 2018-09-04 | General Electric Company | Control system for coordinating robotic machines to collaborate on tasks |
US9144904B2 (en) * | 2008-05-21 | 2015-09-29 | Fanuc Robotics America Corporation | Method and system for automatically preventing deadlock in multi-robot systems |
US8315738B2 (en) * | 2008-05-21 | 2012-11-20 | Fanuc Robotics America, Inc. | Multi-arm robot system interference check via three dimensional automatic zones |
KR101105325B1 (ko) * | 2009-09-08 | 2012-01-16 | 부산대학교 산학협력단 | 실제 로봇의 다중 경로계획 방법 |
US8386080B2 (en) * | 2009-09-15 | 2013-02-26 | Harris Corporation | Robotic apparatus implementing collision avoidance scheme and associated methods |
US20160121487A1 (en) * | 2014-11-03 | 2016-05-05 | Qualcomm Incorporated | Communicating Configurable Instruction Sets to Robots for Controlling Robot Behavior |
US10766139B2 (en) * | 2015-02-13 | 2020-09-08 | Abb Schweiz Ag | Method for avoiding collisions between two robots |
KR101748632B1 (ko) * | 2015-10-29 | 2017-06-20 | 한국과학기술연구원 | 로봇의 구동 경로를 계획하기 위한 로봇 제어 시스템 및 로봇 구동 경로 계획방법 |
JP6576255B2 (ja) * | 2016-01-25 | 2019-09-18 | キヤノン株式会社 | ロボット軌道生成方法、ロボット軌道生成装置、および製造方法 |
US10296012B2 (en) * | 2016-12-21 | 2019-05-21 | X Development Llc | Pre-computation of kinematically feasible roadmaps |
TWI699636B (zh) * | 2019-05-21 | 2020-07-21 | 華邦電子股份有限公司 | 協同型機器人控制系統和方法 |
-
2020
- 2020-06-19 TW TW109120779A patent/TW202107232A/zh unknown
- 2020-06-23 US US16/909,096 patent/US20200398428A1/en active Pending
- 2020-06-23 EP EP20832308.9A patent/EP3969233A4/en active Pending
- 2020-06-23 JP JP2021576425A patent/JP7332199B2/ja active Active
- 2020-06-23 WO PCT/US2020/039193 patent/WO2020263861A1/en unknown
- 2020-06-23 CN CN202080059714.3A patent/CN114269525B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107206592A (zh) * | 2015-01-26 | 2017-09-26 | 杜克大学 | 专用机器人运动规划硬件及其制造和使用方法 |
CN108858183A (zh) * | 2017-05-11 | 2018-11-23 | 株式会社安川电机 | 机器人、机器人的控制方法、工件的制造方法 |
CN108942920A (zh) * | 2018-05-30 | 2018-12-07 | 北京极智嘉科技有限公司 | 一种加工食品的拣选系统和方法 |
CN108789416A (zh) * | 2018-07-27 | 2018-11-13 | 中国科学院自动化研究所 | 用于控制双机械臂柔性带电作业的系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
TW202107232A (zh) | 2021-02-16 |
EP3969233A4 (en) | 2022-08-17 |
US20200398428A1 (en) | 2020-12-24 |
WO2020263861A1 (en) | 2020-12-30 |
EP3969233A1 (en) | 2022-03-23 |
CN114269525A (zh) | 2022-04-01 |
JP7332199B2 (ja) | 2023-08-23 |
JP2022539324A (ja) | 2022-09-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114269525B (zh) | 对共享工作空间中的多个机器人的运动规划 | |
JP7141665B2 (ja) | ロボットの動作計画に役立つ衝突検出 | |
EP3403772B1 (en) | Robot motion planning for avoiding collision with moving obstacles | |
JP7489727B2 (ja) | マルチロボット運用環境におけるロボットの構成 | |
CN114466730B (zh) | 用于使机器人优化速度同时保持对加速度和加加速度的限制的运动规划 | |
US20240091944A1 (en) | Safety systems and methods employed in robot operations | |
US20240009845A1 (en) | Systems, methods, and user interfaces employing clearance determinations in robot motion planning and control | |
WO2021188566A1 (en) | Digital representations of robot operational environment, useful in motion planning for robots | |
US20230342967A1 (en) | Configuration of robot operational environment including layout of sensors | |
US20230286156A1 (en) | Motion planning and control for robots in shared workspace employing staging poses | |
TW202406697A (zh) | 採用前瞻規劃之共享工作空間中機器人的運動規劃和控制 | |
US20240066698A1 (en) | Real-time motion and path planner for robots | |
WO2024011062A1 (en) | Robust motion planning and/or control for multi-robot environments | |
US20240208060A1 (en) | Digital representations of robot operational environment, useful in motion planning for robots | |
WO2024073245A1 (en) | Automated configuration of robots in multi-robot operational environment optimizing for wear and other parameters |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40072330 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |