HK40072330B - Motion planning for multiple robots in shared workspace - Google Patents

Motion planning for multiple robots in shared workspace Download PDF

Info

Publication number
HK40072330B
HK40072330B HK62022061208.4A HK62022061208A HK40072330B HK 40072330 B HK40072330 B HK 40072330B HK 62022061208 A HK62022061208 A HK 62022061208A HK 40072330 B HK40072330 B HK 40072330B
Authority
HK
Hong Kong
Prior art keywords
robot
robots
motion
processor
obstacle
Prior art date
Application number
HK62022061208.4A
Other languages
Chinese (zh)
Other versions
HK40072330A (en
Inventor
肖恩·默里
威廉·弗洛伊德-琼斯
龙先超
Original Assignee
实时机器人有限公司
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 实时机器人有限公司 filed Critical 实时机器人有限公司
Publication of HK40072330A publication Critical patent/HK40072330A/en
Publication of HK40072330B publication Critical patent/HK40072330B/en

Links

Description

对共享工作空间中的多个机器人的运动规划Motion planning for multiple robots in a shared workspace

技术领域Technical Field

本公开总体上涉及机器人运动规划,特别地涉及通过处理器电路执行碰撞检测来产生运动规划以驱动共享工作空间中的机器人等的系统和方法。This disclosure generally relates to robot motion planning, and more particularly to systems and methods for generating motion planning to drive robots, etc., in a shared workspace by performing collision detection through processor circuitry.

背景技术Background Technology

相关技术的描述Description of related technologies

运动规划是机器人控制和机器人学中的一个基本问题。通常,为了在不与操作环境中的任何障碍碰撞或者减少与操作环境中的任何障碍碰撞的可能性的情况下完成任务,运动规划指定了机器人从开始状态到目标状态能够遵循的路径。运动规划面临的挑战包括即使环境特征发生变化,也能够以非常快的速度执行运动规划。例如,环境中一个或更多个障碍的位置或方向等特征可能会随着时间变化。挑战还包括使用成本较低的设备、以较低的能耗和有限的存储量(例如,存储器电路,例如处理器芯片电路)来执行运动规划。Motion planning is a fundamental problem in robot control and robotics. Typically, to complete a task without colliding with any obstacles in the operating environment, or to reduce the likelihood of such collisions, motion planning specifies the path a robot can follow from a starting state to a target state. Challenges in motion planning include the ability to execute motion planning very quickly, even as environmental characteristics change. For example, features such as the position or orientation of one or more obstacles in the environment may change over time. Challenges also include performing motion planning using low-cost equipment with low power consumption and limited storage (e.g., memory circuitry, such as processor chip circuitry).

机器人学中的一个问题是两个或更多个机器人在共享工作空间(工作空间通常被称为工作单元)中的操作,例如,该在共享工作空间,机器人或机器人的机器人附肢可能在执行任务期间彼此干扰。One problem in robotics is the operation of two or more robots in a shared workspace (often called a work cell), where, for example, the robots or their robotic appendages may interfere with each other while performing a task.

一种在公共工作空间操作多个机器人的方法能够称为任务级方法。任务级方法可以采用教和重复训练。工程师可以通过定义工作空间的共享部分,并对单个机器人进行编程,使得在任何给定时间点只有一个机器人处于共享工作空间中,来确保机器人没有碰撞。例如,当第一个机器人开始进入工作空间时,第一个机器人设置一个标志。控制器(例如,编程逻辑控制器(PLC))读取该标志,并防止其他机器人移动到共享工作空间中,直到第一机器人在退出工作空间时解除该标志。这种方法直观,易于理解、实现和故障排除。然而,因为任务级碰撞消除的使用通常导致至少一个机器人在相当长的时间内空闲,因此即使空闲机器人在共享工作空间中执行有用的工作在技术上是可能的,这种方法也必然具有低的工作吞吐量。One approach to operating multiple robots in a shared workspace can be called a task-level approach. Task-level approaches can employ teaching and repeated training. Engineers can ensure no robot collisions by defining shared portions of the workspace and programming individual robots such that only one robot is in the shared workspace at any given time. For example, when the first robot begins to enter the workspace, it sets a flag. A controller (e.g., a programmable logic controller (PLC)) reads this flag and prevents other robots from moving into the shared workspace until the first robot removes the flag when it exits the workspace. This approach is intuitive, easy to understand, implement, and troubleshoot. However, because the use of task-level collision elimination typically results in at least one robot being idle for a considerable period, this approach inevitably suffers from low throughput, even if it is technically possible for idle robots to perform useful work in the shared workspace.

在公共工作空间中操作多个机器人的另一种方法采用离线规划,以便实现比上述基于任务级消除碰撞的方法高的工作吞吐量。为此,系统可以尝试在所有机器人或机器人附肢的组合关节空间中解决规划问题。例如,如果两个6自由度(DOF)附肢在一个工作空间中,则必须解决12DOF规划问题。虽然这种方法实现了较高的性能,但规划可能会非常耗时。12DOF的问题对于常规运动规划算法来说显得太大,以至于无法使用当前可用的体系结构来解决。Another approach to operating multiple robots in a shared workspace employs offline planning to achieve higher throughput than the task-level collision avoidance methods described above. To this end, the system can attempt to solve the planning problem in the combined joint space of all robots or robot appendages. For example, if two 6-DOF appendages are in a workspace, a 12DOF planning problem must be solved. While this approach achieves high performance, the planning can be very time-consuming. The 12DOF problem is too large for conventional motion planning algorithms to be solved using currently available architectures.

解决这些问题的一种策略是优化第一机器人/机器人附肢的运动,然后手动优化第二机器人/机器人附肢的运动。这可以采用迭代模拟运动来确保机器人/机器人附肢不会相互碰撞,这可能需要许多小时的计算时间。此外,如果对工作空间的修改导致机器人/机器人附肢之一的轨迹发生变化,则必须重新验证整个工作流程。One strategy for addressing these issues is to optimize the motion of the first robot/appendage and then manually optimize the motion of the second robot/appendage. This can be done by iteratively simulating the motion to ensure that the robots/appendages do not collide with each other, which can take many hours of computation. Furthermore, if modifications to the workspace cause a change in the trajectory of one of the robots/appendages, the entire workflow must be re-validated.

发明内容Summary of the Invention

本文描述的结构和算法有助于在共享工作空间或工作单元中操作的两个或更多个机器人的操作,防止或至少降低机器人或机器人的机器人附肢在操作以在共享工作空间中执行各自任务时相互碰撞的风险。The structures and algorithms described in this paper facilitate the operation of two or more robots operating in a shared workspace or work cell, preventing or at least reducing the risk of collisions between robots or robot appendages as they operate to perform their respective tasks in the shared workspace.

本文描述的结构和算法使得高自由度机器人能够避免碰撞并在变化的共享环境中继续工作。一种有效的规划方法能够在有或没有硬件加速的情况下加速,以在几毫秒内产生无碰撞的运动规划。在任务执行期间,超快“实时”运动规划允许在运行时决定机器人路径,而不需要训练或耗时的路径优化。这能够有利地允许多个机器人在共享工作空间中的协调。The structure and algorithm described in this paper enable high-degree-of-freedom robots to avoid collisions and continue operating in changing shared environments. An efficient planning method can be accelerated with or without hardware acceleration to generate collision-free motion plans within milliseconds. During task execution, ultrafast "real-time" motion planning allows robot paths to be determined at runtime without the need for training or time-consuming path optimization. This advantageously enables the coordination of multiple robots in a shared workspace.

在至少一些实施方式中,本文描述的结构和算法可以保证多个机器人在紧密、共享的工作空间中的无碰撞机器人协调。即使在高速运行时,机器人的所有部件(例如,机器人附肢、臂端工具、末端执行器)也都可以保证无碰撞运动。In at least some implementations, the structures and algorithms described herein can guarantee collision-free robot coordination among multiple robots in a compact, shared workspace. Even at high speeds, all robot components (e.g., robot appendages, end-effectors, end effectors) can maintain collision-free motion.

通过执行自主规划,本文描述的结构和算法可以有利地减少多机器人工作空间的编程工作。在至少一些实施方式中,操作员不需要对任何安全区域、时间同步或联合空间轨迹进行编程。输入可以限于要执行的任务的描述和机器人的几何模型。输入还可以包括固定物体的表示,或者可选地包括具有不可预测轨迹的物体(例如,人)。By performing autonomous planning, the structures and algorithms described herein can advantageously reduce programming work in multi-robot workspaces. In at least some implementations, the operator does not need to program any safety zones, time synchronization, or joint spatial trajectories. Input may be limited to a description of the task to be performed and a geometric model of the robot. Input may also include representations of stationary objects, or optionally objects with unpredictable trajectories (e.g., people).

本文描述的结构和算法可以有利地动态分配要由机器人执行的任务。一个或更多个目标姿势在任务执行期间可能改变。即使给定的机器人出现故障或被阻挡,任务的整体操作或执行也可以继续。The structure and algorithm described in this paper can advantageously and dynamically assign tasks to be performed by the robot. One or more target poses may change during task execution. Even if a given robot malfunctions or is obstructed, the overall operation or execution of the task can continue.

在至少一些实施方式中,本文描述的结构和算法可以允许机器人例如经由非专有通信信道(例如,以太网连接)来共享信息,这可以有利地促进来自不同制造商的机器人集成在共享工作空间中。In at least some implementations, the structures and algorithms described herein can allow robots to share information, for example via non-proprietary communication channels (e.g., Ethernet connections), which can advantageously facilitate the integration of robots from different manufacturers in a shared workspace.

在至少一些实施方式中,本文描述的结构和算法可以在没有摄像机或其他感知传感器的情况下操作。在至少一些实施方式中,机器人之间的协调依赖于机器人的几何模型、机器人传达它们的各自运动规划的能力以及共享工作空间的几何模型。在其他实施方式中,例如为了避开可能进入或占据共享工作空间的部分的人或其他动态障碍,可以可选地采用视觉或其他感知。In at least some embodiments, the structures and algorithms described herein can operate without cameras or other sensing sensors. In at least some embodiments, coordination between robots relies on the robots' geometric models, the robots' ability to communicate their respective motion plans, and the geometric model of the shared workspace. In other embodiments, vision or other sensing may optionally be employed, for example, to avoid people or other dynamic obstacles that may enter or occupy portions of the shared workspace.

各种各样的算法被用来解决运动规划问题。这些算法中的每个通常需要能够确定机器人的给定姿势或从一个姿势到另一个姿势的运动是否导致与机器人本身或环境中的障碍的碰撞。碰撞评估或检查能够使用处理器“在软件中”执行,该处理器执行来自存储的一组处理器可执行指令中的处理器可执行指令以执行算法。碰撞评估或检查能够使用一组专用硬件电路(例如,在现场可编程门阵列(FPGA)、专用集成电路(ASIC)中实现的碰撞检查电路)“在硬件中”执行。这种电路可以例如表示在相应运动或两种状态之间的转换期间由机器人/机器人附肢或其部分扫过的体积(即,扫掠体积)。这些电路可以例如产生布尔评估结果,该布尔评估结果指示运动是否会与任何障碍碰撞,其中至少一些障碍表示在共享工作空间中操作的其他机器人在执行运动或转换时扫过的体积。A wide variety of algorithms are used to solve motion planning problems. Each of these algorithms typically needs to be able to determine whether a given pose of the robot, or a motion from one pose to another, results in a collision with an obstacle in the robot itself or in the environment. Collision evaluation or checking can be performed "in software" using a processor that executes processor-executable instructions from a stored set of processor-executable instructions to perform the algorithm. Collision evaluation or checking can also be performed "in hardware" using a set of dedicated hardware circuitry (e.g., collision checking circuitry implemented in a field-programmable gate array (FPGA) or application-specific integrated circuit (ASIC)). Such circuitry can, for example, represent the volume swept by the robot/robot appendage or a portion thereof during a corresponding motion or transition between two states (i.e., the swept volume). These circuits can, for example, produce a Boolean evaluation result indicating whether the motion will collide with any obstacles, where at least some obstacles represent volumes swept by other robots operating in a shared workspace while performing the motion or transition.

方面1.描述了一种控制多个机器人在公共工作空间中操作的方法,所述公共工作空间为所述机器人在其中的运动范围交叠的工作空间。所述方法可以概括为包括:Aspect 1. A method for controlling multiple robots to operate in a common workspace, wherein the common workspace is a workspace in which the ranges of motion of the robots overlap. The method can be summarized as including:

为所述多个机器人中的机器人R1生成第一运动规划;Generate a first motion plan for robot R1 among the plurality of robots;

对于至少一个机器人Ri中的每个,从i等于2到i等于n,其中,n是所述多个机器人中机器人的总数,并且n是等于或大于2的整数,For each of at least one robot Ri , i equals 2 to i equals n, where n is the total number of robots in the plurality of robots, and n is an integer equal to or greater than 2.

将至少机器人R1的多个运动表示为至少一个障碍;Represent at least one obstacle as multiple motions of robot R1 ;

相对于所述至少一个障碍的表示,针对机器人Ri的至少部分的至少一个运动执行碰撞检测;以及Collision detection is performed on at least one motion of at least a portion of the robot Ri , relative to the representation of the at least one obstacle; and

至少部分地基于针对所述机器人Ri的至少部分的至少一个运动的碰撞检测,生成机器人Ri的第一运动规划;并且所述方法还包括:The method generates a first motion plan for robot Ri based at least in part on collision detection of at least a portion of at least one motion of robot Ri ; and the method further includes:

至少部分地基于所述多个机器人中的相应机器人的相应第一运动规划,提供信号以控制机器人R1到机器人Rn中的至少一个机器人的操作。Signals are provided to control the operation of at least one of the robots R1 to Rn , based at least in part on the respective first motion plans of the respective robots among the plurality of robots.

方面2.根据方面1所述的方法,还包括:Aspect 2. The method according to aspect 1 further includes:

响应于所述机器人R1完成至少一个运动,更新障碍的表示以消除与所述机器人R1完成的至少一个运动对应的部分。In response to the robot R1 completing at least one movement, the representation of the obstacle is updated to eliminate the portion corresponding to the at least one movement completed by the robot R1 .

方面3.根据方面1所述的方法,还包括:Aspect 3. The method according to aspect 1 further includes:

响应于机器人R2到机器人Rn中的任一个或更多个机器人完成至少一个运动,更新障碍的表示以消除与机器人R2到机器人Rn中的相应机器人完成的至少一个运动对应的部分。In response to any one or more robots R2 to Rn completing at least one movement, the representation of the obstacle is updated to eliminate the portion corresponding to the at least one movement completed by the respective robot R2 to Rn .

方面4.根据方面1所述的方法,还包括:Aspect 4. The method according to aspect 1 further includes:

为所述多个机器人中的机器人R1生成第二运动规划;Generate a second motion plan for robot R1 among the plurality of robots;

对于至少一个机器人Ri中的每个,从i等于2到i等于n,其中,n是所述多个机器人中机器人的总数,并且n是等于或大于2的整数,For each of at least one robot Ri , i equals 2 to i equals n, where n is the total number of robots in the plurality of robots, and n is an integer equal to or greater than 2.

将至少机器人R1的多个运动表示为至少一个障碍;Represent at least one obstacle as multiple motions of robot R1 ;

相对于至少一个障碍的表示,针对机器人Ri的至少部分的至少一个运动执行碰撞检测;以及Collision detection is performed on at least one motion of at least a portion of robot Ri , relative to a representation of at least one obstacle; and

至少部分地基于针对机器人Ri的至少部分的至少一个运动的碰撞检测,生成机器人Ri的第二运动规划;并且所述方法还包括:A second motion plan for robot Ri is generated, based at least in part on collision detection of at least a portion of at least one motion of robot Ri ; and the method further includes:

至少部分地基于所述多个机器人中的相应机器人的相应第二运动规划,提供信号以控制机器人R1到机器人Rn中的至少一个机器人的操作。Signals are provided to control the operation of at least one of the robots R1 to Rn , based at least in part on the corresponding second motion plan of the respective robot among the plurality of robots.

方面5.根据方面4所述的方法,其中,为机器人R1到机器人Rn生成第一运动规划的步骤从i等于1到i等于n连续发生。Aspect 5. According to the method of aspect 4, wherein the step of generating a first motion plan for robot R1 to robot Rn occurs consecutively from i equal to 1 to i equal to n.

方面6.根据方面5所述的方法,其中,为机器人R1到机器人Rn生成第二运动规划的步骤从i等于1到i等于n连续发生。Aspect 6. According to the method of aspect 5, wherein the step of generating a second motion plan for robot R1 to robot Rn occurs consecutively from i equal to 1 to i equal to n.

方面7.根据方面5所述的方法,其中,为机器人R1到机器人Rn生成第二运动规划不从i等于1到i等于n连续发生。Aspect 7. According to the method of aspect 5, wherein the generation of the second motion plan for robot R1 to robot Rn does not occur continuously from i equal to 1 to i equal to n.

方面8.根据方面4所述的方法,其中,至少部分地基于所述多个机器人中的相应机器人的相应第一运动规划,提供信号以控制机器人R1到机器人Rn中的至少一个机器人的操作包括提供使一个机器人Ri在所述机器人R1之前移动的信号,并且还包括:Aspect 8. The method according to aspect 4, wherein providing signals to control the operation of at least one of the robots R1 to Rn , based at least in part on a corresponding first motion plan of a respective robot among the plurality of robots, includes providing a signal to cause a robot Ri to move ahead of said robot R1 , and further includes:

响应于机器人Ri完成至少一个运动,在为多个机器人中的机器人R1生成第二运动规划之前,更新障碍的表示以消除与机器人Ri完成的至少一个运动对应的部分。In response to robot Ri completing at least one motion, before generating a second motion plan for robot R1 among a plurality of robots, the representation of the obstacle is updated to eliminate the portion corresponding to the at least one motion completed by robot Ri .

方面9.根据方面1所述的方法,还包括:Aspect 9. The method according to aspect 1 further includes:

为多个机器人中的机器人R1生成第二运动规划;Generate a second motion plan for robot R1 out of a group of robots;

对于两个或更多个机器人Ri中的一些但不是全部,从i等于2到i等于n,其中,n是所述多个机器人中机器人的总数,并且n是等于或大于3的整数,For some, but not all, of two or more robots Ri , i equals 2 to i equals n, where n is the total number of robots in the plurality of robots, and n is an integer equal to or greater than 3.

将至少机器人R1的多个运动表示为至少一个障碍;Represent at least one obstacle as multiple motions of robot R1 ;

相对于至少一个障碍的表示,针对机器人Ri的至少部分的至少一个运动执行碰撞检测;和Collision detection is performed on at least one motion of at least a portion of robot Ri , relative to a representation of at least one obstacle; and

至少部分地基于针对机器人Ri的至少部分的至少一个运动的碰撞检测,生成所述机器人Ri的第二运动规划;并且所述方法还包括:The method generates a second motion plan for robot Ri based at least in part on collision detection of at least a portion of at least one motion of robot Ri ; and the method further includes:

至少部分地基于所述多个机器人中的相应机器人的相应第二运动规划,提供信号以控制机器人R1到机器人Rn中的至少一个机器人的操作。Signals are provided to control the operation of at least one of the robots R1 to Rn , based at least in part on the corresponding second motion plan of the respective robot among the plurality of robots.

方面10.根据方面9所述的方法,其中,跳过为机器人R2到机器人Rn之一生成第二运动规划。Aspect 10. The method according to aspect 9, wherein the generation of a second motion plan is skipped for one of robot R2 to robot Rn .

方面11.根据方面9所述的方法,其中,响应于机器人R2到机器人Rn中的一个机器人被机器人R2到机器人Rn中的另一个机器人阻挡而无法移动,跳过为机器人R2到机器人Rn中的相应机器人生成第二运动规划。Aspect 11. The method according to aspect 9, wherein, in response to one of the robots R2 to Rn being blocked from moving by another robot among the robots R2 to Rn , a second motion plan is skipped for the corresponding robot among the robots R2 to Rn .

方面12.根据方面9所述的方法,其中,响应于机器人R2到机器人Rn中的一个机器人具有指示错误状况已经发生的错误状态,跳过为机器人R2到机器人Rn中的相应机器人生成第二运动规划。Aspect 12. The method according to aspect 9, wherein, in response to one of the robots R2 to Rn having an error state indicating that an error condition has occurred, a second motion plan is skipped for the corresponding robot among robots R2 to Rn .

方面13.根据方面1所述的方法,其中,将至少机器人R1的多个运动表示为至少一个障碍包括,对于至少一个机器人Ri+1,在针对机器人Ri+1的至少一个运动执行碰撞检测之前,将机器人R1到机器人Ri中的两个或更多个机器人的运动表示为障碍。Aspect 13. The method according to aspect 1, wherein representing a plurality of movements of at least robot R1 as at least one obstacle comprises, for at least one robot Ri +1 , representing the movements of two or more robots from robot R1 to robot Ri as obstacles before performing collision detection for at least one movement of robot Ri+ 1 .

方面14.根据方面13所述的方法,其中,在针对机器人Ri+1的至少一个运动执行碰撞检测之前,将机器人R1到机器人Ri中的两个或更多个机器人的运动表示为障碍包括:使用先前在运行前计算的一组扫掠体积,每个扫掠体积表示当机器人R1到机器人Ri中的相应机器人的至少部分沿着由相应运动表示的轨迹移动时,由机器人R1到机器人Ri中的相应机器人的所述部分扫掠的相应体积。Aspect 14. The method according to aspect 13, wherein representing the motions of two or more robots from robot R1 to robot Ri as obstacles before performing collision detection for at least one motion of robot Ri +1 comprises: using a set of sweep volumes previously calculated prior to operation, each sweep volume representing a corresponding volume swept by said portion of the corresponding robot from robot R1 to robot Ri as at least a portion of the corresponding robot from robot R1 to robot Ri moves along a trajectory represented by the corresponding motion.

方面15.根据方面13所述的方法,还包括:Aspect 15. The method according to aspect 13 further includes:

接收先前在运行前计算的一组扫掠体积,每个扫掠体积表示当机器人R1到机器人Ri中的相应机器人的至少部分沿着由相应运动表示的轨迹移动时,由机器人R1到机器人Ri中的相应机器人的至少部分扫掠的相应体积。Receive a set of sweep volumes previously calculated before operation, each sweep volume representing the corresponding volume swept by at least a portion of the corresponding robot from robot R1 to robot Ri as the respective robot moves along a trajectory represented by the corresponding motion.

方面16.根据方面13所述的方法,其中,在针对机器人Ri+1的至少一个运动执行碰撞检测之前,将机器人R1到机器人Ri中的两个或更多个机器人的运动表示为障碍包括:将机器人R1到机器人Ri中的两个或更多个机器人的运动表示为占用网格、分层树或欧几里德距离场中的至少一个。Aspect 16. The method according to aspect 13, wherein representing the motions of two or more robots from robot R1 to robot Ri as obstacles before performing collision detection for at least one motion of robot Ri +1 comprises: representing the motions of two or more robots from robot R1 to robot Ri as at least one of an occupied grid, a hierarchical tree, or an Euclidean distance field.

方面17.根据方面1所述的方法,其中,将至少机器人R1的运动中的每个表示为至少一个障碍包括:使用相应的扫掠体积来表示相应的运动,所述扫掠体积对应于在相应运动期间由至少机器人R1的至少部分所扫掠的体积,并且其中,相对于所述至少一个障碍的表示,针对机器人Ri的至少部分的至少一个运动执行碰撞检测包括,使用先前在运行前计算的扫掠体积的表示来执行碰撞检测,所述扫掠体积表示当机器人Ri的至少部分沿着由相应运动表示的轨迹移动时机器人Ri的所述部分扫掠的相应体积。Aspect 17. The method according to aspect 1, wherein representing each of the movements of at least robot R1 as at least one obstacle comprises: representing the corresponding movement using a corresponding sweep volume, the sweep volume corresponding to the volume swept by at least a portion of at least robot R1 during the corresponding movement, and wherein performing collision detection for at least one movement of at least a portion of robot Ri with respect to the representation of the at least one obstacle comprises performing collision detection using a representation of a sweep volume previously calculated prior to operation, the sweep volume representing the corresponding volume swept by said portion of robot Ri when said portion of robot Ri moves along the trajectory represented by the corresponding movement.

方面18.根据方面1所述的方法,还包括:Aspect 18. The method according to aspect 1 further includes:

对于多个机器人中的机器人R1到机器人Rn中的每个,通过相应的运动规划图表示相应机器人,每个运动规划图包括多个节点和边,所述节点表示相应机器人的相应状态,所述边表示相应节点对中由所述边连接的相应节点对表示的相应状态之间的有效转换。For each of the multiple robots, from robot R1 to robot Rn , the corresponding robot is represented by a corresponding motion planning graph. Each motion planning graph includes multiple nodes and edges, where the nodes represent the corresponding states of the corresponding robot, and the edges represent the effective transitions between the corresponding states represented by the corresponding node pairs connected by the edges.

方面19.描述了一种控制多个机器人在公共工作空间中操作的系统,所述公共工作空间为所述机器人在其中的运动范围交叠的工作空间。所述系统可以概括为包括:Aspect 19. A system for controlling the operation of multiple robots in a common workspace, wherein the common workspace is a workspace in which the ranges of motion of the robots overlap. The system can be summarized as including:

至少一个处理器;和At least one processor; and

至少一个非易失性存储介质,其通信地联接到所述至少一个处理器,并且存储处理器可执行指令,所述处理器可执行指令在被所述至少一个处理器执行时,使得所述至少一个处理器:At least one non-volatile storage medium communicatively connected to the at least one processor, and storing processor-executable instructions that, when executed by the at least one processor, cause the at least one processor to:

为所述多个机器人中的机器人R1生成第一运动规划;Generate a first motion plan for robot R1 among the plurality of robots;

对于至少一个机器人Ri中的每个,从i等于2到i等于n,其中,n是所述多个机器人中机器人的总数,并且n是等于或大于2的整数,For each of at least one robot Ri , i equals 2 to i equals n, where n is the total number of robots in the plurality of robots, and n is an integer equal to or greater than 2.

将至少机器人R1的多个运动表示为至少一个障碍;Represent at least one obstacle as multiple motions of robot R1 ;

相对于所述至少一个障碍的表示,针对机器人Ri的至少部分的至少一个运动执行碰撞检测;以及Collision detection is performed on at least one motion of at least a portion of the robot Ri , relative to the representation of the at least one obstacle; and

至少部分地基于针对所述机器人Ri的至少部分的至少一个运动的碰撞检测,生成机器人Ri的第一运动规划;并且进一步:A first motion plan for robot Ri is generated, based at least in part on collision detection of at least one motion of at least a portion of the robot Ri ; and further:

至少部分地基于所述多个机器人中的相应机器人的相应第一运动规划,提供信号以控制机器人R1到机器人Rn中的至少一个机器人的操作。Signals are provided to control the operation of at least one of the robots R1 to Rn , based at least in part on the respective first motion plans of the respective robots among the plurality of robots.

方面20.根据方面19所述的系统,其中,所述处理器可执行指令在被所述至少一个处理器执行时,使得所述至少一个处理器进一步:Aspect 20. The system according to aspect 19, wherein, when executed by the at least one processor, the processor-executable instructions cause the at least one processor to further:

响应于所述机器人R1完成至少一个运动,更新障碍的表示以消除与所述机器人R1完成的至少一个运动对应的部分。In response to the robot R1 completing at least one movement, the representation of the obstacle is updated to eliminate the portion corresponding to the at least one movement completed by the robot R1 .

方面21.根据方面19所述的系统,其中,所述处理器可执行指令在被所述至少一个处理器执行时,使得所述至少一个处理器进一步:Aspect 21. The system according to aspect 19, wherein, when executed by the at least one processor, the processor-executable instructions cause the at least one processor to further:

响应于机器人R2到机器人Rn中的任一个或更多个机器人完成至少一个运动,更新障碍的表示以消除与机器人R2到机器人Rn中的相应机器人完成的至少一个运动对应的部分。In response to any one or more robots R2 to Rn completing at least one movement, the representation of the obstacle is updated to eliminate the portion corresponding to the at least one movement completed by the respective robot R2 to Rn .

方面22.根据方面19所述的系统,其中,所述处理器可执行指令在被所述至少一个处理器执行时,使得所述至少一个处理器进一步:Aspect 22. The system according to aspect 19, wherein, when executed by the at least one processor, the processor-executable instructions cause the at least one processor to further:

为所述多个机器人中的机器人R1生成第二运动规划;Generate a second motion plan for robot R1 among the plurality of robots;

对于至少一个机器人Ri中的每个,从i等于2到i等于n,其中,n是所述多个机器人中机器人的总数,并且n是等于或大于2的整数,For each of at least one robot Ri , i equals 2 to i equals n, where n is the total number of robots in the plurality of robots, and n is an integer equal to or greater than 2.

将至少机器人R1的多个运动表示为至少一个障碍;Represent at least one obstacle as multiple motions of robot R1 ;

相对于至少一个障碍的表示,针对机器人Ri的至少部分的至少一个运动执行碰撞检测;以及Collision detection is performed on at least one motion of at least a portion of robot Ri , relative to a representation of at least one obstacle; and

至少部分地基于针对机器人Ri的至少部分的至少一个运动的碰撞检测,生成机器人Ri的第二运动规划;并且进一步:A second motion plan for robot Ri is generated, based at least in part on collision detection of at least one motion of at least part of robot Ri ; and further:

至少部分地基于所述多个机器人中的相应机器人的相应第二运动规划,提供信号以控制机器人R1到机器人Rn中的至少一个机器人的操作。Signals are provided to control the operation of at least one of the robots R1 to Rn , based at least in part on the corresponding second motion plan of the respective robot among the plurality of robots.

方面23.根据方面22所述的系统,其中,为机器人R1到机器人Rn生成第一运动规划的步骤从i等于1到i等于n连续发生。Aspect 23. The system according to aspect 22, wherein the step of generating a first motion plan for robot R1 to robot Rn occurs consecutively from i equal to 1 to i equal to n.

方面24.根据方面23所述的系统,其中,为机器人R1到机器人Rn生成第二运动规划的步骤从i等于1到i等于n连续发生。Aspect 24. The system according to aspect 23, wherein the step of generating a second motion plan for robot R1 to robot Rn occurs consecutively from i equal to 1 to i equal to n.

方面25.根据方面23所述的系统,其中,为机器人R1到机器人Rn生成第二运动规划不从i等于1到i等于n连续发生。Aspect 25. The system according to aspect 23, wherein the generation of the second motion plan for robot R1 to robot Rn does not occur continuously from i equal to 1 to i equal to n.

方面26.根据方面22所述的系统,其中,为了至少部分地基于所述多个机器人中的相应机器人的相应第一运动规划,控制机器人R1到机器人Rn中的至少一个机器人的操作,所述处理器可执行指令在被所述至少一个处理器执行时,使得所述至少一个处理器提供使一个机器人Ri在所述机器人R1之前移动的信号,并且进一步:Aspect 26. The system according to aspect 22, wherein, in order to control the operation of at least one of the robots R1 to Rn based at least in part on a corresponding first motion plan of the respective robots among the plurality of robots, the processor is executable instructions, when executed by the at least one processor, such that the at least one processor provides a signal to move a robot Ri before the robot R1 , and further:

响应于机器人Ri完成至少一个运动,在为多个机器人中的机器人R1生成第二运动规划之前,更新障碍的表示以消除与机器人Ri完成的至少一个运动对应的部分。In response to robot Ri completing at least one motion, before generating a second motion plan for robot R1 among a plurality of robots, the representation of the obstacle is updated to eliminate the portion corresponding to the at least one motion completed by robot Ri .

方面27.根据方面19所述的系统,其中,所述处理器可执行指令在被所述至少一个处理器执行时,使得所述至少一个处理器进一步:Aspect 27. The system according to aspect 19, wherein the processor-executable instructions, when executed by the at least one processor, cause the at least one processor to further:

为多个机器人中的机器人R1生成第二运动规划;Generate a second motion plan for robot R1 out of a group of robots;

对于两个或更多个机器人Ri中的一些但不是全部,从i等于2到i等于n,其中,n是所述多个机器人中机器人的总数,并且n是等于或大于3的整数,For some, but not all, of two or more robots Ri , i equals 2 to i equals n, where n is the total number of robots in the plurality of robots, and n is an integer equal to or greater than 3.

将至少机器人R1的多个运动表示为至少一个障碍;Represent at least one obstacle as multiple motions of robot R1 ;

相对于至少一个障碍的表示,针对机器人Ri的至少部分的至少一个运动执行碰撞检测;和Collision detection is performed on at least one motion of at least a portion of robot Ri , relative to a representation of at least one obstacle; and

至少部分地基于针对机器人Ri的至少部分的至少一个运动的碰撞检测,生成所述机器人Ri的第二运动规划;并且进一步:A second motion plan for robot Ri is generated, based at least in part on collision detection of at least one motion of at least a portion thereof ; and further:

至少部分地基于所述多个机器人中的相应机器人的相应第二运动规划,提供信号以控制机器人R1到机器人Rn中的至少一个机器人的操作。Signals are provided to control the operation of at least one of the robots R1 to Rn , based at least in part on the corresponding second motion plan of the respective robot among the plurality of robots.

方面28.根据方面27所述的系统,其中,跳过为机器人R2到机器人Rn之一生成第二运动规划。Aspect 28. The system according to aspect 27, wherein a second motion plan is generated for one of robot R2 to robot Rn .

方面29.根据方面27所述的系统,其中,响应于机器人R2到机器人Rn中的一个机器人被机器人R2到机器人Rn中的另一个机器人阻挡而无法移动,跳过为机器人R2到机器人Rn中的相应机器人生成第二运动规划。Aspect 29. The system according to aspect 27, wherein, in response to one of robots R2 to Rn being blocked from moving by another robot among robots R2 to Rn , a second motion plan is skipped for the corresponding robot among robots R2 to Rn .

方面30.根据方面27所述的系统,其中,响应于机器人R2到机器人Rn中的一个机器人具有指示错误状况已经发生的错误状态,跳过为机器人R2到机器人Rn中的相应机器人生成第二运动规划。Aspect 30. The system according to aspect 27, wherein, in response to one of the robots R2 to Rn having an error state indicating that an error condition has occurred, a second motion plan is skipped for the corresponding robot among robots R2 to Rn .

方面31.根据方面19所述的系统,其中,为了将至少机器人R1的多个运动表示为至少一个障碍,所述处理器可执行指令在被所述至少一个处理器执行时,使得所述至少一个处理器:对于至少一个机器人Ri+1,在针对机器人Ri+1的至少一个运动执行碰撞检测之前,将机器人R1到机器人Ri中的两个或更多个机器人的运动表示为障碍。Aspect 31. The system according to aspect 19, wherein, in order to represent multiple movements of at least robot R1 as at least one obstacle, the processor executable instructions, when executed by the at least one processor, cause the at least one processor to: represent the movements of two or more robots from robot R1 to robot Ri as obstacles before performing collision detection for at least one movement of robot Ri +1 .

方面32.根据方面31所述的系统,其中,为了将机器人R1到机器人Ri中的两个或更多个机器人的运动表示为障碍,所述处理器可执行指令在被所述至少一个处理器执行时,使得所述至少一个处理器:使用先前在运行前计算的一组扫掠体积,每个扫掠体积表示当机器人R1到机器人Ri中的相应机器人的至少部分沿着由相应运动表示的轨迹移动时,由机器人R1到机器人Ri中的相应机器人的所述部分扫掠的相应体积。Aspect 32. The system according to aspect 31, wherein, in order to represent the motion of two or more robots R1 to R1 as an obstacle, the processor is executable instructions, when executed by the at least one processor, such that the at least one processor: uses a set of sweep volumes previously calculated prior to operation, each sweep volume representing a corresponding volume swept by said portion of the respective robot R1 to R1 as at least a portion of the respective robot R1 to R1 moves along a trajectory represented by the respective motion.

方面33.根据方面31所述的系统,其中,所述处理器可执行指令在被所述至少一个处理器执行时,使得所述至少一个处理器进一步:Aspect 33. The system according to aspect 31, wherein, when executed by the at least one processor, the processor-executable instructions cause the at least one processor to further:

接收先前在运行前计算的一组扫掠体积,每个扫掠体积表示当机器人R1到机器人Ri中的相应机器人的至少部分沿着由相应运动表示的轨迹移动时,由机器人R1到机器人Ri中的相应机器人的至少部分扫掠的相应体积。Receive a set of sweep volumes previously calculated before operation, each sweep volume representing the corresponding volume swept by at least a portion of the corresponding robot from robot R1 to robot Ri as the respective robot moves along a trajectory represented by the corresponding motion.

方面34.根据方面31所述的系统,其中,为了在针对机器人Ri+1的至少一个运动执行碰撞检测之前,将机器人R1到机器人Ri中的两个或更多个机器人的运动表示为障碍,所述处理器可执行指令在被所述至少一个处理器执行时,使得所述至少一个处理器:将机器人R1到机器人Ri中的两个或更多个机器人的运动表示为占用网格、分层树或欧几里德距离场中的至少一个。Aspect 34. The system according to aspect 31, wherein, in order to represent the motions of two or more robots from robot R1 to robot Ri as obstacles before performing collision detection for at least one motion of robot Ri +1 , the processor executable instructions, when executed by the at least one processor, cause the at least one processor to: represent the motions of two or more robots from robot R1 to robot Ri as at least one of an occupied grid, a hierarchical tree, or an Euclidean distance field.

方面35.根据方面19所述的系统,其中,为了将至少机器人R1的运动中的每个表示为至少一个障碍,所述处理器可执行指令在被所述至少一个处理器执行时,使得所述至少一个处理器:使用相应的扫掠体积来表示相应的运动,所述扫掠体积对应于在相应运动期间由至少机器人R1的至少部分所扫掠的体积,并且其中,为了相对于所述至少一个障碍的表示,针对机器人Ri的至少部分的至少一个运动执行碰撞检测,所述处理器可执行指令在被所述至少一个处理器执行时,使得所述至少一个处理器:至少部分地基于先前在运行前计算的扫掠体积的表示来执行碰撞检测,所述扫掠体积表示当机器人Ri的至少部分沿着由相应运动表示的轨迹移动时机器人Ri的所述部分扫掠的相应体积。Aspect 35. The system according to aspect 19, wherein, in order to represent each of the movements of at least robot R1 as at least one obstacle, the processor-executable instructions, when executed by the at least one processor, cause the at least one processor to: represent the corresponding movement using a corresponding sweep volume, the sweep volume corresponding to the volume swept by at least a portion of at least robot R1 during the corresponding movement, and wherein, in order to perform collision detection for at least one movement of at least a portion of robot Ri relative to the representation of the at least one obstacle, the processor-executable instructions, when executed by the at least one processor, cause the at least one processor to: perform collision detection at least in part based on a representation of a sweep volume previously calculated prior to operation, the sweep volume representing the corresponding volume swept by said portion of robot Ri when at least a portion of robot Ri moves along the trajectory represented by the corresponding movement.

方面36.根据方面19所述的系统,其中,对于多个机器人中的机器人R1到机器人Rn中的每个,通过相应的运动规划图表示相应机器人,每个运动规划图包括多个节点和边,所述节点表示相应机器人的相应状态,所述边表示相应节点对中由所述边连接的相应节点对表示的相应状态之间的有效转换。Aspect 36. The system according to aspect 19, wherein for each of a plurality of robots, from robot R1 to robot Rn , the respective robot is represented by a corresponding motion planning graph, each motion planning graph comprising a plurality of nodes and edges, the nodes representing a corresponding state of the respective robot, and the edges representing valid transitions between corresponding states represented by corresponding node pairs connected by the edges in the corresponding node pairs.

附图说明Attached Figure Description

在附图中,相同的附图标记表示相似的元件或动作。附图中元件的大小和相对位置不一定按比例绘制。例如,各种元件的形状和角度不是按比例绘制的,并且这些元件中的一些被任意放大和定位以提高绘图的易读性。此外,所绘制的元件的特定形状并不旨在传达关于特定元件的实际形状的任何信息,而是仅仅是为了便于在附图中识别而选择的。In the accompanying drawings, the same reference numerals denote similar elements or actions. The size and relative positions of the elements in the drawings are not necessarily drawn to scale. For example, the shapes and angles of various elements are not drawn to scale, and some of these elements are arbitrarily enlarged and positioned to improve the readability of the drawing. Furthermore, the specific shapes of the elements drawn are not intended to convey any information about the actual shape of the particular element, but are chosen solely for ease of identification in the accompanying drawings.

图1是根据一个所示实施方式的机器人系统的示意图,该机器人系统包括在共享工作空间中操作以执行任务的多个机器人并且包括运动规划器,该运动规划器考虑到其他机器人的规划运动来动态地产生机器人的运动规划,并且该机器人系统可选地包括感知子系统。Figure 1 is a schematic diagram of a robot system according to an embodiment shown. The robot system includes multiple robots operating in a shared workspace to perform tasks and includes a motion planner that dynamically generates motion plans for the robots by taking into account the planned motions of other robots. The robot system may optionally include a perception subsystem.

图2是根据一个所示实施方式的环境的功能框图,在该环境中,第一机器人由机器人控制系统控制,该机器人控制系统包括运动规划器,向其他机器人的其他运动规划器提供运动规划,并且还包括单独的、与运动规划器不同的规划图源。Figure 2 is a functional block diagram of an environment according to one of the illustrated embodiments, in which a first robot is controlled by a robot control system that includes a motion planner that provides motion plans to other motion planners of other robots, and also includes a separate planning map source that is different from the motion planner.

图3是根据一个所示实施方式的用于在共享工作空间中操作的机器人的C空间的示例运动规划图。Figure 3 is an example motion planning diagram in C-space for a robot operating in a shared workspace according to one of the illustrated embodiments.

图4是示出根据至少一个所示实施方式在基于处理器的系统中产生运动规划图和扫掠体积的操作方法的流程图。Figure 4 is a flowchart illustrating an operation method for generating motion planning maps and sweep volumes in a processor-based system according to at least one of the illustrated embodiments.

图5A和图5B是示出根据一个所示实施方式在基于处理器的系统中产生运动规划并可选地控制在共享工作空间中操作的多个机器人的操作方法的流程图。Figures 5A and 5B are flowcharts illustrating a method for generating motion plans and optionally controlling the operation of multiple robots in a shared workspace in a processor-based system according to one of the illustrated embodiments.

图6是示出根据至少一个所示实施方式在基于处理器的系统中产生运动规划并可选地控制在共享工作空间中操作的多个机器人的操作方法的流程图。Figure 6 is a flowchart illustrating a method for generating motion plans and optionally controlling the operation of multiple robots in a shared workspace in a processor-based system according to at least one of the illustrated embodiments.

具体实施方式Detailed Implementation

在以下描述中,阐述了某些特定细节,以便提供对各种公开实施例的透彻理解。然而,相关领域的技术人员将认识到,实施例可以在没有一个或更多个这些特定细节的情况下或者利用其他方法、组件、材料等来实施。在其他情况下,与计算机系统、致动器系统和/或通信网络相关联的公知结构没有详细示出或描述,以避免不必要地模糊对实施例的描述。在其他情况下,用于生成一个或更多个物体等的感知数据和体积表示的公知计算机视觉方法和技术没有详细描述,以避免不必要地模糊对实施例的描述。In the following description, certain specific details are set forth in order to provide a thorough understanding of the various disclosed embodiments. However, those skilled in the art will recognize that embodiments may be implemented without one or more of these specific details or using other methods, components, materials, etc. In other instances, well-known structures associated with computer systems, actuator systems, and/or communication networks are not shown or described in detail to avoid unnecessarily obscuring the description of the embodiments. In other instances, well-known computer vision methods and techniques for generating perceptual data and volumetric representations of one or more objects, etc., are not described in detail to avoid unnecessarily obscuring the description of the embodiments.

除非上下文另有要求,否则在整个说明书和所附权利要求书中,词语“包括”及其变型应被解释为开放的、包含的意思,即“包括但不限于”。Unless the context otherwise requires, throughout the specification and appended claims, the word “comprising” and its variations shall be interpreted as open-ended and encompassing, i.e., “including but not limited to”.

在整个说明书中提到“一个实施方式”或“实施方式”或者“一个实施例”或“实施例”意味着结合该实施例描述的特定特征、结构或特性包括在至少一个实施方式或至少一个实施例中。因此,在整个说明书的不同地方出现的短语“一个实施方式”或“实施方式”或者“一个实施例”或“实施例”不一定都指同一实施方式或实施例。此外,在一个或更多个实施方式或实施例中,特定特征、结构或特性可以以任何合适的方式组合。Throughout this specification, references to "one embodiment," "implementation," "an example," or "an embodiment" mean that a particular feature, structure, or characteristic described in connection with that embodiment is included in at least one embodiment or at least one example. Therefore, the phrases "one embodiment," "implementation," "an example," or "an example" appearing in different places throughout the specification do not necessarily refer to the same embodiment or example. Furthermore, in one or more embodiments or examples, a particular feature, structure, or characteristic may be combined in any suitable manner.

如在本说明书和所附权利要求中所使用的,除非内容另有明确规定,否则单数形式“一”、“一个”和“所述”包括复数个指代物。还应该注意,除非上下文明确另有规定,否则术语“或”通常以其包括“和/或”的含义使用。As used in this specification and the appended claims, unless otherwise expressly provided, the singular forms “a,” “an,” and “the” include the plural referents. It should also be noted that, unless the context clearly specifies otherwise, the term “or” is generally used to mean “and/or.”

如在本说明书和所附权利要求中所使用的,当在是否会发生或导致碰撞的上下文中使用时,术语“确定”及其变型意指对给定姿势或两个姿势之间通过多个中间姿势的移动是否会导致机器人的一部分与某个物体(例如,机器人的另一部分、另一机器人的部分、持久障碍、例如人之类的瞬时障碍)之间的碰撞进行评估或预测。As used in this specification and the appended claims, when used in the context of whether a collision will occur or result in, the term “determine” and its variations mean to assess or predict whether a given pose or movement between two poses via multiple intermediate poses will result in a collision between a part of the robot and an object (e.g., another part of the robot, a part of another robot, a persistent obstacle, a transient obstacle such as a person).

本文提供的公开的标题和摘要仅仅是为了方便,并不解释实施例的范围或含义。The titles and abstracts provided herein are for convenience only and do not explain the scope or meaning of the embodiments.

图1示出了根据一个所示实施方式的机器人系统100,该机器人系统包括在共享工作空间104中操作以执行任务的多个机器人102a、102b、102c(统称为102)。Figure 1 illustrates a robot system 100 according to one of the illustrated embodiments, which includes multiple robots 102a, 102b, 102c (collectively referred to as 102) operating in a shared workspace 104 to perform tasks.

机器人102能够采取多种形式中的任何一种。通常,机器人将采取或具有一个或更多个机器人附肢的形式。机器人102可以包括具有一个或更多个关节的一个或更多个连杆,以及联接并可操作以响应控制或驱动信号来移动连杆的致动器(例如,电动机、步进电动机、螺线管、气动致动器或液压致动器)。气动致动器可以例如包括一个或更多个活塞、气缸、阀、储气器和/或压力源(例如压缩机、鼓风机)。液压致动器可以例如包括一个或更多个活塞、气缸、阀、流体储存器(例如低压缩性液压流体)和/或压力源(例如压缩机、鼓风机)。机器人系统100可以采用其他形式的机器人102,例如自动车辆。Robot 102 can take any of a variety of forms. Typically, the robot will take the form of or have one or more robotic appendages. Robot 102 may include one or more links with one or more joints, and actuators (e.g., electric motors, stepper motors, solenoids, pneumatic actuators, or hydraulic actuators) coupled to and operable to move the links in response to control or drive signals. Pneumatic actuators may, for example, include one or more pistons, cylinders, valves, air reservoirs, and/or pressure sources (e.g., compressors, blowers). Hydraulic actuators may, for example, include one or more pistons, cylinders, valves, fluid reservoirs (e.g., low-compressibility hydraulic fluid), and/or pressure sources (e.g., compressors, blowers). Robot system 100 may take other forms of robot 102, such as autonomous vehicles.

尽管在某些有限的实施方式中,共享工作空间104可以表示二维空间,但是共享工作空间104通常表示机器人102a-102c可以在其中操作和移动的三维空间。共享工作空间104是在其中机器人102的至少部分在空间和时间上可以交叠或者在不控制运动以避免碰撞的情况下发生碰撞的体积或区域。注意,工作空间104不同于机器人102a-102c的相应“配置空间”或“C空间”,这将在下面例如参照图3描述。Although in some limited embodiments, the shared workspace 104 may represent a two-dimensional space, it generally represents a three-dimensional space in which robots 102a-102c can operate and move. The shared workspace 104 is a volume or region in which at least a portion of robots 102 can overlap in space and time or collide without controlling movement to avoid collisions. Note that workspace 104 differs from the corresponding “configuration space” or “C-space” of robots 102a-102c, which will be described below, for example, with reference to FIG3.

如本文所解释的,当从另一机器人102b的角度考虑时(即,当对另一机器人102b进行运动规划时),机器人102a或其部分可能构成障碍。共享工作空间104还可以包括其他障碍,例如机器(例如,输送机106)、桩、柱子、墙壁、天花板、地板、桌子、人和/或动物。共享工作空间104还可以包括一个或更多个工作物品或工件108,机器人102作为执行任务的一部分来操纵这些工作物品或工件108,例如一个或更多个包裹、包装、紧固件、工具、物品或其他物体。As explained herein, robot 102a or parts thereof may constitute an obstacle when considered from the perspective of another robot 102b (i.e., when motion planning is performed on another robot 102b). The shared workspace 104 may also include other obstacles such as machines (e.g., conveyor 106), stakes, pillars, walls, ceilings, floors, tables, people, and/or animals. The shared workspace 104 may also include one or more work items or workpieces 108 that robot 102 manipulates as part of performing a task, such as one or more packages, packs, fasteners, tools, items, or other objects.

机器人系统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的关节位置和关节角度/旋转(例如,关节姿势、关节坐标)来定义。Robot system 100 may include one or more robot control systems 109a, 109b, 109c (three shown, 109 in total), each robot control system including one or more motion planners, such as corresponding motion planners 110a, 110b, 110c (three shown, 110 in total) for each robot 102a, 102b, 102c. In at least some embodiments, a single motion planner 109 may be used to generate motion plans for two, more, or all robots 102. Motion planners 110 are communicatively connected to control the respective robots among the robots 102. The motion planner 110 is also communicatively coupled to receive various types of input, such as robot geometry models 112a, 112b, 112c (also referred to as kinematic models, collectively referred to as 112), task messages 114a, 114b, 114c (collectively referred to as 114), and other representations 116a, 116b, 116c (collectively referred to as 116) of motion planning or movement for other robots 102 operating in the shared workspace 104. The robot geometry model 112 defines the geometry of a given robot 102, for example, in terms of its respective C-space and/or joints, degrees of freedom, and dimensions (e.g., link lengths). (As shown in Figure 2, the conversion from robot geometry model 112 to motion planning diagrams can occur before operation or task execution, for example, performed by a processor-based system that uses any of a variety of technologies different from and separate from robot system 100). The task message 114 specifies the task to be performed, for example, based on the final pose, final configuration, or final state and/or intermediate pose, intermediate configuration, or intermediate state of the respective robot 102. An attitude, configuration, or state can be defined, for example, based on the joint positions and joint angles/rotations of the respective robot 102 (e.g., joint pose, joint coordinates).

运动规划器110可选地通信地联接以接收静态物体数据118a、118b、118c(统称为118)作为输入。静态物体数据118是工作空间104中静态物体的代表(例如,大小、形状、位置、占用的空间),其例如可以是先验已知的。静态物体可以例如包括工作空间中的一个或更多个固定结构,例如桩、柱子、墙壁、天花板、地板、输送机106。因为机器人102在共享工作空间中操作,所以对于每个机器人来说,静态物体通常是相同的。因此,在至少一些实施方式中,提供给运动规划器110的静态物体数据118a、118b、118c将是相同的。在其他实施方式中,对于每个机器人,提供给运动规划器110的静态物体数据118a、118b、118c可以例如基于机器人102在环境中的位置或方向或者机器人102的环境视角而不同。另外,如上所述,在一些实施方式中,单个运动规划器110可以为两个或更多个机器人102生成运动规划。Motion planner 110 is optionally communicatively connected to receive static object data 118a, 118b, 118c (collectively referred to as 118) as input. Static object data 118 is representative of static objects in workspace 104 (e.g., size, shape, location, space occupied), which may be, for example, known a priori. Static objects may include, for example, one or more fixed structures in the workspace, such as stakes, pillars, walls, ceilings, floors, conveyor 106. Because robot 102 operates in a shared workspace, the static objects are generally the same for each robot. Therefore, in at least some embodiments, the static object data 118a, 118b, 118c provided to motion planner 110 will be the same. In other embodiments, the static object data 118a, 118b, 118c provided to motion planner 110 for each robot may differ, for example, based on the position or orientation of robot 102 in the environment or the environmental perspective of robot 102. Additionally, as described above, in some embodiments, a single motion planner 110 can generate motion plans for two or more robots 102.

运动规划器110可选地通信地联接以接收例如由感知子系统124提供的感知数据120作为输入。感知数据120代表工作空间104中先验未知的静态和/或动态物体。感知数据120可以是通过一个或更多个传感器(例如,摄像机122a、122b)感测的和/或由感知子系统124转换成障碍的数字表示的原始数据。The motion planner 110 is optionally communicatively connected to receive, for example, sensing data 120 provided by the sensing subsystem 124 as input. The sensing data 120 represents static and/or dynamic objects in the workspace 104 that are unknown prior to the data. The sensing data 120 may be raw data sensed by one or more sensors (e.g., cameras 122a, 122b) and/or converted into a digital representation of obstacles by the sensing subsystem 124.

可选的感知子系统124可以包括一个或更多个处理器,该处理器可以执行一个或更多个机器可读指令,该指令使得感知子系统124生成环境的相应离散化表示,机器人102将在该环境中操作以执行各种不同场景的任务。The optional perception subsystem 124 may include one or more processors that can execute one or more machine-readable instructions that cause the perception subsystem 124 to generate a corresponding discretized representation of the environment in which the robot 102 will operate to perform tasks in various different scenarios.

可选传感器(例如,摄像机122a、122b)向感知子系统124提供原始感知信息(例如,点云)。可选的感知子系统124可以处理原始感知信息,并且得到的感知数据可以被提供为点云、占据网格、盒(例如,边界盒)或其他几何物体,或者表示环境中存在的障碍的体素流(即,“体素”相当于3D或体积像素)。障碍的表示可以可选地存储在片上存储器中。感知数据120可以表示在环境中哪些体素或子体积(例如,盒)在当前时间(例如,运行时间)被占据。在一些实施方式中,当表示环境中的机器人或另一障碍时,机器人或障碍(例如,包括其他机器人)的相应表面可以表示为体素或多边形网格(通常是三角形)。在某些情况下,将物体表示为盒(矩形棱柱、边界盒)或其他几何物体是有利的。由于物体不是随机成形的,因此体素的组织方式可能存在大量的结构;物体中的许多体素在3D空间中彼此紧邻。因此,将物体表示为盒可能需要少得多的位(即,可能只需要盒的两个相对角的x、y、z笛卡尔坐标)。此外,对盒执行相交测试在复杂性上与对体素执行相交测试相当。Optional sensors (e.g., cameras 122a, 122b) provide raw sensing information (e.g., point clouds) to the perception subsystem 124. The optional perception subsystem 124 can process the raw sensing information, and the resulting sensing data can be provided as point clouds, occupied meshes, boxes (e.g., bounding boxes), or other geometric objects, or a voxel stream representing obstacles present in the environment (i.e., a “voxel” is equivalent to a 3D or volumetric pixel). The representation of obstacles can optionally be stored in on-chip memory. The sensing data 120 can indicate which voxels or sub-volumes (e.g., boxes) are occupied in the environment at the current time (e.g., runtime). In some embodiments, when representing a robot or another obstacle in the environment, the corresponding surface of the robot or obstacle (e.g., including other robots) can be represented as voxels or polygonal meshes (typically triangles). In some cases, it is advantageous to represent objects as boxes (rectangular prisms, bounding boxes) or other geometric objects. Because objects are not randomly shaped, the organization of voxels can exhibit a large amount of structure; many voxels in an object are adjacent to each other in 3D space. Therefore, representing an object as a box may require far fewer bits (i.e., perhaps only the x, y, z Cartesian coordinates of the two opposite corners of the box). Furthermore, performing an intersection test on a box is comparable in complexity to performing an intersection test on a voxel.

至少一些实施方式可以组合多个传感器的输出,并且传感器可以提供非常精细粒度的体素化。然而,,为了使运动规划器有效地执行运动规划,可以使用较粗糙的体素(即,“处理器体素”)来表示环境和当在各种状态、配置或姿势之间进行转换时被机器人102或其部分扫过的3D空间中的体积。因此,可选的感知子系统124可以相应地变换传感器(例如,摄像机122a、122b)的输出。例如,摄像机122a、122b的输出可以在每个轴上使用10位精度,因此直接源自摄像机122a、122b的每个体素具有30位ID,并且有230个传感器体素。对于18位处理器体素ID,系统200a(图2)可以在每个轴上使用6位精度,并且将有218个处理器体素。因此,例如,每个处理器体素可以有212个传感器体素。在运行时,如果系统200a确定处理器体素内的任何传感器体素被占用,则系统200a认为处理器体素被占用,并相应地生成占用网格。At least some implementations can combine the outputs of multiple sensors, and the sensors can provide very fine-grained voxelization. However, in order for the motion planner to perform motion planning effectively, coarser voxels (i.e., "processor voxels") can be used to represent the environment and the volume in 3D space swept by the robot 102 or parts thereof when transitioning between various states, configurations, or poses. Thus, the optional perception subsystem 124 can accordingly transform the outputs of the sensors (e.g., cameras 122a, 122b). For example, the outputs of cameras 122a, 122b can use 10-bit precision per axis, so each voxel directly derived from cameras 122a, 122b has a 30-bit ID, and there are 2 ^30 sensor voxels. For an 18-bit processor voxel ID, system 200a (FIG. 2) can use 6-bit precision per axis, and there will be 2 ^18 processor voxels. Thus, for example, each processor voxel can have 2 ^12 sensor voxels. During runtime, if system 200a determines that any sensor voxel within the processor voxel is occupied, system 200a considers the processor voxel to be occupied and generates an occupancy grid accordingly.

在图1中各种通信路径用箭头表示。通信路径可以例如采取一个或更多个有线通信路径(例如,电导体、信号总线或光纤)和/或一个或更多个无线通信路径(例如,经由RF或微波无线电和天线、红外收发器)的形式。注意,运动规划器110a-110c中的每个都直接或间接地彼此通信地联接,以将机器人102a-102c中的相应一个的运动规划提供给另外的运动规划器110a-110c。例如,运动规划器110a-110c可以经由网络基础设施彼此通信地联接,网络基础设施例如非专有网络基础设施(例如,以太网网络基础设施)126。这样可以有利地允许来自不同制造商的机器人在共享工作空间中操作。In Figure 1, various communication paths are indicated by arrows. Communication paths can take the form of, for example, one or more wired communication paths (e.g., electrical conductors, signal buses, or optical fibers) and/or one or more wireless communication paths (e.g., via RF or microwave radios and antennas, infrared transceivers). Note that each of the motion planners 110a-110c is communicatively connected to each other, directly or indirectly, to provide motion planning for a corresponding one of the robots 102a-102c to the other motion planners 110a-110c. For example, the motion planners 110a-110c can be communicatively connected to each other via a network infrastructure, such as a non-proprietary network infrastructure (e.g., Ethernet network infrastructure) 126. This advantageously allows robots from different manufacturers to operate in a shared workspace.

术语“环境”用于指机器人的当前工作空间,该工作空间是两个或更多个机器人在同一工作空间中操作的共享工作空间。该环境可以包括障碍和/或工件(即机器人要与其交互或作用于其或与其一起作用的物品)。术语“任务”用于指机器人任务,其中机器人在不与其环境中的障碍发生碰撞的情况下从姿势A转换到姿势B。该任务可能涉及抓取或不抓取物品、移动或放下物品、旋转物品或取回或放置物品。从姿势A到姿势B的转换可以可选地包括一个或更多个中间姿势之间的转换。术语“场景”用来指一类环境/任务对。例如,一个场景可以是“在有3英尺的桌子或传送带的环境中,在大小和形状在给定范围内的x和y障碍之间的取放任务”。根据目标的位置以及障碍的大小和形状,可以有许多不同的任务/环境对符合这些标准。The term "environment" refers to the robot's current workspace, which is a shared workspace in which two or more robots operate. This environment may include obstacles and/or workpieces (i.e., objects that the robot interacts with, acts upon, or works with). The term "task" refers to a robot task in which the robot transitions from posture A to posture B without colliding with obstacles in its environment. This task may involve grasping or not grasping an object, moving or placing an object, rotating an object, or retrieving or placing an object. The transition from posture A to posture B may optionally include transitions between one or more intermediate postures. The term "scenario" refers to a class of environment/task pairs. For example, a scenario could be "a pick-and-place task between obstacles of a given size and shape in an environment with a 3-foot table or conveyor belt, between x and y obstacles." Many different task/environment pairs may conform to these criteria, depending on the location of the target and the size and shape of the obstacles.

运动规划器110可操作以动态地产生运动规划116,使机器人102在考虑其他机器人102的规划运动(例如,由相应的运动规划116或所得到的扫掠体积表示的运动)的同时,在环境中执行任务。当产生运动规划116时,运动规划器110可以可选地考虑先验静态物体118和/或感知数据120的表示。可选地,运动规划器110可以考虑其他机器人102在给定时间的运动状态,例如另一机器人102是否已经完成给定的运动或任务,并且允许基于正在完成的其他机器人之一的运动或任务来重新计算运动规划,从而使得先前排除的路径或轨迹可供选择。可选地,运动规划器110可以考虑机器人102的操作状况,例如故障状况的发生或检测、阻挡状态的发生或检测、和/或请求加速或延迟或跳过运动规划请求的发生或检测。Motion planner 110 is operable to dynamically generate motion plan 116, enabling robot 102 to perform a task in the environment while taking into account the planned motions of other robots 102 (e.g., motion represented by the corresponding motion plan 116 or the resulting sweep volume). When generating motion plan 116, motion planner 110 may optionally consider representations of prior static objects 118 and/or perception data 120. Optionally, motion planner 110 may consider the motion state of other robots 102 at a given time, such as whether another robot 102 has already completed a given motion or task, and allow recalculation of the motion plan based on the motion or task being completed by one of the other robots, thereby making previously excluded paths or trajectories available. Optionally, motion planner 110 may consider the operational conditions of robot 102, such as the occurrence or detection of a fault condition, the occurrence or detection of an obstruction condition, and/or the occurrence or detection of a request to accelerate, delay, or skip motion plan.

图2示出了根据一个所示实施方式的环境,在该环境中第一机器人控制系统200a包括第一运动规划器204a,该第一运动规划器生成第一运动规划206a以控制第一机器人202的操作,并且通过至少一个通信信道(由接近的箭头指示,例如,发射器、接收器、收发器、无线电、路由器、以太网)向其他机器人控制系统200b的其他运动规划器204b提供第一运动规划206a和/或作为障碍的运动表示,以控制其他机器人(图2中未示出)。Figure 2 illustrates an environment according to one of the illustrated embodiments, in which a first robot control system 200a includes a first motion planner 204a that generates a first motion plan 206a to control the operation of a first robot 202, and provides the first motion plan 206a and/or motion representations as obstacles to other motion planners 204b of other robot control systems 200b via at least one communication channel (indicated by the approaching arrows, e.g., transmitter, receiver, transceiver, radio, router, Ethernet) to control other robots (not shown in Figure 2).

同样,其他机器人控制系统200b的其他运动规划器204b生成其他运动规划206b来控制其他机器人(图2中未示出)的操作,并将其他运动规划206b提供给第一运动规划器204a和其他机器人控制系统200b的其他运动规划器204b中的其他运动规划器。运动规划器204a、204b也可以接收指示各种机器人202的运动何时已经完成的运动完成消息209。这可以允许运动规划器204a、204b基于环境的当前或更新状态生成新的或更新的运动规划。例如,在第一机器人202已经完成作为由第一机器人执行的任务的一部分或全部运动之后,共享工作空间的一部分可以变得可用于第二机器人执行任务。Similarly, other motion planners 204b of other robot control systems 200b generate other motion plans 206b to control the operation of other robots (not shown in Figure 2) and provide these other motion plans 206b to other motion planners in the first motion planner 204a and other motion planners 204b of the robot control system 200b. Motion planners 204a and 204b can also receive motion completion messages 209 indicating when the movements of various robots 202 have been completed. This allows motion planners 204a and 204b to generate new or updated motion plans based on the current or updated state of the environment. For example, after the first robot 202 has completed part or all of its movements as part of a task performed by the first robot, a portion of the shared workspace can become available for the second robot to perform a task.

机器人控制系统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可以以多种形式中的任何一种来表示,例如表示为体素、欧几里德距离场、几何物体的分层结构。这有利地允许一些计算最密集的工作在运行前被执行,此时响应性不是特别重要。Robot control systems 200a and 200b may be communicatively connected, for example, via at least one communication channel (indicated by a proximate arrow, e.g., transmitter, receiver, transceiver, radio, router, Ethernet) to receive motion planning diagram 208 and/or sweep volume representation 211 from one or more sources 212. According to one illustrated embodiment, the source 212 of motion planning diagram 208 and/or sweep volume representation 211 may be separate and distinct from motion planners 204a and 204b. The source 212 of motion planning diagram 208 and/or sweep volume representation 211 may, for example, be one or more processor-based computing systems (e.g., server computers) that can be operated or controlled by the respective manufacturer of robot 202 or by some other entity. Motion planning graph 208 may each include a set of nodes 214 (only two are shown in Figure 2) and a set of edges 216 (only two are shown in Figure 2). Nodes 214 represent the state, configuration, or pose of the corresponding robot, and edges 216 connect the nodes 214 of the corresponding node pair 214 and represent a legal or valid transition between states, configurations, or poses. A state, configuration, or pose may, for example, represent a set of joint positions, orientations, poses, or coordinates of each joint of each robot 202. Therefore, each node 214 may represent the pose of the robot 202 or a portion thereof, defined entirely by the pose of the joints comprising the robot 202. Motion planning graph 208 may be determined, set, or limited before operation (i.e., limited before task execution), for example, before operation or during configuration time. Sweep volume 211 represents the corresponding volume that the robot 202 or a portion thereof will occupy when performing a movement or transition corresponding to the corresponding edge of motion planning graph 208. The swept volume 211 can be represented in any of a variety of forms, such as voxels, Euclidean distance fields, or hierarchical structures of geometry. This advantageously allows some of the most computationally intensive work to be performed before runtime, when responsiveness is not particularly important.

每个机器人202都可以包括一组连杆、关节、臂端工具或末端执行器和/或可操作以使连杆围绕关节移动的致动器218a、218b、218c(三个共同示出为218)。每个机器人202都可以包括接收控制信号(例如以运动规划206a的形式)并提供驱动信号来驱动致动器218的一个或更多个运动控制器(例如,马达控制器)220(仅示出一个)。Each robot 202 may include a set of links, joints, end-effectors or end effectors and/or actuators 218a, 218b, 218c (three collectively shown as 218) operable to move the links about the joints. Each robot 202 may also include one or more motion controllers (e.g., motor controllers) 220 (only one shown) that receive control signals (e.g., in the form of motion planning 206a) and provide drive signals to drive the actuators 218.

每个机器人202可以有各自的机器人控制系统200a、200b,或者一个机器人控制系统200a可以为两个或更多个机器人202执行运动规划。出于说明的目的,将详细描述一个机器人控制系统200a。本领域的技术人员将认识到,该描述能够应用于其他机器人控制系统200b的类似或甚至相同的另外实例。Each robot 202 may have its own robot control system 200a, 200b, or a robot control system 200a may perform motion planning for two or more robots 202. For illustrative purposes, a robot control system 200a will be described in detail. Those skilled in the art will recognize that this description can be applied to similar or even identical other instances of other robot control systems 200b.

机器人控制系统200a可以包括一个或更多个处理器222,以及一个或更多个相关联的非易失性计算机或处理器可读存储介质,例如系统存储器224a、磁盘驱动器224b和/或处理器222的存储器或寄存器(未示出)。非易失性计算机或处理器可读存储介质224a、224b经由一个或更多个通信信道(例如系统总线226)通信地联接到处理器222a。系统总线226能够采用任何已知的总线结构或体系结构,包括具有存储器控制器的存储器总线、外围总线和/或本地总线。一个或更多个这样的部件也可以或替代地经由一个或更多个其他通信信道彼此通信,一个或更多个其他通信信道例如一个或更多个并行电缆、串行电缆或能够高速通信的无线网络信道,例如通用串行总线(“USB”)3.0、高速外围组件互连(PCIe)或经由The robot control system 200a may include one or more processors 222, and one or more associated non-volatile computer- or processor-readable storage media, such as system memory 224a, disk drive 224b, and/or memory or registers of processor 222 (not shown). The non-volatile computer- or processor-readable storage media 224a, 224b are communicatively coupled to processor 222a via one or more communication channels (e.g., system bus 226). System bus 226 can employ any known bus structure or architecture, including memory bus with memory controller, peripheral bus, and/or local bus. One or more such components may also, or alternatively, communicate with each other via one or more other communication channels, such as one or more parallel cables, serial cables, or wireless network channels capable of high-speed communication, such as Universal Serial Bus (“USB”) 3.0, High-Speed Peripheral Component Interconnect (PCIe), or via...

机器人控制系统200a还可以可通信地联接到一个或更多个远程计算机系统,例如服务器计算机(例如运动规划图212的源)、台式计算机、膝上型计算机、超便携式计算机、平板计算机、智能手机、可穿戴计算机和/或传感器(图2中未示出),它们例如经由网络接口227直接可通信地联接或间接可通信地联接到机器人控制系统200的各部件。远程计算系统(例如,服务器计算机(例如,运动规划图的源212))可用于对机器人控制系统200a和机器人控制系统200内的各部件编程、配置、控制或以其他方式与之交互或向它们输入数据(例如,运动规划图208、扫掠体积211、任务规范215)。这种连接可以通过一个或更多个通信信道,例如一个或更多个广域网(WAN),例如以太网或使用互联网协议的互联网。如上所述,运行前计算(例如,运动规划图族的生成)可以由独立于机器人控制系统200a或机器人202的系统执行,而运行时计算可以由机器人控制系统200的处理器222执行,在一些实施方式中,处理器222可以在机器人202上。The robot control system 200a can also be communicatively connected to one or more remote computer systems, such as server computers (e.g., the source of motion planning graph 212), desktop computers, laptop computers, ultra-portable computers, tablet computers, smartphones, wearable computers, and/or sensors (not shown in Figure 2), which are directly or indirectly communicatively connected to the components of the robot control system 200, for example, via network interface 227. The remote computing system (e.g., the server computer (e.g., the source of motion planning graph 212)) can be used to program, configure, control, or otherwise interact with or input data (e.g., motion planning graph 208, sweep volume 211, task specification 215) to or to the robot control system 200a and the components within the robot control system 200. Such connectivity can be achieved through one or more communication channels, such as one or more wide area networks (WANs), such as Ethernet or the Internet using Internet Protocol. As described above, pre-run calculations (e.g., generation of motion planning graph families) can be performed by a system independent of the robot control system 200a or the robot 202, while runtime calculations can be performed by the processor 222 of the robot control system 200, which in some embodiments may be on the robot 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内的元件之间传递信息的基本例程。As described above, the robot control system 200a may include one or more processors 222 (i.e., circuitry), non-volatile storage media 224a, 224b, and a system bus 216 connecting the various system components. The processors 222 may be any logic processing unit, such as one or more central processing units (CPUs), digital signal processors (DSPs), graphics processing units (GPUs), field-programmable gate arrays (FPGAs), application-specific integrated circuits (ASICs), programmable logic controllers (PLCs), etc. The system memory 224a may include read-only memory (“ROM”) 226, random access memory (“RAM”) 228, FLASH memory 230, and EEPROM (not shown). A basic input/output system (“BIOS”) 232, which can form part of the ROM 226, contains basic routines that facilitate the transfer of information between components within the robot control system 200, for example, during startup.

驱动器224b可以是例如用于读写磁盘的硬盘驱动器、用于读写固态存储器的固态(例如闪存)驱动器和/或用于读写可移动光盘的光盘驱动器。在各种不同的实施例中,机器人控制系统200a还可以包括这些驱动器的任意组合。驱动器224b可以通过系统总线226与处理器222通信。如相关领域的技术人员所知,驱动器224b可以包括联接在这些驱动器与系统总线226之间的接口或控制器(未示出)。驱动器224b及其相关联的计算机可读介质为机器人控制系统200提供计算机或处理器可读和/或可执行指令、数据结构、程序模块和其他数据的非易失性存储。相关领域的技术人员将会理解,可以采用能够存储计算机可访问数据的其他类型的计算机可读介质,例如WORM驱动器、RAID驱动器、盒式磁带、数字视频盘(“DVD”)、伯努利盒式磁带、RAM、ROM、智能卡等。Drive 224b may be, for example, a hard disk drive for reading and writing disks, a solid-state (e.g., flash memory) drive for reading and writing solid-state memory, and/or an optical disc drive for reading and writing removable optical discs. In various embodiments, robot control system 200a may also include any combination of these drives. Drive 224b may communicate with processor 222 via system bus 226. As those skilled in the art will know, drive 224b may include an interface or controller (not shown) coupled between these drives and system bus 226. Drive 224b and its associated computer-readable medium provide non-volatile storage for computer- or processor-readable and/or executable instructions, data structures, program modules, and other data for robot control system 200. Those skilled in the art will understand that other types of computer-readable media capable of storing computer-accessible data may be employed, such as WORM drives, RAID drives, cassette tapes, digital video discs (“DVDs”), Bernoulli cassette tapes, RAM, ROM, smart cards, etc.

可执行指令和数据能够存储在系统存储器224a中,例如操作系统236、一个或更多个应用程序238、其他程序或模块240和程序数据242。应用程序238可以包括使处理器212执行以下各项中的一项或更多项的处理器可执行指令:生成机器人202将在其中操作的环境(包括环境中的障碍和/或目标物体或工件)的离散化表示,在该环境中,其他机器人的计划运动可以表示为障碍;生成运动规划或路线图,包括要求或以其他方式获得碰撞评估的结果,设置运动规划图中的边的成本值,以及评估运动规划图中的可用路径;和/或可选地存储所确定的多个运动规划或路线图。运动规划构建(例如,碰撞检测或评估、基于碰撞检测或评估来更新运动规划图中的边的成本、以及路径搜索或评估)能够如本文所述(例如,参照图4和图5A和图5B)以及通过引用并入本文中的参考文献中执行。碰撞检测或评估可以使用本文别处描述的各种结构和技术来执行。应用程序238还可以包括一个或更多个机器可读和机器可执行指令,这些指令使得处理器222执行其他操作,例如可选地处理(通过传感器捕获的)感知数据。应用程序238还可以包括一个或更多个机器可执行指令,这些指令使得处理器212执行在本文描述的以及通过引用并入本文中的参考文献中描述的各种其他方法。Executable instructions and data can be stored in system memory 224a, such as operating system 236, one or more application programs 238, other programs or modules 240, and program data 242. Application program 238 may include processor-executable instructions that cause processor 212 to perform one or more of the following: generating a discretized representation of the environment in which robot 202 will operate (including obstacles and/or target objects or workpieces in the environment), where planned movements of other robots can be represented as obstacles; generating motion plans or route maps, including requesting or otherwise obtaining the results of collision assessments, setting cost values for edges in the motion planning graph, and evaluating available paths in the motion planning graph; and/or optionally storing multiple determined motion plans or route maps. Motion planning construction (e.g., collision detection or assessment, updating the costs of edges in the motion planning graph based on collision detection or assessment, and path search or assessment) can be performed as described herein (e.g., referring to Figures 4 and 5A and 5B) and by reference incorporated herein. Collision detection or assessment can be performed using various structures and techniques described elsewhere herein. Application 238 may also include one or more machine-readable and machine-executable instructions that cause processor 222 to perform other operations, such as optionally processing sensed data (captured by sensors). Application 238 may also include one or more machine-executable instructions that cause processor 212 to perform various other methods described herein and in references incorporated herein by reference.

在各种实施例中,上述一个或更多个操作可以由经由网络接口227通过通信网络(例如,网络210)链接的一个或更多个远程处理设备或计算机执行。In various embodiments, one or more of the above operations may be performed by one or more remote processing devices or computers linked via a communication network (e.g., network 210) through network interface 227.

虽然在图2中示出为存储在系统存储器224a中,但是操作系统236、应用程序238、其他程序/模块240和程序数据242能够存储在其他非易失性计算机或处理器可读介质上,例如驱动器224b。Although shown in Figure 2 as stored in system memory 224a, the operating system 236, application program 238, other programs/modules 240, and program data 242 can be stored on other non-volatile computer or processor-readable media, such as drive 224b.

机器人控制系统200a的运动规划器204a可以包括专用的运动规划器硬件,或者可以全部或部分地通过处理器222和存储在系统存储器224a和/或驱动器224b中的处理器可执行指令来实现。The motion planner 204a of the robot control system 200a may include dedicated motion planner hardware, or may be implemented wholly or partially by the processor 222 and processor-executable instructions stored in the system memory 224a and/or the driver 224b.

运动规划器204a可以包括或实现运动转换器250、碰撞检测器252、成本设置器254和路径分析器256。The motion planner 204a may include or implement a motion converter 250, a collision detector 252, a cost setter 254, and a path analyzer 256.

运动转换器250将其他机器人的运动转换成障碍的表示。运动转换器250从其他运动规划器200b接收运动规划204b或运动的其他表示。然后,运动转换器250确定对应于运动的面积或体积。例如,运动转换器能够将运动转换成相应的扫掠体积,即由相应机器人或其部分在运动规划所表示的姿势之间移动或转换时扫掠的体积。有利地,运动规划器250可以简单地对障碍(例如,扫掠体积)进行排队,并且可以不需要确定、跟踪或指示相应运动或扫掠体积的时间。虽然被描述为给定机器人202的运动转换器250将其他机器人202b的运动转换成障碍,但是在一些实施方式中,其他机器人202b可以向给定机器人202提供特定运动的障碍表示(例如,扫掠体积)。Motion converter 250 converts the motion of other robots into a representation of obstacles. Motion converter 250 receives motion plans 204b or other representations of motion from other motion planners 200b. Motion converter 250 then determines the area or volume corresponding to the motion. For example, the motion converter can convert the motion into a corresponding sweep volume, i.e., the volume swept by the respective robot or a part thereof as it moves or transitions between postures represented by the motion plan. Advantageously, motion planner 250 can simply queue obstacles (e.g., sweep volumes) and may not need to determine, track, or indicate the timing of corresponding motions or sweep volumes. While described as a motion converter 250 of a given robot 202 converting the motion of other robots 202b into obstacles, in some embodiments, other robots 202b may provide the given robot 202 with an obstacle representation (e.g., a sweep volume) for a specific motion.

碰撞检测器252执行碰撞检测或分析,确定给定机器人202或其部分的转换或运动是否会导致与障碍的碰撞。如上所述,其他机器人的运动可以有利地表示为障碍。因此,碰撞检测器252能够确定一个机器人的运动是否将导致与在共享工作空间中移动的另一机器人的碰撞。Collision detector 252 performs collision detection or analysis to determine whether a transformation or movement of a given robot 202 or a part thereof will result in a collision with an obstacle. As mentioned above, the movement of other robots can advantageously be represented as an obstacle. Therefore, collision detector 252 is able to determine whether the movement of one robot will result in a collision with another robot moving in a shared workspace.

在一些实施方式中,碰撞检测器252实现基于软件的碰撞检测或评估,例如执行边界盒-边界盒碰撞评估或基于机器人202、202b或其部分在移动期间扫过的体积的几何(例如,球体)表示的分层结构进行评估。在一些实施方式中,碰撞检测器252例如采用一组专用硬件逻辑电路来表示障碍和通过专用硬件逻辑电路的运动的流表示来实现基于硬件的碰撞检测或评估。在基于硬件的碰撞检测或评估中,碰撞检测器可以采用一个或更多个可配置的电路阵列(例如一个或更多个FPGA 258),并且可以可选地产生布尔碰撞评估。In some implementations, collision detector 252 performs software-based collision detection or evaluation, such as performing bounding box-to-bounding box collision evaluation or evaluation based on a hierarchical structure of the geometry (e.g., a sphere) of the volume swept by the robot 202, 202b, or a portion thereof during movement. In some implementations, collision detector 252 implements hardware-based collision detection or evaluation, for example, by employing a set of dedicated hardware logic circuits to represent obstacles and a flow representation of motion through the dedicated hardware logic circuits. In hardware-based collision detection or evaluation, the collision detector may employ one or more configurable arrays of circuits (e.g., one or more FPGAs 258) and may optionally generate Boolean collision evaluations.

成本设置器254能够至少部分基于碰撞检测或评估来设置或调整运动规划图中的边成本。例如,成本设置器254能够为表示导致或可能导致碰撞的状态之间的转换或姿势之间的运动的边设置较高的成本值。同样例如,成本设置器254能够为表示不会导致或可能不会导致碰撞的状态之间的转换或姿势之间的运动的边设置较低的成本值。设置成本能够包括通过一些数据结构(例如,字段、指针、表)设置与相应边逻辑关联的成本值。Cost setter 254 can set or adjust edge costs in the motion planning graph based at least in part on collision detection or evaluation. For example, cost setter 254 can set higher cost values for edges representing transitions between states or movements between poses that cause or may cause a collision. Similarly, cost setter 254 can set lower cost values for edges representing transitions between states or movements between poses that do not cause or may not cause a collision. Setting costs can include setting cost values logically associated with the corresponding edges through some data structure (e.g., fields, pointers, tables).

路径分析器256可以使用具有成本值的运动规划图来确定路径(例如,最优或优化的)。例如,路径分析器256可以构成用于确定两个状态、配置或姿势(由运动规划图中的相应节点来表示)之间的最低或较低成本路径的最小成本路径优化器。考虑到与代表碰撞可能性的每个边相关联的成本值,路径分析器256可以使用或执行任何种类的路径寻找算法,例如最低成本路径寻找算法。Path analyzer 256 can use a motion planning graph with cost values to determine paths (e.g., optimal or optimized). For example, path analyzer 256 can be configured as a minimum-cost path optimizer to determine the lowest or lower-cost path between two states, configurations, or poses (represented by corresponding nodes in the motion planning graph). Considering the cost value associated with each edge representing the probability of collision, path analyzer 256 can use or execute any kind of path-finding algorithm, such as a minimum-cost path-finding algorithm.

可以使用用于确定最小成本路径的各种算法和结构,包括实现贝尔曼-福特算法的算法和结构,但是也可以使用其他算法和结构,包括但不限于任何这样的过程,其中最小成本路径被确定为运动规划图208中两个节点之间的路径,使得其组成边的成本或权重之和最小化。该过程通过使用将其他机器人的运动表示为障碍的运动规划图和碰撞检测来改进机器人102、202的运动规划技术,以提高效率和响应时间,从而找到“最佳”路径来无碰撞地执行任务。Various algorithms and structures can be used to determine the minimum-cost path, including those implementing the Bellman-Ford algorithm. However, other algorithms and structures can also be used, including but not limited to any process where the minimum-cost path is determined as the path between two nodes in motion planning graph 208 that minimizes the sum of the costs or weights of its constituent edges. This process improves the motion planning techniques of robots 102 and 202 by using motion planning graphs that represent the motion of other robots as obstacles and collision detection, thereby increasing efficiency and response time, and finding the “optimal” path to perform the task without collisions.

运动规划器204a可以可选地包括削减器260。削减器260可以接收表示其他机器人完成运动的信息,该信息在本文被命名为运动完成消息209。或者,可以设置标志来指示完成。作为响应,削减器260可以移除表示现在完成的运动的障碍或障碍的一部分。这可以允许为给定的机器人生成新的运动规划,这可能更有效或者允许给定机器人专注于执行先前由于另一机器人的运动而被阻止的任务。这种方法有利地允许运动转换器250在生成运动的障碍表示时忽略运动的时机,同时仍然实现比使用其他技术好的吞吐量。运动规划器204a还可以发送信号、提示或触发,使得在给定障碍更改的情况下,碰撞检测器252执行新的碰撞检测或评估以产生更新的运动规划图(在更新的运动规划图中,与边相关联的边权重或成本已经被更改),并且使得成本设置器254和路径分析器256更新成本值并相应地确定新的或修改的运动规划。The motion planner 204a may optionally include a cutter 260. The cutter 260 may receive information indicating that another robot has completed a motion, referred to herein as a motion completion message 209. Alternatively, a flag may be set to indicate completion. In response, the cutter 260 may remove an obstacle or part of an obstacle indicating that the motion is now completed. This may allow the generation of new motion plans for a given robot, which may be more efficient or allow the given robot to focus on performing a task previously prevented by the motion of another robot. This approach advantageously allows the motion converter 250 to ignore the timing of motion when generating obstacle representations of motion, while still achieving better throughput than using other techniques. The motion planner 204a may also send signals, cues, or triggers such that, in the event of a change in a given obstacle, the collision detector 252 performs a new collision detection or evaluation to generate an updated motion plan graph (in which the edge weights or costs associated with the edges have been changed), and causes the cost setter 254 and the path analyzer 256 to update cost values and determine new or modified motion plans accordingly.

运动规划器204a可以可选地包括将来自可选传感器262(例如,数码摄像机)的输出(例如,环境的数字化表示)转换成障碍的表示环境转换器263。因此,运动规划器204a能够执行考虑到环境中的暂时物体(例如人、动物等)的运动规划。The motion planner 204a may optionally include an environment representation converter 263 that converts the output (e.g., a digital representation of the environment) from an optional sensor 262 (e.g., a digital camera) into obstacles. Therefore, the motion planner 204a is capable of performing motion planning that takes into account temporary objects in the environment (e.g., people, animals, etc.).

处理器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。Processor 212 and/or motion planner 204a may be or may include any logic processing unit, such as one or more central processing units (CPUs), digital signal processors (DSPs), graphics processing units (GPUs), application-specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), programmable logic controllers (PLCs), etc. Non-limiting examples of commercial computer systems include, but are not limited to, Celeron, Core, Core 2, Itanium, and Xeon series microprocessors from U.S. companies; K8, K10, Bulldozer, and Bobcat series microprocessors from AMD; A5, A6, and A7 series microprocessors from Apple Computer; Snapdragon series microprocessors from Qualcomm; and SPARC series microprocessors from Oracle. The construction and operation of the various structures shown in Figure 2 can be realized or employ structures, techniques and algorithms similar to those described in or adopted in International Patent Application No. PCT/US2017/036880, filed on June 9, 2017, entitled “MOTION PLANNING FOR AUTONOMOUSVEHICLES AND RECONFIGURABLE MOTION PLANNING PROCESSORS”; or in the application filed on January 5, 2016, entitled “SPECIALIZED ROBOT MOTION PLANNING HARDWARE”. International Patent Application Publication No. WO 2016/122840 entitled “AND METHODS OF MAKING AND USINGSAME”; and/or U.S. Patent Application No. 62/616,783 entitled “APPARATUS, METHOD AND ARTICLE TO FACILITATE MOTION PLANNING OF AN AUTONOMOUS VEHICLE IN AN ENVIRONMENT HAVING DYNAMIC OBJECTS”, filed on January 12, 2018.

尽管不是必需的,但是将在计算机可执行指令的一般上下文中描述许多实施方式,例如存储在计算机或处理器可读介质上并由一个或更多个计算机或处理器执行的程序应用模块、对象或宏,所述计算机或处理器可以执行障碍表示、碰撞评估和其他运动规划操作。Although not required, many implementations will be described in the general context of computer-executable instructions, such as program application modules, objects, or macros stored on a computer or processor-readable medium and executed by one or more computers or processors that can perform obstacle representation, collision assessment, and other motion planning operations.

运动规划操作可以包括但不限于生成或者将以下中的一个、更多个或全部转换为数字形式:基于几何模型112(图1)、任务114(图1)的机器人几何形状的表示;以及机器人在各状态下或姿势中和/或在状态或姿势之间移动期间占据的体积(例如,扫掠体积)的表示,其中所述数字形式例如是点云、欧几里德距离场、数据结构格式(例如,分层格式、非分层格式)和/或曲线(例如,多项式或样条表示)。运动规划操作可以可选地包括但不限于生成或者将以下中的一个、更多个或全部转换为数字形式:静态或持久障碍118(图1)的表示和/或静态或瞬时障碍120(图1)的感知数据表示,其中所述数字形式例如是点云、欧几里德距离场、数据结构格式(例如分层格式、非分层格式)和/或曲线(例如多项式或样条表示)。Motion planning operations may include, but are not limited to, generating or converting one, more, or all of the following into digital form: a representation of the robot geometry based on geometric model 112 (FIG. 1) and task 114 (FIG. 1); and a representation of the volume (e.g., sweep volume) occupied by the robot in various states or poses and/or during movement between states or poses, wherein the digital form is, for example, a point cloud, an Euclidean distance field, a data structure format (e.g., a hierarchical format, a non-hierarchical format), and/or a curve (e.g., a polynomial or spline representation). Motion planning operations may optionally include, but are not limited to, generating or converting one, more, or all of the following into digital form: a representation of a static or persistent obstacle 118 (FIG. 1) and/or a perceived data representation of a static or transient obstacle 120 (FIG. 1), wherein the digital form is, for example, a point cloud, an Euclidean distance field, a data structure format (e.g., a hierarchical format, a non-hierarchical format), and/or a curve (e.g., a polynomial or spline representation).

运动规划操作可以包括但不限于使用各种碰撞评估技术或算法(例如,基于软件的、基于硬件的)来确定或检测或预测机器人的各状态或姿势的碰撞或机器人在状态或姿势之间的运动。Motion planning operations may include, but are not limited to, using various collision assessment techniques or algorithms (e.g., software-based, hardware-based) to determine or detect or predict collisions in each state or pose of the robot or the robot’s motion between states or poses.

在一些实施方式中,运动规划操作可以包括但不限于确定一个或更多个运动规划图、运动规划或路线图;存储所确定的规划图、运动规划或路线图,和/或提供规划图、运动规划或路线图来控制机器人的操作。In some implementations, motion planning operations may include, but are not limited to, determining one or more motion plans, motion plans, or route maps; storing the determined plans, motion plans, or route maps; and/or providing plans, motion plans, or route maps to control the operation of the robot.

在一个实施方式中,响应于函数调用或类似过程来执行碰撞检测或评估,并向其返回布尔值。碰撞检测器252可以通过一个或更多个现场可编程门阵列(FPGA)和/或一个或更多个专用集成电路(ASIC)实现,以执行碰撞检测,同时实现低延迟、较低的功耗,并增加能够处理的信息量。In one implementation, collision detection or evaluation is performed in response to a function call or similar process, and a Boolean value is returned to it. The collision detector 252 can be implemented by one or more field-programmable gate arrays (FPGAs) and/or one or more application-specific integrated circuits (ASICs) to perform collision detection while achieving low latency, low power consumption, and increased information processing capacity.

在各种实施方式中,这样的操作可以完全在硬件电路中执行,或者作为存储在诸如系统存储器224a之类的存储器中的软件,且由一个或更多个硬件处理器222a来执行,例如一个或更多个微处理器、数字信号处理器(DSP)、现场可编程门阵列(FPGA)、专用集成电路(ASIC)、图形处理单元(GPU)处理器、编程逻辑控制器(PLC)、电可编程只读存储器(EEPROM),或者作为存储在存储器中的硬件电路和软件的组合来执行。In various implementations, such operation may be performed entirely in hardware circuitry, or as software stored in a memory such as system memory 224a and executed by one or more hardware processors 222a, such as one or more microprocessors, digital signal processors (DSPs), field-programmable gate arrays (FPGAs), application-specific integrated circuits (ASICs), graphics processing unit (GPU) processors, programmable logic controllers (PLCs), electrically programmable read-only memory (EEPROMs), or as a combination of hardware circuitry and software stored in memory.

在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、微型计算机、大型计算机等的那些。实施方式或实施例或其部分(例如,在配置时和运行时)能够在分布式计算环境中实践,其中,任务或模块由通过通信网络链接的远程处理设备执行。在分布式计算环境中,程序模块可以位于本地和远程存储器存储设备或介质中。然而,特定类型的信息存储在哪里以及如何存储对于帮助改进运动规划很重要。International patent application No. PCT/US2017/036880, filed on June 9, 2017, entitled "MOTION PLANNING FOR AUTONOMOUS VEHICLES AND RECONFIGURABLE MOTION PLANNING PROCESSORS"; International patent application publication No. WO2016/122840, filed on January 5, 2016, entitled "SPECIALIZED ROBOT MOTION PLANNING HARDWARE AND METHODS OF MAKING AND USING SAME"; and International patent application No. APPARATUS, METHOD AND ARTICLOS, filed on January 12, 2018, entitled "APPARATUS, METHOD AND ARTICLOS". U.S. Patent Application No. 62/616,783, entitled “To Facilitate Motion Planning of an Autonomous Vehicle in an Environment Haring Dynamic Objects,” and U.S. Patent Application No. 62/856,548, filed June 3, 2019, entitled “Apparatus, Methods and Articles to Facilitate Motion Planning in Environment Haring Dynamic Objects,” also describe aspects of perception, mapping, collision detection, and pathfinding that can be employed in whole or in part. Those skilled in the art will understand that the illustrated and other embodiments can be practiced with other system architectures and arrangements and/or other computing system architectures and arrangements, including those of robots, handheld devices, multiprocessor systems, microprocessor-based or programmable consumer electronics, personal computers (“PCs”), networked PCs, microcomputers, mainframes, and the like. Implementation methods or embodiments, or parts thereof (e.g., at configuration time and runtime), can be practiced in a distributed computing environment where tasks or modules are executed by remote processing devices linked via a communication network. In a distributed computing environment, program modules can reside in both local and remote memory storage devices or media. However, where and how specific types of information are stored is important for helping to improve motion planning.

例如,各种运动规划解决方案将路线图(即,运动规划图)“烧”到处理器(例如,FPGA)中,并且路线图中的每个边对应于处理器的不可重新配置的布尔电路。将规划图“烧”到处理器中的设计带来了问题,即处理器电路对于存储多个或大型规划图是有限的,并且通常不能重新配置以用于不同的机器人。For example, various motion planning solutions "burn" the roadmap (i.e., motion planning graph) into a processor (e.g., an FPGA), and each edge of the roadmap corresponds to a non-reconfigurable Boolean circuit in the processor. The design of "burning" the planning graph into the processor presents a problem: processor circuitry is limited in its ability to store multiple or large planning graphs and is generally not reconfigurable for use with different robots.

一种解决方案提供了将规划图信息放入存储器中的可重新配置的设计。这种方法将信息存储在存储器中而不是“烧”到电路中。另一种方法采用模板化的可重新配置电路来代替存储器。One solution provides a reconfigurable design that stores the planning map information in memory. This approach stores the information in memory instead of "burning" it into the circuitry. Another approach uses templated, reconfigurable circuitry instead of memory.

如上所述,在运行前的配置时间期间,一些信息(例如,机器人几何模型)可以被捕获、接收、输入或提供。可以在配置时间期间处理接收到的信息,以产生经处理的信息(例如,运动规划图),从而在运行期间使操作加速或降低计算复杂度。As described above, during the pre-run configuration time, some information (e.g., robot geometry) can be captured, received, input, or provided. The received information can be processed during configuration time to produce processed information (e.g., motion planning graphs), thereby accelerating operations or reducing computational complexity during runtime.

在运行时,可以对整个环境执行碰撞检测,包括对于任何姿势或姿势之间的运动,确定机器人的任何部分是否将碰撞或预计将碰撞机器人自身的另一部分、其他机器人或其部分、环境中的持久或静态障碍、或环境中的具有未知轨迹的瞬时障碍(例如,人)。During runtime, collision detection can be performed on the entire environment, including determining whether any part of the robot will collide with or is expected to collide with another part of the robot itself, other robots or parts thereof, persistent or static obstacles in the environment, or transient obstacles in the environment with unknown trajectories (e.g., people) for any pose or movement between poses.

图3示出了机器人102(图1)、202(图2)的示例运动规划图300,其中,机器人102、202的目标是在避免与静态障碍和动态障碍碰撞的同时执行任务,障碍可以包括在共享工作空间中操作的其他机器人。Figure 3 shows an example motion planning diagram 300 for robots 102 (Figure 1) and 202 (Figure 2), where the goal of robots 102 and 202 is to perform tasks while avoiding collisions with static and dynamic obstacles, which may include other robots operating in a shared workspace.

规划图300分别包括由边310a-310i(在图中表示为节点对之间的直线)连接的多个节点308a-308i(在图中表示为开圆)。每个节点隐含地或明确地表示表征机器人102、202在机器人102、202的配置空间中的状态的时间和变量。配置空间通常被称为C空间,并且是规划图300中表示的机器人102、202的状态或配置或姿势的空间。例如,每个节点可以表示机器人102、202的状态、配置或姿势,其可以包括但不限于位置、方向或姿势(即,位置和方向)。状态、配置或姿势可以例如由机器人102、202的关节的一组关节位置和关节角度/旋转(例如,关节姿势、关节坐标)来表示。Planning diagram 300 includes multiple nodes 308a-308i (represented as open circles in the diagram) connected by edges 310a-310i (represented as straight lines between node pairs in the diagram). Each node implicitly or explicitly represents the time and variables characterizing the state of robots 102 and 202 in their configuration space. The configuration space is often referred to as C-space and is the space representing the state, configuration, or pose of robots 102 and 202 as shown in planning diagram 300. For example, each node may represent the state, configuration, or pose of robots 102 and 202, which may include, but is not limited to, position, orientation, or posture (i.e., position and orientation). The state, configuration, or pose may be represented, for example, by a set of joint positions and joint angles/rotations (e.g., joint pose, joint coordinates) of the joints of robots 102 and 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的一个或更多个状态、配置或姿势来确定执行任务的最佳路径就越准确和精确,这是因为最低成本路径可以从更多的路径中选择。The edges in planning graph 300 represent valid or permitted transitions between these states, configurations, or poses of robots 102 and 202. The edges of planning graph 300 do not represent actual motion in Cartesian coordinates, but rather transitions between states, configurations, or poses in C-space. Each edge of planning graph 300 represents a transition of robots 102 and 202 between corresponding node pairs. For example, edge 310a represents a transition between two nodes. Specifically, edge 310a represents a transition between the state of robots 102 and 202 in a specific configuration associated with node 308b and the state of robots 102 and 202 in a specific configuration associated with node 308c. For example, robots 102 and 202 may currently be in the specific configuration associated with node 308a. Although the nodes are shown as being at different distances from each other, this is for illustrative purposes only and is unrelated to any physical distance. There is no limit to the number of nodes or edges in the planning graph 300. However, the more nodes and edges used in the planning graph 300, the more accurately and precisely the motion planner can determine the best path to perform the task based on one or more states, configurations or poses of the robots 102, 202, because the lowest cost path can be selected from more paths.

每条边都被分配或关联一个成本值。成本值可以表示关于由相应边表示的运动的碰撞评估。Each edge is assigned or associated with a cost value. The cost value can represent a collision assessment with respect to the motion represented by the corresponding edge.

通常,希望机器人102、202避开某些障碍,例如共享工作空间中的其他机器人。在一些情况下,可能希望机器人102、202接触或接近共享工作空间中的某些物体,例如抓握或移动物体或工件。图3示出了规划图300,运动规划器使用该规划图来识别在机器人102、202的目标是在执行任务(例如,拾取和放置物体)时移动通过多个姿势的同时避免与一个或更多个障碍碰撞的情况下机器人102、202的路径。Typically, it is desirable for robots 102 and 202 to avoid certain obstacles, such as other robots in a shared workspace. In some cases, it may be desirable for robots 102 and 202 to contact or approach certain objects in the shared workspace, such as grasping or moving objects or workpieces. Figure 3 illustrates a planning diagram 300, which the motion planner uses to identify the path of robots 102 and 202 when their objective is to move through multiple poses while performing a task (e.g., picking up and placing objects) while avoiding collisions with one or more obstacles.

障碍可以被数字地表示为例如边界盒、有向边界盒、曲线(例如,样条曲线)、欧几里德距离场或几何实体的分层结构,无论哪种数字表示最适合障碍的类型和将要执行的碰撞检测的类型,其本身都可以取决于所采用的特定硬件电路。在一些实施方式中,主代理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中描述了碰撞评估的示例。Obstacles can be represented digitally as, for example, bounding boxes, directed bounding boxes, curves (e.g., splines), Euclidean distance fields, or hierarchical structures of geometric entities. Whichever numerical representation best suits the type of obstacle and the type of collision detection to be performed can itself depend on the specific hardware circuitry employed. In some implementations, the sweep volume in the route map of the master agent 102 is pre-calculated. Examples of collision assessments are described in International Patent Application No. PCT/US2017/036880, filed June 9, 2017, entitled “MOTION PLANNING FOR AUTONOMOUS VEHICLES AND RECONFIGURABLE MOTION PLANNING PROCESSORS”; U.S. Patent Application No. 62/722,067, filed August 23, 2018, entitled “COLLISION DETECTIONUSEFUL IN MOTION PLANNING FOR ROBOTICS”; and International Patent Application Publication No. WO 2016/122840, filed January 5, 2016, entitled “SPECIALIZED ROBOT MOTION PLANNING HARDWARE AND METHODS OF MAKING AND USING SAME”.

运动规划器或其部分(例如,图2的碰撞检测器252)确定或评估运动或转换(由边表示)将导致与障碍碰撞的可能性或概率。在一些情况下,该确定导致布尔值,而在其他情况下,该确定可以表示为概率。The motion planner or a part thereof (e.g., collision detector 252 in Figure 2) determines or evaluates the likelihood or probability that a motion or transition (represented by edges) will result in a collision with an obstacle. In some cases, this determination results in a Boolean value, while in others, it can be represented as a probability.

对于规划图300中的节点,其中,节点之间的直接转换可能导致与障碍碰撞,运动规划器(例如,图2的成本设置器254)将成本值或权重分配给在这些节点之间转换的规划图300的边(例如,边310a、310b、310c、310d、310e、310f、310g、310h),指示与障碍碰撞的概率。在图3所示的示例中,较高概率的区域表示为图形部分314,但是不对应于物理区域。For nodes in the planning graph 300, where direct transitions between nodes may result in collisions with obstacles, the motion planner (e.g., cost setter 254 of Figure 2) assigns cost values or weights to the edges of the planning graph 300 that transition between these nodes (e.g., edges 310a, 310b, 310c, 310d, 310e, 310f, 310g, 310h), indicating the probability of collision with obstacles. In the example shown in Figure 3, the area with a higher probability is represented as graphical portion 314, but does not correspond to a physical region.

例如,运动规划器可以为规划图300的多个边中的每个边分配一个等于或接近零的值的成本值或权重,其中,规划图300的每个边具有与比定义的碰撞阈值概率低的相应障碍碰撞概率。在本示例中,运动规划器已经为规划图300中表示机器人102、202的转换或运动的一些边分配了零的成本值或权重,这些边不具有任何与障碍碰撞的可能性或与障碍碰撞的可能性很小。对于规划图300的多个边中与环境中的障碍碰撞的相应概率高于所定义的碰撞阈值概率的每个边,运动规划器为成本值或权重分配显著大于零的值。在本示例中,运动规划器已经将大于零的成本值或权重分配给规划图300中与障碍碰撞概率较高的那些边。用于碰撞概率的特定阈值可以变化。例如,阈值可以是碰撞概率的40%、50%、60%或更低或更高。此外,为成本值或权重分配大于零的值可以包括分配量值大于零的权重,该量值对应于相应的碰撞概率。例如,如规划图300所示,运动规划器已经将成本值或权重5分配给具有较高碰撞概率的边310f和310i,但是已经将具有较低量值1的成本值或权重分配给被运动规划器确定为具有低得多碰撞概率的边310p和310g。在其他实施方式中,成本值或权重可以表示碰撞和无碰撞之间的二元选择,在将成本值或权重分配给边时只有两个成本值或权重可供选择。For example, the motion planner can assign a cost value or weight equal to or close to zero to each of the multiple edges of the planning graph 300, where each edge of the planning graph 300 has a probability of colliding with a corresponding obstacle that is lower than a defined collision threshold probability. In this example, the motion planner has assigned zero cost values or weights to some edges in the planning graph 300 that represent the transitions or movements of robots 102, 202, which have no probability of colliding with obstacles or a very low probability of colliding with obstacles. For each edge of the multiple edges of the planning graph 300 whose corresponding probability of colliding with obstacles in the environment is higher than a defined collision threshold probability, the motion planner assigns a cost value or weight that is significantly greater than zero. In this example, the motion planner has assigned cost values or weights greater than zero to those edges in the planning graph 300 with higher probabilities of colliding with obstacles. The specific threshold used for the collision probability can vary. For example, the threshold could be 40%, 50%, 60%, or lower or higher than the collision probability. Furthermore, assigning a value greater than zero to a cost value or weight can include assigning a weight with a magnitude greater than zero that corresponds to the corresponding collision probability. For example, as shown in planning diagram 300, the motion planner has assigned a cost value or weight of 5 to edges 310f and 310i, which have a higher collision probability, but has assigned a cost value or weight of 1 to edges 310p and 310g, which the motion planner determines have a much lower collision probability. In other embodiments, the cost value or weight may represent a binary choice between collision and no collision, with only two cost values or weights available when assigning cost values or weights to edges.

运动规划器可以基于碰撞概率之外的因素或参数来分配、设置或调整每个边的成本值或权重。Motion planners can assign, set, or adjust the cost value or weight of each edge based on factors or parameters other than collision probability.

在运动规划器至少部分地基于碰撞评估来设置表示机器人102、202与障碍的碰撞概率的成本值或权重之后,运动规划器(例如,图2的路径分析器256)执行优化以在为机器人102、202提供运动规划的所得规划图300中识别出与包括在共享工作空间中操作的其他机器人在内的障碍没有碰撞可能性或碰撞可能性较低的路径312。After the motion planner sets cost values or weights representing the probability of collision between robots 102, 202 and obstacles based at least in part on collision assessment, the motion planner (e.g., path analyzer 256 of Figure 2) performs optimization to identify paths 312 in the resulting planning map 300 that provide motion planning for robots 102, 202, with no or low probability of collision with obstacles, including other robots operating in the shared workspace.

在一个实施方式中,一旦规划图300的所有边成本已经被分配或设置,运动规划器(例如,图2的路径分析器256)就可以执行计算以确定到达或朝向由目标节点表示的目标状态的最小成本路径。例如,路径分析器256(图2)可以执行从规划图300中机器人102、202的当前状态到可能的状态、配置或姿势的最小成本路径算法。然后,运动规划器选择规划图300中成本最小(最接近零)的路径。如上所述,成本不仅可以反映碰撞的概率,还可以反映其他因素或参数。在本示例中,在规划图300中机器人102、202的当前状态、配置或姿势为在节点308a处,并且在规划图300中该路径被描绘为路径312(粗线路径,包括从节点308a延伸到节点308i的线段)。In one implementation, once all edge costs of the planning graph 300 have been assigned or set, a motion planner (e.g., path analyzer 256 of FIG. 2) can perform calculations to determine the minimum-cost path to or toward the target state represented by the target node. For example, path analyzer 256 (FIG. 2) can perform a minimum-cost path algorithm from the current state of robots 102, 202 in planning graph 300 to possible states, configurations, or poses. The motion planner then selects the path in planning graph 300 with the minimum cost (closest to zero). As mentioned above, cost can reflect not only the probability of collision but also other factors or parameters. In this example, the current state, configuration, or pose of robots 102, 202 in planning graph 300 is at node 308a, and this path is depicted in planning graph 300 as path 312 (a thick-line path, including the line segment extending from node 308a to node 308i).

尽管在规划图300中被示为具有许多急转弯的路径,但是这种转弯不代表路线中的相应物理转弯,而是机器人102、202的状态、配置或姿势之间的逻辑转变。例如,所识别的路径312中的每个边可以表示在环境中相对于机器人102、202的物理配置的状态变化,但不一定是机器人102、202的与图3所示的路径312的角度对应的方向变化。Although shown as a path with many sharp turns in planning diagram 300, these turns do not represent corresponding physical turns in the route, but rather logical transitions between the states, configurations, or postures of robots 102, 202. For example, each edge in the identified path 312 may represent a change in state relative to the physical configuration of robots 102, 202 in the environment, but not necessarily a change in direction of robots 102, 202 corresponding to the angle of path 312 shown in Figure 3.

图4示出了根据至少一个所示实施方式在基于处理器的系统中产生运动规划图和扫掠体积的操作方法400。方法400可以在运行前,例如在配置时间期间执行。方法400可以由基于处理器的系统(例如,服务器计算机)执行,该系统与一个或更多个机器人和/或一个或更多个机器人控制系统分离且不同并且可能与之远离。Figure 4 illustrates an operational method 400 for generating motion planning maps and sweep volumes in a processor-based system according to at least one of the illustrated embodiments. Method 400 may be performed prior to operation, for example, during configuration time. Method 400 may be executed by a processor-based system (e.g., a server computer) that is separate from and may be geographically distant from one or more robots and/or one or more robot control systems.

在402,基于处理器的系统接收一个或更多个机器人运动学模型。机器人运动学模型提供了各机器人的几何规格。In section 402, a processor-based system receives one or more robot kinematic models. These models provide the geometric specifications for each robot.

在404,基于处理器的系统基于相应的机器人运动学模型生成机器人的运动规划图。运动规划图将机器人的每个状态、配置或姿势表示为相应的节点,并将状态、配置或姿势对之间的有效转换表示为连接相应节点对的边。虽然以图形的形式描述,但是运动规划图不一定需要表示或存储为常规的图形,而是能够使用任何种类的数据结构(例如,记录和字段、表格、链表、指针、树)来例如逻辑地表示,或在存储电路或计算机处理器中表示。In 404, a processor-based system generates a motion planning graph for the robot based on a corresponding robot kinematic model. The motion planning graph represents each state, configuration, or pose of the robot as a corresponding node, and the valid transitions between pairs of states, configurations, or poses as edges connecting the corresponding pairs of nodes. Although described graphically, the motion planning graph does not necessarily need to be represented or stored as a conventional graph, but can be logically represented, or represented in storage circuitry or a computer processor, using any kind of data structure (e.g., records and fields, tables, linked lists, pointers, trees).

在406,基于处理器的系统为运动规划图的每个边生成扫掠体积。扫掠体积表示机器人或其部分在执行对应于相应边的运动或转换时所扫掠的体积。扫掠体积可以以多种形式中的任何一种来表示,例如体素、欧几里德距离场、球体分层结构或其他几何物体。In 406, processor-based systems generate sweep volumes for each edge of the motion planning graph. A sweep volume represents the volume swept by the robot or a part thereof when performing a motion or transition corresponding to the respective edge. Sweep volumes can be represented in any of a variety of forms, such as voxels, Euclidean distance fields, spherical hierarchies, or other geometric objects.

在408,基于处理器的系统向机器人控制系统和/或运动规划器提供运动规划图和/或扫掠体积。基于处理器的系统可以通过非专有通信信道(例如,以太网)提供运动规划图和/或扫掠体积。在一些实施方式中,来自不同机器人制造商的各机器人可以在共享工作空间中操作。在一些实施方式中,各机器人制造商可以操作专有的基于处理器的系统(例如,服务器计算机),该系统为机器人制造商生产的各机器人生成运动规划图和/或扫掠体积。每个机器人制造商能够提供各自的运动规划图和/或扫掠体积,供机器人控制器或运动规划器使用。At 408, a processor-based system provides motion maps and/or sweep volumes to the robot control system and/or motion planner. The processor-based system can provide motion maps and/or sweep volumes via a non-proprietary communication channel (e.g., Ethernet). In some embodiments, robots from different robot manufacturers can operate in a shared workspace. In some embodiments, each robot manufacturer can operate a proprietary processor-based system (e.g., a server computer) that generates motion maps and/or sweep volumes for each robot manufactured by that manufacturer. Each robot manufacturer is able to provide its own motion maps and/or sweep volumes for use by the robot controller or motion planner.

图5A和图5B示出了根据至少一个所示实施方式,在基于处理器的系统中产生运动规划并可选地控制在共享工作空间中操作的多个机器人的操作方法500。方法500可以在运行时,例如在配置时间之后执行。方法500可以由一个或更多个基于处理器的系统执行,该系统采用一个或更多个机器人控制系统的形式。机器人控制系统例如可以与相应机器人共同定位或“在其上”。Figures 5A and 5B illustrate an operational method 500 for generating motion plans and optionally controlling multiple robots operating in a shared workspace in a processor-based system, according to at least one of the illustrated embodiments. Method 500 can be executed at runtime, for example, after a configuration time. Method 500 can be executed by one or more processor-based systems that take the form of one or more robot control systems. The robot control system may, for example, be co-located with or "on" the respective robot.

例如响应于机器人和/或机器人控制系统的通电,响应于来自调用例程的调用或引用或者响应于任务的接收,方法500开始于502。For example, in response to power on the robot and/or robot control system, in response to a call or reference from a calling routine, or in response to the receipt of a task, method 500 begins at 502.

在504,基于处理器的系统可选地接收一个或更多个机器人的运动规划图。例如,基于处理器的系统可以从在配置时间期间生成运动规划图的另一基于处理器的系统接收所述运动规划图。运动规划图将机器人的每个状态、配置或姿势表示为相应的节点,并将状态、配置或姿势对之间的有效转换表示为连接相应节点的边。虽然以图表的形式进行描述,但是每个运动规划图表不一定需要表示或存储为常规的图表,而是能够使用任何种类的数据结构(例如,记录和字段、表格、链表、指针、树)来例如逻辑地表示,或在存储电路或计算机处理器中表示。At 504, the processor-based system may optionally receive one or more motion planning graphs for the robot. For example, the processor-based system may receive the motion planning graph from another processor-based system that generates the motion planning graph during configuration time. The motion planning graph represents each state, configuration, or pose of the robot as a corresponding node and represents valid transitions between pairs of states, configurations, or poses as edges connecting the corresponding nodes. Although described in the form of a graph, each motion planning graph does not necessarily need to be represented or stored as a conventional graph, but can be represented, for example, logically, or in storage circuitry or a computer processor, using any kind of data structure (e.g., records and fields, tables, linked lists, pointers, trees).

在506,基于处理器的系统可选地接收一个或更多个机器人的一组扫掠体积。例如,基于处理器的系统可以从在配置时间期间生成运动规划图的另一基于处理器的系统接收该组扫掠体积。可选地,基于处理器的系统可以例如基于运动规划图自己生成一组扫掠体积。扫掠体积表示机器人或其部分在执行对应于相应边的运动或转换时所扫掠的相应体积。扫掠体积可以以多种形式中的任何一种来表示,例如体素、欧几里德距离场、球体分层结构或其他几何物体。In section 506, a processor-based system may optionally receive a set of sweep volumes from one or more robots. For example, the processor-based system may receive this set of sweep volumes from another processor-based system that generates a motion planning graph during configuration time. Alternatively, the processor-based system may generate a set of sweep volumes itself, for example, based on the motion planning graph. A sweep volume represents the corresponding volume swept by the robot or a part thereof when performing a motion or transition corresponding to a corresponding edge. Sweep volumes can be represented in any of a variety of forms, such as voxels, Euclidean distance fields, spherical hierarchies, or other geometric objects.

在508,基于处理器的系统接收例如以任务规范形式的多个任务。任务规范指定了要由机器人执行的机器人任务。任务规范可以例如指定机器人从第一位置移动到第二位置,在第二位置处抓住物体,将物体移动至第三位置,并在第三位置处释放物体。任务规范可以采取多种形式,例如需要解析到较低级别规范的高级规范(例如,散文和语法)。任务规范可以采取低级规范的形式,例如指定一组关节位置和关节角度/旋转(例如,关节姿势、关节坐标)。In 508, a processor-based system receives multiple tasks, for example, in the form of task specifications. The task specifications define the robotic tasks to be performed by the robot. For example, a task specification might specify that the robot moves from a first position to a second position, grasps an object at the second position, moves the object to a third position, and releases the object at the third position. Task specifications can take various forms, such as high-level specifications (e.g., prose and grammar) that need to be parsed down to lower-level specifications. Task specifications can also take the form of low-level specifications, such as specifying a set of joint positions and joint angles/rotations (e.g., joint poses, joint coordinates).

在510,基于处理器的系统可选地接收或生成在共享工作空间中操作的多个机器人R1-RN中的每个的运动规划请求的集或集合。请求的集或集合被命名为请求的列表或队列,但是这不一定意味着列表或队列中的任务的顺序或排列对应于任务应该或将要被执行或完成或处理的顺序。请求能够根据每个机器人要执行的任务生成。在一些情况下,在请求队列中,请求可以相对于彼此排序,例如第一机器人应该在第二机器人执行第二运动(例如,在第一位置处抓取工件)之前执行第一运动(例如,在第一位置处释放工件)的情况。In 510, the processor-based system optionally receives or generates a set or collection of motion planning requests for each of multiple robots R1 - RN operating in a shared workspace. The set or collection of requests is named a list or queue of requests, but this does not necessarily mean that the order or arrangement of tasks in the list or queue corresponds to the order in which tasks should or will be performed, completed, or processed. Requests can be generated based on the tasks to be performed by each robot. In some cases, requests in the request queue can be ordered relative to each other, for example, in the case where the first robot should perform a first motion (e.g., release a workpiece at a first position) before the second robot performs a second motion (e.g., grasp a workpiece at a first position).

在512,对于第一排队请求I,基于处理器的系统为相应的机器人(例如机器人Ri)生成相应的运动规划。生成运动规划可以例如包括:执行碰撞检测或评估,基于碰撞检测或评估来设置机器人Ri的运动规划图中的边的成本值,以及使用具有成本值的运动规划图例如通过最小成本分析来确定路径。虽然本说明书对请求和执行请求的机器人采用相同的计数值,但这只是为了便于理解。如本文所述,执行任务的任何给定请求可以由能够执行相应任务的任何给定机器人来执行。例如,第i个请求可以由第i+3个机器人完成,例如,第i+3个机器人是第i个请求被服务时可用的机器人。通常,任务会比机器人多得多,因此任何给定的机器人Ri都将执行队列中除第i个请求之外的其他请求。因此,请求与机器人之间不一定是一对一的关系。In 512, for the first queue request I, the processor-based system generates a corresponding motion plan for the corresponding robot (e.g., robot Ri). Generating the motion plan may include, for example, performing collision detection or evaluation, setting the cost values of the edges in the motion planning graph of robot Ri based on the collision detection or evaluation, and determining the path using the motion planning graph with the cost values, for example, through minimum cost analysis. Although this specification uses the same count for the request and the robot executing the request, this is only for ease of understanding. As described herein, any given request to perform a task can be performed by any given robot capable of performing the corresponding task. For example, the i-th request can be completed by the (i+3)-th robot, for example, the (i+3)-th robot is the one available when the i-th request is served. Typically, there are many more tasks than robots, so any given robot Ri will execute all requests in the queue except for the i-th request. Therefore, the relationship between requests and robots is not necessarily one-to-one.

在514,基于处理器的系统将来自一个或更多个机器人(例如机器人Ri)的运动规划的运动表示为其他机器人的障碍。例如,基于处理器的系统可以将对应于每个运动的扫掠体积作为障碍排列在障碍队列中。扫掠体积可以是先前针对每个边已经确定或计算的,并且通过数据结构(例如,指针)与存储器中的每个边逻辑关联。如前所述,扫掠体积可以以多种形式中的任何一种来表示,例如作为体素、欧几里德距离场、球体分层结构或其他几何物体。In 514, a processor-based system represents motions from motion plans of one or more robots (e.g., robot Ri ) as obstacles for other robots. For example, a processor-based system can arrange sweep volumes corresponding to each motion as obstacles in an obstacle queue. The sweep volumes may have been previously determined or computed for each edge and are logically associated with each edge in memory via data structures (e.g., pointers). As previously described, sweep volumes can be represented in any of a variety of forms, such as voxels, Euclidean distance fields, spherical hierarchies, or other geometric objects.

在516,基于处理器的系统可选地控制相应机器人(为该机器人生成了运动规划,例如机器人Ri)的操作。例如,基于处理器的系统可以向一个或更多个运动控制器(例如,马达控制器)发送控制信号或驱动信号,以使一个或更多个致动器根据运动规划移动一个或更多个连杆。In 516, the processor-based system can optionally control the operation of a corresponding robot (for which a motion plan has been generated, such as robot Ri ). For example, the processor-based system can send control or drive signals to one or more motion controllers (e.g., motor controllers) to cause one or more actuators to move one or more links according to the motion plan.

在518,基于处理器的系统可选地确定相应的运动是否已经完成。监控运动的完成能够有利地允许基于处理器的系统在随后的碰撞检测或评估期间将对应于运动的障碍移除不考虑。基于处理器的系统可以依赖于相应机器人的坐标。坐标可以基于来自运动控制器、致动器和/或传感器(例如,摄像机、旋转编码器、簧片开关)的信息,以确定给定的运动是否已经完成。In 518, the processor-based system can optionally determine whether a corresponding motion has been completed. Monitoring the completion of a motion advantageously allows the processor-based system to disregard obstacle removal corresponding to the motion during subsequent collision detection or evaluation. The processor-based system can rely on the coordinates of the corresponding robot. The coordinates can be based on information from motion controllers, actuators, and/or sensors (e.g., cameras, rotary encoders, reed switches) to determine whether a given motion has been completed.

在520,基于处理器的系统响应于确定给定运动已经完成,生成或发送运动完成消息或设置标志。In 520, a processor-based system responds to determining that a given motion has been completed by generating or sending a motion completion message or setting a flag.

在522,基于处理器的系统对每个附加的排队请求i+1执行迭代循环。在迭代循环的每一遍中,基于处理器的系统执行下述动作524至544中的一个或更多个。虽然被描述为迭代循环,但是基于处理器的系统可以针对任务或运动规划请求的集、列表或队列中的每个任务或运动规划请求执行方法500的一个或更多个动作。针对任何给定任务或运动规划请求的运动规划可以相对于任一个选定机器人来执行,该选择可以由基于处理器的系统基于一个或更多个标准来自主做出,例如如下面参照图6所述。At 522, the processor-based system performs an iterative loop for each additional queued request i+1. In each iteration of the iterative loop, the processor-based system performs one or more of the actions 524 to 544 described below. Although described as an iterative loop, the processor-based system may perform one or more actions of method 500 for each task or motion planning request in the set, list, or queue of task or motion planning requests. Motion planning for any given task or motion planning request may be performed relative to any selected robot, a selection that may be made autonomously by the processor-based system based on one or more criteria, such as those described below with reference to FIG6.

在524,基于处理器的系统确定是否已经生成或接收到运动完成消息,或者已经设置标志。In step 524, the processor-based system determines whether a motion completion message has been generated or received, or whether a flag has been set.

在526,基于处理器的系统响应于确定已经生成或接收到运动完成消息或者已经设置标志,削减对应于给定运动的一个或更多个障碍。例如,基于处理器的系统可以从障碍队列中移除相应的障碍。这有利地允许碰撞检测或评估在扫掠体积不再作为障碍存在的环境中进行。这也有利地允许再不需要跟踪运动或相应的扫掠体积的时机的情况下,跟踪运动和相应的扫掠体积。In 526, a processor-based system, in response to determining that a motion completion message has been generated or received, or that a flag has been set, removes one or more obstacles corresponding to a given motion. For example, a processor-based system can remove a corresponding obstacle from an obstacle queue. This advantageously allows collision detection or evaluation to be performed in environments where swept volumes no longer exist as obstacles. It also advantageously allows for tracking of motion and corresponding swept volumes when it is no longer necessary to track the motion or the corresponding swept volume.

在532,基于处理器的系统为机器人(例如,Ri+1)执行碰撞检测或评估。基于处理器的系统可以采用本文描述的或通过引用并入本文中的材料中描述的各种结构和算法中的任何一种来执行碰撞检测或评估。碰撞检测或评估可以包括针对障碍队列中的每个障碍对每个运动执行碰撞检测或评估。In 532, a processor-based system performs collision detection or evaluation for a robot (e.g., Ri +1 ). The processor-based system can perform collision detection or evaluation using any of the various architectures and algorithms described herein or by reference to materials incorporated herein. Collision detection or evaluation may include performing collision detection or evaluation for each motion for each obstacle in an obstacle queue.

在534,基于处理器的系统至少部分基于机器人(例如,Ri+1)的碰撞检测或评估来设置运动规划图中边的成本值。基于处理器的系统可以采用本文描述的或在本文通过引用并入的材料中描述的各种结构和算法中的任何一种来执行成本值设置,通常将没有或具有低碰撞风险的边的成本设置或调整为较低的值(例如,零),并将会导致碰撞或具有高碰撞风险的边的成本设置或调整为较高的值(例如,十万)。In 534, processor-based systems set the cost values of edges in a motion planning graph based at least in part on collision detection or evaluation by the robot (e.g., Ri +1 ). Processor-based systems can perform cost value setting using any of the various structures and algorithms described herein or in materials incorporated herein by reference, typically setting or adjusting the cost of edges with no or low collision risk to lower values (e.g., zero), and setting or adjusting the cost of edges that would result in a collision or have a high collision risk to higher values (e.g., 100,000).

在536,基于处理器的系统至少部分基于碰撞检测或评估来生成机器人(例如,Ri+1)的运动规划。基于处理器的系统可以采用本文描述的或在本文通过引用并入的材料中描述的各种结构和算法中的任何一种来生成运动规划,例如对具有设定成本值的运动规划图执行最小成本分析。In 536, processor-based systems generate motion plans for robots (e.g., Ri +1 ) based at least in part on collision detection or evaluation. Processor-based systems can generate motion plans using any of the various structures and algorithms described herein or in materials incorporated herein by reference, such as performing a minimum cost analysis on a motion plan graph with a set cost value.

在538,基于处理器的系统将当前机器人(例如,Ri+1)的来自运动规划的运动表示为其他机器人的障碍。例如,基于处理器的系统可以将对应于每个运动的扫掠体积作为障碍排列在障碍队列中。扫掠体积可以是先前针对每个边已经确定或计算的,并且通过数据结构(例如,字段、指针)与存储器中的每个边逻辑相关联。如前所述,扫掠体积可以以多种形式中的任何一种来表示,例如表示为为体素、欧几里德距离场、球体分层结构或其他几何物体。In 538, a processor-based system represents the motion of the current robot (e.g., Ri +1 ) from its motion plan as obstacles for other robots. For example, a processor-based system can arrange the sweep volumes corresponding to each motion as obstacles in an obstacle queue. The sweep volumes may have been previously determined or computed for each edge and are logically associated with each edge in memory via data structures (e.g., fields, pointers). As previously described, sweep volumes can be represented in any of a variety of forms, such as voxels, Euclidean distance fields, spherical hierarchies, or other geometric objects.

在540,基于处理器的系统控制当前机器人(为该机器人生成运动规划,例如,机器人Ri+1)的操作。例如,基于处理器的系统可以向一个或更多个运动控制器(例如,马达控制器)发送控制信号或驱动信号,以使一个或更多个致动器移动一个或更多个连杆。At 540, a processor-based system controls the operation of the current robot (generating motion plans for that robot, e.g., robot Ri +1 ). For example, the processor-based system may send control or drive signals to one or more motion controllers (e.g., motor controllers) to cause one or more actuators to move one or more links.

在542,基于处理器的系统可选地确定相应的运动是否已经完成。监控运动的完成能够有利地允许基于处理器的系统在随后的碰撞检测或评估期间将对应于运动的障碍移除不考虑。基于处理器的系统可以依赖于相应机器人的坐标。坐标可以基于来自运动控制器、致动器和/或传感器(例如,摄像机、旋转编码器、簧片开关)的信息,以确定给定的运动是否已经完成。In 542, the processor-based system can optionally determine whether a corresponding motion has been completed. Monitoring the completion of a motion advantageously allows the processor-based system to disregard obstacle removal corresponding to the motion during subsequent collision detection or evaluation. The processor-based system can rely on the coordinates of the corresponding robot. The coordinates can be based on information from motion controllers, actuators, and/or sensors (e.g., cameras, rotary encoders, reed switches) to determine whether a given motion has been completed.

在544,基于处理器的系统响应于确定给定运动已经完成,生成或发送运动完成消息。In 544, a processor-based system responds to determining that a given motion has been completed by generating or sending a motion completion message.

在546,基于处理器的系统确定是否已经到达队列的末端。例如,基于处理器的系统可以确定在运动规划请求队列中是否还有任何运动规划请求,和/或所有任务是否都已经完成。在至少一些实施方式中,任务集(例如,任务队列)可能暂时耗尽,新的或附加的任务可能稍后到达。在这样的实施方式中,基于处理器的系统可以执行等待循环,不时地检查新的或附加的任务,或者等待指示新的或附加的任务可被处理和执行的信号。In 546, the processor-based system determines whether the end of the queue has been reached. For example, the processor-based system may determine whether there are any remaining motion planning requests in the motion planning request queue, and/or whether all tasks have been completed. In at least some embodiments, the task set (e.g., the task queue) may be temporarily exhausted, and new or additional tasks may arrive later. In such embodiments, the processor-based system may perform a wait loop, periodically checking for new or additional tasks, or waiting for a signal indicating that new or additional tasks can be processed and executed.

方法500可以终止于548。替选地,方法500可以重复,直到例如由于断电状态或状况而肯定地停止。在一些实施方式中,方法500可以作为多线程进程在一个或更多个处理器上执行。Method 500 may terminate at 548. Alternatively, method 500 may be repeated until it definitively stops, for example, due to a power outage or other condition. In some implementations, method 500 may be executed as a multi-threaded process on one or more processors.

虽然操作方法500是根据有序流程来描述的,但是在许多实施方式中,各种动作或操作将同时或并行执行。通常,当一个或更多个机器人执行任务时,可以执行一个机器人执行一个任务的运动规划。因此,机器人执行任务可能与一个或更多个运动规划器执行运动规划交叠或同时或并行。机器人的任务执行可能与其他机器人的任务执行交叠或同时或并行。在一些实施方式中,一个机器人的运动规划的至少一些部分可以与一个或更多个其他机器人的运动规划的至少一些部分交叠或同时或并行。Although the operation method 500 is described according to an ordered process, in many embodiments, various actions or operations will be performed simultaneously or in parallel. Typically, when one or more robots perform a task, motion planning for one robot to perform one task can be executed. Therefore, robot task execution may overlap with, or occur simultaneously with, or in parallel with, the motion planning performed by one or more motion planners. Robot task execution may overlap with, or occur simultaneously with, or in parallel with the task execution of other robots. In some embodiments, at least some portions of a robot's motion planning may overlap with, or occur simultaneously with, or in parallel with, at least some portions of the motion planning of one or more other robots.

图6示出了根据至少一个所示实施方式,在基于处理器的系统中产生运动规划并可选地控制在共享工作空间中操作的多个机器人的操作方法600。方法600可以在运行时,例如在配置时间之后执行。方法600可以由一个或更多个基于处理器的系统执行,该基于处理器的系统采用一个或更多个机器人控制系统的形式。机器人控制系统例如可以与相应一个机器人的共同定位或“在其上”。方法600可以与方法500一起使用(图5A和图5B)。Figure 6 illustrates a method 600 for generating motion plans and optionally controlling multiple robots operating in a shared workspace in a processor-based system, according to at least one of the illustrated embodiments. Method 600 can be executed at runtime, for example, after a configuration time. Method 600 can be executed by one or more processor-based systems that take the form of one or more robot control systems. The robot control system can, for example, be co-located with or "on" a corresponding robot. Method 600 can be used in conjunction with method 500 (Figures 5A and 5B).

例如响应于机器人和/或机器人控制系统的通电、响应于来自调用例程的调用或引用、或者响应于任务集或列表或队列的接收,方法600开始于602。For example, in response to power on the robot and/or robot control system, in response to a call or reference from a calling routine, or in response to the receipt of a task set, list, or queue, method 600 begins at 602.

在604,基于处理器的系统从要执行的任务的集或列表或队列中选择任务。这些任务可以共同实现一个目标。例如,任务可以包括拾取和放置物体,而目标是由在公共工作空间中操作的两个或更多个机器人将一堆物体分类成相应类型物体的两个或更多个不同的物体堆。In section 604, a processor-based system selects tasks from a set, list, or queue of tasks to be performed. These tasks may collectively achieve a common objective. For example, tasks may include picking up and placing objects, while the objective is for two or more robots operating in a shared workspace to sort a pile of objects into two or more distinct piles of objects of corresponding types.

基于处理器的系统可以从任务集(例如,任务队列)中选择任务。这些任务可以采取运动规划请求的形式,或者对应于运动规划请求,或者可以根据特定的系统架构产生相应的运动规划请求。任务队列中的任务可以排序,也可以不排序。任务可以基于任一个或更多个标准来选择,例如,为了完成目标一个任务相对于另一个任务的顺序、任务相对于其他任务的优先级、完成目标的效率(例如,完成目标的时间、能量消耗、完成目标的移动数量、并行操作机器人的能力、最小化机器人的等待时间)、机器人的可用性、和/或适于执行特定类型任务的机器人的可用性(例如,具有特定类型的臂端工具或末端执行器的机器人的可用性)。Processor-based systems can select tasks from a set of tasks (e.g., a task queue). These tasks can take the form of motion planning requests, correspond to motion planning requests, or generate motion planning requests based on a specific system architecture. Tasks in the task queue may or may not be ordered. Tasks can be selected based on any one or more criteria, such as the order of one task relative to another to achieve a goal, the priority of a task relative to other tasks, the efficiency of achieving the goal (e.g., time to achieve the goal, energy consumption, number of movements to achieve the goal, ability to operate the robot in parallel, minimizing robot latency), robot availability, and/or the availability of robots suitable for performing specific types of tasks (e.g., the availability of robots with specific types of end-effectors or end effectors).

在606,基于处理器的系统选择机器人来执行所选任务。基于处理器的系统可以基于任一个或更多个标准来选择机器人,所述一个或更多个标准例如机器人的可用性、机器人执行任务的适用性、其他机器人不适合执行任务或执行机器人不适合执行的其他类型的任务、状况(例如,错误状况、低功率状况、阻挡状态的状况、磨损状况、预定服务状况)存在或不存在。At 606, the processor-based system selects a robot to perform a selected task. The processor-based system may select a robot based on any one or more criteria, such as robot availability, robot suitability for the task, other robots being unsuitable for performing the task or performing other types of tasks that the robot is unsuitable for, and the presence or absence of conditions (e.g., error conditions, low power conditions, obstruction conditions, wear conditions, scheduled service conditions).

在608,基于处理器的系统为成对的所选任务和所选机器人执行运动规划。例如,基于处理器的系统可以如参考方法500(图5A和图5B)一般描述的那样执行运动规划。At 608, the processor-based system performs motion planning for a pair of selected tasks and a selected robot. For example, the processor-based system can perform motion planning as generally described in reference method 500 (Figures 5A and 5B).

在610,基于处理器的系统确定是否存在会导致所选机器人对所选任务的执行被跳过或延迟的状况。状况可以包括指示所选机器人或相应机器人控制系统中的操作或机械错误的错误状况。状况可以包括指示由运动规划指示的机器人的给定运动当前被阻挡或者不能实现的阻挡状况。状况可以包括所选机器人的低功率状况、磨损状况或预定服务状况,所有这些都表明所选机器人可能无法在给定时间完成任务。状况还可以包括其中给定的机器人或机器人控制系统断言对任务或运动规划请求的覆盖的跳过状况。附加地或替代地,基于处理器的系统可以处理包括使给定任务或运动规划请求加速的超驰请求的加速状况,将给定任务或运动规划请求移动到任务或运动规划请求队列中的其他任务或运动规划请求之前,或者以其他方式提高任务或运动规划请求相对于一个或更多个其他任务或运动规划请求的优先级。At 610, the processor-based system determines whether a condition exists that would cause the selected robot to skip or delay the execution of the selected task. Conditions may include error conditions indicating operational or mechanical malfunctions in the selected robot or its corresponding robot control system. Conditions may include obstruction conditions indicating that a given motion of the robot, as instructed by motion planning, is currently blocked or cannot be achieved. Conditions may include low-power conditions, wear conditions, or scheduled service conditions of the selected robot, all of which indicate that the selected robot may not be able to complete the task at a given time. Conditions may also include skip conditions in which the given robot or robot control system asserts coverage of the task or motion planning request. Additionally or alternatively, the processor-based system may handle acceleration conditions including override requests that accelerate a given task or motion planning request, move a given task or motion planning request ahead of other task or motion planning requests in the task or motion planning request queue, or otherwise prioritize a task or motion planning request relative to one or more other task or motion planning requests.

响应于在610确定存在将导致所选机器人对所选任务的执行被跳过的状况,或者基于处理器的系统将控制返回到606以选择不同的机器人来执行所选任务。可选地,控制可以传递到604以选择新任务,先前的任务保留在要执行的任务队列中或者被添加回要执行的任务队列中。这可能有助于选择在此期间可能已添加到任务队列中的较紧急的任务。In response to a condition determined at 610 that would cause the selected robot to skip the execution of the selected task, the processor-based system returns control to 606 to select a different robot to perform the selected task. Optionally, control can be passed to 604 to select a new task, with the previous task remaining in the task queue to be executed or being added back to the task queue. This may be helpful in selecting more urgent tasks that may have been added to the task queue during this period.

响应于在610确定不存在状况,控制转到612,其中用于执行所选任务的运动规划被发送到所选机器人。这能够例如包括通过有线或无线通信信道向所选机器人提供高级指令或低级指令(例如,电机控制指令)。In response to the determination at 610 that the condition does not exist, control proceeds to 612, where a motion plan for performing the selected task is sent to the selected robot. This can include, for example, providing high-level or low-level instructions (e.g., motor control instructions) to the selected robot via a wired or wireless communication channel.

在614,所选择的机器人执行或实施运动规划。例如,一个或更多个致动器使机器人附肢和相关的臂端工具执行任务。In section 614, the selected robot performs or implements motion planning. For example, one or more actuators enable the robot's appendages and associated end-effector tools to perform tasks.

在616,基于处理器的系统确定在集、列表或队列中是否存在要服务的附加任务或运动规划请求。在至少一些实施方式中,任务集(例如,任务队列)可能暂时耗尽,同时新的或附加的任务可能稍后到达。在这样的实施方式中,基于处理器的系统可以执行等待循环,不时地检查新的或附加的任务,或者等待指示新的或附加的任务可被处理和执行的信号。In 616, the processor-based system determines whether there are additional tasks or motion planning requests to be served in a set, list, or queue. In at least some embodiments, the task set (e.g., the task queue) may be temporarily exhausted while new or additional tasks may arrive later. In such embodiments, the processor-based system may execute a wait loop, periodically checking for new or additional tasks, or waiting for a signal indicating that new or additional tasks can be processed and executed.

方法600可以终止于618。或者,方法600可以重复,直到例如由于断电状态或状况而肯定停止。在一些实施方式中,方法600可以作为多线程进程在一个或更多个处理器上执行。例如,多个任务的运动规划可以同时执行。Method 600 may terminate at 618. Alternatively, method 600 may repeat until it is definitively stopped, for example, due to a power outage or other condition. In some implementations, method 600 may be executed as a multi-threaded process on one or more processors. For example, motion planning for multiple tasks may be performed concurrently.

前述详细描述已经通过使用框图、示意图和示例阐述了设备和/或过程的各种实施例。在这样的框图、示意图和示例包含一个或更多个功能和/或操作的范围内,本领域的技术人员将理解,这样的框图、流程图或示例中的每个功能和/或操作可以通过广泛的硬件、软件、固件或实际上它们的任何组合来单独地和/或共同地实现。在一个实施例中,本主题可以通过布尔电路、专用集成电路(ASIC)和/或FPGA来实现。然而,本领域技术人员将认识到,本文公开的实施例能够整体或部分地以各种不同实施方式在标准集成电路中实现为在一个或更多个计算机上运行的一个或更多个计算机程序(例如,实现为在一个或更多个计算机系统上运行的一个或更多个程序),实现为在一个或更多个控制器(例如,微控制器)上运行的一个或更多个程序,实现为在一个或更多个处理器(例如,微处理器)上运行的一个或更多个程序,实现为固件或实现为实际上它们的任意组合,并且根据本公开,设计电路和/或为软件和/或固件编写代码将完全在本领域普通技术人员的技能范围内。The foregoing detailed description has illustrated various embodiments of the device and/or process using block diagrams, schematic diagrams, and examples. Within the scope of such block diagrams, schematic diagrams, and examples encompassing one or more functions and/or operations, those skilled in the art will understand that each function and/or operation in such block diagrams, flowcharts, or examples can be implemented individually and/or collectively by a wide range of hardware, software, firmware, or virtually any combination thereof. In one embodiment, this subject matter can be implemented using Boolean circuits, application-specific integrated circuits (ASICs), and/or FPGAs. However, those skilled in the art will recognize that the embodiments disclosed herein can be implemented, in whole or in part, in various different ways in standard integrated circuits as one or more computer programs running on one or more computers (e.g., one or more programs running on one or more computer systems), as one or more programs running on one or more controllers (e.g., microcontrollers), as one or more programs running on one or more processors (e.g., microprocessors), as firmware, or virtually any combination thereof, and that designing circuitry and/or writing code for software and/or firmware according to this disclosure will be entirely within the skill of those skilled in the art.

本领域的技术人员将认识到,本文阐述的许多方法或算法可以采用附加的动作,可以省略一些动作,和/或动作可以以不同于指定的顺序执行。Those skilled in the art will recognize that many of the methods or algorithms described herein may employ additional actions, omit some actions, and/or perform actions in a different order than specified.

此外,本领域的技术人员将理解,本文教导的机制能够在硬件中实现,例如在一个或更多个FPGA或ASIC中实现。Furthermore, those skilled in the art will understand that the mechanisms taught herein can be implemented in hardware, such as in one or more FPGAs or ASICs.

上述各种实施例能够组合以提供进一步的实施例。本说明书中提及的和/或在申请数据表中列出的所有共同转让的美国专利申请公开、美国专利申请、外国专利和外国专利申请,包括但不限于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的全部内容通过引用并入本文。根据以上详细描述,能够对实施例进行这些和其他改变。总体上,在所附权利要求中,所使用的术语不应被解释为将权利要求限制于说明书和权利要求中公开的特定实施例,而是应被解释为包括所有可能的实施例以及这些权利要求的等同物的全部范围。因此,权利要求不受本公开的限制。The various embodiments described above can be combined to provide further embodiments. All commonly assigned U.S. patent application publications, U.S. patent applications, foreign patents, and foreign patent applications mentioned in this specification and/or listed in the application data sheet, including but not limited to International Patent Application No. PCT/US2017/036880, filed June 9, 2017, entitled “MOTION PLANNING FOR AUTONOMOUS VEHICLES AND RECONFIGURABLE MOTION PLANNING PROCESSORS,” and International Patent Application No. SPECIALIZE, filed January 5, 2016, entitled “SPECIALIZE,” are also included. International patent application No. WO 2016/122840, entitled "D ROBOT MOTION PLANNING HARDWARE AND METHODS OF MAKING AND USING SAME"; and another patent application filed on January 12, 2018, entitled "APPARATUS, METHOD AND ARTICLE TO FACILITATE MOTION PLANNING OF AN AUTONOMOUS VEHICLE IN AN ENVIRONMENT HAVIN U.S. Patent Application No. 62/616,783 entitled "G DYNAMICOBJECTS"; U.S. Patent Application No. 62/626,939 entitled "MOTION PLANNING A ROBOT STORING A DISCRETIZED ENVIRONMENT ON ONE OR MORE PROCESSORS AND IMPROVED OPERATION OF SAME" filed on February 6, 2018; and U.S. Patent Application No. 62/626,939 entitled "APPARATUS, ME" filed on June 3, 2019. The entire contents of U.S. Patent Application No. 62/856,548, entitled “Those and Articles to Facilitate Motion Planning Inner Vironment's Having Dynamic Obstacles,” and U.S. Patent Application No. 62/865,431, filed June 24, 2019, entitled “Motion Planning for Multiple Robots in Shared Workspace,” are incorporated herein by reference. Based on the above detailed description, these and other changes to the embodiments are possible. Generally, the terminology used in the appended claims should not be construed as limiting the claims to the specific embodiments disclosed in the specification and claims, but should be construed as encompassing all possible embodiments and the full scope of equivalents of these claims. Therefore, the claims are not limited by this disclosure.

Claims (34)

1.一种控制多个机器人在公共工作空间中操作的方法,所述机器人在所述公共工作空间中的运动范围交叠,所述方法包括:1. A method for controlling multiple robots to operate in a common workspace, wherein the ranges of motion of the robots in the common workspace overlap, the method comprising: 为所述多个机器人中的机器人R1生成第一运动规划;Generate a first motion plan for robot R1 among the plurality of robots; 对于机器人Ri中的至少一个中的每个,从i等于2到i等于n,其中,n是所述多个机器人中机器人的总数,并且n是等于或大于2的整数,For each of at least one of robots Ri , i equals 2 to i equals n, where n is the total number of robots in the plurality of robots, and n is an integer equal to or greater than 2. 将至少机器人R1的多个运动表示为至少一个障碍;Represent at least one obstacle as multiple motions of robot R1 ; 相对于所述至少一个障碍的表示,针对机器人Ri的至少部分的至少一个运动执行碰撞检测;Collision detection is performed on at least one motion of at least a portion of robot Ri , relative to the representation of the at least one obstacle. 至少部分地基于针对所述机器人Ri的至少部分的至少一个运动的碰撞检测,生成机器人Ri的第一运动规划;A first motion plan for robot Ri is generated, based at least in part on collision detection of at least one motion of at least part of the robot Ri . 至少部分地基于所述多个机器人中的相应一个机器人的相应第一运动规划,提供信号以控制机器人R1到机器人Rn中的至少一个机器人的操作;并且Based at least in part on a corresponding first motion plan of a corresponding one of the plurality of robots, signals are provided to control the operation of at least one of the robots R1 to Rn ; and 响应于所述机器人R1完成至少一个运动,更新障碍的表示以消除与所述机器人R1完成的至少一个运动对应的部分。In response to the robot R1 completing at least one movement, the representation of the obstacle is updated to eliminate the portion corresponding to the at least one movement completed by the robot R1 . 2.根据权利要求1所述的方法,还包括:2. The method according to claim 1, further comprising: 响应于机器人R2到机器人Rn中的任一个或更多个机器人完成至少一个运动,更新障碍的表示以消除与机器人R2到机器人Rn中的相应一个机器人完成的至少一个运动对应的部分。In response to any one or more robots R2 to Rn completing at least one movement, the representation of the obstacle is updated to eliminate the portion corresponding to the at least one movement completed by the corresponding robot R2 to Rn . 3.根据权利要求1所述的方法,还包括:3. The method according to claim 1, further comprising: 为所述多个机器人中的所述机器人R1生成第二运动规划;Generate a second motion plan for robot R1 among the plurality of robots; 对于所述机器人Ri中的至少一个中的每个,从i等于2到i等于n,其中,n是所述多个机器人中机器人的总数,并且n是等于或大于2的整数,For each of at least one of the robots Ri , i equals 2 to i equals n, where n is the total number of robots in the plurality of robots, and n is an integer equal to or greater than 2. 将至少机器人R1的多个运动表示为至少一个障碍;Represent at least one obstacle as multiple motions of robot R1 ; 相对于所述至少一个障碍的表示,针对机器人Ri的至少部分的至少一个运动执行碰撞检测;以及Collision detection is performed on at least one motion of at least a portion of the robot Ri , relative to the representation of the at least one obstacle; and 至少部分地基于针对机器人Ri的至少部分的至少一个运动的碰撞检测,生成机器人Ri的第二运动规划;并且所述方法还包括:A second motion plan for robot Ri is generated, based at least in part on collision detection of at least a portion of at least one motion of robot Ri ; and the method further includes: 至少部分地基于所述多个机器人中的相应一个机器人的相应第二运动规划,提供信号以控制机器人R1到机器人Rn中的至少一个机器人的操作。Signals are provided to control the operation of at least one of the robots R1 to Rn , based at least in part on a corresponding second motion plan of a corresponding one of the plurality of robots. 4.根据权利要求3所述的方法,其中,为机器人R1到机器人Rn生成第一运动规划的步骤从i等于1到i等于n连续发生。4. The method of claim 3, wherein the step of generating a first motion plan for robots R1 to Rn occurs consecutively from i equal to 1 to i equal to n. 5.根据权利要求4所述的方法,其中,为机器人R1到机器人Rn生成第二运动规划的步骤从i等于1到i等于n连续发生。5. The method of claim 4, wherein the step of generating a second motion plan for robot R1 to robot Rn occurs consecutively from i equal to 1 to i equal to n. 6.根据权利要求4所述的方法,其中,为机器人R1到机器人Rn生成第二运动规划不从i等于1到i等于n连续发生。6. The method of claim 4, wherein the generation of the second motion plan for robot R1 to robot Rn does not occur continuously from i equal to 1 to i equal to n. 7.根据权利要求3所述的方法,其中,至少部分地基于所述多个机器人中的相应一个机器人的相应第一运动规划,提供信号以控制机器人R1到机器人Rn中的至少一个机器人的操作包括提供使一个机器人Ri在所述机器人R1之前移动的信号,并且其中:7. The method of claim 3, wherein providing signals to control the operation of at least one of the robots R1 to Rn , based at least in part on a corresponding first motion plan of a corresponding one of the plurality of robots, comprises providing a signal to move a robot Ri ahead of said robot R1 , and wherein: 响应于机器人Ri完成至少一个运动更新障碍的表示以消除与机器人Ri完成的至少一个运动对应的部分在执行为多个机器人中的所述机器人R1生成第二运动规划之前发生。The representation of an obstacle is updated in response to robot Ri completing at least one motion to eliminate the portion corresponding to at least one motion completed by robot Ri before a second motion plan is generated for robot R1 among a plurality of robots. 8.根据权利要求1所述的方法,还包括:8. The method according to claim 1, further comprising: 为多个机器人中的所述机器人R1生成第二运动规划;Generate a second motion plan for robot R1 among multiple robots; 对于两个或更多个机器人Ri中的一些但不是全部,从i等于2到i等于n,其中,n是所述多个机器人中机器人的总数,并且n是等于或大于3的整数,For some, but not all, of two or more robots Ri , i equals 2 to i equals n, where n is the total number of robots in the plurality of robots, and n is an integer equal to or greater than 3. 将至少机器人R1的多个运动表示为至少一个障碍;Represent at least one obstacle as multiple motions of robot R1 ; 相对于所述至少一个障碍的表示,针对机器人Ri的至少部分的至少一个运动执行碰撞检测;和Collision detection is performed on at least one motion of at least a portion of robot Ri , relative to the representation of the at least one obstacle; and 至少部分地基于针对机器人Ri的至少部分的至少一个运动的碰撞检测,生成所述机器人Ri的第二运动规划;并且所述方法还包括:The method generates a second motion plan for robot Ri based at least in part on collision detection of at least a portion of at least one motion of robot Ri ; and the method further includes: 至少部分地基于所述多个机器人中的相应一个机器人的相应第二运动规划,提供信号以控制机器人R1到机器人Rn中的至少一个机器人的操作。Signals are provided to control the operation of at least one of the robots R1 to Rn , based at least in part on a corresponding second motion plan of a corresponding one of the plurality of robots. 9.根据权利要求8所述的方法,其中,跳过为机器人R2到机器人Rn之一生成第二运动规划。9. The method of claim 8, wherein the generation of a second motion plan is skipped for one of robot R2 to robot Rn . 10.根据权利要求8所述的方法,其中,响应于机器人R2到机器人Rn中的一个机器人被机器人R2到机器人Rn中的另一个机器人阻挡而无法移动,跳过为机器人R2到机器人Rn中的相应一个机器人生成第二运动规划。10. The method of claim 8, wherein, in response to one of the robots R2 to Rn being blocked from moving by another robot among the robots R2 to Rn , a second motion plan is skipped for the corresponding robot among the robots R2 to Rn . 11.根据权利要求8所述的方法,其中,响应于机器人R2到机器人Rn中的一个机器人具有指示错误状况已经发生的错误状态,跳过为机器人R2到机器人Rn中的相应一个机器人生成第二运动规划。11. The method of claim 8, wherein, in response to one of the robots R2 to Rn having an error state indicating that an error condition has occurred, a second motion plan is skipped for the corresponding robot among the robots R2 to Rn . 12.根据权利要求1所述的方法,其中,将至少机器人R1的多个运动表示为至少一个障碍包括,对于至少一个机器人Ri+1,在针对机器人Ri+1的至少一个运动执行碰撞检测之前,将机器人R1到机器人Ri中的两个或更多个机器人的运动表示为障碍。12. The method of claim 1, wherein representing the plurality of motions of at least robot R1 as at least one obstacle comprises, for at least one robot Ri +1 , representing the motions of two or more robots from robot R1 to robot Ri as obstacles before performing collision detection for at least one motion of robot Ri+ 1 . 13.根据权利要求12所述的方法,其中,在针对机器人Ri+1的至少一个运动执行碰撞检测之前,将机器人R1到机器人Ri中的两个或更多个机器人的运动表示为障碍包括:使用先前在运行前计算的一组扫掠体积,每个扫掠体积表示当机器人R1到机器人Ri中的相应一个机器人的至少部分沿着由相应运动表示的轨迹移动时,由机器人R1到机器人Ri中的相应一个机器人的所述部分扫掠的相应体积。13. The method of claim 12, wherein representing the motions of two or more robots from robots R1 to R1 as obstacles before performing collision detection for at least one motion of robot R1 +1 comprises: using a set of sweep volumes previously calculated prior to operation, each sweep volume representing a corresponding volume swept by said portion of robot R1 to R1 as at least a portion of robot R1 to R1 moves along a trajectory represented by the corresponding motion. 14.根据权利要求12所述的方法,还包括:14. The method of claim 12, further comprising: 接收先前在运行前计算的一组扫掠体积,每个扫掠体积表示当机器人R1到机器人Ri中的相应一个机器人的至少部分沿着由相应运动表示的轨迹移动时,由机器人R1到机器人Ri中的相应一个机器人的所述部分扫掠的相应体积。Receive a set of sweep volumes previously calculated before operation, each sweep volume representing the corresponding volume swept by the corresponding portion of robot R1 to robot Ri as at least a portion of a corresponding robot moves along a trajectory represented by the corresponding motion. 15.根据权利要求12所述的方法,其中,在针对机器人Ri+1的至少一个运动执行碰撞检测之前,将机器人R1到机器人Ri中的两个或更多个机器人的运动表示为障碍包括:将机器人R1到机器人Ri中的两个或更多个机器人的运动表示为占用网格、分层树或欧几里德距离场中的至少一个。15. The method of claim 12, wherein representing the motions of two or more robots from robot R1 to robot Ri as obstacles before performing collision detection for at least one motion of robot Ri +1 comprises: representing the motions of two or more robots from robot R1 to robot Ri as at least one of an occupied grid, a hierarchical tree, or an Euclidean distance field. 16.根据权利要求1所述的方法,其中,将至少机器人R1的运动中的每个表示为至少一个障碍包括:使用相应的扫掠体积来表示相应的运动,所述扫掠体积对应于在相应运动期间由至少机器人R1的至少部分所扫掠的体积,并且其中,相对于所述至少一个障碍的表示,针对机器人Ri的至少部分的至少一个运动执行碰撞检测包括,使用先前在运行前计算的所述扫掠体积的表示来执行碰撞检测,所述扫掠体积表示当机器人Ri的至少部分沿着由相应运动表示的轨迹移动时机器人Ri的所述部分扫掠的相应体积。16. The method of claim 1, wherein representing each of the movements of at least robot R1 as at least one obstacle comprises: representing the corresponding movement using a corresponding sweep volume, the sweep volume corresponding to the volume swept by at least a portion of at least robot R1 during the corresponding movement, and wherein performing collision detection for at least one movement of at least a portion of robot R1 with respect to the representation of the at least one obstacle comprises performing collision detection using a representation of the sweep volume previously calculated prior to operation, the sweep volume representing the corresponding volume swept by said portion of robot R1 when said portion moves along the trajectory represented by the corresponding movement. 17.根据权利要求1所述的方法,还包括:17. The method according to claim 1, further comprising: 对于所述多个机器人中的机器人R1到机器人Rn中的每个,通过相应的运动规划图表示相应机器人,每个运动规划图包括多个节点和边,所述节点表示相应机器人的相应状态,所述边表示由所述边连接的相应节点对中的相应节点表示的相应状态之间的有效转换。For each of the plurality of robots, from robot R1 to robot Rn , the corresponding robot is represented by a corresponding motion planning graph. Each motion planning graph includes multiple nodes and edges, where the nodes represent the corresponding states of the corresponding robot, and the edges represent valid transitions between the corresponding states represented by the corresponding nodes in the corresponding node pairs connected by the edges. 18.一种控制多个机器人在公共工作空间中操作的系统,所述机器人在所述公共工作空间中的运动范围交叠,所述系统包括:18. A system for controlling multiple robots to operate in a common workspace, the robots having overlapping ranges of motion in the common workspace, the system comprising: 至少一个处理器;和At least one processor; and 至少一个非易失性存储介质,其通信地联接到所述至少一个处理器,并且存储处理器可执行指令,所述处理器可执行指令在被所述至少一个处理器执行时,使得所述至少一个处理器:At least one non-volatile storage medium communicatively connected to the at least one processor, and storing processor-executable instructions that, when executed by the at least one processor, cause the at least one processor to: 为所述多个机器人中的机器人R1生成第一运动规划;Generate a first motion plan for robot R1 among the plurality of robots; 对于机器人Ri中的至少一个中的每个,从i等于2到i等于n,其中,n是所述多个机器人中机器人的总数,并且n是等于或大于2的整数,For each of at least one of robots Ri , i equals 2 to i equals n, where n is the total number of robots in the plurality of robots, and n is an integer equal to or greater than 2. 将至少机器人R1的多个运动表示为至少一个障碍;Represent at least one obstacle as multiple motions of robot R1 ; 相对于所述至少一个障碍的表示,针对机器人Ri的至少部分的至少一个运动执行碰撞检测;以及Collision detection is performed on at least one motion of at least a portion of the robot Ri , relative to the representation of the at least one obstacle; and 至少部分地基于针对所述机器人Ri的至少部分的至少一个运动的碰撞检测,生成机器人Ri的第一运动规划;并且进一步:A first motion plan for robot Ri is generated, based at least in part on collision detection of at least one motion of at least a portion of the robot Ri ; and further: 至少部分地基于所述多个机器人中的相应一个机器人的相应第一运动规划,提供信号以控制机器人R1到机器人Rn中的至少一个机器人的操作;并且Based at least in part on a corresponding first motion plan of a corresponding one of the plurality of robots, signals are provided to control the operation of at least one of the robots R1 to Rn ; and 响应于所述机器人R1完成至少一个运动,更新障碍的表示以消除与所述机器人R1完成的至少一个运动对应的部分。In response to the robot R1 completing at least one movement, the representation of the obstacle is updated to eliminate the portion corresponding to the at least one movement completed by the robot R1 . 19.根据权利要求18所述的系统,其中,所述处理器可执行指令在被所述至少一个处理器执行时,使得所述至少一个处理器进一步:19. The system of claim 18, wherein the processor-executable instructions, when executed by the at least one processor, cause the at least one processor to further: 响应于机器人R2到机器人Rn中的任一个或更多个机器人完成至少一个运动,更新障碍的表示以消除与机器人R2到机器人Rn中的相应一个机器人完成的至少一个运动对应的部分。In response to any one or more robots R2 to Rn completing at least one movement, the representation of the obstacle is updated to eliminate the portion corresponding to the at least one movement completed by the corresponding robot R2 to Rn . 20.根据权利要求18所述的系统,其中,所述处理器可执行指令在被所述至少一个处理器执行时,使得所述至少一个处理器进一步:20. The system of claim 18, wherein the processor-executable instructions, when executed by the at least one processor, cause the at least one processor to further: 为所述多个机器人中的所述机器人R1生成第二运动规划;Generate a second motion plan for robot R1 among the plurality of robots; 对于所述机器人Ri中的至少一个中的每个,从i等于2到i等于n,其中,n是所述多个机器人中机器人的总数,并且n是等于或大于2的整数,For each of at least one of the robots Ri , i equals 2 to i equals n, where n is the total number of robots in the plurality of robots, and n is an integer equal to or greater than 2. 将至少机器人R1的多个运动表示为至少一个障碍;Represent at least one obstacle as multiple motions of robot R1 ; 相对于所述至少一个障碍的表示,针对机器人Ri的至少部分的至少一个运动执行碰撞检测;以及Collision detection is performed on at least one motion of at least a portion of the robot Ri , relative to the representation of the at least one obstacle; and 至少部分地基于针对机器人Ri的至少部分的至少一个运动的碰撞检测,生成机器人Ri的第二运动规划;并且进一步:A second motion plan for robot Ri is generated, based at least in part on collision detection of at least one motion of at least part of robot Ri ; and further: 至少部分地基于所述多个机器人中的相应一个机器人的相应第二运动规划,提供信号以控制机器人R1到机器人Rn中的至少一个机器人的操作。Signals are provided to control the operation of at least one of the robots R1 to Rn , based at least in part on a corresponding second motion plan of a corresponding one of the plurality of robots. 21.根据权利要求20所述的系统,其中,为机器人R1到机器人Rn生成第一运动规划的步骤从i等于1到i等于n连续发生。21. The system of claim 20, wherein the step of generating a first motion plan for robot R1 to robot Rn occurs consecutively from i equal to 1 to i equal to n. 22.根据权利要求21所述的系统,其中,为机器人R1到机器人Rn生成第二运动规划的步骤从i等于1到i等于n连续发生。22. The system of claim 21, wherein the step of generating a second motion plan for robot R1 to robot Rn occurs consecutively from i equal to 1 to i equal to n. 23.根据权利要求21所述的系统,其中,为机器人R1到机器人Rn生成第二运动规划不从i等于1到i等于n连续发生。23. The system of claim 21, wherein the generation of the second motion plan for robot R1 to robot Rn does not occur continuously from i equal to 1 to i equal to n. 24.根据权利要求20所述的系统,其中,为了至少部分地基于所述多个机器人中的相应一个机器人的相应第一运动规划,控制机器人R1到机器人Rn中的至少一个机器人的操作,所述处理器可执行指令在被所述至少一个处理器执行时,使得所述至少一个处理器提供使一个机器人Ri在所述机器人R1之前移动的信号,并且进一步:24. The system of claim 20, wherein, in order to control the operation of at least one of the robots R1 to Rn based at least in part on a corresponding first motion plan of a corresponding one of the plurality of robots, the processor is executable by instructions, when executed by the at least one processor, such that the at least one processor provides a signal to move a robot Ri ahead of the robot R1 , and further: 响应于机器人Ri完成至少一个运动,在为多个机器人中的机器人R1生成第二运动规划之前,更新障碍的表示以消除与机器人Ri完成的至少一个运动对应的部分。In response to robot Ri completing at least one motion, before generating a second motion plan for robot R1 among a plurality of robots, the representation of obstacles is updated to eliminate the portion corresponding to the at least one motion completed by robot Ri . 25.根据权利要求18所述的系统,其中,所述处理器可执行指令在被所述至少一个处理器执行时,使得所述至少一个处理器进一步:25. The system of claim 18, wherein the processor-executable instructions, when executed by the at least one processor, cause the at least one processor to further: 为所述多个机器人中的机器人R1生成第二运动规划;Generate a second motion plan for robot R1 among the plurality of robots; 对于两个或更多个机器人Ri中的一些但不是全部,从i等于2到i等于n,其中,n是所述多个机器人中机器人的总数,并且n是等于或大于3的整数,For some, but not all, of two or more robots Ri , i equals 2 to i equals n, where n is the total number of robots in the plurality of robots, and n is an integer equal to or greater than 3. 将至少机器人R1的多个运动表示为至少一个障碍;Represent at least one obstacle as multiple motions of robot R1 ; 相对于所述至少一个障碍的表示,针对机器人Ri的至少部分的至少一个运动执行碰撞检测;和Collision detection is performed on at least one motion of at least a portion of robot Ri , relative to the representation of the at least one obstacle; and 至少部分地基于针对机器人Ri的至少部分的至少一个运动的碰撞检测,生成所述机器人Ri的第二运动规划;并且进一步:A second motion plan for robot Ri is generated, based at least in part on collision detection of at least one motion of at least a portion thereof ; and further: 至少部分地基于所述多个机器人中的相应一个机器人的相应第二运动规划,提供信号以控制机器人R1到机器人Rn中的至少一个机器人的操作。Signals are provided to control the operation of at least one of the robots R1 to Rn , based at least in part on a corresponding second motion plan of a corresponding one of the plurality of robots. 26.根据权利要求25所述的系统,其中,跳过为机器人R2到机器人Rn之一生成第二运动规划。26. The system of claim 25, wherein the second motion plan is skipped for one of robot R2 to robot Rn . 27.根据权利要求25所述的系统,其中,响应于机器人R2到机器人Rn中的一个机器人被机器人R2到机器人Rn中的另一个机器人阻挡而无法移动,跳过为机器人R2到机器人Rn中的相应一个机器人生成第二运动规划。27. The system of claim 25, wherein, in response to one of robots R2 to Rn being blocked from moving by another robot among robots R2 to Rn , a second motion plan is skipped for the corresponding robot among robots R2 to Rn . 28.根据权利要求25所述的系统,其中,响应于机器人R2到机器人Rn中的一个机器人具有指示错误状况已经发生的错误状态,跳过为机器人R2到机器人Rn中的相应一个机器人生成第二运动规划。28. The system of claim 25, wherein, in response to one of the robots R2 to Rn having an error state indicating that an error condition has occurred, a second motion plan is skipped for the corresponding robot among the robots R2 to Rn . 29.根据权利要求18所述的系统,其中,为了将至少机器人R1的多个运动表示为至少一个障碍,所述处理器可执行指令在被所述至少一个处理器执行时,使得所述至少一个处理器:对于至少一个机器人Ri+1,在针对机器人Ri+1的至少一个运动执行碰撞检测之前,将机器人R1到机器人Ri中的两个或更多个机器人的运动表示为障碍。29. The system of claim 18, wherein, in order to represent at least a plurality of movements of at least robot R1 as at least one obstacle, the processor executable instructions, when executed by the at least one processor, cause the at least one processor to: represent the movements of two or more robots from robot R1 to robot Ri as obstacles before performing collision detection for at least one movement of robot Ri +1 . 30.根据权利要求29所述的系统,其中,为了将机器人R1到机器人Ri中的两个或更多个机器人的运动表示为障碍,所述处理器可执行指令在被所述至少一个处理器执行时,使得所述至少一个处理器:使用先前在运行前计算的一组扫掠体积,每个扫掠体积表示当机器人R1到机器人Ri中的相应一个机器人的至少部分沿着由相应运动表示的轨迹移动时,由机器人R1到机器人Ri中的相应一个机器人的所述部分扫掠的相应体积。30. The system of claim 29, wherein, in order to represent the motion of two or more robots R1 to R1 as an obstacle, the processor executable instructions, when executed by the at least one processor, cause the at least one processor to: use a set of sweep volumes previously calculated prior to operation, each sweep volume representing a corresponding volume swept by said portion of the corresponding robot R1 to R1 as at least a portion of the corresponding robot R1 to R1 moves along a trajectory represented by the corresponding motion. 31.根据权利要求29所述的系统,其中,所述处理器可执行指令在被所述至少一个处理器执行时,使得所述至少一个处理器进一步:31. The system of claim 29, wherein the processor-executable instructions, when executed by the at least one processor, cause the at least one processor to further: 接收先前在运行前计算的一组扫掠体积,每个扫掠体积表示当机器人R1到机器人Ri中的相应一个机器人的至少部分沿着由相应运动表示的轨迹移动时,由机器人R1到机器人Ri中的相应一个机器人的所述部分扫掠的相应体积。Receive a set of sweep volumes previously calculated before operation, each sweep volume representing the corresponding volume swept by the corresponding portion of robot R1 to robot Ri as at least a portion of a corresponding robot moves along a trajectory represented by the corresponding motion. 32.根据权利要求29所述的系统,其中,为了在针对机器人Ri+1的至少一个运动执行碰撞检测之前,将机器人R1到机器人Ri中的两个或更多个机器人的运动表示为障碍,所述处理器可执行指令在被所述至少一个处理器执行时,使得所述至少一个处理器:将机器人R1到机器人Ri中的两个或更多个机器人的运动表示为占用网格、分层树或欧几里德距离场中的至少一个。32. The system of claim 29, wherein, in order to represent the motions of two or more robots from robot R1 to robot Ri as obstacles before performing collision detection for at least one motion of robot Ri +1 , the processor executable instructions, when executed by the at least one processor, cause the at least one processor to: represent the motions of two or more robots from robot R1 to robot Ri as at least one of an occupied grid, a hierarchical tree, or an Euclidean distance field. 33.根据权利要求18所述的系统,其中,为了将至少机器人R1的运动中的每个表示为至少一个障碍,所述处理器可执行指令在被所述至少一个处理器执行时,使得所述至少一个处理器:使用相应的扫掠体积来表示相应的运动,所述扫掠体积对应于在相应运动期间由至少机器人R1的至少部分所扫掠的体积,并且其中,为了相对于所述至少一个障碍的表示,针对机器人Ri的至少部分的至少一个运动执行碰撞检测,所述处理器可执行指令在被所述至少一个处理器执行时,使得所述至少一个处理器:至少部分地基于先前在运行前计算的所述扫掠体积的表示来执行碰撞检测,所述扫掠体积表示当机器人Ri的至少部分沿着由相应运动表示的轨迹移动时机器人Ri的所述部分扫掠的相应体积。33. The system of claim 18, wherein, in order to represent each of the movements of at least robot R1 as at least one obstacle, the processor-executable instructions, when executed by the at least one processor, cause the at least one processor to: represent the corresponding movement using a corresponding sweep volume, the sweep volume corresponding to the volume swept by at least a portion of at least robot R1 during the corresponding movement, and wherein, in order to perform collision detection for at least one movement of at least a portion of robot R1 relative to the representation of the at least one obstacle, the processor-executable instructions, when executed by the at least one processor, cause the at least one processor to: perform collision detection at least in part based on a representation of the sweep volume previously calculated prior to operation, the sweep volume representing the corresponding volume swept by said portion of robot R1 when at least a portion of robot R1 moves along the trajectory represented by the corresponding movement. 34.根据权利要求18所述的系统,其中,对于所述多个机器人中的机器人R1到机器人Rn中的每个,通过相应的运动规划图表示相应机器人,每个运动规划图包括多个节点和边,所述节点表示相应机器人的相应状态,所述边表示由所述边连接的相应节点对中的相应节点表示的相应状态之间的有效转换。34. The system of claim 18, wherein for each of the plurality of robots, R1 to Rn , the corresponding robot is represented by a corresponding motion planning graph, each motion planning graph including a plurality of nodes and edges, the nodes representing a corresponding state of the corresponding robot, and the edges representing valid transitions between corresponding states represented by corresponding nodes in a pair of corresponding nodes connected by the edges.
HK62022061208.4A 2019-06-24 2020-06-23 Motion planning for multiple robots in shared workspace HK40072330B (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US62/865,431 2019-06-24

Publications (2)

Publication Number Publication Date
HK40072330A HK40072330A (en) 2022-11-25
HK40072330B true HK40072330B (en) 2024-06-21

Family

ID=

Similar Documents

Publication Publication Date Title
CN114269525B (en) Motion planning for multiple robots in a shared workspace
JP7141665B2 (en) Collision detection for robot motion planning
CN115003460B (en) Robot configuration in multi-robot operating environments
TW202348377A (en) Motion planning and control for robots in shared workspace employing staging poses
CN114466730B (en) Motion planning for optimizing speed of a robot while maintaining limits on acceleration and jerk
US10894322B2 (en) Robot motion planning
US20240009845A1 (en) Systems, methods, and user interfaces employing clearance determinations in robot motion planning and control
JP7814081B2 (en) Robust motion planning and/or control for multi-robot environments
US20250249586A1 (en) Motion planning and control for robots in shared workspace employing look ahead planning
CN115397628A (en) Robot operating environment configuration including sensor layout
HK40072330B (en) Motion planning for multiple robots in shared workspace
HK40116937A (en) Motion planning and control for robots in shared workspace employing staging poses
HK40120090A (en) Motion planning and control for robots in shared workspace employing look ahead planning
HK40072330A (en) Motion planning for multiple robots in shared workspace
HK40122307A (en) Robust motion planning and/or control for multi-robot environments
HK40122307B (en) Robust motion planning and/or control for multi-robot environments
TW202428406A (en) Automated configuration of robots in multi-robot operational environment optimizing for wear and other parameters
HK40071862B (en) Configuration of robots in multi-robot operational environment
HK40089975A (en) Safety systems and methods employed in robot operations