HK40122307B - Robust motion planning and/or control for multi-robot environments - Google Patents
Robust motion planning and/or control for multi-robot environmentsInfo
- Publication number
- HK40122307B HK40122307B HK62025111252.5A HK62025111252A HK40122307B HK 40122307 B HK40122307 B HK 40122307B HK 62025111252 A HK62025111252 A HK 62025111252A HK 40122307 B HK40122307 B HK 40122307B
- Authority
- HK
- Hong Kong
- Prior art keywords
- robot
- robots
- processor
- trajectory
- nominal
- Prior art date
Links
Description
相关申请的交叉引用Cross-reference to related applications
本专利申请要求2022年7月5日提交的美国专利申请第63/358422号的优先权,其公开内容通过引用全部并入本文,以用于所有目的。This patent application claims priority to U.S. Patent Application No. 63/358422, filed July 5, 2022, the disclosure of which is incorporated herein by reference in its entirety for all purposes.
技术领域Technical Field
本公开总体上涉及在共享工作空间中操作的机器人的运动规划和操作,并且涉及可由机器人以高效的方式执行的鲁棒运动规划的计算高效生成(例如,减少甚至消除碰撞和意外停机),以及运动计划的实际执行情况的监测,并且在必要时可选地采取补救措施。This disclosure generally relates to motion planning and operation of robots operating in a shared workspace, and to the computationally efficient generation of robust motion plans that can be executed efficiently by the robot (e.g., reducing or even eliminating collisions and unexpected shutdowns), as well as the monitoring of the actual execution of the motion plans, and optionally taking remedial measures where necessary.
背景技术Background Technology
相关技术的描述Description of related technologies
采用两个或更多个机器人在共享工作空间中操作的应用有多种。例如,可以采用两个或更多个机器人在共享工作空间中的一个或更多个对象或工件上或与该对象或工件执行任务,例如,将螺栓拧到底盘上,其中,机器人的部分可能在运动范围内重叠。There are many applications that use two or more robots operating in a shared workspace. For example, two or more robots can be used to perform tasks on or with one or more objects or workpieces in a shared workspace, such as tightening bolts onto a chassis, where parts of the robots may overlap within their range of motion.
规划通常涉及任务规划和运动规划。例如,任务规划能够确定为了执行给定的任务,机器人需要在两个姿态之间移动(例如,从起始姿态到结束姿态)。相比之下,运动规划侧重于如何在两个姿态之间移动机器人。Planning typically involves task planning and motion planning. For example, task planning determines the movement a robot needs to make between two poses (e.g., from a starting pose to an ending pose) in order to perform a given task. In contrast, motion planning focuses on how to move the robot between two poses.
运动规划是机器人控制和机器人技术中的基本问题。运动规划指定了机器人能够从起始姿态、配置或状态转换到目的姿态、配置或状态所遵循的轨迹,通常是为了在不与共享空间中的任何障碍物发生碰撞,或者降低与共享空间中的任何障碍物发生碰撞的可能性下完成任务。运动规划的挑战涉及快速(即实时)执行运动规划的能力,同时可能考虑环境变化(例如,共享工作空间中障碍物的位置或方向变化)。挑战还包括使用相对低成本的设备,以相对低的能量消耗和有限的计算能力和/或存储空间(例如,存储器电路,例如在“处理器芯片上”电路)来执行运动规划。Motion planning is a fundamental problem in robot control and robotics. It specifies the trajectory a robot should follow to transition from an initial pose, configuration, or state to a desired pose, configuration, or state, typically to complete a task without colliding with any obstacles in a shared workspace, or to reduce the likelihood of such collisions. Challenges in motion planning involve the ability to execute motion plans quickly (i.e., in real-time), potentially taking into account environmental changes (e.g., changes in the position or orientation of obstacles in a shared workspace). Further challenges include performing motion planning using relatively low-cost equipment with relatively low energy consumption and limited computing power and/or storage space (e.g., memory circuitry, such as circuitry on a processor chip).
在共享工作空间(也称为工作单元或多机器人操作环境)中操作两个或更多个机器人会带来一类特定的问题。例如,运动计划应考虑并避免机器人或机器人的机器人附件在执行任务期间可能相互干扰的情况。Operating two or more robots in a shared workspace (also known as a work cell or multi-robot operation environment) presents a specific set of problems. For example, motion planning should consider and avoid situations where robots or robot attachments may interfere with each other during task execution.
在共享工作空间中操作多个机器人的一种方法能够称为任务级方法。工程师可以通过定义共享工作空间中机器人可能相互碰撞的部分(即,干扰区域),并对各个机器人进行编程,使得在任何给定时间点只有一个机器人处于共享工作空间的干扰区域,从而手动确保机器人不会发生碰撞。例如,当第一机器人开始移动到共享工作空间的干扰区域中时,该第一机器人会设置标志。控制器(例如,可编程逻辑控制器(PLC))读取该标志并防止其它机器人移动到共享工作空间的干扰区域,直到第一机器人在退出干扰区域时解除标志。这种方法直观、易于理解,但通常难以实施且耗时,并且可能不会产生优化的结果。由于这种方法使得机器人中的至少一个在相当长的时间内处于空闲状态,因此必然会导致工作吞吐量较低,即使空闲的机器人在技术上有可能在共享工作空间中执行有用的工作。One approach to operating multiple robots in a shared workspace can be called a task-level approach. Engineers can manually ensure that robots do not collide by defining areas within the shared workspace where they might collide (i.e., interference zones) and programming each robot so that only one robot is in the interference zone at any given time. For example, when the first robot begins to move into the interference zone, it sets a flag. A controller (e.g., a programmable logic controller (PLC) reads this flag and prevents other robots from moving into the interference zone until the first robot removes the flag when it exits the interference zone. This approach is intuitive and easy to understand, but it is often difficult to implement, time-consuming, and may not yield optimal results. Because this approach leaves at least one robot idle for a considerable period, it inevitably leads to low throughput, even if the idle robot could technically be performing useful work in the shared workspace.
在传统方法中,工程师团队通常会将问题分解,并相互独立地优化由此产生的更小的子问题(例如,将任务分配给机器人,对分配给每个机器人的任务进行排序,为每个机器人进行运动规划)。这可以采取迭代模拟运动来确保机器人/机器人附件不会相互碰撞,该模拟可能需要数小时的计算时间,并且可能无法得出优化的解决方案。此外,如果对共享工作空间的修改导致机器人/机器人附件之一的实际轨迹发生变化,则必须重新验证整个工作流程。显然这种方法不是最优的,并且通常需要专家经历缓慢的迭代过程,以试图找到能够产生良好结果的解决方案组合。在任何情况下,当在现实世界条件下操作的机器人执行运动规划时,这种方法通常无法确保无碰撞操作。In traditional approaches, engineering teams typically break down the problem and optimize the resulting smaller subproblems independently (e.g., assigning tasks to robots, prioritizing tasks for each robot, and performing motion planning for each robot). This involves iteratively simulating motion to ensure the robots/robot attachments don't collide, a simulation that can take hours of computation and may not yield an optimal solution. Furthermore, if modifications to the shared workspace cause a change in the actual trajectory of one of the robots/robot attachments, the entire workflow must be revalidated. Clearly, this approach is not optimal and often requires experts to go through a slow, iterative process trying to find a combination of solutions that produce good results. In any case, this approach generally cannot guarantee collision-free operation when robots operating under real-world conditions perform motion planning.
发明内容Summary of the Invention
本文描述了为在共享工作空间中操作的机器人产生运动计划的各种方法和装置,运动计划包括具有相关联的可接受滞后时间的标称轨迹(例如,指定的轨迹),其中,在实际操作期间符合可接受滞后时间可确保无自碰撞操作(即,一个机器人与其自身的碰撞以及一个机器人与机器人系统的其它机器人的碰撞)。例如,标称轨迹能够表示相应的无碰撞路径。本文描述了各种方法和装置,这些方法和装置监测机器人相对于可接受滞后时间的实际操作(例如,实际轨迹),并且在必要时可选地采取一个或更多个补救措施(例如,实际滞后时间接近或超过阈值,诸如相应的可接受滞后时间)。This document describes various methods and apparatuses for generating motion plans for robots operating in a shared workspace. The motion plans include a nominal trajectory (e.g., a specified trajectory) with associated acceptable lag times, wherein conforming to the acceptable lag times during actual operation ensures collision-free operation (i.e., collisions between a robot and itself, and collisions between a robot and other robots in a robot system). For example, the nominal trajectory can represent a corresponding collision-free path. This document also describes various methods and apparatuses that monitor the robot's actual operation relative to the acceptable lag time (e.g., the actual trajectory) and optionally take one or more remedial measures as necessary (e.g., when the actual lag time approaches or exceeds a threshold, such as the corresponding acceptable lag time).
在国际专利申请PCT/US2021/013610(公开号为WO2021150439A1)中描述了一种特别有利的方法,该申请描述了一种生成优化的多机器人运动计划的系统。更具体地,通过最小化或试图最小化与系统性能相关的一些代价函数(例如,碰撞的概率或可能性)而优化运动计划。由于运动计划为机器人系统指定了标称轨迹,因此每个运动计划也是基于时间的。标称轨迹是机器人系统的一个或更多个机器人的每个可移动部分的姿态、配置或状态的指定有序序列,并且按时间参数化(例如,在整个轨迹的每个时间单位)。例如,标称轨迹能够表示相应的无碰撞路径。由于机器人系统能够包括多个单独的机器人,因此运动计划能够是“多机器人”。A particularly advantageous method is described in international patent application PCT/US2021/013610 (publication number WO2021150439A1), which describes a system for generating optimized multi-robot motion plans. More specifically, the motion plans are optimized by minimizing or attempting to minimize some cost function (e.g., the probability or likelihood of collisions) related to system performance. Since the motion plans specify a nominal trajectory for the robot system, each motion plan is also time-based. A nominal trajectory is a specified ordered sequence of poses, configurations, or states of each movable part of one or more robots in the robot system, and is parameterized by time (e.g., in each time unit throughout the trajectory). For example, a nominal trajectory can represent a corresponding collision-free path. Since the robot system can include multiple individual robots, the motion plans can be “multi-robot.”
运动计划能够用一组离散的机器人轨迹来表示:Trj(t)={trj_r(t),其中r∈{1…N},t∈{0,ΔT,2ΔT,…,T}},其中,N表示机器人系统的机器人总数,ΔT表示样本时间步长,T表示运动计划的总持续时间。对于足够小的ΔT值,Trj(t)确保相对于机器人系统的所有机器人无碰撞。换句话说,由具有两个或更多个机器人的机器人系统的一组轨迹Trj(t)指定的运动不会导致自碰撞(即,一个机器人与其自身的碰撞以及一个机器人与机器人系统的其它机器人的碰撞)。尽管能够对共享工作空间中的其它对象或障碍物进行碰撞评估,但是机器人系统的该组轨迹Trj(t)不一定不会相对于环境中的其它对象或障碍物发生碰撞。在模拟中能够容易地检查或审查这种无自碰撞条件;并且一旦检查或审查,就可以认为执行由运动计划规定的运动是安全的。A motion plan can be represented by a set of discrete robot trajectories: Trj(t) = {trj_r(t), where r ∈ {1…N}, t ∈ {0, ΔT, 2ΔT, …, T}}, where N represents the total number of robots in the robot system, ΔT represents the sample time step, and T represents the total duration of the motion plan. For a sufficiently small ΔT value, Trj(t) ensures no collisions with any of the robots in the robot system. In other words, the motion specified by a set of trajectories Trj(t) for a robot system with two or more robots will not result in self-collisions (i.e., a robot colliding with itself and with other robots in the robot system). Although collision assessments can be performed for other objects or obstacles in the shared workspace, the set of trajectories Trj(t) for the robot system is not necessarily guaranteed to be collision-free with respect to other objects or obstacles in the environment. This self-collision-free condition can be easily checked or reviewed in the simulation; and once checked or reviewed, the execution of the motion specified by the motion plan can be considered safe.
然而,在实践中,在由包括两个或更多机器人的物理机器人系统实际执行运动计划期间,许多因素会对机器人之间的同步产生不利影响。例如,这些因素可能包括:信号通信、控制延迟、传感器噪声、数值近似误差等。这能够导致实际的物理机器人系统偏离由运动计划指定的轨迹Trj(t)。除了用于生成和审查一个或更多个运动规划的模拟环境与真实物理机器人系统的实际操作之间的这种“现实差距”外,许多其它因素也可能导致机器人系统偏离提供一组标称轨迹的运动计划。例如,在一些情况下,任务的执行可能需要比预期更多的时间来完成,因此,机器人可能需要在特定位置(例如,目的位置,以及因此处于特定姿态、配置或状态)持续或停留比运动计划中的轨迹指定的时间更长的时间。偏离经过审查并被认为是安全的特定运动计划可能是危险的,并可能危及机器人系统的安全。However, in practice, during the actual execution of motion plans by a physical robotic system comprising two or more robots, numerous factors can adversely affect synchronization between the robots. These factors may include, for example, signal communication, control delays, sensor noise, numerical approximation errors, etc. This can cause the actual physical robotic system to deviate from the trajectory Trj(t) specified by the motion plan. Besides this "reality gap" between the simulation environment used to generate and review one or more motion plans and the actual operation of the real physical robotic system, many other factors can also cause the robot system to deviate from the motion plan that provides a set of nominal trajectories. For example, in some cases, task execution may require more time to complete than expected; therefore, the robot may need to remain or stay in a particular location (e.g., the destination location, and thus in a particular pose, configuration, or state) for a longer period than specified in the trajectory of the motion plan. Deviating from a specific motion plan that has been reviewed and deemed safe can be dangerous and may jeopardize the safety of the robotic system.
由运动计划指定的一组轨迹Trj(t)在本文中被命名为一组标称轨迹,以指示这些轨迹是指定轨迹。由运动计划指定的单个轨迹在本文中被命名为标称轨迹。由机器人的实际物理运动执行的一组轨迹在本文中被命名为一组实际轨迹,以区别与指定轨迹或标称轨迹。由机器人的实际物理运动执行的单个轨迹在本文中被称为实际轨迹。A set of trajectories Trj(t) specified by the motion plan is referred to as a set of nominal trajectories in this document to indicate that these trajectories are specified trajectories. A single trajectory specified by the motion plan is referred to as a nominal trajectory in this document. A set of trajectories executed by the robot's actual physical motion is referred to as a set of actual trajectories in this document to distinguish them from specified or nominal trajectories. A single trajectory executed by the robot's actual physical motion is referred to as an actual trajectory in this document.
本文描述的方法有利地扩展了安全操作制度,使其超出与一个或更多个运动计划的一组标称轨迹或标称轨迹相关的安全操作制度,例如,通过计算运动计划的一个或更多个标称轨迹的邻域,机器人系统能够在该邻域中操作而不会导致上文描述的自碰撞。对于将在共享工作空间中操作的每个机器人,将计算机器人可能执行的一个或更多个标称轨迹的最大可接受滞后时间(例如,时间延迟或“滞后”)。在线执行期间(即,运行时间),监测每个机器人的实际滞后时间。如果实际滞后时间在定义的裕度或阈值内,由于确保了机器人之间的无自碰撞移动,因此认为继续执行运动计划是安全的。如果机器人中的任何机器人的实际滞后时间超过相应的裕度或阈值,那么安全性就会受到损害,因为不再能确保无自碰撞操作。可选地,基于处理器的系统能够在这种情况下选择和/或采取一个或更多个补救措施。The method described herein advantageously extends the safety operating regime beyond a set of nominal trajectories or associated with one or more motion plans. For example, by calculating the neighborhood of one or more nominal trajectories of the motion plan, the robotic system is able to operate within that neighborhood without causing the self-collisions described above. For each robot to operate in a shared workspace, the maximum acceptable lag time (e.g., time delay or “hysteresis”) of one or more nominal trajectories that the robot may execute is calculated. During online execution (i.e., runtime), the actual lag time of each robot is monitored. If the actual lag time is within a defined margin or threshold, it is considered safe to continue executing the motion plan because self-collision-free movement between robots is ensured. If the actual lag time of any robot exceeds the corresponding margin or threshold, then safety is compromised because self-collision-free operation can no longer be guaranteed. Optionally, a processor-based system can select and/or take one or more remedial measures in this case.
附图说明Attached Figure Description
在附图中,相同的附图标记标识类似的元件或动作。附图中元件的尺寸和相对位置不一定按比例绘制。例如,各种元件的角度和形状没有按比例绘制,该类元件中的部分被任意放大和定位,以提高附图的易读性。此外,所绘制的元件的特定形状并不旨在传达关于特定元件的实际形状的任何信息,而仅是为了在附图中易于识别而选择的。In the accompanying drawings, the same reference numerals identify similar elements or actions. The dimensions and relative positions of elements in the drawings are not necessarily drawn to scale. For example, the angles and shapes of various elements are not drawn to scale, and parts of such elements are arbitrarily enlarged and positioned to improve the readability of the drawings. 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 shared workspace and a configuration optimization system for configuring robots according to an illustrated embodiment, wherein multiple robots operate in a shared workspace to perform tasks.
图2是根据至少另一示出的实施方式的至少第一机器人和机器人控制系统的功能框图,其中机器人控制系统通信地耦合以控制第一机器人的操作,其中,机器人控制系统包括运动规划器,该运动规划器有利地确定并采用运动规划中机器人的相应标称轨迹的可接受滞后时间,并且可选地监测至少第一机器人的实际操作,将实际滞后时间与裕度或阈值(例如,可接受滞后时间)进行比较,并且可选地,在必要时采取补救措施。Figure 2 is a functional block diagram of at least a first robot and a robot control system according to at least another illustrated embodiment, wherein the robot control system is communicatively coupled to control the operation of the first robot, wherein the robot control system includes a motion planner that advantageously determines and adopts an acceptable lag time for a corresponding nominal trajectory of the robot in motion planning, and optionally monitors the actual operation of at least the first robot, compares the actual lag time with a margin or threshold (e.g., acceptable lag time), and optionally takes remedial measures if necessary.
图3示出了根据至少一个示出的实施方式的基于处理器的系统执行运动规划以控制将在共享工作空间中操作的机器人的操作方法,其中,基于其它机器人的标称轨迹确定每个机器人的可接受滞后时间,而不必考虑其它机器人的标称轨迹中滞后时间的影响,并且生成或选择指定标称轨迹的运动计划,该标称轨迹与相应的可接受滞后时间相关联。Figure 3 illustrates a method for performing motion planning to control the operation of a robot to operate in a shared workspace according to at least one of the illustrated embodiments of a processor-based system, wherein an acceptable lag time for each robot is determined based on the nominal trajectories of other robots without taking into account the influence of lag times in the nominal trajectories of other robots, and a motion plan for a specified nominal trajectory is generated or selected, which is associated with a corresponding acceptable lag time.
图4示出了根据至少一个示出的实施方式的基于处理器的系统执行运动规划以控制将在共享工作空间中操作的机器人的操作方法,其中,基于其它机器人的标称轨迹确定每个机器人的可接受滞后时间,同时必须考虑其它机器人的标称轨迹中滞后时间的影响,并且生成或选择指定标称轨迹的运动计划,该标称轨迹与相应的可接受滞后时间相关联。Figure 4 illustrates a method for executing motion planning to control the operation of a robot that will operate in a shared workspace according to at least one of the illustrated embodiments of a processor-based system, wherein an acceptable lag time for each robot is determined based on the nominal trajectories of other robots, while taking into account the impact of the lag time in the nominal trajectories of other robots, and a motion plan for a specified nominal trajectory is generated or selected, which is associated with the corresponding acceptable lag time.
图5示出了根据至少一个示出的实施方式的基于处理器的系统的操作方法,用于为将在共享工作空间中操作的多个机器人中的每个机器人的一个或更多个轨迹生成扫掠体积,可选地,该方法能够用于执行图3、4和/或6的方法。Figure 5 illustrates an operational method of a processor-based system according to at least one illustrated embodiment for generating sweep volumes for one or more trajectories of each of a plurality of robots operating in a shared workspace. Optionally, the method can be used to perform the methods of Figures 3, 4 and/or 6.
图6示出了根据至少一个示出的实施方式的基于处理器的系统的操作方法,用于对多个机器人和机器人中的每个机器人的多个轨迹执行碰撞评估,其中,机器人或其部分沿轨迹的移动被表示为扫掠体积,以及碰撞评估能够被用于确定在共享工作空间中操作的一个或更多个机器人的可接受滞后时间。Figure 6 illustrates an operational method of a processor-based system according to at least one of the illustrated embodiments, for performing collision assessments on multiple robots and multiple trajectories of each robot, wherein the movement of a robot or a portion thereof along the trajectory is represented as a sweep volume, and the collision assessment can be used to determine acceptable hysteresis times for one or more robots operating in a shared workspace.
图7示出了根据至少一个示出的实施方式的基于处理器的系统的操作方法,用于至少部分地基于可接受滞后时间,以及可选地至少部分地基于诸如表示为代价或代价函数的其它标准,为将在共享工作空间中操作的一个或更多个机器人生成或选择运动计划。Figure 7 illustrates an operational method of a processor-based system according to at least one of the illustrated embodiments, for generating or selecting motion plans for one or more robots to operate in a shared workspace, based at least in part on an acceptable lag time and optionally at least in part on other criteria such as cost or cost function.
图8示出了根据至少一个示出的实施方式的基于处理器的系统的操作方法,用于至少部分地基于可接受滞后时间来控制在共享工作空间中操作的机器人的操作。Figure 8 illustrates an operation method of a processor-based system according to at least one of the illustrated embodiments, for controlling the operation of a robot operating in a shared workspace based at least in part on an acceptable lag time.
具体实施方式Detailed Implementation
在下文的描述中,阐述了某些具体细节,以便提供对各种公开的实施方式的透彻理解。然而,相关领域的技术人员将认识到,该实施方式可以在没有这些具体细节中的一个或更多个的情况下实施,或使用其它方法、部件、材料等来实施。在其它情况下,未详细示出或描述与计算机系统、机器人、致动器系统和/或通信网络相关联的公知结构,以避免不必要地模糊对实施方式的描述。在其它情况下,未详细描述用于生成一个或更多个对象以及类似物的感知数据和体积表示的公知的计算机视觉方法和技术,以避免不必要地模糊对实施方式的描述。In the following description, certain specific details are set forth to provide a thorough understanding of the various disclosed embodiments. However, those skilled in the art will recognize that the embodiments can 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, robots, actuator systems, and/or communication networks have not been 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 and the like have not been described in detail to avoid unnecessarily obscuring the description of the embodiments.
除非上下文另有要求,否则在整个说明书和所附的权利要求书中,词语“包括”及其变体,例如“包括”和“包含”应被解释为开放的包括含义,即“包括,但不限于”。Unless the context otherwise requires, throughout the specification and the appended claims, the word “comprising” and its variations, such as “including” and “comprise”, shall be interpreted as having an open-ended meaning of “including, but not limited to”.
本说明书通篇提及的“一个实施方式”或“实施方式”,或“一个实施例”或“实施例”意味着结合该实施方式描述的特定特征、结构或特性包含在至少一个实施方式或至少一个实施实施例中。因此,在本说明书的各处出现的短语“一个实施方式”或“实施方式”或“在一个实施例中”或“在实施例中”不一定都指代同一实施方式或实施例。此外,特定特征、结构或特性可以在一个或更多个实施方式或实施例中以任何合适的方式组合。Throughout this specification, the terms "one embodiment" or "implementation," or "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 implementation. Therefore, the phrases "one embodiment" or "implementation," "in one embodiment," or "in an embodiment" appearing throughout this specification do not necessarily refer to the same embodiment or example. Furthermore, a particular feature, structure, or characteristic may be combined in any suitable manner in one or more embodiments or examples.
除非内容另有明确指示,否则在本说明书和所附权利要求中数量未被限定的元素意指存在至少一个该元素。还应指出,除非内容另有明确指示,否则术语“或者”通常用来包括“和/或”的意义。Unless otherwise expressly indicated in the content, an element whose quantity is not limited in this specification and the appended claims means that at least one of that element is present. It should also be noted that, unless otherwise expressly indicated in the content, the term "or" is generally used to include the meaning of "and/or".
如本说明书和所附权利要求书中使用的,术语“优化”及其变体意味着正在准备、生成或产生改进的结果,或者已经准备、生成或产生了改进的结果。这些术语是在相对意义上使用的,并且不一定意味着已经准备、生成或产生了绝对最优的值。As used in this specification and the appended claims, the term "optimization" and its variations mean that an improved result is being prepared, generated, or produced, or that an improved result has already been prepared, generated, or produced. These terms are used in a relative sense and do not necessarily mean that an absolutely optimal value has been prepared, generated, or produced.
如本说明书和所附权利要求书中使用的,术语“工作空间”或“共享工作空间”用于指代两个或更多个机器人在其中操作的操作环境,共享工作空间中的一部分或更多部分是机器人可能在其中潜在相互碰撞的体积,因此这些部分可以被命名为干扰区域。操作环境可能包括障碍物(即,机器人要避免与其碰撞的物品)和/或工件(即,机器人需要与之交互或作用或在其上作用的物品)。As used in this specification and the appended claims, the term "workspace" or "shared workspace" refers to an operating environment in which two or more robots operate, and a portion or more of the shared workspace is the volume in which the robots may potentially collide with each other; therefore, these portions may be designated as interference areas. The operating environment may include obstacles (i.e., objects that the robots must avoid colliding with) and/or workpieces (i.e., objects that the robots need to interact with or act upon).
如本说明书和所附权利要求书中使用的,术语“任务”用于指机器人从姿态A转换到姿态B的机器人任务,优选地不与其环境中的障碍物碰撞。该任务可能涉及抓取或松开物品、移动或放下物品、旋转物品或取回或放置物品。从姿态A到姿态B的转换可以可选地包括在一个或更多个中间姿态之间的转换。As used in this specification and the appended claims, the term "task" refers to a robotic task in which the robot transitions from posture A to posture B, preferably without colliding with obstacles in its environment. This task may involve grasping or releasing 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.
如本说明书和所附权利要求书中使用的,术语“一个轨迹”或“多个轨迹”用于指代一个或更多个机器人的姿态或配置或状态的有序序列,该序列按时间参数化,一个或更多个机器人或其至少一部分能够通过该序列移动,例如,执行任务。轨迹优选地在相应机器人的配置空间(也称为C-空间)中表示,但是可替代地,也能够在共享工作空间的真实空间或真实世界空间中表示。轨迹能够包括一个或更多个姿态的停顿、方向的改变或甚至逆转,并且在方向、时间、速度或加速度方面不一定是平滑的。As used in this specification and the appended claims, the terms "a trajectory" or "multiple trajectories" refer to an ordered sequence of poses, configurations, or states of one or more robots, parameterized in time, through which one or more robots, or at least a portion thereof, can move, for example, to perform a task. Trajectories are preferably represented in the configuration space (also known as C-space) of the respective robots, but alternatively, they can also be represented in a shared workspace or real-world space. Trajectories can include pauses, changes in orientation, or even reversals of one or more poses, and are not necessarily smooth in terms of orientation, time, velocity, or acceleration.
如本说明书和所附权利要求书中使用的,术语“一个标称轨迹”或“多个标称轨迹”用于指代“指定”的一个或更多个轨迹。如本说明书和所附权利要求书中使用的,术语“一个实际轨迹”或“多个实际轨迹”与“标称轨迹”用于指代物理机器人的物理运动实际执行的一个或更多个轨迹,与“一个标称轨迹”或“多个标称轨迹”区别开来。在某些情况下,“一个实际轨迹”或“多个实际轨迹”可能与“一个标称轨迹”或“多个标称轨迹”相匹配,尽管在许多情况下,两者之间会存在差异,例如,由于“一个实际轨迹”或“多个实际轨迹”在时间上滞后于“一个标称轨迹”或“多个标称轨迹”。As used in this specification and the appended claims, the terms "a nominal trajectory" or "a plurality of nominal trajectories" are used to refer to one or more trajectories "designated". As used in this specification and the appended claims, the terms "a practical trajectory" or "a plurality of practical trajectories" are used to refer to one or more trajectories actually performed by the physical motion of a physical robot, and are distinguished from "a nominal trajectory" or "a plurality of nominal trajectories". In some cases, "a practical trajectory" or "a plurality of practical trajectories" may match "a nominal trajectory" or "a plurality of nominal trajectories", although in many cases there will be differences between the two, for example, because "a practical trajectory" or "a plurality of practical trajectories" lags behind "a nominal trajectory" or "a plurality of nominal trajectories" in time.
如本说明书和所附权利要求书中使用的,当在包括两个或更多个机器人的机器人系统的情境中使用或指代时,术语“自碰撞”包括以下两者:i)一个机器人与其自身的碰撞,以及ii)一个机器人与机器人系统的其它机器人的碰撞。如本说明书和所附权利要求书中使用的,当在单个机器人的情境中使用或指代时,术语“自碰撞”包括一个机器人与其自身的碰撞。As used in this specification and the appended claims, when used or referred to in the context of a robot system comprising two or more robots, the term "self-collision" includes both: i) a collision between a robot and itself, and ii) a collision between a robot and other robots in the robot system. As used in this specification and the appended claims, when used or referred to in the context of a single robot, the term "self-collision" includes a collision between a robot and itself.
本文提供的本公开的标题和摘要仅仅是为了方便,并不解释实施例的范围或含义。The headings and abstracts provided herein are for convenience only and do not define the scope or meaning of the embodiments.
本文所述的方法通过确定机器人系统的物理机器人能够操作的可接受滞后时间的同时,仍然确保机器人系统的这种操作不会发生自碰撞,从而有利地扩展了机器人操作的安全性,超出了由运动计划的标称轨迹所确保的安全性。在至少一些实施方式中,对于将在共享工作空间中操作的机器人系统的每个机器人,为一个或更多个标称轨迹中的每个标称轨迹计算最大可接受滞后时间(例如,时间延迟或“滞后”)。有利地,该最大可接受滞后时间能够在机器人执行运动计划之前的配置时间内计算出来。在线执行期间(即,运行时、配置时间之后),监测每个机器人的实际运动,包括监测每个机器人沿其实际轨迹的实际滞后时间。如果实际滞后时间值在定义的裕度或阈值内(例如,可接受滞后时间),则由于能够确保无自碰撞移动,因此可以认为继续执行运动计划是安全的。如果机器人的实际滞后时间超过了相应的裕度或阈值,那么由于不能够再确保无自碰撞操作,因此安全性就会受到损害。例如,即使只有一个机器人正在经历超过相应裕度或阈值的实际滞后时间,所有机器人的安全性也可能被认为受到不利影响。可选地,基于处理器的系统能够在这种情况下选择和/或采取一个或更多个补救措施。The method described herein advantageously extends the safety of robot operation beyond that guaranteed by the nominal trajectories of the motion plan by determining an acceptable lag time that the physical robot of the robotic system can operate with, while still ensuring that such operation of the robotic system does not result in self-collision. In at least some embodiments, for each robot of the robotic system operating in a shared workspace, a maximum acceptable lag time (e.g., time delay or “lag”) is calculated for each of one or more nominal trajectories. Advantageously, this maximum acceptable lag time can be calculated within the configuration time before the robot executes the motion plan. During online execution (i.e., at runtime, after the configuration time), the actual movement of each robot is monitored, including the actual lag time of each robot along its actual trajectory. If the actual lag time value is within a defined margin or threshold (e.g., acceptable lag time), then it can be considered safe to continue executing the motion plan because self-collision-free movement can be ensured. If the robot’s actual lag time exceeds the corresponding margin or threshold, then safety is compromised because self-collision-free operation can no longer be guaranteed. For example, even if only one robot is experiencing an actual lag time exceeding a corresponding margin or threshold, the safety of all robots may be considered adversely affected. Optionally, a processor-based system can select and/or take one or more remedial measures in such cases.
图1示出了根据一个示出的实施方式的机器人系统100,其包括多个机器人102a、102b、102c(统称为102),这些机器人在共享工作空间104(也被称为多机器人环境)中操作以执行任务。在图1的机器人系统100中,作为优化的一部分,确定可接受滞后时间,并且将可接受滞后时间与包括机器人的标称轨迹的优化的运动计划一起提供给一个或更多个机器人控制系统。Figure 1 illustrates a robot system 100 according to one illustrated embodiment, comprising multiple robots 102a, 102b, 102c (collectively referred to as 102) operating in a shared workspace 104 (also referred to as a multi-robot environment) to perform tasks. In the robot system 100 of Figure 1, as part of optimization, an acceptable lag time is determined and provided to one or more robot control systems along with an optimized motion plan including the robot's nominal trajectory.
多个机器人可以被配置为执行一组任务。任务可以被指定为任务计划。任务计划可以指定需要由N个机器人执行的T个任务。任务计划能够被建模为每个机器人的向量,其中,向量是相应机器人要执行的任务的有序列表(例如,{任务7,任务2,任务9})。任务向量还能够可选地包括停留持续时间,该停留持续时间指定机器人或其部分应该停留在给定配置或目标处的持续时间。任务向量还可以指定回家姿态(home pose)和/或与解决任务没有直接关系的其它“功能姿态”(例如,“让路”或存储姿态)。姿态可以在机器人的C-空间中指定。Multiple robots can be configured to perform a set of tasks. Tasks can be specified as task plans. A task plan can specify T tasks that need to be performed by N robots. The task plan can be modeled as a vector for each robot, where the vector is an ordered list of tasks to be performed by the corresponding robot (e.g., {task 7, task 2, task 9}). The task vector can also optionally include a dwell duration, which specifies the duration for which the robot or a portion thereof should remain at a given configuration or objective. The task vector can also specify a home pose and/or other "functional poses" not directly related to task resolution (e.g., "give way" or store pose). Pose can be specified in the robot's C-space.
机器人102能够采取多种形式中的任何一种。通常,机器人102将采取或具有一个或更多个机器人附件103(仅一个被标出)和机器人附件103从其延伸的基座105(仅一个被标出)的形式。机器人102可以包括具有一个或更多个关节的一个或更多个连杆,以及耦合并可操作以响应于控制或驱动信号来移动连杆的致动器(例如,电动马达、步进马达、螺线管、气动致动器或液压致动器)。例如,气动致动器可以包括一个或更多个活塞、气缸、阀门、气体储存器和/或压力源(例如压缩机、鼓风机)。例如,液压致动器可以包括一个或更多个活塞、气缸、阀门、液体储存器(例如,低压缩性液压流体)和/或压力源(例如,压缩机、鼓风机)。机器人系统100可以采用其它形式的机器人102,例如,自动车辆。Robot 102 can take any of a variety of forms. Typically, robot 102 will take the form of one or more robot attachments 103 (only one is shown) and a base 105 (only one is shown) extending therefrom the robot attachments 103. Robot 102 may include one or more links having one or more joints, and actuators (e.g., electric motors, stepper motors, solenoids, pneumatic actuators, or hydraulic actuators) coupled and operable to move the links in response to control or drive signals. For example, a pneumatic actuator may include one or more pistons, cylinders, valves, gas reservoirs, and/or pressure sources (e.g., compressors, blowers). For example, a hydraulic actuator may include one or more pistons, cylinders, valves, liquid reservoirs (e.g., low-compressibility hydraulic fluid), and/or pressure sources (e.g., compressors, blowers). Robot system 100 may take the form of other forms of robot 102, such as autonomous vehicles.
共享工作空间104通常表示机器人102可以在其中操作和移动的三维空间,尽管在某些有限的实施方式中,共享工作空间104可以表示二维空间。共享工作空间104是机器人102的至少一部分可以在空间和时间上重叠,或者如果不控制运动以避免碰撞,则会发生碰撞的体积或区域。值得注意的是,共享工作空间104是物理空间或体积,其中物理空间或体积的位置和方向可以经由例如相对于某个参考系(例如,图1中示出的由正交轴X、Y和Z表示的参考系)的笛卡尔坐标系来方便地来表示。还应注意,共享工作空间104的参考系不同于机器人102中的任何机器人的相应“配置空间”或“C-空间”,C-空间通常由机器人102中的任何机器人的相应参考系中的一组关节位置、方向或配置来表示。The shared workspace 104 generally represents a three-dimensional space in which the robot 102 can operate and move, although in some limited embodiments, the shared workspace 104 may represent a two-dimensional space. The shared workspace 104 is a volume or region in which at least a portion of the robot 102 may overlap spatially and temporally, or where collisions would occur if motion were not controlled to avoid them. It is noteworthy that the shared workspace 104 is a physical space or volume in which the position and orientation of the physical space or volume can be conveniently represented, for example, via a Cartesian coordinate system relative to a reference frame (e.g., the reference frame represented by orthogonal axes X, Y, and Z shown in FIG. 1). It should also be noted that the reference frame of the shared workspace 104 differs from the corresponding “configuration space” or “C-space” of any robot in the robot 102, which is typically represented by a set of joint positions, orientations, or configurations in the corresponding reference frame of any robot in the robot 102.
如本文描述的,当从另一机器人102b的角度考虑时(即,当为另一个机器102b执行运动规划时),机器人102a或其一部分可能构成障碍物。共享工作空间104还可能包括其它障碍物,例如机械部件(例如传送带106)、柱子、支柱、墙壁、天花板、地板、桌子、人和/或动物。共享工作空间104还可以包括一个或更多个工作项目或工件,机器人102操纵该工作项目或工件(例如一个或更多个包裹、包装、紧固件、工具、项目或其它对象)以作为执行任务的一部分。As described herein, robot 102a or a portion thereof may constitute an obstacle when considered from the perspective of another robot 102b (i.e., when performing motion planning for another robot 102b). The shared workspace 104 may also include other obstacles such as mechanical components (e.g., conveyor belt 106), pillars, supports, walls, ceilings, floors, tables, people, and/or animals. The shared workspace 104 may also include one or more work items or workpieces that robot 102 manipulates (e.g., one or more packages, packs, fasteners, tools, items, or other objects) as part of performing a task.
可选地,机器人系统100包括一个或更多个基于处理器的多机器人配置优化系统108(图1示出了一个)。可选的一个或更多个多机器人配置优化系统108接收一组输入109,并生成指定了机器人102的配置的一个或更多个解决方案作为输出111,其包括工作单元布局(例如,每个机器人102的相应基础位置和方向)、一个或更多个任务计划(例如,机器人102中的每个的相应任务计划),以及可选的一个或更多个运动计划,这些运动计划指定或包括机器人102a至102c的一个或更多个标称轨迹(例如,机器人102中的每个的相应标称轨迹)以及标称轨迹中的每个标称轨迹的可接受滞后时间。输出111的一个或更多个分量至少在某种程度上可以被优化。Optionally, the robot system 100 includes one or more processor-based multi-robot configuration optimization systems 108 (one is shown in FIG. 1). The optional multi-robot configuration optimization system 108 receives a set of inputs 109 and generates one or more solutions as outputs 111 specifying the configuration of the robots 102. These outputs include a work cell layout (e.g., the corresponding base position and orientation of each robot 102), one or more task plans (e.g., a corresponding task plan for each of the robots 102), and optional one or more motion plans specifying or including one or more nominal trajectories of robots 102a to 102c (e.g., a corresponding nominal trajectory for each of the robots 102) and an acceptable hysteresis time for each of the nominal trajectories. One or more components of the output 111 can be optimized at least to some extent.
可选的一个或更多个多机器人配置优化系统108可以包括种群生成器110、多机器人环境模拟器112、多机器人优化引擎114和可接受滞后时间评估器115。The optional multi-robot configuration optimization system 108 may include a population generator 110, a multi-robot environment simulator 112, a multi-robot optimization engine 114, and an acceptable lag time estimator 115.
种群生成器110基于所提供的输入109生成一组候选解决方案116。候选解决方案116表示配置问题的可能解决方案(即,如何配置共享工作空间104中的机器人102以完成一组任务)。任何给定的候选解决方案116实际上可能是可行的,也可能不是可行的。也就是说,初始候选可能是无效的(例如,机器人处于不可能的地方,具有无法到达的目标,或者会导致碰撞的不可行的任务计划)。在某些实施方式中,种群生成器可能会尝试找到更好的候选解决方案。Population generator 110 generates a set of candidate solutions 116 based on the provided input 109. Candidate solutions 116 represent possible solutions to the configuration problem (i.e., how to configure the robots 102 in the shared workspace 104 to complete a set of tasks). Any given candidate solution 116 may or may not be feasible. That is, the initial candidates may be invalid (e.g., the robots are in impossible locations, have unreachable goals, or have infeasible task plans that would lead to collisions). In some implementations, the population generator may attempt to find better candidate solutions.
多机器人环境模拟器112基于每个候选解决方案对工作空间或多机器人环境进行建模,以确定某些属性,例如完成任务所需的时间量、完成任务时的碰撞概率或比率、由候选解决方案指定的特定配置的可行性或不可行性。例如,多机器人环境模拟器112可以经由一个或更多个代价函数生成的代价在代价方面反映这些属性。The multi-robot environment simulator 112 models the workspace or multi-robot environment based on each candidate solution to determine certain properties, such as the amount of time required to complete the task, the probability or ratio of collisions when completing the task, and the feasibility or infeasibility of a particular configuration specified by the candidate solution. For example, the multi-robot environment simulator 112 may reflect these properties in terms of cost through costs generated by one or more cost functions.
例如,代价或代价函数能够表示碰撞的概率或可能性。可选地,代价或代价函数能够表示以下中的一个或更多个:可接受滞后时间或“鲁棒性”、碰撞的严重程度、执行或完成对应于标称轨迹的运动的能量消耗或损耗和/或时间或滞后。在一些实施方式中,代价或代价函数表示给定机器人的给定标称轨迹的确定的可接受滞后时间。所确定的可接受滞后时间表示在执行相应的标称轨迹,同时仍然保持、确保甚至保证相对于自身以及相对于在共享工作空间或工作单元中操作的其它机器人的至少无自碰撞移动的情况下,可能引起的最大或近似最大或优化的滞后时间。因此,滞后时间能够表示在不放弃安全系数(例如,无自碰撞操作)的情况下,能够被引入标称轨迹的实际执行或实际执行标称轨迹时引起的滞后量,从而因此增强了相应运动计划的鲁棒性。例如,能够经由使用标称轨迹模拟机器人操作来检查或审查安全系数。因此,如果机器人的实际轨迹滞后于标称轨迹超过指定的裕度或阈值(例如,可接受滞后时间),则无法再确保无碰撞操作。For example, a cost or cost function can represent the probability or likelihood of a collision. Optionally, a cost or cost function can represent one or more of the following: acceptable lag time or "robustness," the severity of a collision, the energy consumption or loss and/or time or lag in executing or completing a motion corresponding to a nominal trajectory. In some implementations, the cost or cost function represents a determined acceptable lag time for a given nominal trajectory of a given robot. The determined acceptable lag time represents the maximum or near-maximum or optimized lag time that may result from executing the corresponding nominal trajectory while still maintaining, ensuring, or even guaranteeing at least no self-collision movement relative to itself and relative to other robots operating in a shared workspace or work cell. Thus, lag time can represent the amount of lag that can be introduced into the actual execution of or actual execution of the nominal trajectory without sacrificing a safety factor (e.g., no self-collision operation), thereby thus enhancing the robustness of the corresponding motion plan. For example, the safety factor can be checked or reviewed by simulating robot operation using the nominal trajectory. Therefore, if the robot's actual trajectory lags behind the nominal trajectory by more than a specified margin or threshold (e.g., acceptable lag time), collision-free operation can no longer be guaranteed.
多机器人优化引擎114至少部分地基于关联代价119来评估候选解决方案,并且有利地跨一组两个或更多个非同质参数进行协同优化,例如,跨以下中的两个或更多个参数:机器人的相应基本位置和方向、将任务分配给相应的机器人、机器人的相应目标序列和/或连续目标之间的相应轨迹或路径(例如,无碰撞轨迹或路径)。连续目标之间的直线轨迹可用于简化说明,但轨迹不一定是直线轨迹。The multi-robot optimization engine 114 evaluates candidate solutions at least in part based on association costs 119 and advantageously performs cooperative optimization across a set of two or more non-homogeneous parameters, for example, across two or more of the following parameters: the corresponding basic position and orientation of the robots, the assignment of tasks to the corresponding robots, the corresponding sequence of targets for the robots, and/or the corresponding trajectories or paths (e.g., collision-free trajectories or paths) between consecutive targets. Straight-line trajectories between consecutive targets may be used for simplification, but the trajectories are not necessarily straight-line trajectories.
输入109可以包括表示或表征操作环境或共享工作空间104的一个或更多个静态环境模型,例如,表示地板、墙壁、天花板、柱子、其它障碍物等。操作环境或共享工作空间104可以由一个或更多个模型表示,例如,表示操作环境中的地板、墙壁、天花板、障碍物和其它对象的几何模型(例如,点云)。例如,可以用笛卡尔坐标表示该模型。Input 109 may include one or more static environment models representing or characterizing the operating environment or shared workspace 104, such as representing floors, walls, ceilings, columns, other obstacles, etc. The operating environment or shared workspace 104 may be represented by one or more models, such as geometric models (e.g., point clouds) representing floors, walls, ceilings, obstacles, and other objects in the operating environment. For example, the model may be represented using Cartesian coordinates.
输入109可以包括表示或表征机器人102中的每个的一个或更多个机器人模型,例如,指定几何形状和运动学,例如,尺寸或长度、连杆数量、关节数量、关节类型、运动范围、速度限制、加速度限制或急动度限制。机器人102可以由一个或更多个机器人几何模型表示,这些模型定义了给定机器人102a至102c的几何形状,例如,在关节、自由度、尺寸(例如,连杆长度)和/或机器人102a至102c的相应C-空间方面。Input 109 may include one or more robot models representing or characterizing each of the robots 102, for example, specifying geometry and kinematics, such as size or length, number of links, number of joints, joint type, range of motion, velocity limits, acceleration limits, or jerk limits. Robot 102 may be represented by one or more robot geometric models that define the geometry of a given robot 102a to 102c, for example, in terms of joints, degrees of freedom, dimensions (e.g., link lengths), and/or the corresponding C-space aspects of robots 102a to 102c.
输入109可以包括要执行的一组或更多组任务,例如,表示为目标目的(例如,姿态、配置、状态或位置或地点)。例如,该任务可以用相应机器人102a至102c的末姿态、末配置或末状态和/或中间姿态、中间配置或中间状态来表示。例如,姿态、配置或状态可以根据相应机器人102a至102c的关节位置和关节角度/旋转(例如,关节姿态、关节坐标)来定义。可选地,输入109可以包括一个或更多个停留时间,其指定机器人或其部分应该在给定目标处停留的标称时间量,以便完成任务(例如,拧紧螺丝或螺母,拾取和放置物体,目的是通过在公共工作空间中操作的两个或更多个机器人将一堆物体分类为两个或更多个不同类型物体的物体堆)。Input 109 may include one or more sets of tasks to be performed, for example, represented as a target objective (e.g., pose, configuration, state, or position or location). For example, the task may be represented by the final pose, final configuration, or final state and/or intermediate pose, intermediate configuration, or intermediate state of the respective robots 102a to 102c. For example, pose, configuration, or state may be defined based on the joint positions and joint angles/rotations (e.g., joint pose, joint coordinates) of the respective robots 102a to 102c. Optionally, input 109 may include one or more dwell times, which specify the nominal amount of time that a robot or a part thereof should remain at a given target in order to complete a task (e.g., tightening a screw or nut, picking up and placing objects, with the aim of sorting a pile of objects into two or more different types of object piles by two or more robots operating in a common workspace).
在一些实施方式中,一个或更多个多机器人配置优化系统108能够为每个机器人生成执行一个或更多个任务的标称轨迹。标称轨迹是“指定”的轨迹,其中,每个标称轨迹包括机器人在标称轨迹的初始或起始姿态、配置或状态与标称轨迹的最终或结束姿态、配置和状态之间的姿态、配置或状态的时间参数化有序集合或序列,每个姿态、配置、状态都有相应的定时。姿态或配置优选地在相应机器人的配置空间(也被称为C-空间)中表示,或者可替代地在工作空间的真实空间或真实世界空间中表示。定时可以用相对术语来指定(例如,通过与紧接的的前一姿态的定时的相对偏移来定义的定时)或用绝对术语来指定(例如,由从开始执行轨迹的持续时间定义的定时,以及例如,相对于公共时钟)。在至少一些情况下,标称轨迹能够指定或包括机器人或其部分的运动或路径中的一个或更多个暂停,和/或能够指定机器人或其部分的运动方向或路径的反转,否则在方向或时间方面可能不是平滑的运动。申请人注意到,尽管任何给定的轨迹能够对应于机器人的平滑运动,但本文所使用的术语“轨迹”并不局限于此,并且通常将会指定不平滑的运动,也不会为机器人或其部分定义直线路径。例如,标称轨迹能够指定时间参数化的有序姿态集合或序列,机器人或其部分通过该姿态集合或序列移动以完成任务或任务的部分。执行任何给定任务能够采用一个或更多个标称轨迹。如本文所描述的,机器人或其部分的实际运动或实际轨迹可能会偏离相应的标称轨迹,例如,由于姿态之间转换的意外延迟(例如,由于需要在目标对象处逗留或停留的时间比预期的要长)。In some implementations, one or more multi-robot configuration optimization systems 108 are capable of generating nominal trajectories for each robot to perform one or more tasks. A nominal trajectory is a “specified” trajectory, wherein each nominal trajectory comprises a time-parameterized ordered set or sequence of poses, configurations, or states of the robot between the initial or starting pose, configuration, or state of the nominal trajectory and the final or ending pose, configuration, and state of the nominal trajectory, with each pose, configuration, and state having a corresponding timing. The pose or configuration is preferably represented in the configuration space (also referred to as C-space) of the respective robot, or alternatively in the real space of the workspace or real-world space. Timing can be specified in relative terms (e.g., timing defined by a relative offset from the timing of the immediately preceding pose) or in absolute terms (e.g., timing defined by the duration from the start of trajectory execution, and, for example, relative to a common clock). In at least some cases, a nominal trajectory can specify or include one or more pauses in the motion or path of the robot or a portion thereof, and/or can specify a reversal of the motion direction or path of the robot or a portion thereof, which would otherwise not be smooth in terms of direction or time. The applicant notes that while any given trajectory can correspond to smooth motion of a robot, the term "trajectory" as used herein is not limited to this and will generally specify non-smooth motion, nor will it define a straight path for the robot or a part thereof. For example, a nominal trajectory can specify a time-parameterized set or sequence of poses through which the robot or a part thereof moves to complete a task or part of a task. Performing any given task can employ one or more nominal trajectories. As described herein, the actual motion or actual trajectory of the robot or a part thereof may deviate from the corresponding nominal trajectory, for example, due to unexpected delays in transitions between poses (e.g., due to the need to linger or remain at the target object for a longer period than expected).
可接受滞后时间评估器115评估给定标称轨迹的各个候选滞后时间,以确定可接受滞后时间,即使相应机器人的实际轨迹滞后于标称轨迹的时间不超过可接受滞后时间,也能确保无自碰撞操作。在优选方法中,可接受滞后时间评估器115不仅考虑了给定机器人的标称轨迹中的滞后的影响,还考虑了在共享工作空间中操作的其它机器人的相应标称轨迹的一个或更多个滞后或影响。因此,可接受滞后时间评估器115能够识别每个标称轨迹的可接受滞后时间,或者换句话说,时间滞后,假设了最坏的情况,其中在共享工作空间中操作的所有机器人的实际轨迹经历了它们相应的可接受滞后时间。因此,例如,可接受滞后时间评估器115能够确定每个机器人的仍能确保无自碰撞操作的最大可接受滞后时间,即使假设所有机器人经历了其相应的最大可接收滞后时间。本文描述了确定可接受滞后时间的几种方法。Acceptable lag time estimator 115 evaluates each candidate lag time for a given nominal trajectory to determine an acceptable lag time that ensures collision-free operation even if the actual trajectory of the corresponding robot lags behind the nominal trajectory by no more than the acceptable lag time. In a preferred method, the acceptable lag time estimator 115 considers not only the effect of lag in the nominal trajectory of the given robot, but also one or more lags or effects of the corresponding nominal trajectories of other robots operating in the shared workspace. Therefore, the acceptable lag time estimator 115 is able to identify the acceptable lag time for each nominal trajectory, or in other words, the time lag, assuming the worst-case scenario where the actual trajectories of all robots operating in the shared workspace experience their respective acceptable lag times. Thus, for example, the acceptable lag time estimator 115 is able to determine the maximum acceptable lag time for each robot that still ensures collision-free operation, even if it is assumed that all robots experience their respective maximum acceptable lag times. Several methods for determining acceptable lag times are described herein.
输入109可以可选地包括对共享工作空间104中能够配置的机器人数量的限制。输入109可以可选地包括对能够分配给给定机器人102a至102c的任务或目标数量的限制,本文中被命名为任务容量,该任务容量能够在共享工作空间104中配置,例如,限制配置问题的复杂性,以确保配置问题是可解的,或者使用可用计算资源在某个可接受的时间段内可解,或者预先消除某些解决方案,这些解决方案因为任务或目标明显过度分配给给定机器人102a至102c而被认为太慢。输入109可以可选地包括对变量或其它参数的一个或更多个界限或约束。输入109可以可选地包括迭代循环的总数或迭代的时间限制,其可被用于细化候选解决方案,例如,用于确保配置问题是可解的或在某个可接受的时间段内使用可用计算资源是可解的。Input 109 may optionally include a limit on the number of robots that can be configured in the shared workspace 104. Input 109 may optionally include a limit on the number of tasks or objectives that can be assigned to a given robot 102a through 102c, referred to herein as task capacity, which can be configured in the shared workspace 104. This could be used, for example, to limit the complexity of the configuration problem to ensure that the configuration problem is solvable, or solvable within an acceptable time period using available computing resources, or to preemptively eliminate certain solutions that are considered too slow because the tasks or objectives are clearly over-assigned to the given robots 102a through 102c. Input 109 may optionally include one or more bounds or constraints on variables or other parameters. Input 109 may optionally include a limit on the total number of iteration loops or the time limit for iterations, which can be used to refine candidate solutions, for example, to ensure that the configuration problem is solvable or solvable within an acceptable time period using available computing resources.
机器人系统100可以可选地包括一个或更多个机器人控制系统118(图1中仅示出一个),其通信地耦合以控制机器人102。例如,一个或更多个机器人控制系统118可以向各种致动器提供控制信号(例如,驱动信号),以使机器人102在各种配置之间移动到各种指定目标,从而执行指定任务。Robot system 100 may optionally include one or more robot control systems 118 (only one is shown in FIG. 1), which are communicatively coupled to control robot 102. For example, one or more robot control systems 118 may provide control signals (e.g., drive signals) to various actuators to move robot 102 to various designated targets between various configurations, thereby performing a designated task.
机器人系统100可以可选地包括一个或更多个运动规划器120(图1中仅示出一个),其通信地耦合以控制机器人102。如本文其它地方描述的,一个或更多个运动规划器120为机器人102产生、生成、选择或改进运动计划,例如,考虑与多机器人优化引擎114提供的运动计划在时间上的小偏差,或考虑障碍物的意外出现(例如,人类进入操作环境或共享工作空间104)。可选的运动规划器120可操作以动态地产生运动计划,以使机器人102在操作环境中执行任务。运动规划器120以及其它结构和/或操作可以采用2019年6月24日提交的美国专利申请序列号62/865431中所描述的。Robot system 100 may optionally include one or more motion planners 120 (only one is shown in Figure 1), communicatively coupled to control robot 102. As described elsewhere herein, one or more motion planners 120 generate, produce, select, or improve motion plans for robot 102, for example, taking into account small temporal deviations from motion plans provided by multi-robot optimization engine 114, or taking into account the unexpected appearance of obstacles (e.g., human entry into the operating environment or shared workspace 104). Optional motion planners 120 are operable to dynamically generate motion plans to enable robot 102 to perform tasks in the operating environment. Motion planners 120 and other configurations and/or operations may be as described in U.S. Patent Application Serial No. 62/865431, filed June 24, 2019.
在包括运动规划器120的情况下,运动规划器120可选地通信耦合,以接收例如由感知子系统(未示出)提供的感知数据作为输入。感知数据代表共享工作空间104中先前未知的静态和/或动态对象。感知数据可以是经由一个或更多个传感器(例如,相机、立体相机、飞行时间相机、激光雷达)感测到的原始数据和/或由感知子系统转换为障碍物的数字表示的原始数据,感知子系统可以生成机器人102将在其中操作以执行各种不同场景的任务的环境表示的相应离散化。In the case of a motion planner 120, the motion planner 120 may optionally be communicatively coupled to receive, for example, perceptual data provided by a perception subsystem (not shown) as input. The perceptual data represents previously unknown static and/or dynamic objects in the shared workspace 104. The perceptual data may be raw data sensed via one or more sensors (e.g., cameras, stereo cameras, time-of-flight cameras, LiDAR) and/or raw data converted by the perception subsystem into a digital representation of obstacles, which can generate a corresponding discretization of the environment in which the robot 102 will operate to perform tasks in various different scenarios.
图1中将各种通信路径示为各种结构之间的线,在一些情况下,箭头指示输入109和输出111的方向。例如,通信路径可以采取一个或更多个有线通信路径(例如,电导体、信号总线或光纤)和/或一个或更多个无线通信路径(如,经由RF或微波无线电和天线、红外收发器)的形式。例如,通信通道可以包括一个或更多个发射机、接收机、收发机、无线电、路由器、有线端口(例如,以太网端口)等。在国际专利申请PCT/US2021/013610(公开号为WO2021/150439)中示出和描述了机器人系统100的一般操作,特别是一个或更多个多机器人配置优化系统108的一般操作,为了简明起见,本文中不再重复。本文仅描述了操作中的一些更显著的差异,例如,在实施方式中,一个或更多个多机器人配置优化系统108执行本文描述的各种方法以确定可接受滞后时间、至少部分地基于确定的可接受滞后时间生成或选择运动计划,和/或一个或更多个机器人控制系统118执行本文描述的各种方法,来监测执行运动计划的机器人的实际滞后时间、将实际滞后时间与裕度或阈值(例如,可接受的落后时间)进行比较和/或相应地控制机器人,例如,在一个或更多个实际滞后时间超过一个或更多个可接受的滞后时间或相关阈值的情况下采取一种或更多种补救措施。Figure 1 illustrates various communication paths as lines between various structures, with arrows indicating the directions of input 109 and output 111 in some cases. For example, a communication path may take the form of 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). For example, a communication channel may include one or more transmitters, receivers, transceivers, radios, routers, wired ports (e.g., Ethernet ports), etc. The general operation of robot system 100, and particularly the general operation of one or more multi-robot configuration optimization systems 108, is shown and described in International Patent Application PCT/US2021/013610 (Publication No. WO2021/150439), and will not be repeated herein for the sake of brevity. This document describes only some of the more significant differences in operation. For example, in implementations, one or more multi-robot configuration optimization systems 108 perform the various methods described herein to determine acceptable lag times, generate or select motion plans at least in part based on the determined acceptable lag times, and/or one or more robot control systems 118 perform the various methods described herein to monitor the actual lag times of the robots executing motion plans, compare the actual lag times with margins or thresholds (e.g., acceptable lag times), and/or control the robots accordingly, for example, taking one or more remedial measures if one or more actual lag times exceed one or more acceptable lag times or related thresholds.
图2示出了根据至少一个示出的实施方式的机器人系统,其中,第一机器人控制系统200a包括第一运动规划器204a,该第一运动规划器204a生成第一运动计划206a以控制第一机器人202的操作,并且可选地经由至少一个通信通道(由近似箭头表示,例如发射器、接收器、收发器、无线电、路由器、以太网)将第一运动计划206a和/或运动表示作为障碍物提供给其它机器人控制系统200b的其它运动规划器204b,以控制其它机器人(图2中未示出)。在图2的机器人控制系统200a、200b中,可接受滞后时间由运动规划器与运动计划206a、206b一起确定,运动计划包括由一个或更多个机器人202执行的一个或更多个标称轨迹。与机器人控制系统100(图1)相比,图2的机器人控制系统200a、200b不一定执行工作单元布置或任务计划的优化。此外,如本文描述的,图2的机器人控制系统200a、200b监测实际滞后时间,并且可选地,在必要时选择和/或采取补救措施。Figure 2 illustrates a robot system according to at least one of the illustrated embodiments, wherein 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 optionally provides the first motion plan 206a and/or motion representation as obstacles to other motion planners 204b of other robot control systems 200b via at least one communication channel (indicated by approximate arrows, e.g., transmitter, receiver, transceiver, radio, router, Ethernet) to control other robots (not shown in Figure 2). In the robot control systems 200a, 200b of Figure 2, an acceptable lag time is determined by the motion planner together with the motion plans 206a, 206b, which include one or more nominal trajectories executed by one or more robots 202. Compared to robot control system 100 (Figure 1), the robot control systems 200a, 200b of Figure 2 do not necessarily perform optimization of cell layout or task planning. Furthermore, as described herein, the robot control systems 200a and 200b of Figure 2 monitor the actual lag time and, optionally, select and/or take remedial measures when necessary.
同样地,一个或更多个其它机器人控制系统200b的一个或更多个其它运动规划器204b生成一个或更多个其它运动计划206b以控制一个或更多个其它机器人(图2中未示出)的操作,以及可选地将一个或更多个其它运动计划206b提供给第一运动规划器204a和一个或更多个其它机器人控制系统200b的一个或更多个其它运动规划器204b中的其它运动规划器。运动规划器204a、204b还可以可选地接收运动完成信息209,其指示各个机器人202的运动何时已经完成。这可以允许运动规划器204a、204b基于共享工作空间的当前或更新的状态生成新的或更新的运动计划。例如,在第一机器人202完成了一组运动的一部分或全部的运动(该组运动形成了第一机器人102完成任务的一部分)之后,共享工作空间的一部分可能会变为阻塞、解除阻塞或以其它方式可供第二机器人执行任务。附加地或替代地,运动规划器204a、204b能够接收由各种传感器收集的或由其它运动规划器204b生成的信息(例如,图像、占用网格、关节位置和关节角度/旋转),这些信息指示在第一机器人202完成了一组运动的一部分或全部的运动(该组运动形成了第一机器人102完成任务的一部分)之后,共享工作空间的一部分何时可能会变为阻塞、解除阻塞或以其它方式可供第二机器人执行任务。Similarly, one or more other motion planners 204b of one or more other robot control systems 200b generate one or more other motion plans 206b to control the operation of one or more other robots (not shown in FIG. 2), and optionally provide one or more other motion plans 206b to the first motion planner 204a and other motion planners 204b of one or more other robot control systems 200b. Motion planners 204a and 204b may also optionally receive motion completion information 209, indicating when the motion of each robot 202 has 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 shared workspace. For example, after the first robot 202 has completed part or all of a set of motions (which constitute part of the task performed by the first robot 102), a portion of the shared workspace may become blocked, unblocked, or otherwise made available for the second robot to perform a task. Additionally or alternatively, motion planners 204a and 204b are able to receive information (e.g., images, occupancy grids, joint positions, and joint angles/rotations) collected by various sensors or generated by other motion planners 204b, indicating when a portion of the shared workspace may become blocked, unblocked, or otherwise become available for the second robot to perform a task after the first robot 202 has completed part or all of a set of movements (which constitute part of the task performed by the first robot 102).
如本文所述,运动计划206a、206b指定了每个机器人的标称轨迹,例如,用于执行一个或更多个任务。如前文描述的,标称轨迹是“指定”的轨迹,其中,每个标称轨迹包括机器人的姿态、配置或状态的时间参数化有序集合或序列,每个姿态、配置和状态具有相应的定时。姿态、配置或状态优选地在相应机器人的配置空间(也称为C-空间)中表示。As described herein, motion plans 206a and 206b specify a nominal trajectory for each robot, for example, to perform one or more tasks. As previously described, a nominal trajectory is a “specified” trajectory, wherein each nominal trajectory comprises a time-parameterized ordered set or sequence of robot poses, configurations, or states, each pose, configuration, and state having a corresponding timing. The poses, configurations, or states are preferably represented in the configuration space (also known as C-space) of the respective robot.
机器人控制系统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,并且表示姿态、配置和状态之间的合法或有效的转换。例如,姿态、配置或状态可以在机器人的相应配置空间(C-空间)中定义,表示相应机器人202的关节中的每个关节的关节位置、方向、姿态或坐标的集合。因此,每个节点214可以表示机器人202或其部分的姿态、配置或状态,其完全由构成机器人202的关节的姿态配置或状态定义。运动规划图208可以在运行时间之前(即,在执行任务之前定义)确定、设置或定义,诸如在预运行时间或配置时间期间。可选的扫掠体积表示211表示机器人202或其部分在执行与运动规划图208的相应边216对应的姿态之间的运动或转换时,将占据的相应体积。可选的扫掠体积表示211可以以多种形式中的任何一种表示,例如,例如表示为体素、欧几里德距离场、几何对象的层次结构。这有利地允许在运行时间之前执行一些计算量最密集的工作,因为此时响应能力并不是特别受关注。虽然本文使用了扫掠体积,但这是示例性的,并且能够采用多种其它碰撞评估方法中的任何一种。The robot control systems 200a and 200b may be optionally communicatively coupled, for example via at least one communication channel (indicated by approximate arrows, such as a transmitter, receiver, transceiver, radio, router, or Ethernet), to optionally receive the motion planning map 208 and/or sweep volume representation 211 from one or more sources 212. According to one illustrated embodiment, the one or more sources 212 of the motion planning map 208 and/or sweep volume representation 211 may be separate from and distinct from the motion planners 204a and 204b. For example, the one or more sources 212 of the motion planning map 208 and/or sweep volume representation 211 may be one or more processor-based computer systems (e.g., server computers) that may be operated or controlled by the respective manufacturer of the robot 202 or 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 pose, configuration, or state of the corresponding robot, and edges 216 couple the nodes of the corresponding node pair 214 and represent legal or valid transitions between poses, configurations, and states. For example, poses, configurations, or states can be defined in the robot's corresponding configuration space (C-space), representing the set of joint positions, orientations, poses, or coordinates of each joint in the joints of the corresponding robot 202. Therefore, each node 214 can represent the pose, configuration, or state of the robot 202 or a portion thereof, which is entirely defined by the pose configuration or state of the joints constituting the robot 202. Motion planning graph 208 can be determined, set up, or defined before runtime (i.e., before performing the task), such as during pre-runtime or configuration time. The optional sweep volume representation 211 represents the corresponding volume that the robot 202 or a portion thereof will occupy when performing motion or transitions between poses corresponding to the respective edges 216 of the motion planning graph 208. The optional sweep volume representation 211 can be represented in any of a variety of forms, such as, for example, voxels, Euclidean distance fields, or hierarchical structures of geometric objects. This advantageously allows some of the most computationally intensive work to be performed before runtime, when responsiveness is not of particular concern. While sweep volume is used herein, it is exemplary and can be employed with any of a variety of other collision assessment methods.
每个机器人202可以可选地包括底座(图2中未示出)。底座可以固定在环境中或在环境中可移动(例如,自动或半自动车辆)。每个机器人202可以可选地包括一组连杆、关节、臂端工具或末端执行器和/或致动器218a、218b、218c(示出了三个,统称为218),其可操作以围绕关节移动连杆。该组连杆、关节、臂端工具或末端执行器通常包括机器人的一个或更多个附件,这些机器人附件能够可移动地耦合到机器人的底座。每个机器人202可以可选地包括一个或更多个运动控制器(例如,马达控制器)220(仅示出一个),其接收控制信号(例如以运动计划206a的形式),并且提供驱动信号以驱动致动器218。替代地,运动控制器220能够与机器人202分离,并且通信地耦合到机器人202。例如,如国际专利申请PCT/US2021/013610(公开号为WO 2021/150439)中描述的,每个机器人202能够基于优化的工作单元布局在共享工作空间中定位和定向。Each robot 202 may optionally include a base (not shown in Figure 2). The base may be fixed to the environment or movable within the environment (e.g., an autonomous or semi-autonomous vehicle). Each robot 202 may optionally include a set of links, joints, end-effectors or end effectors and/or actuators 218a, 218b, 218c (three shown, collectively referred to as 218) operable to move the links about the joints. This set of links, joints, end-effectors or end effectors typically includes one or more attachments to the robot that are movably coupled to the robot's base. Each robot 202 may optionally 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 plan 206a) and provide drive signals to drive the actuators 218. Alternatively, the motion controller 220 may be decoupled from the robot 202 and communicatively coupled to the robot 202. For example, as described in International Patent Application PCT/US2021/013610 (Publication No. WO 2021/150439), each robot 202 is able to locate and orient itself in a shared workspace based on an optimized work cell layout.
每个机器人202(图2中仅示出了一个机器人)可以具有相应的机器人控制系统200a、200b,或者替代地,一个机器人控制系统200a可以为两个或更多个机器人202执行运动规划。出于说明的目的,将详细描述一个机器人控制系统200。本领域技术人员将认识到,该描述能够应用于其它机器人控制系统200的类似或甚至相同的附加实例。Each robot 202 (only one robot is shown in Figure 2) may have a corresponding robot control system 200a, 200b, or alternatively, a robot control system 200a may perform motion planning for two or more robots 202. For illustrative purposes, one robot control system 200 will be described in detail. Those skilled in the art will recognize that this description can be applied to similar or even identical additional instances of other robot control systems 200.
第一机器人控制系统200a可以包括一个或更多个处理器222,以及一个或更多个相关联的非暂时性计算机或处理器可读存储介质,例如,系统存储器224a、一个或更多个磁盘驱动器224b和/或处理器222的存储器或寄存器(未示出)。非暂时性计算机或处理器可读存储介质(例如,系统存储器224a、一个或更多个磁盘驱动器224b)经由一个或更多个通信通道(例如,系统总线234)通信地耦合到一个或更多个处理器222a。系统总线234能够采用任何已知的总线结构或架构,包括具有存储器控制器的存储器总线、外围总线和/或本地总线。一个或更多个这样的组件也可以,或者替代地,经由一个或更多个其它通信通道相互通信,例如,一个或更多个并行电缆、串行电缆或能够进行高速通信的无线网络信道,例如,通用串行总线(“USB”)3.0、快速外围组件互连(PCIe)或经由The first robot control system 200a may include one or more processors 222, and one or more associated non-transitory computer- or processor-readable storage media, such as system memory 224a, one or more disk drives 224b, and/or memory or registers of processor 222 (not shown). The non-transitory computer- or processor-readable storage media (e.g., system memory 224a, one or more disk drives 224b) are communicatively coupled to one or more processors 222a via one or more communication channels (e.g., system bus 234). The system bus 234 can employ any known bus structure or architecture, including a memory bus with a memory controller, a peripheral bus, and/or a 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, Fast Peripheral Component Interconnect (PCIe), or via...
第一机器人控制系统200a还可以通信地耦合到一个或更多个远程计算机系统,例如,服务器计算机(例如,源212)、台式计算机、膝上型计算机、超便携计算机、平板计算机、智能手机、可穿戴计算机和/或传感器(图2中未示出),这些远程计算机系统例如经由接口227直接可通信地或间接可通信地耦合到第一机器人控制系200a的各个组件。远程计算系统,例如,服务器计算机(例如,源212),可被用于对第一机器人控制系统200a以及第一机器人控制系统200a中的各种组件进行编程、配置、控制或以其它方式与其交互,或输入数据(例如,运动规划图208、扫掠体积表示211、任务规范215,甚至候选路径或标称轨迹)。这种连接可以通过一个或更多个通信通道210,例如,一个或更多个广域网(WAN),例如,以太网,或使用互联网协议的互联网。如上文描述的,运行前计算可以由与第一机器人控制系统200a或第一机器人202分离的系统执行,而运行时计算可以在一个或更多个机器人执行任务时由第一机器人控制系统200a的一个或更多个处理器222执行。在一些实施方式中,机器人控制系统200a、200b中的一个或更多个可以安装在相应的机器人(例如,第一机器人202)上。The first robot control system 200a can also be communicatively coupled to one or more remote computer systems, such as server computers (e.g., source 212), desktop computers, laptop computers, ultra-portable computers, tablet computers, smartphones, wearable computers, and/or sensors (not shown in FIG. 2). These remote computer systems are directly or indirectly communicatively coupled to the various components of the first robot control system 200a, for example, via interface 227. The remote computing systems, such as server computers (e.g., source 212), can be used to program, configure, control, or otherwise interact with the first robot control system 200a and its various components, or to input data (e.g., motion planning graph 208, sweep volume representation 211, task specification 215, or even candidate paths or nominal trajectories). This connection can be via one or more communication channels 210, such as one or more wide area networks (WANs), such as Ethernet, or the Internet using Internet Protocol. As described above, pre-run calculations can be performed by a system separate from the first robot control system 200a or the first robot 202, while runtime calculations can be performed by one or more processors 222 of the first robot control system 200a while one or more robots are performing tasks. In some embodiments, one or more of the robot control systems 200a and 200b can be mounted on the respective robot (e.g., the first robot 202).
如上文描述的,第一机器人控制系统200a可以包括一个或更多个处理器222(即电路)、非暂时性存储介质(例如,系统存储器224a、一个或更多个磁盘驱动器224b)和耦合各种系统组件的系统总线234。处理器222可以是任何逻辑处理单元,例如,一个或更多个中央处理单元(CPU)、数字信号处理器(DSP)、图形处理单元(GPU)、现场可编程门阵列(FPGA)、专用集成电路(ASIC)、可编程逻辑控制器(PLC)等。系统存储器224a可以包括只读存储器(“ROM”)226、随机存取存储器(“RAM”)228、闪存230、EEPROM(未示出)或其任何组合。能够形成ROM 226的部分的基本输入/输出系统(“BIOS”)232包含有助于在第一机器人控制系统200a内的元件之间传输信息的基本例程,例如,在启动期间。As described above, the first robot control system 200a may include one or more processors 222 (i.e., circuitry), non-transitory storage media (e.g., system memory 224a, one or more disk drives 224b), and a system bus 234 coupling 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, EEPROM (not shown), or any combination thereof. A basic input/output system (“BIOS”) 232 capable of forming a portion of the ROM 226 contains basic routines that facilitate the transfer of information between elements within the first robot control system 200a, for example, during startup.
例如,一个或更多个磁盘驱动器224b可以是用于从磁盘读取和向磁盘写入的硬盘驱动器、用于从固态存储器读取和向固态存储器写入的固态(例如,闪存)驱动器和/或用于从可移动光盘读取和向可移动光盘写入的光盘驱动器。在各种不同的实施例中,第一机器人控制系统200a还可以包括此类磁盘驱动器的任何组合。一个或更多个磁盘驱动器224b可以经由系统总线234与一个或更多个处理器222通信。如相关领域的技术人员所知的,一个或更多个磁盘驱动器224b可以包括耦合在此类驱动器和系统总线234之间的接口或控制器(未示出)。一个或更多个磁盘驱动器224b及其相关的计算机可读介质为第一机器人控制系统200a提供计算机或处理器可读和/或可执行指令、数据结构、程序模块和其它数据的非易失性存储。相关领域的技术人员将会理解,可以采用能够存储计算机可访问的数据的其它类型的计算机可读介质,例如,WORM驱动器、RAID驱动器、盒式磁带、数字视频盘(“DVD”)、伯努利盒、RAM、ROM、智能卡等。For example, one or more disk drives 224b may be hard disk drives for reading from and writing to disks, solid-state (e.g., flash memory) drives for reading from and writing to solid-state memory, and/or optical disk drives for reading from and writing to removable optical disks. In various embodiments, the first robot control system 200a may also include any combination of such disk drives. One or more disk drives 224b may communicate with one or more processors 222 via a system bus 234. As known to those skilled in the art, one or more disk drives 224b may include an interface or controller (not shown) coupled between such drives and the system bus 234. One or more disk drives 224b and their associated computer-readable media provide the first robot control system 200a with non-volatile storage of computer- or processor-readable and/or executable instructions, data structures, program modules, and other data. Those skilled in the art will understand that other types of computer-readable media capable of storing computer-accessible data can be used, such as WORM drives, RAID drives, cassette tapes, digital video discs (“DVDs”), Bernoulli boxes, RAM, ROM, smart cards, etc.
可执行指令和数据能够被存储在系统存储器224a中,例如,操作系统236、一个或更多个应用程序238、其它应用程序或模块240和程序数据242。应用程序238可以包括处理器可执行指令,这些指令使得一个或更多个处理器222执行以下中的一个或更多个。Executable instructions and data can be stored in system memory 224a, such as operating system 236, one or more application programs 238, other application programs or modules 240, and program data 242. Application program 238 may include processor-executable instructions that cause one or more processors 222 to execute one or more of the following.
应用程序238可以包括处理器可执行指令,这些指令使得一个或更多个处理器222接收或生成机器人202将在其中操作的共享工作空间的离散化表示,包括共享工作空间中的障碍物和/或目标对象或工件,其中,其它机器人的规划运动可以被表示为障碍物。Application 238 may include processor-executable instructions that cause one or more processors 222 to receive or generate a discretized representation of a shared workspace in which robot 202 will operate, including obstacles and/or target objects or workpieces in the shared workspace, wherein planned motions of other robots may be represented as obstacles.
应用程序238可以包括处理器可执行指令,这些指令使得一个或更多个处理器222生成指定标称轨迹的运动计划206a、206b。标称轨迹中的每个通常定义了机器人或其部分的姿态、配置或状态的相应有序序列,并且这些序列按时间参数化。Application 238 may include processor-executable instructions that cause one or more processors 222 to generate motion plans 206a, 206b specifying nominal trajectories. Each of the nominal trajectories typically defines a corresponding ordered sequence of poses, configurations, or states of the robot or a part thereof, and these sequences are parameterized over time.
应用程序238可以包括处理器可执行指令,这些指令使得一个或更多个处理器222确定标称轨迹的相应可接受滞后时间。可接受滞后时间通常是在确保机器人202相对于在共享工作空间中操作的一个或更多个其它机器人的至少无自碰撞操作的情况下,机器人202的实际运动(例如,实际轨迹)能够滞后于或不同于相应标称轨迹指定的标称时间的时间量。在一些实施方式中,无自碰撞操作的前提是其它机器人在执行过程中没有经历任何滞后时间,尽管优选地,无自碰撞操作的前提条件是所有机器人在其相应标称轨迹的相应可接受滞后时间内运行,因此考虑了每个机器人在执行相应标称轨迹时均经历了滞后时间。Application 238 may include processor-executable instructions that cause one or more processors 222 to determine a corresponding acceptable lag time for the nominal trajectory. The acceptable lag time is typically the amount of time by which the actual motion (e.g., actual trajectory) of robot 202 lags behind or differs from the nominal time specified by the corresponding nominal trajectory, ensuring at least no self-collision operation of robot 202 relative to one or more other robots operating in the shared workspace. In some embodiments, the prerequisite for no self-collision operation is that other robots do not experience any lag time during execution; however, preferably, the prerequisite for no self-collision operation is that all robots operate within the corresponding acceptable lag time of their respective nominal trajectories, thus taking into account that each robot experiences lag time while executing its respective nominal trajectory.
为了生成运动计划、生成标称轨迹和/或确定可接受滞后时间,应用程序238可以包括处理器可执行指令,这些指令使得一个或更多个处理器222调用或以其它方式执行碰撞评估。碰撞评估通常被称为“碰撞检测”或“碰撞检查”,甚至尽管该评估通常会确定碰撞的概率或可能性,并且通常发生在机器人的实际移动之前,而不是指在机器人的物理移动过程中检测到机器人的实际物理碰撞。碰撞评估在本文中可替代地被称为“碰撞检测”、“碰撞检查”或“碰撞分析”。To generate motion plans, generate nominal trajectories, and/or determine acceptable lag times, application 238 may include processor-executable instructions that cause one or more processors 222 to invoke or otherwise perform a collision assessment. Collision assessment is commonly referred to as “collision detection” or “collision checking,” even though the assessment typically determines the probability or likelihood of a collision and usually occurs before the robot’s actual movement, rather than detecting an actual physical collision during the robot’s physical movement. Collision assessment may alternatively be referred to herein as “collision detection,” “collision checking,” or “collision analysis.”
应用程序238可以包括处理器可执行指令,这些指令使得一个或更多个处理器222为运动规划图中的边设置代价值或代价函数,例如,反映发生碰撞的确定概率或可能性,以及可选的其它参数。应用程序238可以包括处理器可执行指令,这些指令使得一个或更多个处理器222为标称轨迹设置代价值或代价函数,例如,反映相应的可接受滞后时间,并且可替代地额外反映发生碰撞的确定概率或可能性,以及可选的其它参数。Application 238 may include processor-executable instructions that cause one or more processors 222 to set a cost or penalty function for edges in the motion planning graph, such as reflecting a certain probability or likelihood of a collision, and optional other parameters. Application 238 may include processor-executable instructions that cause one or more processors 222 to set a cost or penalty function for a nominal trajectory, such as reflecting a corresponding acceptable lag time, and alternatively additionally reflecting a certain probability or likelihood of a collision, and optional other parameters.
应用程序238可以包括处理器可执行指令,这些指令使得一个或更多个处理器222评估从运动规划图生成的可用标称轨迹;基于例如代价或代价函数来识别(例如,选择、确定、生成)标称轨迹,和/或识别或生成可由一个或更多个机器人执行的运动计划,以使机器人执行运动,例如,由一个或更多个机器人进一步执行一个或更多个任务。应用程序238可以包括处理器可执行指令,这些指令使得一个或更多个处理器222可选地存储所确定的运动计划和/或提供指令以使一个或更多个机器人根据运动计划执行或以其它方式移动。运动规划和运动计划构建(例如,碰撞评估或检测,设置、更新或调整代价或代价函数,例如,至少部分地基于碰撞评估或检测,并且可选地部分基于确定的可接受滞后时间),以及标称轨迹生成、候选标称轨迹的分析或评估(例如,至少部分地基于相应的可接受滞后时间在两个标称轨迹之间进行选择),能够如本文(例如,参考图3、4、5、6、7和8的方法)所述的方式和通过引用并入本文的参考文献中描述的方式执行。碰撞检测或评估可以采用本文和其他地方描述的各种结构、技术和算法。Application 238 may include processor-executable instructions that cause one or more processors 222 to evaluate available nominal trajectories generated from the motion planning graph; to identify (e.g., select, determine, generate) the nominal trajectory based on, for example, a cost or cost function; and/or to identify or generate motion plans that can be executed by one or more robots to enable the robots to perform motion, for example, to further perform one or more tasks by one or more robots. Application 238 may include processor-executable instructions that cause one or more processors 222 to optionally store the determined motion plans and/or provide instructions to enable one or more robots to perform or otherwise move according to the motion plans. Motion planning and motion plan construction (e.g., collision assessment or detection, setting, updating, or adjusting costs or cost functions, for example, based at least in part on collision assessment or detection, and optionally in part on a determined acceptable lag time), as well as nominal trajectory generation, analysis or evaluation of candidate nominal trajectories (e.g., selecting between two nominal trajectories based at least in part on corresponding acceptable lag times), can be performed as described herein (e.g., with reference to the methods in Figures 3, 4, 5, 6, 7, and 8) and in a manner described by reference in the references incorporated herein. Collision detection or evaluation can employ various structures, techniques, and algorithms described herein and elsewhere.
应用程序238还可以包括一个或更多个机器可读和机器可执行指令,这些指令使得一个或更多个处理器222监测机器人运动(例如,实际轨迹),与相应标称轨迹的裕度或阈值(例如,可接受滞后时间或基于可接受滞后时间)相比,评估这些实际轨迹的实际延迟或实际滞后时间。可选地,应用程序238还可以包括一个或更多个机器可读和机器可执行指令,这些指令使得一个或更多个处理器222在必要时(例如,如果实际滞后时间接近或超过可接受滞后时间)选择和/或采取一个或更多个补救措施(例如,使得一个或更多个机器人减速、使得一个或更多个机器人停止和/或使得一个或更多个机器人加速)。Application 238 may also include one or more machine-readable and machine-executable instructions that cause one or more processors 222 to monitor robot motion (e.g., actual trajectories) and evaluate the actual delay or actual lag time of these actual trajectories compared to a margin or threshold (e.g., acceptable lag time or based on acceptable lag time) of the corresponding nominal trajectory. Optionally, application 238 may also include one or more machine-readable and machine-executable instructions that cause one or more processors 222 to select and/or take one or more remedial measures (e.g., causing one or more robots to decelerate, stop, and/or accelerate) when necessary (e.g., if the actual lag time is close to or exceeds the acceptable lag time).
应用程序238还可以包括一个或更多个机器可读和机器可执行指令,这些指令可选地使得一个或更多个处理器222监测环境中的机器人,以确定沿着实际轨迹的路径何时变得解除阻塞或畅通,并且响应于沿着实际轨迹的路径变得解除阻塞或畅通,使得机器人朝向目标移动。Application 238 may also include one or more machine-readable and machine-executable instructions that optionally cause one or more processors 222 to monitor the robot in the environment to determine when a path along the actual trajectory becomes unblocked or unobstructed, and in response to the path along the actual trajectory becoming unblocked or unobstructed, cause the robot to move toward a target.
应用程序238还可以额外包括一个或更多个机器可读和机器可执行的指令,这些指令使得一个或更多个处理器222执行其它操作,例如,可选地,处理(经由传感器捕获的)感知数据。应用程序238还可以额外地包括一个或更多个机器可执行指令,这些指令使得一个或更多个处理器222执行本文和通过引用并入本文的参考文献中描述的各种其它方法。Application 238 may also additionally include one or more machine-readable and machine-executable instructions that cause one or more processors 222 to perform other operations, such as, optionally, processing sensed data (captured via sensors). Application 238 may also additionally include one or more machine-executable instructions that cause one or more processors 222 to perform various other methods described herein and by reference incorporated herein.
在各种实施例中,上述操作中的一个或更多个可以由一个或更多个远程处理设备或计算机执行,这些设备或计算机通过通信通道210(例如,网络)经由接口227联接。In various embodiments, one or more of the above operations may be performed by one or more remote processing devices or computers connected via interface 227 through communication channel 210 (e.g., network).
虽然在图2中示出为存储在系统存储器224a中,但操作系统236、应用程序238、其它程序/模块240和程序数据242能够存储在其它非暂时性计算机或处理器可读介质上(例如,一个或更多个磁盘驱动器224b)。Although shown in Figure 2 as stored in system memory 224a, the operating system 236, application programs 238, other programs/modules 240, and program data 242 can be stored on other non-transitory computer or processor-readable media (e.g., one or more disk drives 224b).
第一机器人控制系统200a的运动规划器204a可以包括专用运动规划器硬件,或者可以全部或部分地经由一个或更多个处理器222和存储在系统存储器224a和/或一个或更多个磁盘驱动器224b中的处理器可执行指令来实现。The motion planner 204a of the first robot control system 200a may include dedicated motion planner hardware, or may be implemented wholly or partially via one or more processors 222 and processor-executable instructions stored in system memory 224a and/or one or more disk drives 224b.
运动规划器204a可以包括或实现运动转换器250、路径生成器252、碰撞评估器253、代价设置器254、可选路径分析器255、轨迹生成器256、可接受滞后时间评估器257和可选的标称轨迹分析器258。这些中的每个能够经由一个或更多个处理器(例如,电路)执行逻辑来实现,例如:可执行软件指令、固件指令、硬连线逻辑或其任何组合。The motion planner 204a may include or implement a motion converter 250, a path generator 252, a collision estimator 253, a cost setter 254, an optional path analyzer 255, a trajectory generator 256, an acceptable lag time estimator 257, and an optional nominal trajectory analyzer 258. Each of these can be implemented via logic executed by one or more processors (e.g., circuitry), such as executable software instructions, firmware instructions, hardwired logic, or any combination thereof.
运动转换器250将对象(例如,其它机器人、人)的运动转换为障碍物的表示。运动转换器250从其它运动规划器204b接收运动计划206b或其它运动表示。Motion converter 250 converts the motion of an object (e.g., another robot, a person) into a representation of obstacles. Motion converter 250 receives motion plans 206b or other motion representations from other motion planners 204b.
运动转换器250能够包括轨迹预测器251,用于预测瞬态对象(例如,其它机器人、其它对象,包括例如人)的轨迹,例如,在瞬态对象的轨迹未知时(例如,在对象是另一机器人但没有收到该另一机器人的运动计划的情况,对象不是另一机器人,例如是人的情况)。例如,轨迹预测器251能够假设对象将在两个方向、速度和加速度上继续现有的移动,而不会发生变化。例如,轨迹预测器251能够考虑对象的运动或路径的预期变化,例如当对象的路径会导致碰撞时,因此,能够预期对象会停止或改变方向,或者当对象的目的已知时,因此,能够预测对象在达到目的时停止。在至少一些情况下,轨迹预测器251能够使用所学习的对象的行为模型来预测对象的轨迹。例如,轨迹预测器251能够推算已知运动和预期变化,以生成瞬态对象的预测轨迹。The motion converter 250 may include a trajectory predictor 251 for predicting the trajectory of a transient object (e.g., another robot, another object, including, for example, a person), for example, when the trajectory of the transient object is unknown (e.g., when the object is another robot but has not received a motion plan from that other robot, or when the object is not another robot, for example, a person). For example, the trajectory predictor 251 may assume that the object will continue its existing movement in two directions, velocities, and accelerations without change. For example, the trajectory predictor 251 may consider expected changes in the object's motion or path, such as when the object's path would lead to a collision, thus expecting the object to stop or change direction, or when the object's destination is known, thus predicting that the object will stop upon reaching its destination. In at least some cases, the trajectory predictor 251 may use a learned model of the object's behavior to predict the object's trajectory. For example, the trajectory predictor 251 may extrapolate known motions and expected changes to generate a predicted trajectory for the transient object.
然后,运动转换器250可选地确定对应于对象的已知和/或一个或更多个推算运动的区域或体积。例如,运动转换器能够将运动转换为相应的扫掠体积,即,由相应的机器人或其部分在由运动计划所表示的姿态之间移动或转换时扫掠的体积,例如,通过生成机器人或其部分的体积表示,以及沿由机器人或其部分的轨迹定义的路径投影该体积表示。同样例如,运动转换器能够将运动转换为相应的扫掠体积,例如,通过生成对象(例如,诸如人类的非机器人对象)的体积表示,并沿着由对象的已知和/或推算轨迹定义的路径投影对象的体积表示。有利地,运动规划器204a可以简单地对障碍物(例如,扫掠体积)进行排队,并且可能无需确定、跟踪或指示相应运动或扫掠体积的时间。虽然通常被描述为用于第一机器人202的将其它机器人(图2中未示出)的运动转换为障碍物的运动转换器250,但在一些实施方式中,在共享工作空间中操作的其它机器人的其它机器人控制系统200b可以将特定运动的障碍物表示(例如,扫掠体积)提供给第一机器人202的运动规划器204a。The motion converter 250 then optionally determines regions or volumes corresponding to known and/or one or more calculated movements of the object. For example, the motion converter is capable of converting a movement into a corresponding sweep volume, i.e., the volume swept by the corresponding robot or part thereof as it moves or transitions between postures represented by the motion plan, for example, by generating a volume representation of the robot or part thereof and projecting that volume representation along a path defined by the trajectory of the robot or part thereof. Similarly, for example, the motion converter is capable of converting a movement into a corresponding sweep volume, for example, by generating a volume representation of the object (e.g., a non-robot object such as a human) and projecting the object's volume representation along a path defined by the object's known and/or calculated trajectory. Advantageously, the motion planner 204a can simply queue obstacles (e.g., sweep volumes) and may not require determining, tracking, or indicating the timing of corresponding movements or sweep volumes. Although typically described as a motion converter 250 for first robot 202 that converts the motion of other robots (not shown in FIG. 2) into obstacles, in some embodiments, the other robot control system 200b of other robots operating in a shared workspace may provide a representation of obstacles (e.g., sweep volume) for a specific motion to the motion planner 204a of first robot 202.
路径生成器252生成从一个姿态、配置或状态(例如,起始姿态、配置或状态)到另一姿态或配置或状态的路径(例如,结束姿态、配置、状态;或者目的姿态、配置和状态)。路径生成器252能够确定或识别从起始(例如,起始节点或起始姿态或起始状态)到目的(例如,目的节点或目的姿态或目的状态;结束节点或结束姿态或结束状态)的一个或更多个可行路径。例如,路径生成器252能够确定或识别运动规划图中的有序节点序列,该有序节点序列提供了从起始或当前节点到目的或结束节点的完整路径(即,一组有序节点,对于该组有序节点,完整路径中的每对连续节点之间具有相应的有效转换,例如,以耦合该对节点的节点的边的存在来表示)。如上所述,每个节点能够对应于相应机器人的相应姿态、配置或状态。路径生成器252能够使用或执行任何种类的路径查找方法、技术和/或算法。例如,路径生成器252能够采用各种方法、技术和/或算法来随机或伪随机地生成路径,在运动规划图中选择节点序列,其中,节点经由边(即,表示连接节点所表示的姿态之间的有效转换的边)连接到序列中的下一节点。路径生成器252能够在起始节点和结束节点之间生成相对大量的候选路径,从而在起始姿态、配置或状态和结束姿态、配置或状态之间生成大量的候选路径。在一些实施方式中,路径生成器252能够独立于代价(例如,表示沿路径经历碰撞的概率或可能性的代价)来确定或识别可行路径或轨迹,从而创建一组可行路径或候选路径,这些路径或候选路径稍后可以至少部分地基于经历碰撞的概率或可能性来评估。在其它情况下,路径生成器252在确定或识别可行路径或轨迹时能够考虑代价(例如,表示沿路径经历碰撞的概率或可能性的代价)。Path generator 252 generates paths (e.g., ending pose, configuration, or state; or destination pose, configuration, and state) from one pose, configuration, or state (e.g., initial pose, configuration, or state) to another pose, configuration, or state. Path generator 252 is capable of determining or identifying one or more feasible paths from a start (e.g., a start node or start pose or start state) to a destination (e.g., a destination node or destination pose or destination state; an end node or end pose or end state). For example, path generator 252 is capable of determining or identifying an ordered sequence of nodes in a motion planning graph that provides a complete path from the start or current node to the destination or end node (i.e., a set of ordered nodes for which there is a corresponding valid transition between each pair of consecutive nodes in the complete path, e.g., represented by the presence of an edge coupling the nodes of that pair). As described above, each node can correspond to a corresponding pose, configuration, or state of the corresponding robot. Path generator 252 is capable of using or executing any kind of pathfinding method, technique, and/or algorithm. For example, path generator 252 can employ various methods, techniques, and/or algorithms to randomly or pseudo-randomly generate paths, selecting a sequence of nodes in a motion planning graph, wherein nodes are connected to the next node in the sequence via edges (i.e., edges representing valid transitions between the poses represented by the nodes). Path generator 252 can generate a relatively large number of candidate paths between the starting and ending nodes, thereby generating a large number of candidate paths between the starting pose, configuration, or state and the ending pose, configuration, or state. In some embodiments, path generator 252 can determine or identify feasible paths or trajectories independently of cost (e.g., a cost representing the probability or likelihood of experiencing a collision along the path), thereby creating a set of feasible paths or candidate paths that can later be evaluated at least in part based on the probability or likelihood of experiencing a collision. In other cases, path generator 252 can consider cost (e.g., a cost representing the probability or likelihood of experiencing a collision along the path) when determining or identifying feasible paths or trajectories.
碰撞评估器253执行碰撞评估,也被称为碰撞检测或碰撞分析。具体而言,碰撞评估器253可选地执行碰撞评估,该碰撞评估作为确定表示给定机器人202或其部分按照标称轨迹指定的转换或运动的候选路径是否将会导致或可能导致与障碍物发生碰撞的部分。如上所述,其它机器人的运动可以有利地被表示为障碍物。因此,碰撞评估器253能够确定一个机器人的运动是否会导致或可能导致其与在共享工作空间中移动的另一机器人发生碰撞。The collision evaluator 253 performs a collision evaluation, also known as collision detection or collision analysis. Specifically, the collision evaluator 253 optionally performs a collision evaluation as a means of determining whether a candidate path representing a transition or motion of a given robot 202 or a portion thereof according to a nominal trajectory will result in or may result in a collision with an obstacle. As mentioned above, the motion of other robots can advantageously be represented as obstacles. Therefore, the collision evaluator 253 is able to determine whether the motion of one robot will result in or may result in a collision with another robot moving in a shared workspace.
如本文所描述的,碰撞评估、检测或分析不仅能够对候选路径执行,额外地或可替代地,还能够对标称轨迹(例如,指定的轨迹)执行,以及特别是对引入了各种滞后时间的标称轨迹(例如,模拟可能滞后于标称轨迹的实际轨迹)执行。在至少一些实施方式中,能够对两个或更多个机器人中的每个(例如,成对的机器人)执行引入了各种滞后时间的标称轨迹的碰撞评估、检测或分析。能够对机器人对中的每个机器人的一个或更多个标称轨迹执行碰撞评估、检测或分析。能够对引入了零滞后时间和非零滞后时间的那些标称轨迹(例如,一个、两个或更多个)中的每个标称轨迹执行碰撞评估、检测或分析,例如,针对轨迹对的滞后时间的每个排列来评价轨迹对。如本文所描述的,碰撞评估、检测或分析不一定产生二元结果,而是能够产生非二元值,例如,表示由路径或轨迹导致的机器人对之间碰撞的概率或可能性。As described herein, collision assessment, detection, or analysis can be performed not only on candidate paths, but also, additionally or alternatively, on nominal trajectories (e.g., specified trajectories), and particularly on nominal trajectories that introduce various lag times (e.g., simulated actual trajectories that may lag behind the nominal trajectory). In at least some embodiments, collision assessment, detection, or analysis of nominal trajectories introducing various lag times can be performed on each of two or more robots (e.g., pairs of robots). Collision assessment, detection, or analysis can be performed on one or more nominal trajectories for each robot in a robot pair. Collision assessment, detection, or analysis can be performed on each of those nominal trajectories (e.g., one, two, or more) that introduce zero lag time and non-zero lag time, for example, evaluating the trajectory pair for each permutation of the lag time of the trajectory pair. As described herein, collision assessment, detection, or analysis does not necessarily produce binary results, but is able to produce non-binary values, for example, representing the probability or likelihood of a collision between robot pairs caused by a path or trajectory.
在一些实施方式中,碰撞评估器253实现基于软件的碰撞评估、检测或分析,例如,基于机器人(例如,第一机器人202)或其部分在移动过程中扫掠的体积的几何(例如,球体)表示的层次结构来执行边界框-边界框碰撞评估、检测或分析。在一些实施方式中,碰撞评估器253实现基于硬件的碰撞评估、检测或分析,例如,采用一组专用硬件逻辑电路来表示障碍物,并且通过专用硬件逻辑电路流式传输运动的表示。在基于硬件的碰撞评估、检测或分析中,碰撞检测器能够采用一个或更多个可配置的电路阵列,例如,一个或更多个FPGA259,并且可以可选地产生布尔碰撞评估。In some implementations, the collision evaluator 253 performs software-based collision evaluation, detection, or analysis, for example, by performing bounding box-to-bounding box collision evaluation, detection, or analysis based on a hierarchy of geometric (e.g., sphere) representations of the volumes swept by a robot (e.g., the first robot 202) or its parts during movement. In some implementations, the collision evaluator 253 performs hardware-based collision evaluation, detection, or analysis, for example, by employing a set of dedicated hardware logic circuits to represent obstacles and streaming the representation of motion through the dedicated hardware logic circuits. In hardware-based collision evaluation, detection, or analysis, the collision detector can employ one or more configurable circuit arrays, such as one or more FPGAs 259, and can optionally generate Boolean collision evaluations.
代价设置器254能够设置、更新和/或调整与转换(例如,运动规划图中的边)或运动(例如,运动计划的轨迹)相关联的代价或代价函数。例如,代价设置器254能够至少部分地基于碰撞评估、检测或分析来设置、更新和/或调整代价或代价函数。例如,代价设置器254能够为表示导致或可能导致碰撞的节点或运动之间的转换的边或轨迹设置相对较高的代价值。同样例如,代价设置器254能够为表示不会导致或不太可能导致碰撞的节点或运动之间的转换的边或轨迹设置相对较低的代价值。设置、更新和/或调整代价或代价函数能够包括设置、更新或调整经由一些数据结构(例如,记录中的字段、列表中的指针、表)与相应边或轨迹逻辑关联的代价或代价函数。Cost setter 254 can set, update, and/or adjust costs or cost functions associated with transitions (e.g., edges in a motion planning graph) or motions (e.g., trajectories in a motion plan). For example, cost setter 254 can set, update, and/or adjust costs or cost functions based at least in part on collision assessment, detection, or analysis. For example, cost setter 254 can set relatively high costs for edges or trajectories representing transitions between nodes or motions that cause or may cause a collision. Similarly, for example, cost setter 254 can set relatively low costs for edges or trajectories representing transitions between nodes or motions that do not cause or are unlikely to cause a collision. Setting, updating, and/or adjusting costs or cost functions can include setting, updating, or adjusting costs or cost functions logically associated with the corresponding edges or trajectories via some data structure (e.g., fields in a record, pointers in a list, tables).
在一些实施方式中,例如,代价设置器254可选地能够设置、更新或调整代价或代价函数,以至少部分地表示相应标称轨迹的确定的可接受滞后时间。这能够有利地使得第一机器人控制系统200a从一组可用或候选的标称轨迹中选择标称轨迹,以供机器人执行给定的任务,例如,选择具有最长或最大确定的可接受滞后时间的标称轨迹,用于生成运动计划,该运动计划在机器人执行任务时经历真实世界的条件时实现了更鲁棒的操作。In some implementations, for example, the cost setter 254 may optionally be able to set, update, or adjust the cost or cost function to at least partially represent a determined acceptable lag time for the corresponding nominal trajectory. This advantageously enables the first robot control system 200a to select a nominal trajectory from a set of available or candidate nominal trajectories for the robot to perform a given task, for example, selecting the nominal trajectory with the longest or largest determined acceptable lag time for generating a motion plan that achieves more robust operation when the robot experiences real-world conditions while performing the task.
在一些实施方式中,附加地或可替代地,代价设置器254能够设置、更新或调整代价或代价函数,以至少部分地表示一个或更多个其它参数,诸如以下中的一个或更多个:碰撞的严重程度、能量的消耗或损耗和/或执行或完成的时间或延迟。In some implementations, additionally or alternatively, the cost setter 254 may set, update or adjust the cost or cost function to at least partially represent one or more other parameters, such as one or more of the following: the severity of the collision, energy consumption or loss and/or the time or delay of execution or completion.
可选路径分析器255能够使用运动规划图208以及代价或代价函数来确定或识别一个或更多个合适的路径和/或选择单个路径(即,选定路径,例如,最优或优化路径)。例如,可选路径分析器255能够识别满足一些指定标准(例如,代价在阈值上限内)的一个或更多个路径,或者甚至从路径生成器252确定或识别的一组候选可行路径中选择单个路径(例如,选择单个代价最低的路径)。所识别的路径能够被命名为合适的路径,因为这些路径表示具有可接受的低碰撞概率或可能性的选项。例如,可选路径分析器255能够构成最低代价路径优化器,其确定两个节点之间的最低或相对低代价路径(因此,两个姿态、配置或状态之间由运动规划图中的相应节点表示)。可选路径分析器255能够使用或执行任何种类的路径查找算法(例如,最低代价路径查找算法),考虑到与每个边相关联的代价值,这些代价值表示碰撞的概率或可能性,并且可选地表示一个或更多个其它参数(例如,碰撞的严重程度、能量的消耗或损耗和/或执行或完成的时间或延迟)。在一些实施方式中,基于代价的优化能够可替代地或附加地应用于标称轨迹,以有利地使得在代价值或代价函数中表示可接受滞后时间,如本文描述的,例如,除了碰撞的概率或可能性之外,并且可选地除了或代替以下中的一个或更多个:碰撞的严重程度、能量的消耗或损耗和/或执行或完成的时间或延迟。The optional path analyzer 255 can use the motion planning graph 208 and the cost or cost function to determine or identify one or more suitable paths and/or select a single path (i.e., select a path, such as an optimal or optimized path). For example, the optional path analyzer 255 can identify one or more paths that meet some specified criteria (e.g., the cost is within a threshold upper limit), or even select a single path from a set of candidate feasible paths determined or identified by the path generator 252 (e.g., select a single path with the lowest cost). The identified paths can be named as suitable paths because these paths represent options with an acceptablely low probability or likelihood of collision. For example, the optional path analyzer 255 can constitute a minimum-cost path optimizer, which determines the lowest or relatively low-cost path between two nodes (therefore, the path between two poses, configurations, or states is represented by the corresponding nodes in the motion planning graph). The optional path analyzer 255 is capable of using or executing any kind of pathfinding algorithm (e.g., a minimum-cost pathfinding algorithm) taking into account the costs associated with each edge, which represent the probability or likelihood of a collision, and optionally one or more other parameters (e.g., the severity of a collision, energy consumption or loss, and/or the time or delay of execution or completion). In some implementations, cost-based optimization can be alternatively or additionally applied to the nominal trajectory to advantageously represent acceptable lag times in the cost values or cost function, as described herein, for example, in addition to the probability or likelihood of a collision, and optionally in addition to or replacing one or more of the following: the severity of a collision, energy consumption or loss, and/or the time or delay of execution or completion.
标称轨迹生成器256能够生成机器人能够跟随的标称轨迹,例如,以完成任务。如本文所述,该轨迹包括由时间参数化的姿态或配置或状态的有序序列,机器人或其至少部分能够通过该序列移动,例如,以完成任务。标称轨迹生成器256能够为所有生成的路径生成轨迹,或者如果采用可选路径分析器255,则仅为选定的路径或仅为一个选定的路径生成轨迹。The nominal trajectory generator 256 is capable of generating a nominal trajectory that the robot can follow, for example, to complete a task. As described herein, the trajectory comprises an ordered sequence of poses, configurations, or states parameterized by time, through which the robot, or at least a portion thereof, can move, for example, to complete a task. The nominal trajectory generator 256 is capable of generating trajectories for all generated paths, or, if employing the optional path analyzer 255, generating trajectories only for selected paths or only for a single selected path.
可接受滞后时间评估器257评估给定标称轨迹的各种候选滞后时间,以确定可接受滞后时间,即使相应机器人的实际轨迹与标称轨迹的滞后不超过该可接受滞后时间,也能确保无自碰撞操作。在优选方法中,可接受滞后时间评估器257不仅考虑了给定机器人的标称轨迹中的滞后影响,还考虑了在共享工作空间中操作的其它机器人的相应标称轨迹的滞后影响。因此,可接受滞后时间评估器257为每个标称轨迹识别可接受滞后时间,该标称轨迹假定了最坏的情况,其中在共享工作空间中操作的所有机器人的实际轨迹经历了它们相应的可接受滞后时间。因此,例如,可接受滞后时间评估器257能够确定每个机器人的确保无自碰撞操作的优化(例如,最大)滞后时间。本文描述了确定可接受滞后时间的几种方法,例如关于方法300(图3)、方法400(图4)、方法500(图5)、方法600(图6)和/或方法700(图7)。Acceptable lag time estimator 257 evaluates various candidate lag times for a given nominal trajectory to determine an acceptable lag time that ensures collision-free operation even if the lag between the actual trajectory and the nominal trajectory of the corresponding robot does not exceed this acceptable lag time. In a preferred method, the acceptable lag time estimator 257 considers not only the lag effect in the nominal trajectory of the given robot but also the lag effect of the corresponding nominal trajectories of other robots operating in the shared workspace. Therefore, the acceptable lag time estimator 257 identifies an acceptable lag time for each nominal trajectory that assumes the worst-case scenario, where the actual trajectories of all robots operating in the shared workspace experience their respective acceptable lag times. Thus, for example, the acceptable lag time estimator 257 is able to determine the optimized (e.g., maximum) lag time for each robot to ensure collision-free operation. This article describes several methods for determining acceptable lag times, such as Method 300 (Figure 3), Method 400 (Figure 4), Method 500 (Figure 5), Method 600 (Figure 6), and/or Method 700 (Figure 7).
可选的标称轨迹分析器258能够使用代价值或代价值函数或一些其它目标函数来确定、识别或选择一个或更多个合适的轨迹和/或确定、识别或选择单个轨迹(即,选定轨迹,例如,最优或优化的轨迹)。例如,标称轨迹分析器258能够确定、识别或选择满足一些指定标准(例如,代价在阈值上限内)的一个或更多个轨迹,或者甚至从轨迹生成器256生成的一组可行或候选轨迹中确定、识别或者选择单个轨迹(例如,具有最低代价的轨迹)(例如,确定、识别或选择最低代价轨迹)。例如,标称轨迹分析器258能够构成最低代价轨迹优化器,其确定由运动规划图中的相应节点表示的两个姿态、配置或状态之间的最低或相对低代价的轨迹。例如,标称轨迹分析器258能够为所有机器人选择优化鲁棒操作的一组轨迹,例如,通过最大化给定时间段内所有机器人、给定任务或机器人要执行的一组给定任务的所有滞后时间的总和。标称轨迹分析器258能够使用或执行任何种类的算法,例如,最低代价轨迹查找算法,同时考虑与每个轨迹相关联的代价,其中,代价或代价函数表示碰撞的概率或可能性以及可接受滞后时间,并且可选地,表示碰撞的严重程度、能量的消耗或损耗和/或执行或完成的时间或延迟中的一个或更多个。Optional nominal trajectory analyzer 258 can use cost or a cost function or some other objective function to determine, identify or select one or more suitable trajectories and/or determine, identify or select a single trajectory (i.e., select a trajectory, e.g., the optimal or optimized trajectory). For example, nominal trajectory analyzer 258 can determine, identify or select one or more trajectories that meet some specified criteria (e.g., cost is within a threshold upper limit), or even determine, identify or select a single trajectory (e.g., the trajectory with the lowest cost) from a set of feasible or candidate trajectories generated by trajectory generator 256 (e.g., determine, identify or select the lowest cost trajectory). For example, nominal trajectory analyzer 258 can constitute a lowest cost trajectory optimizer that determines the lowest or relatively low cost trajectory between two poses, configurations or states represented by corresponding nodes in the motion planning graph. For example, nominal trajectory analyzer 258 can select a set of trajectories that optimize robust operation for all robots, e.g., by maximizing the sum of all lag times of all robots, a given task, or a set of given tasks to be performed by a robot within a given time period. The nominal trajectory analyzer 258 is capable of using or executing any kind of algorithm, such as a minimum cost trajectory finding algorithm, while taking into account the cost associated with each trajectory, wherein the cost or cost function represents the probability or likelihood of a collision and the acceptable lag time, and optionally, one or more of the severity of the collision, energy consumption or loss, and/or the time or delay of execution or completion.
可以使用各种算法和结构来确定最低代价路径和/或最低代价轨迹,包括实施贝尔曼-福特(Bellman-Ford)算法的算法和结构,但是也可以使用其它算法和结构,包括但不限于将最低代价路径或最低代价轨迹确定为运动规划图208中两个节点之间的路径,或由时间参数化的有序姿态序列指定的轨迹,使得其组成边或运动的代价或权重之和最小化的任何此类过程。该过程通过确定可接受滞后时间,可选地基于确定的可接受滞后时间选择轨迹,监测实际轨迹以评估实际滞后时间是否接近或超过裕度或阈值(例如,可接受滞后时间),以及可选地选择和/或采取补救措施(如有必要),来改进机器人102(图1)、202(图2)的运动规划技术。Various algorithms and structures can be used to determine the lowest-cost path and/or lowest-cost trajectory, including algorithms and structures implementing the Bellman-Ford algorithm, but other algorithms and structures can also be used, including but not limited to any process that determines the lowest-cost path or lowest-cost trajectory as a path between two nodes in motion planning graph 208, or a trajectory specified by a time-parameterized ordered sequence of poses, such that the sum of the costs or weights of its constituent edges or motions is minimized. This process improves the motion planning techniques of robots 102 (Figure 1) and 202 (Figure 2) by determining an acceptable lag time, optionally selecting a trajectory based on the determined acceptable lag time, monitoring the actual trajectory to assess whether the actual lag time is close to or exceeds a margin or threshold (e.g., acceptable lag time), and optionally selecting and/or taking remedial measures (if necessary).
虽然未示出,但是运动规划器204a可以可选地包括前瞻评估器,其可以导致采取改进措施,例如响应于对阻塞或可能阻塞条件的存在或出现的确定,或者对当给定机器人和/或其它机器人沿着相应轨迹移动时将发生阻塞或可能足阻塞位置的确定。在至少一些实施方式中,前瞻评估器能够确定或选择要采取的改进措施的类型,例如,基于一个或更多个标准从一组不同类型的改进措施中进行选择。如2022年4月6日提交的美国专利申请63/327,917中所述,能够实施各种类型的改进措施中的一种或更多种(其中,称为补救措施)。例如,可以基于将给定机器人从第一目标移动的第二运动计划的分析,生成新的、修订的或替换的第一运动计划,以将给定机器人移动到第一目的。此外,例如,能够为正在或可能会阻塞给定机器人的另一机器人生成新的、修订的或替换的运动计划。同样例如,能够确定或生成一组目标的新顺序,该组目标包括第一目标和至少第二目标。这能够伪随机地或基于一种或更多种启发式方法来确定或生成(例如,始终尝试将第一目标相对于正在被修改的一组目标的顺序向下游移动一个位置)。Although not shown, the motion planner 204a may optionally include a look-ahead evaluator that can lead to the taking of improvement measures, such as in response to the determination of the presence or occurrence of a blocking or potential blocking condition, or the determination of a blocking or potential blocking location that will occur when the given robot and/or other robots move along a corresponding trajectory. In at least some embodiments, the look-ahead evaluator is capable of determining or selecting the type of improvement measure to be taken, for example, selecting from a set of different types of improvement measures based on one or more criteria. As described in U.S. Patent Application 63/327,917, filed April 6, 2022, one or more of various types of improvement measures (wherein referred to as remedial measures) can be implemented. For example, a new, revised, or alternative first motion plan can be generated to move the given robot to a first objective based on the analysis of a second motion plan that moves the given robot from a first objective. Furthermore, for example, a new, revised, or alternative motion plan can be generated for another robot that is or may block the given robot. Also, for example, a new order of a set of objectives can be determined or generated, the set of objectives including a first objective and at least a second objective. This can be determined or generated pseudo-randomly or based on one or more heuristics (e.g., always trying to move the first target one position downstream relative to the order of the set of targets being modified).
虽然未示出,但是运动规划器204a能够可选地包括可选的多路径分析器,该多路径分析器能够分析与两个或更多个运动计划的轨迹相关联的总代价或合计代价(例如,第一运动计划和第二运动计划的总代价),例如,在2022年4月6日提交的美国专利申请63/327,917中描述的。这能够用于识别具有最低总代价的运动计划的组合。例如,多路径分析器能够结合第二运动计划考虑第一运动计划的两个或更多个选项的总代价或合计代价,例如,使用或执行任何种类的最低代价查找算法,同时考虑代价值,该代价值表示相关碰撞的可能性,并且可选地表示中的以下一个或更多个:可接受滞后时间、碰撞的严重程度、能量的消耗或损耗和/或执行或完成与相应边表示的转换相关的时间或延迟。Although not shown, the motion planner 204a may optionally include an optional multipath analyzer capable of analyzing the total or aggregate cost associated with the trajectories of two or more motion plans (e.g., the total cost of a first motion plan and a second motion plan), as described, for example, in U.S. Patent Application 63/327,917, filed April 6, 2022. This can be used to identify combinations of motion plans with the lowest total cost. For example, the multipath analyzer may consider the total or aggregate cost of two or more options of the first motion plan in conjunction with the second motion plan, for example, using or performing any kind of lowest-cost search algorithm, while considering a cost value representing the probability of an associated collision, and optionally representing one or more of the following: acceptable lag time, collision severity, energy consumption or loss, and/or the time or delay associated with performing or completing a transition represented by the corresponding edge.
可选地,运动规划器204a可以包括修剪器260。修剪器260可以接收表示其它机器人完成运动的信息,该信息在本文中被称为运动完成消息209。替代地,可以设置标志来指示完成。作为响应,修剪器260可以移除表示现已完成的运动的障碍物或障碍物的一部分。这可以允许为给定的机器人生成新的运动计划,这可能更有效,或者允许给定的机器人执行之前被另一机器人的运动阻止的任务。该方法有利地允许运动转换器250在生成运动的障碍表示时忽略运动的定时,同时仍然实现比使用其它技术更好的吞吐量。运动规划器204a还可以发送信号、提示或触发,以使得碰撞评估器253在障碍物被修改的情况下执行新的碰撞检测或评估,以产生更新的运动规划图,其中,与边相关联的边权重或代价已经被修改,并且使得代价设置器254、可选路径分析器255和标称轨迹分析器258更新代价值,并且相应地确定新的或修订的路径、轨迹和/或运动计划。Optionally, motion planner 204a may include trimmer 260. Trimmer 260 may receive information indicating that another robot has completed motion, referred to herein as motion completion message 209. Alternatively, a flag may be set to indicate completion. In response, trimmer 260 may remove obstacles or portions of obstacles that indicate that motion has now been completed. This may allow the generation of new motion plans for a given robot, which may be more efficient, or allow a given robot to perform a task previously blocked by the motion of another robot. This method advantageously allows motion converter 250 to ignore the timing of motion when generating obstacle representations of motion, while still achieving better throughput than using other techniques. Motion planner 204a may also send signals, cues, or triggers to cause collision evaluator 253 to perform new collision detection or evaluation in the event that obstacles have been modified, to produce an updated motion planning graph, wherein the edge weights or costs associated with the edges have been modified, and to cause cost setter 254, optional path analyzer 255, and nominal trajectory analyzer 258 to update cost values and accordingly determine new or revised paths, trajectories, and/or motion plans.
运动规划器204a可以可选地包括环境转换器263,其将来自可选传感器262(例如,数码相机)的输出(例如,环境的数字化表示)转换为障碍物的表示。因此,运动规划器204a能够执行考虑环境中的瞬态对象(例如,人、动物等)的运动规划。The motion planner 204a may optionally include an environment 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 a representation of obstacles. Therefore, the motion planner 204a is capable of performing motion planning that takes into account transient objects in the environment (e.g., people, animals, etc.).
一个或更多个处理器处理器222和/或运动规划器204a可以是,或可以包括任何逻辑处理单元,例如,一个或更多个中央处理单元(CPU)、数字信号处理器(DSP)、图形处理单元(GPU)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、可编程逻辑控制器(PLC)等。市售计算机系统的非限制性示例包括但不限于:公司提供的Celeron、Core、Core 2、Itanium和Xeon系列微处理器;美国超威半导体公司提供的K8、K10、Bulldozer和Bobcat系列微处理器;美国苹果电脑公司提供的A5、A6和A7系列微处理器;美国高通股份有限公司提供的骁龙系列微处理器;以及美国甲骨文公司提供的SPARC系列微处理器。图2中示出的各种结构的构造和操作可以实施或采用在以下中描述的或与之类似的结构、技术和算法:2017年6月9日提交的国际专利申请号PCT/US2017/036880;2016年1月5日提交的国际专利申请公开号WO 2016/122840;2018年1月12日提交的美国专利申请号62/616783;国际专利申请PCT/US2021/013610,公开号为WO 2021/150439;和/或2022年4月6日提交的美国专利申请63/327917。One or more processors, processor 222 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 commercially available computer systems include, but are not limited to: Celeron, Core, Core 2, Itanium, and Xeon series microprocessors provided by the company; K8, K10, Bulldozer, and Bobcat series microprocessors provided by Advanced Micro Devices, Inc.; A5, A6, and A7 series microprocessors provided by Apple Computer, Inc.; Snapdragon series microprocessors provided by Qualcomm Incorporated, Inc.; and SPARC series microprocessors provided by Oracle Corporation. The construction and operation of the various structures shown in Figure 2 can be implemented or employ structures, techniques, and algorithms described or similar to those described below: International Patent Application No. PCT/US2017/036880, filed June 9, 2017; International Patent Application Publication No. WO 2016/122840, filed January 5, 2016; U.S. Patent Application No. 62/616783, filed January 12, 2018; International Patent Application PCT/US2021/013610, Publication No. WO 2021/150439; and/or U.S. Patent Application No. 63/327917, filed April 6, 2022.
虽然不是必需的,但是许多实施方式将在计算机可执行指令的一般上下文下进行描述,例如存储在计算机或处理器可读介质上并由一个或更多个计算机或处理器执行的程序应用模块、对象或宏,其能够执行障碍物表示、碰撞评估和其它运动规划操作。Although not strictly necessary, 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, capable of performing obstacle representation, collision assessment, and other motion planning operations.
运动规划操作可能包括但不限于生成或转换以下一项、多项或全部:基于几何模型的机器人几何表示,任务规范215,以及机器人在各种状态或姿态下和/或在状态或姿态之间移动期间占用的体积(例如,扫掠体积)的可选表示,数字形式的表示,例如,点云、欧几里德距离场、数据结构格式(例如分层格式、非分层格式)和/或曲线(例如,多项式或样条表示)。运动规划操作可以可选地包括但不限于生成或转换以下中的一项、多项或全部:将静态或持续障碍物的表示和/或静态或瞬态障碍物的感知数据表示成数字形式,例如,点云、欧几里德距离场、数据结构格式(例如,分层格式、非分层格式)和/或曲线(例如,多项式或样条表示)。Motion planning operations may include, but are not limited to, generating or transforming one or more or all of the following: a geometric representation of the robot based on a geometric model, task specification 215, and optional representations of the volume (e.g., swept volume) occupied by the robot in various states or poses and/or during movement between states or poses, in digital form, such as point clouds, Euclidean distance fields, data structure formats (e.g., hierarchical formats, non-hierarchical formats), and/or curves (e.g., polynomial or spline representations). Motion planning operations may optionally include, but are not limited to, generating or transforming one or more or all of the following: representing static or persistent obstacles and/or perceptual data of static or transient obstacles in digital form, such as point clouds, Euclidean distance fields, data structure formats (e.g., hierarchical formats, non-hierarchical formats), and/or curves (e.g., polynomial or spline representations).
运动规划操作可以包括但不限于使用各种碰撞评估技术或算法(例如,基于软件、基于硬件)评估、检测、确定或预测机器人的各种姿态、配置或状态之间转换的碰撞,或者机器人沿相应轨迹在状态或姿态之间的运动的碰撞。Motion planning operations may include, but are not limited to, using various collision assessment techniques or algorithms (e.g., software-based, hardware-based) to assess, detect, determine, or predict collisions during transitions between various poses, configurations, or states of a robot, or collisions during the robot's motion between states or poses along corresponding trajectories.
在一些实施方式中,运动规划操作可以包括但不限于:确定一个或更多个具有标称轨迹的运动规划图、运动计划或路线图;标称轨迹的可接受滞后时间,存储所确定的规划图、运动计划或路线图或可接受滞后时间,和/或提供规划图、运动计划或路线图或可接受滞后时间,来控制一个或更多个机器人的操作,并可选地监测机器人的操作,并且在必要时选择和/或采取补救措施。In some implementations, motion planning operations may include, but are not limited to: determining one or more motion plans, motion schemes, or route maps with nominal trajectories; acceptable lag times of the nominal trajectories; storing the determined plans, motion schemes, or route maps or acceptable lag times; and/or providing plans, motion schemes, or route maps or acceptable lag times to control the operation of one or more robots, and optionally monitor the operation of the robots, and select and/or take remedial measures as necessary.
在一个实施方式中,响应于函数调用或类似进程执行碰撞检测或评估,并向其返回布尔值。碰撞评估器253可以经由一个或更多个现场可编程门阵列(FPGA)259和/或一个或更多个专用集成电路(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 evaluator 253 may be implemented via one or more field-programmable gate arrays (FPGAs) 259 and/or one or more application-specific integrated circuits (ASICs) to achieve low latency, relatively low power consumption, and increased amount of information that can be processed while performing collision detection.
在各种实施方式中,这些操作可以完全在硬件电路中执行,也可以作为存储在诸如系统存储器224a之类的存储器中的软件执行,以及由一个或更多个硬件处理器222a执行,例如,一个或更多个微处理器、数字信号处理器(DSP)、现场可编程门阵列(FPGA)、专用集成电路(ASIC)、图形处理单元(GPU)处理器、可编程逻辑控制器(PLC)、电可编程只读存储器(EEPROM),或者作为存储在存储器中的硬件电路和软件的组合来执行。In various implementations, these operations may be performed entirely in hardware circuitry, as software stored in a memory such as system memory 224a, or 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日提交的国际专利申请号PCT/US2017/036880;2016年1月5日提交的国际专利申请号WO 2016/122840;2018年1月12日提交的美国专利申请号62/616783;2019年6月3日提交的美国专利申请号62/856548;2020年6月23日提交的国际专利申请号PCT/US2020/039193(公开号为WO 2020/263861);国际专利申请PCT/US2021/013610,公开号为WO 2021/150439;和/或2022年4月6日提交的美国专利申请63/327917。相关领域的技术人员将理解,示出的实施方式以及其它实施方式能够用其它系统结构和布置和/或其它计算系统结构和布置来实践,包括机器人、手持设备、多处理器系统、基于微处理器或可编程消费电子产品、个人计算机(“PC”)、联网PC、微型计算机、大型计算机等。这些实施方式或实施例或其部分(例如,在配置时间和运行时间)能够由通过通信网络联接的远程处理设备执行任务或模块时,在分布式计算环境中实践。在分布式计算环境中,程序模块可以位于本地和远程存储设备或介质两者中。然而,某些类型的信息存储在哪里以及如何存储对于帮助改进运动规划是重要的。The following also describe aspects of sensing, mapping, collision detection, and pathfinding that can be used in whole or in part: International Patent Application No. PCT/US2017/036880, filed June 9, 2017; International Patent Application No. WO 2016/122840, filed January 5, 2016; U.S. Patent Application No. 62/616783, filed January 12, 2018; U.S. Patent Application No. 62/856548, filed June 3, 2019; International Patent Application No. PCT/US2020/039193 (Publication No. WO 2020/263861), filed June 23, 2020; International Patent Application PCT/US2021/013610, Publication No. WO 2021/150439; and/or U.S. Patent Application No. 63/327917, filed April 6, 2022. Those skilled in the art will understand that the illustrated embodiments and other embodiments can be practiced with other system architectures and arrangements and/or other computing system architectures and arrangements, including robots, handheld devices, multiprocessor systems, microprocessor-based or programmable consumer electronics, personal computers (“PCs”), networked PCs, microcomputers, mainframes, etc. These embodiments or examples, or portions thereof (e.g., at configuration and runtime), can be practiced in a distributed computing environment when tasks or modules are performed by a remote processing device connected via a communication network. In a distributed computing environment, program modules can reside on both local and remote storage devices or media. However, where and how certain types of information are stored is important for helping to improve motion planning.
例如,各种运动规划解决方案将路线图(即,运动规划图)“嵌入(bake in)”到处理器(例如,FPGA 259)中,并且路径图中的每条边对应于处理器的不可重新配置的布尔电路。将规划图“嵌入”到处理器中的设计存在一个问题,即处理器电路有限,无法存储多个或大型规划图,并且通常不可重新配置以用于不同的机器人。For example, various motion planning solutions "bake in" the pathmap (i.e., motion planning graph) into a processor (e.g., FPGA 259), and each edge in the pathmap corresponds to a non-reconfigurable Boolean circuit in the processor. A problem with this design is that the processor has limited circuitry, making it impossible to store multiple or large planning graphs, and they are generally not reconfigurable for use with different robots.
一种解决方案是提供可重新配置的设计,该设计将规划图信息放入存储器中。这种方法将信息存储在存储器中,而不是嵌入到电路中。另一种方法是采用模板化的可重新配置电路代替存储器。One solution is to provide a reconfigurable design that stores the planning information in memory. This approach stores the information in memory rather than embedding it into the circuitry. Another approach is to use templated, reconfigurable circuitry instead of memory.
如上文描述的,一些信息(例如,机器人几何模型)可以在配置时间(即运行时间之前)期间被捕获、接收、输入或提供。可以在配置时间期间处理接收到的信息,以生成处理后的信息(例如,运动规划图208),从而在运行时间期间加速操作或降低计算复杂度。As described above, some information (e.g., robot geometry) can be captured, received, input, or provided during configuration time (i.e., before runtime). The received information can be processed during configuration time to generate processed information (e.g., motion planning graph 208), thereby accelerating operation or reducing computational complexity during runtime.
在运行时间期间,可以对整个环境(即,共享工作空间)执行碰撞检测,包括对于任何姿态或姿态之间的移动,确定机器人的任何部分是否将会或预期会与机器人自身的另一部分、与其它机器人或其部分、与环境中的持续或静态障碍物、或与环境中的具有未知轨迹的瞬态障碍物(例如,人)碰撞。During runtime, collision detection can be performed across the entire environment (i.e., the shared workspace), including determining whether any part of the robot will or is expected to collide with another part of the robot itself, with other robots or parts thereof, with persistent or static obstacles in the environment, or with transient obstacles in the environment with unknown trajectories (e.g., people) for any pose or movement between poses.
第一机器人控制系统200a或一些其它基于处理器的系统可以包括滞后监测器264(可互换地称为滞后时间监测器264)和/或补救措施选择器266。滞后时间监测器264和/或补救措施选择器266在运行时间期间(例如,在一个或更多个机器人完成一个或更多任务的操作期间)操作,监测机器人的操作,并且在必要时(例如,如果实际滞后时间接近或超过裕度或阈值(例如,相应的可接受滞后时间),则减慢或停止一个或更多个机器人)选择并采取一个或更多个补救措施。The first robot control system 200a or some other processor-based system may include a hysteresis monitor 264 (interchangeably referred to as hysteresis time monitor 264) and/or a remedial action selector 266. The hysteresis time monitor 264 and/or the remedial action selector 266 operate during runtime (e.g., during the operation of one or more robots completing one or more tasks), monitor the operation of the robots, and select and take one or more remedial actions when necessary (e.g., slowing down or stopping one or more robots if the actual hysteresis time approaches or exceeds a margin or threshold (e.g., the corresponding acceptable hysteresis time).
滞后时间监测器264监测由机器人执行的实际轨迹的实际滞后时间,并将实际滞后时间与相应标称轨迹的裕度或阈值(例如,表示或甚至等于相应可接受滞后时间的裕量或阈值)进行比较。如前所述,虽然在一些情况下实际轨迹可能与标称轨迹匹配,但是在许多情况下,实际轨迹将不会与标称轨迹匹配,典型地,实际轨迹的至少一些姿态、配置、状态或运动的执行定时滞后于标称轨迹指定的那些姿态、配置状态或运动的定时。滞后时间监测器264确定实际滞后时间,以及机器人的实际轨迹的实际滞后时间的监测量是否接近或超过相应机器人的裕度或阈值(例如,相应标称轨迹的相应确定的可接受滞后时间)。例如,如果在共享工作空间中操作的任何机器人的实际滞后时间超过相应的阈值(例如,接近或超过相应的可接受滞后时间),则滞后时间监测器264能够提供指示(例如,设置标志、发送信息和/或调用补救措施选择器266)。在一些实施方式中,裕度或阈值能够被设置为包括期望的安全系数,例如,小于相应标称轨迹的确定的可接受滞后时间的设定量或定义的百分比。因此,在一些实施方式中,裕度或阈值能够被设置为等于相应的可接受滞后时间,而在其它实施方式中,裕量或阈值可以小于(例如,小于10%)相应的可接收滞后时间,从而使得在可能发生自碰撞之前采取检测和补救措施。The lag time monitor 264 monitors the actual lag time of the actual trajectory executed by the robot and compares the actual lag time with a margin or threshold (e.g., a margin or threshold representing or even equal to the corresponding acceptable lag time) of the corresponding nominal trajectory. As previously mentioned, while the actual trajectory may match the nominal trajectory in some cases, in many cases the actual trajectory will not match the nominal trajectory. Typically, the timing of the execution of at least some poses, configurations, states, or movements of the actual trajectory lags behind the timing of those poses, configuration states, or movements specified by the nominal trajectory. The lag time monitor 264 determines the actual lag time and whether the monitored amount of the actual lag time of the robot's actual trajectory is close to or exceeds the margin or threshold of the corresponding robot (e.g., the corresponding determined acceptable lag time of the corresponding nominal trajectory). For example, if the actual lag time of any robot operating in a shared workspace exceeds the corresponding threshold (e.g., close to or exceeds the corresponding acceptable lag time), the lag time monitor 264 can provide an indication (e.g., setting a flag, sending a message, and/or invoking the remedial action selector 266). In some implementations, the margin or threshold can be set to include a desired safety factor, for example, less than a set amount or defined percentage of a determined acceptable hysteresis time for the corresponding nominal trajectory. Thus, in some implementations, the margin or threshold can be set equal to the corresponding acceptable hysteresis time, while in other implementations, the margin or threshold can be less than (e.g., less than 10%) the corresponding acceptable hysteresis time, thereby enabling detection and remedial measures to be taken before a self-collision may occur.
可选补救措施选择器266选择一个或更多个适当的补救措施和/或响应于确定所监测的滞后时间量超过任何机器人的相应轨迹的相应阈值(例如,所确定的可接受滞后时间)而导致采取选定的补救措施。确定实际滞后时间超过相应阈值(例如,确定的可接受滞后时间)意味着不再确保无自碰撞移动,因此可能需要采取一个或更多个补救措施。The optional remedial action selector 266 selects one or more appropriate remedial actions and/or takes the selected remedial action in response to determining that the monitored lag time exceeds a corresponding threshold (e.g., a determined acceptable lag time) for any robot's corresponding trajectory. Determining that the actual lag time exceeds the corresponding threshold (e.g., a determined acceptable lag time) means that collision-free movement is no longer guaranteed, and therefore one or more remedial actions may be required.
补救措施能够包括以下中的一项或更多项:停止一个或更多个机器人的移动,减慢一个或更多个机器人的移动和/或加快一个或更多个机器人的移动。例如,能够停止一个、两个、更多个甚至所有机器人的移动。此外,例如,一个、两个、更多个甚至所有机器人的移动均能够被减慢,例如,相对于彼此减慢不同的量。此外,例如,一个、两个、更多个甚至所有机器人的移动能够被加快,例如,相对于彼此加快不同的量。此外,例如,能够停止一个或更多个机器人的移动,同时减慢一个或更多个机器人的移动。此外,例如,能够停止一个或更多个机器人的移动,同时加快一个或更多机器人的移动或使得一个或更多机器人的移动保持恒定。此外,例如,能够减慢一个或更多个机器人的移动,同时加快一个或更多机器人的移动或使得一个或更多机器人的移动保持恒定。此外,例如,能够停止一个或更多个机器人的移动,同时减慢一个或更多个机器人的移动以及同时加快一个或更多机器人的移动或使得一个或更多机器人的移动保持恒定。为了采取至少一个补救措施,基于处理器的系统能够向一个或更多个致动器(例如,经由运动控制器220的致动器218a至218c)发送指令,以使机器人的移动停止、减慢、加快甚至沿着相应的标称轨迹指定的相应轨迹前进。例如,这可以接着重新启动机器人的移动,例如,从移动停止或减慢的地方重新启动移动,尽管在一些情况下可能包括返回到相应标称轨迹的起点并从那里重新开始。Remedial measures can include one or more of the following: stopping the movement of one or more robots, slowing down the movement of one or more robots, and/or speeding up the movement of one or more robots. For example, it is possible to stop the movement of one, two, more, or even all robots. Furthermore, for example, the movement of one, two, more, or even all robots can be slowed down, for example, by different amounts relative to each other. Furthermore, for example, the movement of one, two, more, or even all robots can be speeded up, for example, by different amounts relative to each other. Furthermore, for example, it is possible to stop the movement of one or more robots while simultaneously slowing down the movement of one or more robots. Furthermore, for example, it is possible to stop the movement of one or more robots while simultaneously speeding up the movement of one or more robots or keeping the movement of one or more robots constant. Furthermore, for example, it is possible to slow down the movement of one or more robots while simultaneously speeding up the movement of one or more robots or keeping the movement of one or more robots constant. Furthermore, for example, it is possible to stop the movement of one or more robots while simultaneously slowing down the movement of one or more robots and simultaneously speeding up the movement of one or more robots or keeping the movement of one or more robots constant. To take at least one remedial action, the processor-based system can send instructions to one or more actuators (e.g., actuators 218a to 218c via motion controller 220) to stop, slow down, speed up, or even proceed along a corresponding trajectory specified by the corresponding nominal trajectory. For example, this can then restart the robot's movement, such as from where the movement stopped or slowed down, although in some cases this may involve returning to the starting point of the corresponding nominal trajectory and starting again from there.
图3示出了根据至少一个示出的实施方式的基于处理器的系统的操作方法300,该系统执行运动规划以控制将在共享工作空间中操作的机器人。根据至少一个示出的实施方式,基于处理器的系统包括一个或更多个处理器,其执行处理器可执行指令,以基于其它机器人的标称轨迹为每个机器人确定可接受滞后时间,而不必考虑其它机器人的标称轨迹中滞后时间的影响,并且生成或选择指定标称轨迹的运动计划,该标称轨迹与相应的可接受滞后时间相关联。例如,方法300能够在配置或“预运行”时间期间执行,即运动规划中的部分或全部发生的时间,例如,为每个机器人生成标称轨迹和/或运动计划。配置或“预运行”时间能够在机器人按照相应机器人的标称轨迹移动之前发生,例如,在运行时间之前,其中,运行时间是一个或更多个机器人执行相应运动计划的时间。这有利地允许在运行时间之前执行一些计算量最密集的工作,因为此时响应能力并不是特别受关注。在至少一些实施方式中,方法300或其部分在配置时间或预运行时间之后的运行时间(即,一个或更多个机器人正在执行任务的时间)期间执行。在其它实施方式中,方法300在配置时间或预运行时间之后的运行时间(即,一个或更多个机器人执行任务的时间)期间执行。Figure 3 illustrates an operation method 300 of a processor-based system according to at least one illustrated embodiment, the system performing motion planning to control robots operating in a shared workspace. According to at least one illustrated embodiment, the processor-based system includes one or more processors that execute processor-executable instructions to determine an acceptable lag time for each robot based on the nominal trajectories of other robots, without considering the impact of lag times in the nominal trajectories of other robots, and to generate or select a motion plan for a specified nominal trajectory associated with a corresponding acceptable lag time. For example, method 300 can be performed during a configuration or “pre-run” time, i.e., the time when some or all of the motion planning occurs, such as generating a nominal trajectory and/or motion plan for each robot. The configuration or “pre-run” time can occur before the robots move according to their respective nominal trajectories, for example, before the runtime, where the runtime is the time when one or more robots execute their respective motion plans. This advantageously allows some of the most computationally intensive work to be performed before the runtime, since responsiveness is not particularly of concern at this time. In at least some embodiments, method 300 or a portion thereof is executed during runtime (i.e., the time during which one or more robots are performing tasks) following a configuration time or pre-run time. In other embodiments, method 300 is executed during runtime (i.e., the time during which one or more robots are performing tasks) following a configuration time or pre-run time.
方法300在302处开始,例如,响应于系统或其组件的启动或通电、信息或数据的接收,或调用例程或程序的调用或启用。Method 300 begins at 302, for example, in response to the startup or power-on of the system or its components, the receipt of information or data, or the invocation or activation of a routine or program.
虽然图3中未示出,但是方法300能够生成路径;对这些路径执行碰撞评估或检测或分析;设置、更新或调整路径的边的代价;并且可选地执行分析以基于代价识别或选择路径(例如,最低代价路径)。上文参考图2对此进行了描述,并且至少描述了本文引用的参考文献中的一些方面。为了简明起见,在方法300中省略了这些。Although not shown in Figure 3, method 300 is capable of generating paths; performing collision assessments or detections or analyses on these paths; setting, updating, or adjusting the costs of the edges of the paths; and optionally performing analyses to identify or select paths based on cost (e.g., the lowest-cost path). This has been described above with reference to Figure 2, and at least some aspects of the references cited herein have been described. For the sake of brevity, these are omitted in method 300.
可选地,在304中,基于处理器的系统的至少一个处理器生成或访问(例如,接收、检索)每个机器人I的一组标称轨迹。如前文所述,标称轨迹是“指定”的轨迹,其中,每个轨迹包括机器人的姿态、配置或状态的有序集合或序列,该有序集合或序列在两个姿态、配置和状态(例如,起始姿态、配置或者状态;结束姿态、配置、状态)之间延伸,并包括每个姿态或配置的相应定时。定时能够以相对术语(定时由相对于前一姿态的相对偏移定义)或绝对术语(定时由从轨迹执行开始的相对偏移定义,例如,相对于公共时钟)来指定。申请人注意到,尽管任何给定的轨迹能够对应于机器人的平滑运动,但本文所使用的术语“轨迹”并不局限于此,并且通常将会指定不平滑的运动,也不会为机器人或其部分定义直线路径。在至少一些情况下,标称轨迹能够指定或包括机器人或其部分的运动中的一个或更多个暂停,和/或能够指定机器人或其部分的运动方向或路径方向的改变甚至反向、速率的改变、速度的改变和加速度的改变,并且在方向、速率、速度或时间方面可能不是平滑的运动。例如,标称轨迹能够指定时间参数化的有序姿态集合或姿态序列,机器人或其部分通过该姿态集合或序列移动以执行任务或部分任务。执行任何给定任务能够采用一个或更多个标称轨迹。如本文所描述的,机器人或其部分的实际运动或实际轨迹可能会偏离相应的标称轨迹,例如,由于姿态之间转换的意外延迟(例如,由于需要在目标对象上逗留或停留比预期更长的时间)。Optionally, in 304, at least one processor of the processor-based system generates or accesses (e.g., receives, retrieves) a set of nominal trajectories for each robot I. As previously described, a nominal trajectory is a “specified” trajectory, wherein each trajectory comprises an ordered set or sequence of robot poses, configurations, or states extending between two poses, configurations, and states (e.g., a starting pose, configuration, or state; an ending pose, configuration, or state), and includes a corresponding timing for each pose or configuration. Timing can be specified in relative terms (timing is defined by a relative offset relative to the previous pose) or absolute terms (timing is defined by a relative offset from the start of trajectory execution, e.g., relative to a common clock). The applicant notes that while any given trajectory can correspond to smooth motion of the robot, the term “trajectory” as used herein is not limited to this and will generally specify non-smooth motion, and will not define a straight path for the robot or its parts. In at least some cases, a nominal trajectory can specify or include one or more pauses in the motion of a robot or part thereof, and/or can specify changes or even reversals in the direction or path of motion of the robot or part thereof, changes in rate, velocity, and acceleration, and may not be smooth motion in terms of direction, rate, velocity, or time. For example, a nominal trajectory can specify a time-parameterized set or sequence of poses through which the robot or part thereof moves to perform a task or part of a task. Performing any given task can employ one or more nominal trajectories. As described herein, the actual motion or actual trajectory of the robot or part thereof may deviate from the corresponding nominal trajectory, for example, due to unexpected delays in transitions between poses (e.g., due to the need to linger or remain on a target object for a longer period than expected).
能够采用多种技术和/或算法中的任何一种来生成标称轨迹,例如,基于样本的运动规划器(SBMP),例如,概率路线图(PRM)或快速探索随机树(RRT、RTT*s)、稳定稀疏RRT*(SST*)和/或快速匹配树(FMT)。在至少一种实施方式中,标称轨迹能够经由国际专利申请PCT/US2021/013610(公开号为WO 2021150439A1)中描述的系统、方法和技术生成。本专利申请的教导不限于特定形式的标称轨迹的生成。有利地,本文的教导包括以下方面的任何组合或排列:在计算上高效地使用标称轨迹来生成具有相关联的可接受滞后时间的运动计划,监测实际运动与标称轨迹在滞后时间方面的偏差,可选地对超过相应可接受滞后时间的偏差采取补救措施,和/或可选地使用确定的滞后时间来为运动计划选择一组标称轨迹以增强操作的鲁棒性。The nominal trajectory can be generated using any of a variety of techniques and/or algorithms, such as sample-based motion planners (SBMPs), probabilistic route maps (PRMs) or fast exploratory random trees (RRTs, RTTs), stable sparse RRTs (SSTs), and/or fast matching trees (FMTs). In at least one embodiment, the nominal trajectory can be generated via the system, method, and techniques described in International Patent Application PCT/US2021/013610 (Publication No. WO 2021150439A1). The teachings of this patent application are not limited to the generation of a particular form of nominal trajectory. Advantageously, the teachings herein include any combination or arrangement of the following: computationally efficient use of nominal trajectories to generate motion plans with associated acceptable lag times; monitoring deviations between actual motion and nominal trajectories in terms of lag time; optionally taking remedial measures for deviations exceeding the corresponding acceptable lag time; and/or optionally using determined lag times to select a set of nominal trajectories for the motion plan to enhance operational robustness.
在306中,基于处理器的系统的至少一个处理器初始化机器人计数器I,例如,将机器人计数器设置为等于整数值1。在308中,基于处理器的系统的至少一个处理器执行外部迭代循环,对将在共享工作空间中操作的两个或更多机器人中的每个机器人执行迭代,或者直到达到停止条件(例如,确定确保无自碰撞移动的最大滞后时间)。In 306, at least one processor of the processor-based system initializes the robot counter I, for example, by setting the robot counter to an integer value of 1. In 308, at least one processor of the processor-based system executes an external iterative loop, iterating over each of two or more robots that will operate in the shared workspace, or until a stopping condition is met (e.g., determining the maximum lag time to ensure self-collision-free movement).
在310中,基于处理器的系统的至少一个处理器初始化标称轨迹计数器J,例如,将标称轨迹计数器设置为等于整数值1。In 310, at least one processor of the processor-based system initializes the nominal trajectory counter J, for example, by setting the nominal trajectory counter to an integer value of 1.
在312中,基于处理器的系统的至少一个处理器执行内部迭代循环,对给定机器人的每个标称轨迹执行迭代,至少直到达到停止条件。In 312, at least one processor of the processor-based system executes an internal iterative loop to iterate over each nominal trajectory of a given robot, at least until a stopping condition is met.
在314中,基于处理器的系统的至少一个处理器确定当前机器人(即,外迭代循环中的当前)的当前标称轨迹(即,内迭代循环中的当前)的相应可接受滞后时间。相应的可接受滞后时间反映了当前标称轨迹J中的最大可接受延迟或滞后,在当前机器人执行标称轨迹时(相应的可接收滞后时间被引入到当前机器人的标称轨迹中),该最大可接受延迟或滞后仍然保证当前机器人相对于各自按照相应标称轨迹移动的其它机器人的无自碰撞移动。只要所有其它机器人都按照它们的相应标称轨迹运行(即,滞后时间=0),给定机器人I的可接受滞后时间就能够保证不会发生自碰撞。换句话说,只要给定机器人的相应当前实际滞后时间小于或等于(即,不大于)该机器人的相应可接受滞后时间,并且其它机器人按照其标称轨迹运行,则机器人将不会相互碰撞(即,保证了机器人之间不会发生自碰撞)。In 314, at least one processor of the processor-based system determines the corresponding acceptable lag time of the current nominal trajectory (i.e., the current trajectory in the inner iteration loop) of the current robot (i.e., the current trajectory in the outer iteration loop). The corresponding acceptable lag time reflects the maximum acceptable delay or lag in the current nominal trajectory J, which, while the current robot executes its nominal trajectory (the corresponding acceptable lag time is introduced into the current robot's nominal trajectory), still guarantees the current robot's self-collision-free movement relative to other robots moving along their respective nominal trajectories. The acceptable lag time of a given robot I guarantees no self-collision as long as all other robots are running along their respective nominal trajectories (i.e., lag time = 0). In other words, as long as the corresponding current actual lag time of a given robot is less than or equal to (i.e., not greater than) the robot's corresponding acceptable lag time, and other robots are running along their nominal trajectories, the robots will not collide with each other (i.e., self-collision between robots is guaranteed).
在316中,基于处理器的系统的至少一个处理器确定是否考虑了给定机器人的标称轨迹中的每个,例如,确定标称轨迹计数器J是否等于给定机器人的标称轨迹的总数(例如,J=M?)。如果尚未考虑给定机器人的标称轨迹中的每个标称轨迹,则控制转到318,在318中,标称轨迹计数器递增(例如,J=J+1),以及然后控制返回到312,以考虑给定机器人的下一标称轨迹。如果已经考虑了给定机器人的每个标称轨迹(例如,J=M),则控制直接转到320。In 316, at least one processor of the processor-based system determines whether each of the nominal trajectories of the given robot has been considered, for example, determining whether the nominal trajectory counter J is equal to the total number of nominal trajectories of the given robot (e.g., J = M?). If each of the nominal trajectories of the given robot has not yet been considered, control proceeds to 318, in which the nominal trajectory counter is incremented (e.g., J = J + 1), and then control returns to 312 to consider the next nominal trajectory of the given robot. If each of the nominal trajectories of the given robot has already been considered (e.g., J = M), control proceeds directly to 320.
可选地,在320中,基于处理器的系统的至少一个处理器选择针对给定机器人确定的一组确定的可接受滞后时间中的最大值。Optionally, in 320, at least one processor of the processor-based system selects the maximum value from a determined set of acceptable lag times for a given robot.
在322中,基于处理器的系统的至少一个处理器为给定机器人提供一个或更多个确定的可接受滞后时间(例如,提供所选择的确定的可接收滞后时间的最大值),以用于确定至少给定机器人的运动计划和/或控制给定机器人的操作。例如,这能够包括将一个或更多个确定的可接受滞后时间提供给不同的处理器,或者将一个或更多个确定的可接受滞后时间传输到处理器的不同寄存器。In 322, at least one processor of the processor-based system provides one or more determined acceptable lag times (e.g., providing a maximum value of selected determined acceptable lag times) to a given robot for determining a motion plan for at least the given robot and/or controlling the operation of the given robot. For example, this can include providing one or more determined acceptable lag times to different processors, or transferring one or more determined acceptable lag times to different registers of the processors.
在324中,基于处理器的系统的至少一个处理器确定是否考虑了机器人中的每个机器人,例如,确定机器人计数器I是否等于机器人的总数(例如,I=N?)。如果尚未考虑机器人中的每个(例如,I<N),则控制转到326,在326中,基于处理器的系统的至少一个处理器迭代机器人计数器(例如,I=I+1),以及然后控制返回到308以考虑下一个机器人。如果机器人中的每个已被处理(例如,I=N),则控制直接转到328。In step 324, at least one processor of the processor-based system determines whether each robot in the robot array has been considered, for example, whether the robot counter I is equal to the total number of robots (e.g., I = N?). If each robot has not yet been considered (e.g., I < N), control proceeds to step 326, where at least one processor of the processor-based system iterates the robot counter (e.g., I = I + 1), and then control returns to step 308 to consider the next robot. If each robot has been processed (e.g., I = N), control proceeds directly to step 328.
在328中,基于处理器的系统的至少一个处理器为每个机器人生成或选择相应的运动计划。运动计划能够是或能够表示机器人的与最大可接受滞后时间相关联的标称轨迹。运动计划能够是或能够表示一个或更多个机器人的标称轨迹。这种方法能够有利地增强由运动规划生成的运动计划的鲁棒性,并且从而改善执行所得运动计划的机器人的操作。In 328, at least one processor in the processor-based system generates or selects a corresponding motion plan for each robot. The motion plan can be, or can represent, the robot's nominal trajectory associated with a maximum acceptable lag time. The motion plan can be, or can represent, the nominal trajectories of one or more robots. This approach advantageously enhances the robustness of the motion plans generated by motion planning, and thereby improves the operation of the robot executing the resulting motion plans.
在330中,基于处理器的系统的至少一个处理器将相应的运动计划提供给每个机器人或运动控制器,以使机器人按照相应的运动计划移动。In 330, at least one processor of the processor-based system provides a corresponding motion plan to each robot or motion controller so that the robot moves according to the corresponding motion plan.
在332中,方法300可以终止,例如,直到再次调用。虽然方法300是以有序流程来描述的,但在许多实施方式中,各种动作或操作将同时或并行执行,和/或能够包括额外的动作和/或省略一些动作。In 332, method 300 may terminate, for example, until it is called again. Although method 300 is described as an ordered process, in many implementations, various actions or operations will be performed simultaneously or in parallel, and/or additional actions may be included and/or some actions may be omitted.
图4示出了根据至少一个示出的实施方式的基于处理器的系统的操作方法400,该系统执行运动规划以控制将在共享工作空间中操作的机器人。该基于处理器的系统包括一个或更多个处理器,这些处理器执行处理器可执行指令,以基于其它机器人的标称轨迹为每个机器人确定可接受滞后时间,并且同时必须考虑其它机器人的标称轨迹中滞后时间的影响,并且生成或选择指定标称轨迹的运动计划,该标称轨迹与相应的可接受滞后时间相关联。例如,方法400能够在配置或“预运行”时间期间执行,即运动规划中的部分或全部发生的时间,例如,为每个机器人生成标称轨迹和/或运动计划。配置或“预运行”时间能够在机器人按照相应机器人的标称轨迹移动之前发生,例如,在运行时间之前,其中,运行时间是一个或更多个机器人执行相应运动计划的时间。这有利地允许在运行时间之前执行一些计算量最密集的工作,因为此时响应能力并不是特别受关注。在至少一些实施方式中,方法400或其部分在配置时间或预运行时间之后的运行时间(即,一个或更多个机器人正在执行任务的时间)期间执行。在另一些其他实施方式中,方法400在配置时间或预运行时间之后的运行时间(即,一个或更多个机器人执行任务的时间)期间执行。Figure 4 illustrates an operation method 400 of a processor-based system according to at least one illustrated embodiment, the system performing motion planning to control robots operating in a shared workspace. The processor-based system includes one or more processors that execute processor-executable instructions to determine an acceptable lag time for each robot based on the nominal trajectories of other robots, while simultaneously taking into account the impact of lag times in the nominal trajectories of other robots, and to generate or select a motion plan for a specified nominal trajectory associated with a corresponding acceptable lag time. For example, method 400 can be performed during a configuration or “pre-run” time, i.e., the time when some or all of the motion planning occurs, such as generating a nominal trajectory and/or motion plan for each robot. The configuration or “pre-run” time can occur before the robots move according to their respective nominal trajectories, e.g., before the runtime, where the runtime is the time when one or more robots execute their respective motion plans. This advantageously allows some of the most computationally intensive work to be performed before the runtime, since responsiveness is not particularly of concern at this time. In at least some embodiments, method 400 or a portion thereof is executed during runtime (i.e., the time during which one or more robots are performing tasks) following a configuration time or pre-run time. In other embodiments, method 400 is executed during runtime (i.e., the time during which one or more robots are performing tasks) following a configuration time or pre-run time.
方法400在402处开始,例如,响应于系统或其组件的启动或通电、信息或数据的接收,或调用例程或程序的调用或启用。Method 400 begins at 402, for example, in response to the startup or power-on of the system or its components, the receipt of information or data, or the invocation or activation of a routine or program.
虽然图4中未示出,但是方法400能够生成路径;对这些路径进行碰撞评估或检测或分析;设置、更新或调整路径的边的代价;并且可选地执行分析以基于代价识别或选择路径(例如,最低代价路径)。上文参考图2对此进行了描述,并且至少描述了本文引用的参考文献中的一些方面。为了简明起见,在方法400中省略了这些。Although not shown in Figure 4, method 400 is capable of generating paths; performing collision assessments or detections or analyses on these paths; setting, updating, or adjusting the costs of the edges of the paths; and optionally performing analyses to identify or select paths based on cost (e.g., the lowest-cost path). This has been described above with reference to Figure 2, and at least some aspects of the references cited herein have been described. For the sake of brevity, these are omitted in method 400.
可选地,在404中,基于处理器的系统的至少一个处理器生成或访问(例如,接收、检索)每个机器人(i)的一组标称轨迹。如前文所述,标称轨迹是“指定”的轨迹,其中,每个轨迹包括机器人在两个姿态、配置或状态之间的姿态、配置和状态的有序集合或序列,以及包括每个姿态或配置的相应定时。定时能够以相对术语(定时由相对于前一姿态的相对偏移定义)或绝对术语(定时由从轨迹执行开始的相对偏移定义,例如,相对于公共时钟)来指定。申请人注意到,尽管任何给定的轨迹能够对应于机器人的平滑运动,但本文所使用的术语“轨迹”并不局限于此,并且通常将会指定不平滑的运动,也不会为机器人或其部分定义直线路径。在至少一些情况下,标称轨迹能够指定或包括机器人或其部分的运动中的一个或更多个暂停,和/或能够指定机器人或其部分的运动方向或路径方向的改变甚至反向、速率的改变、速度的改变和加速度的改变,并且在方向、速率、速度或时间方面可能不是平滑的运动。例如,标称轨迹能够指定时间参数化的有序姿态集合或姿态序列,机器人或其部分通过该姿态集合或序列移动以执行任务或部分任务。执行任何给定任务能够采用一个或更多个标称轨迹。如本文所描述的,机器人或其部分的实际运动或实际轨迹可能会偏离相应的标称轨迹,例如,由于姿态之间转换的意外延迟(例如,由于需要在目标对象上逗留或停留比预期更长的时间)。Optionally, in 404, at least one processor of the processor-based system generates or accesses (e.g., receives, retrieves) a set of nominal trajectories for each robot (i). As previously described, a nominal trajectory is a “specified” trajectory, wherein each trajectory includes an ordered set or sequence of poses, configurations, and states of the robot between two postures, configurations, or states, and includes a corresponding timing for each posture or configuration. Timing can be specified in relative terms (timing is defined by a relative offset relative to the previous posture) or absolute terms (timing is defined by a relative offset from the start of trajectory execution, e.g., relative to a common clock). The applicant notes that while any given trajectory can correspond to smooth motion of the robot, the term “trajectory” as used herein is not limited to this and will generally specify non-smooth motion, and will not define a straight path for the robot or a part thereof. In at least some cases, a nominal trajectory can specify or include one or more pauses in the motion of the robot or a part thereof, and/or can specify changes or even reversals in the direction or path of motion of the robot or a part thereof, changes in rate, changes in velocity, and changes in acceleration, and may not be smooth motion in terms of direction, rate, velocity, or time. For example, a nominal trajectory can specify a time-parameterized, ordered set or sequence of poses through which a robot or a part of it moves to perform a task or part of a task. Performing any given task can employ one or more nominal trajectories. As described herein, the actual motion or actual trajectory of the robot or a part of it may deviate from the corresponding nominal trajectory, for example, due to unexpected delays in transitions between poses (e.g., due to the need to linger or remain on a target object for a longer period than expected).
能够采用多种技术和/或算法中的任何一种来生成标称轨迹,例如,基于样本的运动规划器(SBMP),例如,概率路线图(PRM)或快速探索随机树(RRT、RTT*s)、稳定稀疏RRT*(SST*)和/或快速匹配树(FMT)。在至少一种实施方式中,标称轨迹能够经由国际专利申请PCT/US2021/013610(公开号为WO 2021150439A1)中描述的系统、方法和技术生成。本专利申请的教导不限于特定形式的标称轨迹的生成。有利地,本文的教导包括以下方面的任何组合或排列:在计算上高效地使用标称轨迹来生成具有相关联的可接受滞后时间的运动计划,监测实际运动与标称轨迹在滞后时间方面的偏差,可选地对超过相应可接受滞后次数的偏差采取补救措施,和/或可选地使用确定的滞后时间来为运动计划选择一组标称轨迹以增强操作的鲁棒性。The nominal trajectory can be generated using any of a variety of techniques and/or algorithms, such as sample-based motion planners (SBMPs), probabilistic route maps (PRMs), or fast exploratory random trees (RRTs, RTTs), stable sparse RRTs (SSTs), and/or fast matching trees (FMTs). In at least one embodiment, the nominal trajectory can be generated via the system, method, and techniques described in International Patent Application PCT/US2021/013610 (Publication No. WO 2021150439A1). The teachings of this patent application are not limited to the generation of a particular form of nominal trajectory. Advantageously, the teachings herein include any combination or arrangement of the following: computationally efficient use of nominal trajectories to generate motion plans with associated acceptable lag times; monitoring deviations between actual motion and nominal trajectories in terms of lag time; optionally taking remedial measures for deviations exceeding the corresponding acceptable number of lags; and/or optionally using determined lag times to select a set of nominal trajectories for the motion plan to enhance operational robustness.
在406中,基于处理器的系统的至少一个处理器初始化机器人计数器I,例如,将机器人计数器设置为等于整数值1。在408中,基于处理器的系统的至少一个处理器执行外部迭代循环,对将在共享工作空间中操作的两个或更多机器人中的每个机器人执行迭代,或者直到达到停止条件(例如,确定确保机器人之间无自碰撞运动的最大滞后时间)。In 406, at least one processor of the processor-based system initializes the robot counter I, for example, by setting the robot counter to an integer value of 1. In 408, at least one processor of the processor-based system executes an external iterative loop, iterating over each of two or more robots that will operate in the shared workspace, or until a stopping condition is met (e.g., determining the maximum lag time to ensure no self-collision motion between robots).
在410中,基于处理器的系统的至少一个处理器初始化标称轨迹计数器J,例如,将标称轨迹计数器设置为等于整数值1。在412中,基于处理器的系统的至少一个处理器执行内部迭代循环,对给定机器人的每个标称轨迹执行迭代,至少直到达到停止条件。In step 410, at least one processor of the processor-based system initializes the nominal trajectory counter J, for example, by setting the nominal trajectory counter to an integer value of 1. In step 412, at least one processor of the processor-based system executes an internal iterative loop, iterating over each nominal trajectory of the given robot until at least a stopping condition is met.
在414中,基于处理器的系统的至少一个处理器确定当前机器人(即,外迭代循环中的当前)的当前标称轨迹(即,内迭代循环中的当前)的相应可接受滞后时间。相应的可接受滞后时间反映了当前标称轨迹J中的最大可接受延迟或滞后,在当前机器人执行标称轨迹时(相应的可接收滞后时间被引入到当前机器人的标称轨迹中),该最大可接受延迟或滞后仍然保证当前机器人相对于各自按照相应标称轨迹移动(相应的可接收滞后时间被引入到相应标称轨迹中)的其它机器人的无自碰撞移动。只要所有其它机器人的当前实际滞后时间小于其相应的可接受滞后时间,则给定机器人I的可接受滞后时间就保证了不会发生自碰撞。也就是说,其它机器人不必在其相应的标称轨迹上运行(即,滞后时间=0)。换句话说,只要在共享工作空间中操作的所有机器人中的每个机器人的相应当前实际滞后时间小于或等于(即,不大于)机器人的相应可接受滞后时间,则机器人将不会相互碰撞或与自身碰撞(即,保证了机器人之间不会发生自碰撞)。In 414, at least one processor of the processor-based system determines the corresponding acceptable lag time of the current nominal trajectory (i.e., the current trajectory in the inner iteration loop) of the current robot (i.e., the current trajectory in the outer iteration loop). The corresponding acceptable lag time reflects the maximum acceptable delay or lag in the current nominal trajectory J, which, while the current robot executes the nominal trajectory (the corresponding acceptable lag time is introduced into the current robot's nominal trajectory), still guarantees the current robot's self-collision-free movement relative to other robots, each moving along its corresponding nominal trajectory (the corresponding acceptable lag time is introduced into the corresponding nominal trajectory). The acceptable lag time of a given robot I guarantees no self-collision, provided that the current actual lag time of all other robots is less than their corresponding acceptable lag time. That is, other robots do not need to run on their corresponding nominal trajectories (i.e., lag time = 0). In other words, robots will not collide with each other or with themselves as long as the corresponding current actual lag time of each of all robots operating in the shared workspace is less than or equal to (i.e., not greater than) the corresponding acceptable lag time of the robot (i.e., self-collision between robots is guaranteed).
在416中,基于处理器的系统的至少一个处理器确定是否考虑了给定机器人的标称轨迹中的每个标称轨迹,例如,确定标称轨迹计数器J是否等于给定机器人的标称轨迹的总数(例如,J=M?)。如果尚未考虑给定机器人的标称轨迹中的每个标称轨迹,则控制转到418,在418中,标称轨迹计数器递增(例如,J=J+1),以及然后控制返回到412,以考虑给定机器人的下一标称轨迹。如果已经考虑了给定机器人的每个标称轨迹(例如,J=M),则控制直接转到420。In 416, at least one processor of the processor-based system determines whether each nominal trajectory in the given robot's nominal trajectories has been considered, for example, determining whether the nominal trajectory counter J is equal to the total number of nominal trajectories of the given robot (e.g., J = M?). If each nominal trajectory in the given robot's nominal trajectories has not yet been considered, control proceeds to 418, where the nominal trajectory counter is incremented (e.g., J = J + 1), and then control returns to 412 to consider the next nominal trajectory of the given robot. If each nominal trajectory of the given robot has already been considered (e.g., J = M), control proceeds directly to 420.
可选地,在420中,基于处理器的系统的至少一个处理器选择针对给定机器人确定的一组确定的可接受滞后时间中的最大值。在422中,基于处理器的系统的至少一个处理器为给定机器人提供一个或更多个确定的可接受滞后时间(例如,所选择的确定的可接收滞后时间的最大值),以用于确定至少给定机器人的运动计划和/或控制给定机器人的操作。例如,这能够包括将一个或更多个确定的可接受滞后时间提供给不同的处理器,或者将一个或更多个确定的可接受滞后时间传输到处理器的不同寄存器。Optionally, in 420, at least one processor of the processor-based system selects the maximum value from a determined set of acceptable lag times determined for a given robot. In 422, at least one processor of the processor-based system provides one or more determined acceptable lag times (e.g., the maximum value of the selected determined acceptable lag times) to the given robot for determining at least the motion plan of the given robot and/or controlling the operation of the given robot. For example, this can include providing one or more determined acceptable lag times to different processors, or transferring one or more determined acceptable lag times to different registers of the processors.
在424中,基于处理器的系统的至少一个处理器确定是否考虑了机器人中的每个机器人,例如,确定机器人计数器I是否等于机器人的总数(例如,I=N?)。如果尚未考虑机器人中的每个机器人(例如,I<N),则控制转到426,在426中,基于处理器的系统的至少一个处理器迭代机器人计数器(例如,I=I+1),以及然后控制返回到408以考虑下一个机器人。如果机器人中的每个机器人已被处理(例如,I=N),则控制直接转到428。In step 424, at least one processor of the processor-based system determines whether each robot in the robot group has been considered, for example, determining whether the robot counter I is equal to the total number of robots (e.g., I = N?). If each robot in the robot group has not yet been considered (e.g., I < N), control proceeds to step 426, where at least one processor of the processor-based system iterates the robot counter (e.g., I = I + 1), and then control returns to step 408 to consider the next robot. If each robot in the robot group has been processed (e.g., I = N), control proceeds directly to step 428.
在428中,基于处理器的系统的至少一个处理器为每个机器人生成或选择相应的运动计划。运动计划能够是或能够表示机器人的与最大可接受滞后时间相关联的标称轨迹。运动计划能够是或能够表示一个或更多个机器人的标称轨迹。这种方法能够有利地增强由运动规划生成的运动计划的鲁棒性,并且从而改善执行所得运动计划的机器人的操作。In 428, at least one processor of the processor-based system generates or selects a corresponding motion plan for each robot. The motion plan can be, or can represent, the robot's nominal trajectory associated with a maximum acceptable lag time. The motion plan can be, or can represent, the nominal trajectories of one or more robots. This approach advantageously enhances the robustness of the motion plans generated by motion planning, and thereby improves the operation of the robot executing the resulting motion plans.
在430中,基于处理器的系统的至少一个处理器将相应的运动计划提供给每个机器人或每个运动控制器,以使机器人按照相应的运动计划移动。In 430, at least one processor of the processor-based system provides a corresponding motion plan to each robot or each motion controller so that the robot moves according to the corresponding motion plan.
在432中,方法400可以终止,例如,直到再次调用。虽然方法400是以有序流程来描述的,但在许多实施方式中,各种动作或操作将同时或并行执行,和/或能够包括额外的动作和/或省略一些动作。In 432, method 400 may terminate, for example, until it is called again. Although method 400 is described as an ordered process, in many implementations, various actions or operations will be performed simultaneously or in parallel, and/or additional actions may be included and/or some actions may be omitted.
如本文所描述的,为了确定可接受滞后时间,基于处理器的系统能够执行碰撞评估,以确定一组候选滞后时间中的哪个将导致或可能导致碰撞。碰撞评估的一种方法是使用机器人的扫掠体积来执行碰撞评估。扫掠体积表示机器人或其部分沿给定轨迹移动时扫掠的体积。扫掠体积由给定机器人的几何形状和运动学以及由给定轨迹指定的起始和结束位置来指定。值得注意的是,扫掠体积本身不受执行轨迹指定的运动的特定时间的影响。因此,在机器人执行或执行任务的运行时间之前,能够在配置或预运行时间期间有利地确定扫掠体积。因此,基于处理器的系统能够为将在共享工作空间中操作的每个机器人生成多个(例如,许多个)路径中的每条路径的扫掠体积,从这些路径中为机器人生成轨迹。基于处理器的系统能够使用扫掠体积来执行碰撞评估。例如,对于两个或更多个机器人中的每个机器人,基于处理器的系统能够在以下的i)和ii)之间执行碰撞评估,其中i)表示所述机器人的引入了至少一个相应滞后时间的相应标称轨迹的相应样本轨迹的至少部分,以及ii)两个或更多个机器人中的其它机器人中的每个机器人的相应轨迹中的每个轨迹的相应样本的至少部分,其中,至少一个相应滞后时间被引入所述两个或更多个机器人中的其它机器人中的每个机器人的相应轨迹中。响应于确定机器人与两个或更多机器人中的至少一个其它机器人之间将发生或可能发生碰撞(例如,表示为概率或可能性),基于处理器的系统能够针对机器人的一个或更多个标称轨迹,将小于导致确定将会发生碰撞的相应滞后时间的相应滞后时间识别为所述相应可接受滞后时间。可接受滞后时间能够表示相对于标称轨迹的姿态的定时的最大可接受延迟,该最大可接受延迟仍然保证机器人通过标称轨迹指定的姿态序列的移动相对于两个或更多个机器人中的其它机器人的移动保持无碰撞(对于机器人系统而言,无自碰撞)。下面的图5和图6描述了使用扫掠体积确定可接受滞后时间的非限制方法。As described herein, to determine acceptable lag times, processor-based systems can perform collision assessments to determine which of a set of candidate lag times will cause or may cause a collision. One approach to collision assessment is to use the robot's sweep volume. A sweep volume represents the volume swept by the robot or a portion thereof as it moves along a given trajectory. The sweep volume is specified by the geometry and kinematics of a given robot and the start and end positions specified by the given trajectory. Notably, the sweep volume itself is not affected by the specific timing of the motion specified by the trajectory. Therefore, the sweep volume can be advantageously determined during configuration or pre-run time before the robot performs or executes a task. Thus, processor-based systems can generate sweep volumes for each of multiple (e.g., many) paths for each robot operating in a shared workspace, from which trajectories are generated for the robot. Processor-based systems can use sweep volumes to perform collision assessments. For example, for each of two or more robots, a processor-based system is capable of performing collision assessment between i) and ii), where i) represents at least a portion of a corresponding sample trajectory of the robot's nominal trajectory with at least one corresponding lag time introduced, and ii) at least a portion of a corresponding sample trajectory of each of the other robots' corresponding trajectories, wherein at least one corresponding lag time is introduced into the corresponding trajectory of each of the other robots' corresponding trajectories. In response to determining that a collision will or may occur between the robot and at least one of the other robots (e.g., expressed as a probability or likelihood), the processor-based system is capable of identifying, for one or more nominal trajectories of the robot, a corresponding lag time smaller than the corresponding lag time that leads to the determination that a collision will occur as the corresponding acceptable lag time. The acceptable lag time can represent the maximum acceptable delay in timing the pose relative to the nominal trajectory, which still guarantees that the robot's movement through the pose sequence specified by the nominal trajectory remains collision-free (or self-collision-free for the robot system) relative to the movement of the other robots' movements. Figures 5 and 6 below illustrate a non-restricted method for determining acceptable hysteresis using sweep volume.
图5示出了根据至少一个示出的实施方式的基于处理器的系统的操作方法500,用于为将在共享工作空间中操作的多个机器人中的每个机器人的一个或更多个轨迹生成扫掠体积。根据至少一个示出的实施方式,该基于处理器的系统包括一个或更多个处理器,这些处理器执行处理器可执行指令以生成扫掠体积。例如,方法500能够在配置或“预运行”时间期间执行,即运动规划中的部分或全部发生的时间,例如,为每个机器人生成标称轨迹和/或运动计划。例如,配置或“预运行”时间能够在运行时间之前,其中,运行时间是一个或更多个机器人执行相应运动计划的时间。这有利地允许在运行时间之前执行一些计算量最密集的工作,因为此时响应能力并不是特别受关注。在至少一些实施方式中,机器人配置方法500或其部分在配置时间或预运行时间之后的运行时间(即,一个或更多个机器人正在执行任务的时间)期间执行。可选地,配置时操作能够经由与执行运行时间操作的基于处理器的系统不同的基于处理器的系统来执行。例如,方法500能够可选地用于执行图3、4和/或6的方法,例如,作为在确定相应的滞后可接受滞后时间314(图3)和414(图4)时执行碰撞检测(参见方法600,图6)的部分。Figure 5 illustrates an operation method 500 of a processor-based system according to at least one illustrated embodiment for generating sweep volumes for one or more trajectories of each of a plurality of robots operating in a shared workspace. According to at least one illustrated embodiment, the processor-based system includes one or more processors that execute processor-executable instructions to generate sweep volumes. For example, method 500 can be performed during a configuration or “pre-run” time, i.e., when part or all of the motion planning occurs, such as generating nominal trajectories and/or motion plans for each robot. For example, the configuration or “pre-run” time can be performed before the runtime, where the runtime is the time when one or more robots execute their respective motion plans. This advantageously allows some of the most computationally intensive work to be performed before the runtime, since responsiveness is not particularly of concern at this time. In at least some embodiments, robot configuration method 500 or a portion thereof is performed during runtime (i.e., the time when one or more robots are performing tasks) after the configuration or pre-run time. Optionally, configuration-time operations can be performed via a different processor-based system than the processor-based system performing runtime operations. For example, method 500 can be optionally used to perform the methods of Figures 3, 4 and/or 6, for example, as part of performing collision detection (see method 600, Figure 6) when determining the corresponding acceptable hysteresis times 314 (Figure 3) and 414 (Figure 4).
生成扫掠体积的方法500在502处开始,例如,响应于系统或其组件的启动或通电、信息或数据的接收,或调用例程或程序的调用或启用。The method 500 for generating the swept volume begins at 502, for example, in response to the startup or power-on of the system or its components, the receipt of information or data, or the invocation or activation of a routine or program.
在504中,基于处理器的系统的至少一个处理器初始化机器人计数器I(例如,I=1)。在506中,基于处理器的系统的至少一个处理器执行外部机器人处理循环。外部机器人处理循环允许基于处理器的系统的至少一个处理器为将在共享工作空间中操作的机器人中的每个机器人执行扫掠体积的生成。In step 504, at least one processor of the processor-based system initializes the robot counter I (e.g., I = 1). In step 506, at least one processor of the processor-based system executes an external robot processing loop. The external robot processing loop allows at least one processor of the processor-based system to generate a sweep volume for each of the robots that will operate in the shared workspace.
在508中,基于处理器的系统的至少一个处理器初始化轨迹计数器J(例如,J=1)。在510,基于处理器的系统的至少一个处理器执行内部标称轨迹处理循环。内部标称轨迹处理循环嵌套在外部机器人处理循环内。内部标称轨迹处理循环允许基于处理器的系统的至少一个处理器为给定机器人的一个或更多个标称轨迹中的每个标称轨迹生成相应的扫掠体积。In step 508, at least one processor of the processor-based system initializes the trajectory counter J (e.g., J = 1). In step 510, at least one processor of the processor-based system executes an internal nominal trajectory processing loop. The internal nominal trajectory processing loop is nested within the external robot processing loop. The internal nominal trajectory processing loop allows at least one processor of the processor-based system to generate a corresponding sweep volume for each of one or more nominal trajectories of a given robot.
在512中,基于处理器的系统的至少一个处理器生成扫掠体积表示,其表示给定机器人I的至少一部分在由给定标称轨迹J指定的姿态集或姿态序列的姿态之间移动时所扫掠的体积。因此,对于两个或更多个机器人中的每个机器人,以及对于一个或更多个标称轨迹中的每个标称轨迹,基于处理器地系统能够生成扫掠体积表示,其表示机器人的至少一部分在由标称轨迹指定的一组姿态之间,从标称轨迹的至少一个时间移动到标称轨迹的另一个时间所扫掠的体积。能够采用多种技术中的任何一种来生成扫掠体积,包括用一个或更多个(例如,分层)数据结构或点云以数字方式表示机器人或其部分,以及沿着路径或轨迹投影数字表示来生成扫掠体积的数字表示(例如,体素集)。In 512, at least one processor of the processor-based system generates a swept volume representation representing the volume swept by at least a portion of a given robot I as it moves between poses of a set or sequence of poses specified by a given nominal trajectory J. Therefore, for each of two or more robots, and for each of one or more nominal trajectories, the processor-based system is capable of generating a swept volume representation representing the volume swept by at least a portion of the robot as it moves between a set of poses specified by the nominal trajectory from at least one time on the nominal trajectory to another time on the nominal trajectory. The swept volume can be generated using any of a variety of techniques, including digitally representing the robot or a portion thereof with one or more (e.g., hierarchical) data structures or point clouds, and generating a digital representation of the swept volume (e.g., a voxel set) by projecting the digital representation along a path or trajectory.
在514中,基于处理器的系统的至少一个处理器确定是否已经处理了给定机器人的所有轨迹(例如,J=M?)。如果尚未处理给定机器人的所有轨迹,则控制转到516,在516中,轨迹计数器递增(例如,J=J+1),然后控制返回到内部标称轨迹处理循环510的顶部。如果所有标称轨迹都已经被处理(例如,J=M),则控制直接转到518。In 514, at least one processor of the processor-based system determines whether all trajectories of the given robot have been processed (e.g., J = M?). If not all trajectories of the given robot have been processed, control proceeds to 516, where the trajectory counter is incremented (e.g., J = J + 1), and control returns to the top of the internal nominal trajectory processing loop 510. If all nominal trajectories have been processed (e.g., J = M), control proceeds directly to 518.
在518中,基于处理器的系统的至少一个处理器确定是否已经处理了所有机器人(例如,I=N?)。如果尚未处理所有机器人,则控制转到520,在520中,机器人计数器递增(例如,I=I+1),然后控制返回到外部机器人处理循环506的顶部。如果所有机器人都已经被处理(例如,I=N),则控制直接转到522。In 518, at least one processor of the processor-based system determines whether all robots have been processed (e.g., I = N?). If not all robots have been processed, control proceeds to 520, where the robot counter is incremented (e.g., I = I + 1), and control returns to the top of the external robot processing loop 506. If all robots have been processed (e.g., I = N), control proceeds directly to 522.
在522中,方法500可以终止,例如,直到再次调用。虽然方法500是以有序流程来描述的,但在许多实施方式中,各种动作或操作将同时或并行执行,和/或能够包括额外的动作和/或省略一些动作。In 522, method 500 may terminate, for example, until it is called again. Although method 500 is described as an ordered process, in many implementations, various actions or operations will be performed simultaneously or in parallel, and/or additional actions may be included and/or some actions may be omitted.
图6示出了根据至少一个示出的实施方式的基于处理器的系统的操作方法600,用于对多个机器人和机器人中的每个机器人的多个轨迹执行碰撞评估。方法600能够用于执行碰撞评估,以识别运动规划图中起始节点与结束节点之间的可行路径。附加地或可替代地,方法600能够用于执行碰撞评估,以便确定在共享工作空间中操作的机器人的一个或更多个标称轨迹的相应可接受滞后时间。根据至少一个示出的实施方式,基于处理器的系统包括一个或更多个处理器,其执行处理器可执行指令,以例如使用扫掠体积执行碰撞评估。扫掠体积表示或模拟由机器人或其部分在以下过程中扫掠的体积:例如,在沿运动规划图中表示的路径的起始节点与结束节点之间转换的各种姿态、配置或状态之间的转换中,或者例如,在沿着起始姿态、配置或状态到结束姿态、配置或者状态之间的标称轨迹移动中。例如,方法600能够有利地使用经由方法500生成的扫掠体积。例如,方法600能够在配置或“预运行”时间期间执行,即运动规划中的部分或全部发生的时间,例如,为每个机器人生成标称轨迹和/或运动计划。例如,配置或“预运行”时间能够在运行时间之前,其中,运行时间是一个或更多个机器人执行相应运动计划的时间。这有利地允许在运行时间之前执行一些计算量最密集的工作,因为此时响应能力并不是特别受关注。在至少一些实施方式中,机器人配置方法600或其部分在配置时间或预运行时间之后的运行时间(即,一个或更多个机器人正在执行任务的时间)期间执行。Figure 6 illustrates an operational method 600 of a processor-based system according to at least one illustrated embodiment for performing collision assessments on multiple robots and multiple trajectories of each robot. Method 600 is capable of performing collision assessments to identify feasible paths between start and end nodes in a motion planning graph. Additionally or alternatively, method 600 is capable of performing collision assessments to determine corresponding acceptable hysteresis times for one or more nominal trajectories of robots operating in a shared workspace. According to at least one illustrated embodiment, the processor-based system includes one or more processors that execute processor-executable instructions to perform collision assessments, for example, using swept volumes. A swept volume represents or simulates a volume swept by a robot or a portion thereof in the following processes: for example, during transitions between various poses, configurations, or states along a path represented in a motion planning graph between start and end nodes, or for example, during nominal trajectory movement along a start pose, configuration, or state to an end pose, configuration, or state. For example, method 600 is advantageously capable of using swept volumes generated via method 500. For example, method 600 can be executed during the configuration or "pre-run" time, i.e., the time when part or all of the motion planning occurs, such as generating a nominal trajectory and/or motion plan for each robot. For example, the configuration or "pre-run" time can occur before the runtime, where the runtime is the time when one or more robots execute their respective motion plans. This advantageously allows some of the most computationally intensive work to be performed before the runtime, since responsiveness is not of particular concern at this time. In at least some embodiments, robot configuration method 600 or a portion thereof is executed during the runtime (i.e., the time when one or more robots are performing a task) after the configuration or pre-run time.
确定可接受滞后时间的方法600在602处开始,例如,响应于系统或其组件的启动或通电、信息或数据的接收,或调用例程或程序的调用或启用。The method for determining acceptable lag time 600 begins at 602, for example, in response to the startup or power-on of the system or its components, the receipt of information or data, or the invocation or activation of a routine or program.
在604中,基于处理器的系统的至少一个处理器启动外部机器人对碰撞评估循环。外部机器人对碰撞评估循环允许基于处理器的系统的至少一个处理器评估或估计将在共享工作空间中操作的每对机器人中的机器人之间发生碰撞的概率或可能性。外部机器人对碰撞评估循环能够处理机器人对的每种组合或排列中可能出现的碰撞。In 604, at least one processor of the processor-based system initiates an external robot pair collision evaluation loop. The external robot pair collision evaluation loop allows at least one processor of the processor-based system to evaluate or estimate the probability or likelihood of a collision occurring between robots in each pair of robots operating in a shared workspace. The external robot pair collision evaluation loop is capable of handling collisions that may occur in every combination or arrangement of robot pairs.
在606中,基于处理器的系统的至少一个处理器初始化轨迹计数器J(例如,J=1)。在608中,基于处理器的系统的至少一个处理器执行内部标称轨迹碰撞评估循环。内部标称轨迹碰撞评估循环嵌套在外部机器人碰撞评估循环内。内部标称轨迹碰撞评估循环允许基于处理器的系统的至少一个处理器评估或估计给定机器人对的一个或更多个标称轨迹中的每个的碰撞概率或可能性。In step 606, at least one processor of the processor-based system initializes the trajectory counter J (e.g., J = 1). In step 608, at least one processor of the processor-based system executes an internal nominal trajectory collision evaluation loop. The internal nominal trajectory collision evaluation loop is nested within an external robot collision evaluation loop. The internal nominal trajectory collision evaluation loop allows at least one processor of the processor-based system to evaluate or estimate the collision probability or likelihood of each of one or more nominal trajectories for a given robot pair.
在610中,基于处理器的系统的至少一个处理器初始化滞后时间计数器K(例如,K=1)。在612中,基于处理器的系统的至少一个处理器执行嵌套的内部滞后时间碰撞评估循环。嵌套的内部滞后时间碰撞评估循环嵌套在内部标称轨迹碰撞评估循环内。嵌套的内部滞后时间碰撞评估循环允许基于处理器的系统的至少一个处理器评估或估计多个可能的滞后时间(即,来自一组候选滞后时间的候选滞后时间)中的每个在被引入给定的标称轨迹时所产生的影响。因此,例如,可以评估引入等于零的滞后时间和引入多个(一个、两个或更多个)非零滞后时间的标称轨迹,以确定如果执行与引入相应的滞后时间的标称轨迹对应的轨迹时发生碰撞的概率或可能性。可以对连续更长的滞后时间进行评估。In step 610, at least one processor of the processor-based system initializes a lag time counter K (e.g., K = 1). In step 612, at least one processor of the processor-based system executes a nested inner lag time collision evaluation loop. The nested inner lag time collision evaluation loop is nested within an inner nominal trajectory collision evaluation loop. The nested inner lag time collision evaluation loop allows at least one processor of the processor-based system to evaluate or estimate the effect of each of a plurality of possible lag times (i.e., candidate lag times from a set of candidate lag times) when introduced into a given nominal trajectory. Thus, for example, the introduction of a lag equal to zero and the introduction of multiple (one, two, or more) non-zero lag times can be evaluated to determine the probability or likelihood of a collision if the trajectory corresponding to the nominal trajectory with the introduced lag time is executed. Evaluation can be performed on consecutive, longer lag times.
在614中,基于处理器的系统的至少一个处理器使用所生成的扫掠体积对引入滞后时间(例如,对于零和非零滞后时间)的相应轨迹进行碰撞评估。例如,基于处理器的系统的至少一个处理器能够确定相应的扫掠体积是否相交,其中,相应的扫掠体积对应于一对机器人中的机器人在执行引入等于零的滞后时间和引入多个非零滞后时间中的每个的标称轨迹时扫掠的相应体积。例如,对于两个或更多个机器人中的每个机器人,基于处理器的系统能够在以下的i)和ii)之间执行碰撞评估:i)表示所述机器人的引入了至少一个相应滞后时间(例如,零滞后时间和至少一个非零滞后时间)的相应标称轨迹的相应样本轨迹的至少部分,以及ii)两个或更多个机器人中其它机器人中的每个机器人的相应轨迹的每个相应样本的至少一个部分,其中,在两个或更多个机器人中的其它机器人中的每个机器人的相应轨迹中的每个轨迹的相应样本的至少部分,其中,至少一个相应滞后时间(例如,零滞后时间和至少一个非零滞后时间)被引入所述两个或更多个机器人中的其它机器人中的每个机器人的相应轨迹中。因此,对于机器人中的每个机器人和标称轨迹中的每个标称轨迹,能够评估“候选”滞后时间的所有排列,例如,识别碰撞的概率或可能性何时等于或超过某个碰撞检测阈值。In 614, at least one processor of the processor-based system uses the generated sweep volume to perform a collision assessment on the corresponding trajectory with introduced lag time (e.g., for zero and non-zero lag time). For example, at least one processor of the processor-based system is capable of determining whether the corresponding sweep volumes intersect, wherein the corresponding sweep volume corresponds to the volume swept by one of a pair of robots when executing a nominal trajectory with introduced zero lag time and each of a plurality of non-zero lag times. For example, for each of two or more robots, the processor-based system is capable of performing collision assessment between: i) at least a portion of a corresponding sample trajectory of a corresponding nominal trajectory of said robot, which incorporates at least one corresponding lag time (e.g., zero lag time and at least one non-zero lag time); and ii) at least a portion of each corresponding sample of the corresponding trajectory of each of the other two or more robots, wherein at least a corresponding lag time (e.g., zero lag time and at least one non-zero lag time) is incorporated into the corresponding trajectory of each of the other two or more robots. Therefore, for each robot and each nominal trajectory, it is possible to evaluate all permutations of “candidate” lag times, e.g., to identify when the probability or likelihood of a collision equals or exceeds a certain collision detection threshold.
虽然碰撞评估是根据扫掠体积来描述的,但本文的教导不一定局限于此,并且该方法和系统能够采用各种其它碰撞评估或检测技术或算法。Although the collision assessment is described based on the swept volume, the teachings of this paper are not necessarily limited to this, and the method and system can be adapted to a variety of other collision assessment or detection techniques or algorithms.
在616中,基于处理器的系统的至少一个处理器基于碰撞评估来确定给定对的机器人是否会或可能会导致碰撞。在至少一些实施方式中,碰撞评估能够产生表示碰撞机会或概率的非二进制值。能够基于非二进制值高于定义的碰撞检测阈值(例如,碰撞概率>50%;碰撞概率>10%;碰撞概率>5%)来确定是否会或可能会导致碰撞。在617中,响应于确定已经检测到或可能发生的碰撞(例如,碰撞概率等于或大于碰撞检测阈值),基于处理器的系统能够识别和/或存储没有导致潜在碰撞的先前滞后时间值,并且可选地退出嵌套的内部滞后时间碰撞评估循环612,将控制返回到内部标称轨迹碰撞评估循环608的顶部。因此,例如,响应于确定机器人与两个或更多个机器人中的至少一个其它机器人之间将发生或可能发生碰撞,对于已经确定将发生碰撞的两个或更多个其它机器人中的至少一个机器人的一个或更多个标称轨迹,基于处理器的系统将小于导致确定会发生碰撞的确定的相应滞后时间的相应滞后时间识别为所述相应的可接受滞后时间,其中,可接受滞后反映了相对于标称轨迹的姿态定时的最大可接受延迟,该最大可接受延迟仍然能保证机器人通过相应标称轨迹指定的姿态序列的移动相对于两个或更多个机器人中的其它机器人的移动保持无碰撞。响应于确定已经检测到或可能检测到的碰撞(例如,碰撞概率等于或大于碰撞检测阈值),控制直接转到618。In 616, at least one processor of the processor-based system determines whether or potentially a collision is likely between a given pair of robots based on a collision assessment. In at least some embodiments, the collision assessment is capable of producing a non-binary value representing a collision chance or probability. It is possible to determine whether or potentially a collision is likely based on a non-binary value higher than a defined collision detection threshold (e.g., collision probability > 50%; collision probability > 10%; collision probability > 5%). In 617, in response to determining that a collision has been detected or is likely to occur (e.g., a collision probability equal to or greater than the collision detection threshold), the processor-based system is capable of identifying and/or storing previous hysteresis values that did not lead to a potential collision, and optionally exiting the nested inner hysteresis collision assessment loop 612, returning control to the top of the inner nominal trajectory collision assessment loop 608. Therefore, for example, in response to determining that a collision will or may occur between the robot and at least one of two or more other robots, for one or more nominal trajectories of at least one of the two or more other robots where a collision has been determined to occur, the processor-based system identifies a corresponding lag time less than the determined corresponding lag time that leads to the determination of a collision as the corresponding acceptable lag time, wherein the acceptable lag reflects the maximum acceptable delay in attitude timing relative to the nominal trajectory, which still ensures that the robot's movement through the attitude sequence specified by the corresponding nominal trajectory remains collision-free relative to the movement of the other two or more robots. In response to determining that a collision has been detected or may be detected (e.g., the collision probability is equal to or greater than a collision detection threshold), control proceeds directly to 618.
在618中,基于处理器的系统的至少一个处理器确定是否已经考虑了当前机器人对的当前轨迹的所有滞后时间(例如,K=P?)。如果尚未考虑所有滞后时间,则在620处递增滞后时间计数器K(例如,K=K+1),以从候选滞后时间集合中选择下一个候选滞后时间进行评估,并且控制返回到嵌套的内部滞后时间碰撞评估循环612的顶部。如果已经考虑了所有滞后时间,则控制直接转到622。In 618, at least one processor of the processor-based system determines whether all lag times of the current trajectory of the current robot pair have been considered (e.g., K = P?). If not all lag times have been considered, the lag time counter K is incremented at 620 (e.g., K = K + 1) to select the next candidate lag time from the candidate lag time set for evaluation, and control returns to the top of the nested inner lag time collision evaluation loop 612. If all lag times have been considered, control proceeds directly to 622.
在622中,基于处理器的系统的至少一个处理器确定是否已经处理了给定机器人对的所有轨迹(例如,J=M?)。如果尚未处理给定机器人对的所有轨迹,则轨迹计数器在624递增(例如,J=J+1),并且控制返回到内部标称轨迹碰撞评估循环608的顶部。如果所有标称轨迹均已被处理(例如,J=M),则控制转到626。In step 622, at least one processor of the processor-based system determines whether all trajectories for a given robot pair have been processed (e.g., J = M?). If not all trajectories for the given robot pair have been processed, the trajectory counter increments in step 624 (e.g., J = J + 1), and control returns to the top of the internal nominal trajectory collision evaluation loop 608. If all nominal trajectories have been processed (e.g., J = M), control proceeds to step 626.
在626中,基于处理器的系统的至少一个处理器确定是否还有额外的机器人对需要处理。方法600可以处理机器人对的每种排列、这些机器人对的轨迹的每种排列和候选滞后时间的每种排列,至少直到达到停止条件(例如,发现不可接受的高碰撞概率)。因此,对于任何给定的机器人,确定的可接受滞后时间(例如,最大滞后时间)能够是在共享工作空间中操作的每个其它机器人的相应选定轨迹以及与这些选定轨迹相关联的确定的可接受滞后时间的函数。在这种意义上,术语“最大滞后时间”不一定意味着孤立的给定机器人的绝对最大滞后时间,而是能够意味着考虑到在共享工作空间中操作的其它机器人的轨迹和相关联的滞后时间,给定机器人的最大滞后时间。如果还有额外的机器人对需要处理,则控制转到628,在628中,选择新的机器人对,然后控制转到外部机器人对碰撞评估循环的顶部。如果没有剩余的机器人对需要处理,则控制直接转到630。In step 626, at least one processor of the processor-based system determines whether there are any additional robot pairs that need to be processed. Method 600 can process each permutation of robot pairs, each permutation of the trajectories of these robot pairs, and each permutation of candidate lag times, at least until a stopping condition is met (e.g., an unacceptably high collision probability is found). Thus, for any given robot, the determined acceptable lag time (e.g., maximum lag time) can be a function of the corresponding selected trajectories of each other robot operating in the shared workspace and the determined acceptable lag time associated with those selected trajectories. In this sense, the term "maximum lag time" does not necessarily mean the absolute maximum lag time of a given robot in isolation, but can mean the maximum lag time of a given robot taking into account the trajectories and associated lag times of other robots operating in the shared workspace. If there are any additional robot pairs that need to be processed, control proceeds to step 628, where a new robot pair is selected, and control then proceeds to the top of the external robot pair collision evaluation loop. If no remaining robot pairs need to be processed, control proceeds directly to step 630.
在630中,基于处理器的系统的至少一个处理器返回一个或更多个标称轨迹的相应可接受滞后时间。例如,可接受滞后时间能够存储到非暂时性处理器可读介质中,例如,存储在与标称轨迹相关联的一个或更多个数据结构中。然后控制转到632。In 630, at least one processor of the processor-based system returns a corresponding acceptable hysteresis time for one or more nominal trajectories. For example, the acceptable hysteresis time can be stored in a non-transitory processor-readable medium, such as in one or more data structures associated with the nominal trajectory. Control then proceeds to 632.
在632中,方法600可以终止,例如,直到再次调用。虽然方法600是以有序流程来描述的,但在许多实施方式中,各种动作或操作将同时或并行执行,和/或能够包括额外的动作和/或省略一些动作。In 632, method 600 may terminate, for example, until it is called again. Although method 600 is described as an ordered process, in many implementations, various actions or operations will be performed simultaneously or in parallel, and/or additional actions may be included and/or some actions may be omitted.
为了确定标称轨迹的相应可接受滞后时间,例如,基于处理器的系统能够按照从相对较小的候选滞后时间到相对较大的候选滞后时间的顺序迭代多个候选滞后时间中的每个,至少直到达到停止条件,迭代标称轨迹覆盖多个时间中的每个时间,基于候选滞后时间中的当前一个候选滞后时间,检查两个或更多个机器人中的一个机器人与两个或更多个机器人中的至少一个其它机器人之间的碰撞。响应于确定两个或更多个机器人中的一个机器人与两个或更多个机器人中的至少一个其它机器人之间将发生或可能发生的碰撞,基于处理器的系统能够将已确定将发生碰撞的所述机器人与所述两个或更多个机器人中的其它机器人中的至少一个机器人的标称轨迹的相应可接受滞后时间设置为最接近的先前候选滞后时间(例如,碰撞概率低于指示可接受碰撞风险的碰撞检测阈值的滞后时间)。为了检查碰撞,例如,基于处理器的系统能够确定机器人对中的一个机器人的扫掠体积是否与机器人对中的另一机器人的扫掠体积相交。例如,基于处理器的系统能够响应于确定该机器人对中的一个机器人的扫掠体积与该机器人对中的另一机器人的扫掠体积相交,以及识别确定发生碰撞的机器人,而产生碰撞指示。To determine the appropriate acceptable lag time for a nominal trajectory, for example, a processor-based system can iterate over each of a plurality of candidate lag times in order from relatively small to relatively large candidate lag times, at least until a stopping condition is met, covering each of the plurality of times for the iterated nominal trajectory. Based on the current candidate lag time, a collision is checked between one of two or more robots and at least one of the other two or more robots. In response to determining that a collision will occur or is likely to occur between one of the two or more robots and at least one of the other two or more robots, the processor-based system can set the appropriate acceptable lag time of the nominal trajectory of the robot determined to be colliding with at least one of the other two or more robots to the closest previous candidate lag time (e.g., a lag time with a collision probability below a collision detection threshold indicating an acceptable collision risk). To check for collisions, for example, a processor-based system can determine whether the sweep volume of one robot in a robot pair intersects with the sweep volume of another robot in the robot pair. For example, a processor-based system can generate a collision indication in response to determining that the sweep volume of one robot in a robot pair intersects with the sweep volume of the other robot in the robot pair, and identifying the robot that has collided.
下文列出了确定和应用可接受滞后时间以提供安全裕度的示例性方法。The following section outlines exemplary methods for determining and applying acceptable hysteresis times to provide a safety margin.
首先,例如,使用国际专利申请PCT/US2021/013610(公开号为WO2021150439A1)中描述的优化来生成包括一组标称轨迹(Trj(t))的运动计划。因此,对于运动计划中的每个移动机器人r,计算相对于运动计划的可接受滞后时间(例如,最大安全滞后值(max_lag_r))。重要的是需要注意以下几点:(i)每个机器人r的可接受滞后时间值(max_lag)可能不同(例如,max_lag_r1≠max_lag_r2);(ii)可接受滞后时间值(max_lag)严格取决于一组标称轨迹Trj(t)和机器人r的相对位置;以及(iii)静态障碍物和静态机器人(如果有的话)不影响可接受滞后时间值(max_lag)。在该示例中,顺序计算一组标称轨迹Trj(t)和可接受滞后时间值(max_lag_r),并且优选地在运行时间前的配置时间内离线计算;然而,这并不旨在限制本文所述的方法。在执行期间(例如,在线;在运行时间期间)实现中央时钟(t),该中央时钟对在共享工作空间中运行的所有机器人来说是共用的。对于每个机器人r,以高频率计算相对于标称运动计划的滞后(lag_r),也就是说,相对于机器人的运动速度,以足够高的频率执行对实际滞后时间的监测,以避免不期望的实际碰撞。First, for example, an optimization described in International Patent Application PCT/US2021/013610 (Publication No. WO2021150439A1) is used to generate a motion plan comprising a set of nominal trajectories (Trj(t)). Therefore, for each mobile robot r in the motion plan, an acceptable lag time (e.g., a maximum safe lag value (max_lag_r)) relative to the motion plan is calculated. It is important to note that: (i) the acceptable lag time value (max_lag) for each robot r may be different (e.g., max_lag_r1 ≠ max_lag_r2); (ii) the acceptable lag time value (max_lag) depends strictly on the set of nominal trajectories Trj(t) and the relative position of the robot r; and (iii) static obstacles and static robots (if present) do not affect the acceptable lag time value (max_lag). In this example, a set of nominal trajectories Trj(t) and acceptable lag time values (max_lag_r) are calculated sequentially, preferably offline within a configured timeframe prior to runtime; however, this is not intended to limit the methods described herein. A central clock(t) is implemented during execution (e.g., online; during runtime), which is shared by all robots operating in a shared workspace. For each robot r, the lag (lag_r) relative to the nominal motion plan is calculated at a high frequency; that is, monitoring of the actual lag time is performed at a sufficiently high frequency relative to the robot's motion speed to avoid unwanted actual collisions.
在理想情况下,每个机器人r与运动计划完全同步,机器人的实际滞后为零(lag_r=0)。然而,在一般情况下,一个或更多个机器人可能会落后于计划,其中,当前机器人状态由轨迹trj_r(t-nΔT)和实际滞后lag_r=nΔT给出。Ideally, each robot r is perfectly synchronized with the motion plan, and the actual lag of the robot is zero (lag_r = 0). However, in general, one or more robots may lag behind the plan, where the current robot state is given by the trajectory trj_r(t-nΔT) and the actual lag lag_r = nΔT.
基于处理器的系统监测实际滞后值,以确保机器人系统的安全。如果所有实际滞后值均在可接受滞后时间指定的安全裕度范围内(例如,lag_r≤max_lag_r),则由于确保了了无自碰撞条件,则认为继续执行是安全的。否则,由于无法确保无自碰撞条件,因此系统的安全性被认为受到损害。Processor-based systems monitor actual lag values to ensure the safety of the robot system. If all actual lag values are within the safety margin specified by the acceptable lag time (e.g., lag_r ≤ max_lag_r), then continuing execution is considered safe because the self-collision-free condition is ensured. Otherwise, the system's safety is considered compromised because the self-collision-free condition cannot be ensured.
为了使机器人始终处于安全状态,该系统可以监测实际滞后值,并在超过安全裕度(例如,超过裕度或阈值)时简单地停止整个机器人系统的移动。为了安全地重新启动操作,机器人能够移动到一组标称轨迹Trj(t*)的任何(安全)状态,并且中央时钟重置为t*。To ensure the robot remains in a safe state, the system monitors actual hysteresis values and simply stops the entire robot system's movement if a safety margin is exceeded (e.g., exceeding the margin or threshold). To safely restart operation, the robot can move to any (safe) state of a set of nominal trajectories Trj(t*), and the central clock is reset to t*.
破坏性较小的解决方案能够包括在机器人仍处于安全边界但相对接近极限的情况下,对其采取补救或纠正措施。例如,能够加速即将达到极限的机器人的运动(增加速度),以减小其实际滞后时间的值。这一措施将直接增加与极限的距离,并且提高安全水平。可替代地,其它机器人能够被减速。该措施可能会利用中央时钟的时间膨胀来保持一致性。混合措施也可能非常有效。Less disruptive solutions can involve remedial or corrective actions taken when the robot is still within safe boundaries but relatively close to its limits. For example, accelerating the movement of a robot approaching its limits (increasing speed) can reduce the value of its actual lag time. This measure will directly increase the distance to the limit and improve the safety level. Alternatively, other robots can be slowed down. This measure might utilize time dilation of a central clock to maintain consistency. Hybrid measures can also be very effective.
下文的伪代码中列出了确定安全裕度的示例性处理器可执行算法。The following pseudocode illustrates an exemplary processor-executable algorithm for determining safety margins.
为了更好地理解,该算法能够被分为4个部分:To better understand this algorithm, it can be divided into four parts:
·mainloop:其跨越从0到L的候选滞后值,并且在标称轨迹Trj(t)上迭代。·mainloop: It spans candidate hysteresis values from 0 to L and iterates over the nominal trajectory Trj(t).
·CheckLagCollision():评估在特定时间t应用的候选滞后值的影响。给定机器人中的每个机器人的一组候选滞后值,它确定在给定时间t时是否有任何机器人发生碰撞。在没有滞后的区域里,机器人占据了由其当前姿态确定的体积。目前,在有滞后的情况下,机器人可以基于其从时间t-lag到时间t的姿态所采取的轨迹来扫掠体积。`CheckLagCollision()`: Evaluates the impact of candidate hysteresis values applied at a specific time `t`. Given a set of candidate hysteresis values for each robot in the robot group, it determines whether any robot collides at a given time `t`. In the region without hysteresis, the robot occupies the volume determined by its current pose. Currently, in the case of hysteresis, the robot can sweep the volume based on the trajectory it takes from its pose from time `t-lag` to time `t`.
·ComputeSweptVolume_r(t1,t2):计算机器人r在沿着轨迹的从时间t1到时间t2的一段移动时扫掠的体积(trj_r(t1...t2))。·ComputeSweptVolume_r(t1, t2): Calculates the volume swept by robot r as it moves along the trajectory from time t1 to time t2 (trj_r(t1...t2)).
·VolumesExcept():几何搜索两个体积之间的交点。VolumesExcept(): Geometrically searches for the intersection of two volumes.
下文将详细介绍main_loop()和CheckLagCollision()。ComputeSweptVolume_r()和VolumesIntersect()由于能够采用许多算法来实现,因此未做详细说明。The main_loop() and CheckLagCollision() will be described in detail below. ComputeSweptVolume_r() and VolumesIntersect() are not described in detail because they can be implemented using many algorithms.
输入包括:trj[1...N]:N个机器人的一组无碰撞轨迹;ΔT:采样时间;T:机器人活动的最大持续时间;ΔL:搜索的样本滞后时间值;以及L:搜索的最大滞后值(L<=T)。The input includes: trj[1...N]: a set of collision-free trajectories for N robots; ΔT: sampling time; T: the maximum duration of robot activity; ΔL: the sample lag time value for the search; and L: the maximum lag value for the search (L<=T).
输出包括:保证机器人之间无自碰撞运动的每个机器人的最大滞后值max_lag[1...N]The output includes: the maximum lag value max_lag[1...N] for each robot to ensure collision-free motion between robots.
内部变量包括:lag_candidate:当前迭代中评估的滞后值;lag[1...N]:每个机器人在当前迭代中评估的滞后值;lag_prev[1...N]:每个机器人在先前迭代中评估的滞后值;found_max-lag[1...N]:每个机器人停止搜索的布尔值。The internal variables include: lag_candidate: the lag value evaluated in the current iteration; lag[1...N]: the lag value evaluated for each robot in the current iteration; lag_prev[1...N]: the lag value evaluated for each robot in the previous iteration; found_max-lag[1...N]: the boolean value at which each robot stops searching.
图7示出了根据至少一个示出的实施方式的基于处理器的系统的操作方法700,用于至少部分地基于可接受滞后时间,以及可选地至少部分地基于其它标准,为将在共享工作空间中操作的一个或更多个机器人生成或选择运动计划。滞后时间以及可选的其它标准能够表示为代价或代价函数。例如,方法700能够在配置或“预运行”时间期间执行,即运动规划中的部分或全部发生的时间,例如,为每个机器人生成标称轨迹和/或运动计划。配置或“预运行”时间可以先于运行时间,运行时间是一个或更多个机器人执行相应运动计划的时间。这有利地允许在运行时间之前执行一些计算量最密集的工作,因为此时响应能力并不是特别受关注。在至少一些实施方式中,方法700或其部分在配置时间或预运行时间之后的运行时间(即,一个或更多个机器人正在执行任务的时间)期间执行。Figure 7 illustrates an operation method 700 of a processor-based system according to at least one illustrated embodiment, for generating or selecting motion plans for one or more robots to operate in a shared workspace, based at least in part on an acceptable lag time and optionally at least in part on other criteria. The lag time and optional other criteria can be expressed as a cost or cost function. For example, method 700 can be executed during a configuration or “pre-run” time, i.e., the time when some or all of the motion planning occurs, such as generating a nominal trajectory and/or motion plan for each robot. The configuration or “pre-run” time can precede the runtime, which is the time when one or more robots execute their respective motion plans. This advantageously allows some of the most computationally intensive work to be performed before the runtime, since responsiveness is not particularly of concern at this time. In at least some embodiments, method 700 or a portion thereof is executed during the runtime (i.e., the time when one or more robots are performing tasks) after the configuration or pre-run time.
确定可接受滞后时间的方法700在702处开始,例如,响应于系统或其组件的启动或通电、信息或数据的接收,或调用例程或程序的调用或启用。The method for determining acceptable lag time 700 begins at 702, for example, in response to the startup or power-on of the system or its components, the receipt of information or data, or the invocation or activation of a routine or program.
可选地,在704中,基于处理器的系统的至少一个处理器生成或访问(例如,接收、检索)每个机器人的标称轨迹。如前文所述,标称轨迹是“指定”的轨迹,其中,每个轨迹包括机器人的姿态或配置的有序序列,以及每个姿态或配置的相应定时。如本文所描述的,机器人或其部分的实际运动或实际轨迹可能会偏离相应的标称轨迹,例如,由于姿态之间转换的意外延迟(例如,由于需要在目标对象上逗留或停留比预期更长的时间)。Optionally, in 704, at least one processor of the processor-based system generates or accesses (e.g., receives, retrieves) the nominal trajectory for each robot. As described above, a nominal trajectory is a “specified” trajectory, wherein each trajectory includes an ordered sequence of robot poses or configurations, and a corresponding timing for each pose or configuration. As described herein, the actual motion or actual trajectory of the robot or its parts may deviate from the corresponding nominal trajectory, for example, due to unexpected delays in transitions between poses (e.g., due to the need to linger or remain on a target object for a longer period than expected).
如前文所述,能够采用多种技术和/或算法中的任何一种来生成标称轨迹,例如,基于样本的运动规划器(SBMP),例如,概率路线图(PRM)或快速探索随机树(RRT、RTT*s)、稳定稀疏RRT*(SST*)和/或快速匹配树(FMT)。有利地,本文的教导包括在计算上高效地使用确定的滞后时间来为运动计划选择一组标称轨迹,以增强操作的鲁棒性。As described above, nominal trajectories can be generated using any of a variety of techniques and/or algorithms, such as sample-based motion planners (SBMPs), probabilistic route graphs (PRMs), or fast exploratory random trees (RRTs, RTTs), stable sparse RRTs (SSTs), and/or fast matching trees (FMTs). Advantageously, the teachings of this paper include computationally efficient use of deterministic lag times to select a set of nominal trajectories for motion planning to enhance operational robustness.
在706中,基于处理器的系统的至少一个处理器初始化机器人计数器I,例如,将机器人计数器设置为等于整数值1。在708,基于处理器的系统的至少一个处理器执行外部机器人处理迭代循环,对将在共享工作空间中操作的两个或更多机器人中的每个机器人执行迭代,或者直到达到停止条件(例如,确定确保无碰撞运动的最大滞后时间)。In 706, at least one processor of the processor-based system initializes the robot counter I, for example, by setting the robot counter to an integer value of 1. In 708, at least one processor of the processor-based system executes an external robot processing iteration loop, performing iterations for each of two or more robots that will operate in a shared workspace, or until a stopping condition is met (e.g., determining the maximum lag time to ensure collision-free motion).
在710中,基于处理器的系统的至少一个处理器初始化标称轨迹计数器J,例如,将标称轨迹计数器设置为等于整数值1。在712,基于处理器的系统的至少一个处理器执行内部标称轨迹处理迭代循环,对给定机器人的每个标称轨迹执行迭代。内部标称轨迹处理迭代循环712嵌套在外部机器人处理迭代循环708中。In 710, at least one processor of the processor-based system initializes the nominal trajectory counter J, for example, by setting the nominal trajectory counter to an integer value of 1. In 712, at least one processor of the processor-based system executes an internal nominal trajectory processing iteration loop, iterating over each nominal trajectory of the given robot. The internal nominal trajectory processing iteration loop 712 is nested within the external robot processing iteration loop 708.
在714中,基于处理器的系统的至少一个处理器确定当前机器人I的当前标称轨迹J的相应可接受滞后时间。相应的可接受滞后时间反映了当前标称轨迹J中的最大可接受延迟或滞后,至少在当前机器人I(外部机器人处理迭代循环的当前机器人)执行当前标称轨迹J(内部当前标称轨迹迭代循环的当前标称轨迹)时,该延迟或滞后仍然保证当前机器人I相对于各自按照相应的标称轨迹移动的无自碰撞移动,其中相应的可接收滞后时间被引入到当前机器人I当前的标称轨迹J中。优选地,这能够相对于引入各种候选滞后时间(例如,零和非零滞后时间)或者甚至在已知的情况下引入相应的可接受滞后时间的其他机器人的标称轨迹进行评估。只要所有其它机器人都在它们相应的标称轨迹上或之内运行(即滞后时间=0),或所有其它机器人都在它们引入相应的滞后时间的相应的标称轨迹上或之内运行,给定机器人I的可接受滞后时间就能够保证不会发生自碰撞。因此,在至少一个实施方式中,只要给定机器人的相应当前实际滞后时间小于机器人的相应可接受滞后时间,并且其它机器人按照其标称轨迹运行,则机器人将不会相互碰撞(保证了机器人之间不会发生自碰撞)。因此,在至少一个优选实施方式中,只要所有机器人的相应当前实际滞后时间小于每个机器人的相应可接受滞后时间,机器人将不会相互碰撞(保证了机器人之间不会发生自碰撞)。In 714, at least one processor of the processor-based system determines the corresponding acceptable lag time for the current nominal trajectory J of the current robot I. The corresponding acceptable lag time reflects the maximum acceptable delay or lag in the current nominal trajectory J, which, at least while the current robot I (the current robot in the external robot processing iteration loop) executes the current nominal trajectory J (the current nominal trajectory in the internal current nominal trajectory iteration loop), still guarantees the current robot I's self-collision-free movement relative to its respective nominal trajectory, where the corresponding acceptable lag time is introduced into the current robot I's current nominal trajectory J. Preferably, this can be evaluated relative to the nominal trajectories of other robots that introduce various candidate lag times (e.g., zero and non-zero lag times) or even, where known, the corresponding acceptable lag time. A given acceptable lag time for robot I guarantees no self-collision, provided all other robots are operating on or within their respective nominal trajectories (i.e., lag time = 0), or all other robots are operating on or within their respective nominal trajectories that introduce the corresponding lag time. Therefore, in at least one embodiment, robots will not collide with each other as long as the corresponding current actual lag time of a given robot is less than the corresponding acceptable lag time of the robot, and other robots are running according to their nominal trajectories (ensuring no self-collision between robots). Therefore, in at least one preferred embodiment, robots will not collide with each other as long as the corresponding current actual lag time of all robots is less than the corresponding acceptable lag time of each robot (ensuring no self-collision between robots).
在716中,基于处理器的系统的至少一个处理器确定是否考虑了给定机器人的标称轨迹中的每个,例如,确定标称轨迹计数器J是否等于给定机器人的标称轨迹总数(例如,J=M?)。如果尚未考虑给定机器人的标称轨迹中的每个标称轨迹,则控制转到718,在那里标称轨迹计数器递增(例如,J=J+1),则控制返回到内部标称轨迹处理迭代循环712的顶部,以考虑给定机器人I的下一标称轨迹。如果已经考虑了给定机器人I的每个标称轨迹(例如,J=M),则控制直接转到720。In 716, at least one processor of the processor-based system determines whether each of the nominal trajectories of a given robot has been considered, for example, determining whether the nominal trajectory counter J is equal to the total number of nominal trajectories of the given robot (e.g., J = M?). If each of the nominal trajectories of the given robot has not yet been considered, control proceeds to 718, where the nominal trajectory counter is incremented (e.g., J = J + 1), and control returns to the top of the internal nominal trajectory processing iteration loop 712 to consider the next nominal trajectory of the given robot I. If each of the nominal trajectories of the given robot I has already been considered (e.g., J = M), control proceeds directly to 720.
在720中,基于处理器的系统的至少一个处理器选择针对给定机器人I确定的一组确定的可接受滞后时间中的最大值。在722中,基于处理器的系统的至少一个处理器为给定机器人提供一个或更多个确定的可接受滞后时间(例如,提供确定的可接受滞后时间的选定最大值),以用于确定至少给定机器人的运动计划。例如,这能够包括将一个或更多个确定的可接受滞后时间提供给不同的处理器,或者将一个或更多个确定的可接受滞后时间传输到处理器的不同寄存器,或者以其它方式将其存储在非暂时性处理器可读介质中。In 720, at least one processor of the processor-based system selects the maximum value from a set of determined acceptable lag times determined for a given robot I. In 722, at least one processor of the processor-based system provides one or more determined acceptable lag times (e.g., provides a selected maximum value of determined acceptable lag times) to the given robot for determining a motion plan for at least the given robot. For example, this can include providing one or more determined acceptable lag times to different processors, or transferring one or more determined acceptable lag times to different registers of the processors, or otherwise storing them in a non-transitory processor-readable medium.
在724中,基于处理器的系统的至少一个处理器确定是否考虑了机器人中的每个机器人,例如,确定机器人计数器I是否等于机器人的总数(例如,I=N?)。如果尚未考虑机器人中的每个机器人(例如,I<N),则控制转到726,在726中,基于处理器的系统的至少一个处理器迭代机器人计数器(例如,I=I+1),以及然后控制返回到外部迭代机器人处理循环708的顶部,以考虑下一机器人。如果机器人中的每个已被处理(例如,I=N),则控制直接转到728。In 724, at least one processor of the processor-based system determines whether each robot in the robot group has been considered, for example, whether the robot counter I is equal to the total number of robots (e.g., I = N?). If each robot in the robot group has not been considered (e.g., I < N), control proceeds to 726, where at least one processor of the processor-based system iterates the robot counter (e.g., I = I + 1), and then control returns to the top of the outer iterative robot processing loop 708 to consider the next robot. If each robot in the robot group has been processed (e.g., I = N), control proceeds directly to 728.
在728中,基于处理器的系统的至少一个处理器为每个机器人生成或选择相应的运动计划。运动计划能够是或能够表示机器人的与最大可接受滞后时间相关联的相应标称轨迹。这能够有利地增强由运动规划生成的运动计划的鲁棒性,并且从而改善执行所得运动计划的机器人的操作。In 728, at least one processor of the processor-based system generates or selects a corresponding motion plan for each robot. The motion plan can be, or can represent, the robot's corresponding nominal trajectory associated with the maximum acceptable lag time. This can advantageously enhance the robustness of the motion plans generated by motion planning, and thus improve the operation of the robot executing the resulting motion plans.
当考虑每个机器人的多个轨迹时,为任何给定机器人确定的可接受滞后时间(例如,最大滞后时间)能够是在共享工作空间中操作的其它机器人中的每个机器人的相应选定轨迹以及与这些选定轨迹相关联的确定的可接受滞后时间的函数。因此,如本文所述,在至少一些实施方式中,系统针对每个机器人和该机器人的每个候选轨迹,在给定所有其它机器人的候选轨迹和候选滞后时间的所有其他可能组合的情况下确定可接受滞后时间。一旦完成,系统(例如,图2的标称轨迹分析器258)能够为在共享工作空间中操作的所有机器人选择一组轨迹。系统(例如,图2的标称轨迹分析器258)能够例如通过优化目标函数(例如,所有机器人的所有滞后时间的最大和)来划分该组轨迹。When considering multiple trajectories for each robot, the acceptable lag time (e.g., maximum lag time) determined for any given robot can be a function of the corresponding selected trajectories of each of the other robots operating in the shared workspace and the determined acceptable lag time associated with those selected trajectories. Therefore, as described herein, in at least some embodiments, the system determines the acceptable lag time for each robot and each candidate trajectory of that robot, given all other possible combinations of candidate trajectories and candidate lag times for all other robots. Once this is done, the system (e.g., nominal trajectory analyzer 258 of FIG. 2) is able to select a set of trajectories for all robots operating in the shared workspace. The system (e.g., nominal trajectory analyzer 258 of FIG. 2) is able to partition this set of trajectories, for example, by optimizing an objective function (e.g., the maximum sum of all lag times of all robots).
在730中,基于处理器的系统的至少一个处理器向每个机器人或每个运动控制器提供相应的运动计划,以使机器人按照相应的运动计划移动。例如,这能够包括将运动计划提供给一个或更多个机器人中的每个机器人的相应运动控制器。In 730, at least one processor of the processor-based system provides a corresponding motion plan to each robot or each motion controller so that the robot moves according to the corresponding motion plan. For example, this can include providing the motion plan to the corresponding motion controller of each of one or more robots.
在732处,方法700可以终止,例如直到再次调用。虽然方法700是以有序流程来描述的,但在许多实施方式中,各种动作或操作将同时或并行执行,和/或能够包括额外的动作和/或省略一些动作。At 732, method 700 may terminate, for example, until it is called again. Although method 700 is described as an ordered process, in many implementations, various actions or operations will be performed simultaneously or in parallel, and/or additional actions may be included and/or some actions may be omitted.
因此,例如,基于处理器的系统能够针对两个或更多个机器人中的每个机器人,以及两个或更多个机器人中的相应机器人的两个或更多个标称轨迹中的每个标称轨迹,确定标称轨迹的相应可接受滞后时间,该滞后时间反映了相对于标称轨迹的姿态定时的最大可接受延迟,该延迟仍然保证机器人通过标称轨迹指定的姿态序列的移动相对于通过两个或更多个机器人中的其它机器人中的每个机器人的相应标称轨迹指定的相应姿态序列的移动保持无碰撞,因为这两个或更多个机器人中的其它机器人中的每个机器人的标称轨迹本身被延迟了相应的可接受滞后时间。例如,基于处理器的系统可以至少部分地基于两个或更多个标称轨迹的相应可接受滞后时间在两个或更多个标称轨迹之间进行选择;并且至少部分地基于选定的一个标称轨迹来为相应机器人提供运动计划,以控制两个或更多机器人中相应机器人的操作。例如,基于处理器的系统能够为相应的机器人选择两个或更多个标称轨迹中具有最大可接受滞后时间的标称轨迹,从而生成比其它方式更鲁棒的运动计划。例如,基于处理器的系统能够基于相应的代价函数来选择标称轨迹,所述相应的代价函数表示各自与相应机器人的两个或更多个标称轨迹的相应标称轨迹相关联的可接受滞后时间和可选的碰撞风险或概率。例如,基于处理器的系统能够基于相应的代价函数来选择标称轨迹,该代价函数表示各自与相应机器人的两个或更多个标称轨迹的相应标称轨迹相关联的可接受滞后时间、碰撞的风险或概率,以及可选的碰撞的严重程度。例如,基于处理器的系统能够基于相应的代价函数来选择标称轨迹,该代价函数表示各自与相应机器人的两个或更多个标称轨迹的相应标称轨迹相关联的可接受滞后时间、碰撞的风险或概率、碰撞的严重程度,以及可选地以下至少一者:完成的持续时间或能量消耗,其中,代价函数中的每个变量分别表示可接受滞后时间、碰撞的风险或者概率、碰撞严重程度,以及以下至少一者:完成的持续时间或能量消耗,这些变量在相应的代价函数中被加权。例如,基于处理器的系统能够为两个或更多个机器人中的每个机器人选择相应的标称轨迹,以使得两个或更多个机器人中的所有机器人的总体可接受滞后时间最大化。例如,基于处理器的系统能够为两个或更多个机器人中的每个选择相应的标称轨迹,使得在两个或更多个机器人中的所有机器人的总体上优化了每个机器人的相应代价函数,其中,每个代价函数表示各自与相应机器人的两个或更多标称轨迹中的相应标称轨迹相关联的可接受滞后时间和至少碰撞的风险或概率。例如,基于处理器的系统能够为两个或更多个机器人中的每个选择相应的标称轨迹,使得在所述两个或更多个机器人中的所有机器人的总体上优化了每个机器人的相应代价函数,其中,每个代价函数表示各自与相应机器人的两个或更多标称轨迹中的相应标称轨迹相关联的可接受滞后时间、至少碰撞的风险或概率以及碰撞的严重程度。例如,基于处理器的系统能够为两个或更多个机器人中的每个选择相应的标称轨迹,使得在所述两个或更多个机器人中的所有机器人的总体上优化了每个机器人的相应代价函数,其中,每个代价函数表示各自与相应机器人的两个或更多标称轨迹中的相应标称轨迹相关联的可接受滞后时间、至少碰撞的风险或概率、碰撞的严重程度,以及以下至少一者:完成的持续时间或能量消耗,其中,代价函数中的每个变量分别表示可接受滞后时间、碰撞的风险或者概率、碰撞严重程度,以及以下至少一者:完成的持续时间或能量消耗,这些变量在相应的代价函数中被加权。Therefore, for example, a processor-based system can determine a corresponding acceptable lag time for each of two or more robots, and for each of two or more nominal trajectories of the corresponding robot, reflecting a maximum acceptable delay in attitude timing relative to the nominal trajectory. This delay still ensures that movement of the robot through a sequence of poses specified by the nominal trajectory remains collision-free relative to movement through a corresponding sequence of poses specified by the corresponding nominal trajectories of the other two or more robots, since the nominal trajectories of the other two or more robots are themselves delayed by the corresponding acceptable lag time. For example, a processor-based system can select between two or more nominal trajectories at least in part based on the corresponding acceptable lag time of the two or more nominal trajectories; and provide a motion plan for the corresponding robot at least in part based on the selected nominal trajectory to control the operation of the corresponding robot among the two or more robots. For example, a processor-based system can select the nominal trajectory with the maximum acceptable lag time among two or more nominal trajectories for the corresponding robot, thereby generating a more robust motion plan than otherwise provided. For example, a processor-based system can select a nominal trajectory based on a corresponding cost function, which represents the acceptable lag time and optional collision risk or probability associated with each of two or more nominal trajectories of a given robot. For example, a processor-based system can select a nominal trajectory based on a corresponding cost function, which represents the acceptable lag time, collision risk or probability, and optional collision severity associated with each of two or more nominal trajectories of a given robot. For example, a processor-based system can select a nominal trajectory based on a corresponding cost function, which represents the acceptable lag time, collision risk or probability, collision severity, and optionally at least one of the following: completion duration or energy consumption, associated with each of two or more nominal trajectories of a given robot, wherein each variable in the cost function represents the acceptable lag time, collision risk or probability, collision severity, and at least one of the following: completion duration or energy consumption, and these variables are weighted in the corresponding cost function. For example, a processor-based system can select a corresponding nominal trajectory for each of two or more robots to maximize the overall acceptable lag time for all robots in the two or more robots. For example, a processor-based system can select a corresponding nominal trajectory for each of two or more robots such that the corresponding cost function for each robot is optimized overall across all robots in the two or more robots, where each cost function represents the acceptable lag time, at least the risk or probability of collision, and the severity of collision associated with the corresponding nominal trajectory in the two or more nominal trajectories of the corresponding robot. For example, a processor-based system can select a corresponding nominal trajectory for each of two or more robots such that the corresponding cost function for each robot is optimized overall across all robots in the two or more robots, where each cost function represents the acceptable lag time, at least the risk or probability of collision, and the severity of collision associated with the corresponding nominal trajectory in the two or more nominal trajectories of the corresponding robot. For example, a processor-based system can select a corresponding nominal trajectory for each of two or more robots, such that the corresponding cost function of each robot is optimized in aggregate across all two or more robots, wherein each cost function represents the acceptable lag time, at least the risk or probability of collision, the severity of collision, and at least one of the following: duration of completion or energy consumption, which are associated with the corresponding nominal trajectory of the two or more nominal trajectories of the respective robot, and each variable in the cost function represents the acceptable lag time, the risk or probability of collision, the severity of collision, and at least one of the following: duration of completion or energy consumption, which are weighted in the corresponding cost function.
例如,基于处理器的系统能够确定标称轨迹的相应可接受滞后时间,该滞后时间反映了相对于标称轨迹的姿态定时的最大可接受延迟,该延迟仍然保证机器人通过标称轨迹指定的姿态序列的移动与在共享工作空间中的两个或更多个机器人之间保持无自碰撞,这能够包括对两个或更多个机器人中的每个机器人执行碰撞评估。For example, a processor-based system can determine the appropriate acceptable lag time for the nominal trajectory, which reflects the maximum acceptable delay in attitude timing relative to the nominal trajectory, while still ensuring that the robot's movement through the specified sequence of attitudes via the nominal trajectory remains collision-free among two or more robots in a shared workspace. This can include performing collision assessments for each of the two or more robots.
例如,基于处理器的系统能够在以下i)和ii)之间执行碰撞评估,其中i)表示所述机器人的引入了至少一个相应滞后时间的相应标称轨迹的相应样本轨迹的至少部分,ii)两个或更多个机器人中的其它机器人中的每个机器人的相应轨迹中的每个轨迹的相应样本的至少部分,其中,至少一个相应滞后时间被引入所述两个或更多个机器人中的其它机器人中的每个机器人的相应轨迹中。For example, a processor-based system is capable of performing collision assessment between i) and ii), where i) represents at least a portion of a sample trajectory of a corresponding nominal trajectory of the robot with at least one corresponding lag time introduced, and ii) at least a portion of a sample trajectory of each of the corresponding trajectories of each of two or more other robots, wherein at least one corresponding lag time is introduced into the corresponding trajectory of each of the two or more other robots.
图8示出了根据至少一个示出的实施方式的基于处理器的系统的操作方法800,用于至少部分地基于可接受滞后时间来控制在共享工作空间中操作的机器人的操作。根据至少一个示出的实施方式,基于处理器的系统包括一个或更多个处理器,该处理器监测与可接受滞后时间相比的实际滞后时间,并且如果实际滞后时间超出阈值,则可选地采取一个或更多个补救措施。方法800可以例如在方法300(图3)、方法400(图4)、方法500(图5)、方法600(图6)和/或方法700(图7)的执行之后执行。例如,方法800能够在运行时间期间执行,即在一个或更多个机器人正在执行相应的运动计划和/或执行任务的时间期间。例如,运行时间能够在配置或“预运行”时间之后,在配置或“预运行”时间期间能够进行部分或全部运动规划,例如,为每个机器人生成标称轨迹和/或运动计划。Figure 8 illustrates an operation method 800 of a processor-based system according to at least one illustrated embodiment for controlling the operation of robots operating in a shared workspace, at least in part, based on an acceptable lag time. According to at least one illustrated embodiment, the processor-based system includes one or more processors that monitor the actual lag time compared to the acceptable lag time and optionally take one or more remedial actions if the actual lag time exceeds a threshold. Method 800 may be executed, for example, after the execution of methods 300 (Figure 3), 400 (Figure 4), 500 (Figure 5), 600 (Figure 6), and/or 700 (Figure 7). For example, method 800 can be executed during runtime, i.e., during the time when one or more robots are executing corresponding motion plans and/or performing tasks. For example, runtime can be performed after a configuration or "pre-run" time, during which partial or full motion planning, such as generating a nominal trajectory and/or motion plan for each robot, can be carried out.
方法800在802处开始,例如,响应于系统或其组件的启动或通电、信息或数据的接收,或调用例程或程序的调用或启用。Method 800 begins at 802, for example, in response to the startup or power-on of the system or its components, the receipt of information or data, or the invocation or activation of a routine or program.
可选地,在804中,基于处理器的系统的至少一个处理器访问(例如,接收、检索)每个机器人的相应运动计划。能够从一个或更多个非暂时性处理器可读介质中存储和访问相应的运动计划。Optionally, in 804, at least one processor of the processor-based system accesses (e.g., receives, retrieves) the corresponding motion plan for each robot. The corresponding motion plans can be stored and accessed from one or more non-transitory processor-readable media.
在806中,基于处理器的系统的至少一个处理器使得一个或更多个机器人执行相应的运动计划。例如,至少一个处理器能够向一个或更多个机器人的一个或更多个运动控制器提供指令。一个或更多个运动控制器向一个或更多个致动器(例如,电动机、螺线管、阀、泵)提供控制信号,这些致动器被耦合以驱动机器人的各种连杆,从而使机器人或其部分移动。In 806, at least one processor in a processor-based system causes one or more robots to execute corresponding motion plans. For example, at least one processor is capable of providing instructions to one or more motion controllers of one or more robots. One or more motion controllers provide control signals to one or more actuators (e.g., electric motors, solenoids, valves, pumps), which are coupled to drive various links of the robot, thereby causing the robot or parts thereof to move.
在808中,基于处理器的系统的至少一个处理器监测由相应的一个机器人执行的相应实际轨迹与相应的标称轨迹相比的滞后时间量(实际滞后时间)。如前所述,实际轨迹是由相应机器人执行的姿态和这些姿态的定时的实际序列。虽然在一些情况下,实际轨迹可能与标称轨迹匹配,但在许多情况下,实际轨迹将不会与标称轨迹匹配,通常一个或更多个机器人的实际轨迹的姿态中的至少一些的执行定时滞后于由相应机器人的相应标称轨迹指定的姿态的定时。监测能够通过多种方式中的任何一种执行。例如,基于处理器的系统能够使用经由一个或更多个传感器感测的输入,这些传感器被定位成感测共享工作空间中机器人的位置和/或移动和/或姿态或配置或状态。传感器能够监测整个工作空间,例如,传感器采用相机、摄像机、立体相机、运动检测器等的形式,其定位并具有覆盖共享工作空间中的全部或至少部分的视野。传感器能够附加地或可替代地监测特定机器人的位置和/或移动和/或姿态或配置或状态,例如,包括以下中的任何一个或更多个:相机、摄像机、运动检测器、位置编码器或旋转编码器、霍尔效应传感器和/或与机器人的一个或更多个关节、连杆和/或致动器相关的簧片开关(Reed switches)。一个或更多个处理器能够执行处理(例如,机器视觉处理)来监测实际轨迹。附加地或可替代地,基于处理器的系统能够使用来自机器人控制系统和/或驱动系统(例如,电机控制器、气动控制器、液压控制器等)的表示用于驱动机器人或其部分的控制信号(例如,PWM电机控制信号)的信息和/或使用从机器人或机器人的驱动系统接收的反馈信号(例如,反EMF)。一个或更多个处理器能够执行处理(例如,机器视觉处理)以确定实际轨迹的相应实际滞后时间。In 808, at least one processor in the processor-based system monitors the amount of time lag (actual lag) between a corresponding actual trajectory executed by a corresponding robot and a corresponding nominal trajectory. As previously described, the actual trajectory is an actual sequence of poses and timings of those poses executed by the corresponding robot. While in some cases the actual trajectory may match the nominal trajectory, in many cases the actual trajectory will not match the nominal trajectory, typically the timing of the execution of at least some of the poses of the actual trajectories of one or more robots lags behind the timing of the poses specified by the corresponding nominal trajectory of the corresponding robot. Monitoring can be performed in any of a variety of ways. For example, a processor-based system can use input sensed via one or more sensors positioned to sense the position and/or movement and/or pose or configuration or state of the robots in a shared workspace. The sensors can monitor the entire workspace, for example, in the form of cameras, video cameras, stereo cameras, motion detectors, etc., positioned and having a field of view covering all or at least a portion of the shared workspace. Sensors can additionally or alternatively monitor the position and/or movement and/or attitude or configuration or state of a particular robot, for example, including any one or more of the following: cameras, video cameras, motion detectors, position encoders or rotary encoders, Hall effect sensors and/or reed switches associated with one or more joints, links and/or actuators of the robot. One or more processors can perform processing (e.g., machine vision processing) to monitor the actual trajectory. Additionally or alternatively, processor-based systems can use information from the robot control system and/or drive system (e.g., motor controllers, pneumatic controllers, hydraulic controllers, etc.) representing control signals (e.g., PWM motor control signals) used to drive the robot or parts thereof and/or use feedback signals received from the robot or the robot's drive system (e.g., inverse EMF). One or more processors can perform processing (e.g., machine vision processing) to determine the corresponding actual lag time of the actual trajectory.
在810中,基于处理器的系统的至少一个处理器确定所监测的滞后时间量(实际滞后时间)是否超过在共享工作空间中操作的机器人中的任何的相应机器人的相应轨迹的裕度或阈值(例如,相应确定的可接受滞后时间;相应确定的可接受滞后时间的百分比)。In 810, at least one processor of the processor-based system determines whether the monitored lag time (actual lag time) exceeds a margin or threshold (e.g., a correspondingly determined acceptable lag time; a correspondingly determined percentage of the acceptable lag time) of the corresponding trajectory of any of the robots operating in the shared workspace.
响应于确定所监测的滞后时间量(即,实际滞后时间)超过任何机器人的相应机器人的相应轨迹的相应裕度或阈值(例如,确定的可接受滞后时间;相应确定的可接收滞后时间的百分比),可选地在812中,基于处理器的系统的至少一个处理器选择和/或采取一个或更多个补救措施。In response to determining that the monitored lag time (i.e., the actual lag time) exceeds the corresponding margin or threshold (e.g., the determined acceptable lag time; the percentage of the corresponding determined acceptable lag time) of the corresponding trajectory of any robot, optionally in 812, at least one processor of the processor-based system selects and/or takes one or more remedial measures.
例如,为了采取至少一个补救措施,当基于处理器的系统的至少一个处理器执行处理器可执行指令时,能够使处理器执行以下操作中的一项或更多项:停止一个或更多个机器人的移动,减慢一个或更多个机器人的移动,和/或加快一个或更多机器人的运动。例如,至少一个处理器能够停止一个、两个、更多个甚至所有机器人的移动。同样,例如,至少一个处理器能够减慢一个、两个、更多个甚至所有机器人的移动。同样,例如,至少一个处理器可以加快一个、两个、更多个甚至所有机器人的移动。同样,例如,至少一个处理器能够停止一个或更多个机器人的移动,同时减慢一个或更多个机器人的移动。同样,例如,至少一个处理器能够停止一个或更多个机器人的移动,同时加快一个或更多机器人的移动或使得一个或更多机器人的移动保持恒定。同样,例如,至少一个处理器能够减慢一个或更多个机器人的移动,同时加快一个或更多机器人的移动或使得一个或更多机器人的移动保持恒定。同样,例如,至少一个处理器能够停止一个或更多个机器人的移动,同时减慢一个或更多个机器人的移动,同时加快一个或更多机器人的移动或使得一个或更多机器人的移动保持恒定。术语“保持移动恒定”意味着机器人的标称轨迹没有变化,尽管机器人的移动速度(即,速度和方向)可能会发生变化,因为这是由标称轨迹指定的。同样,例如,为了采取至少一个补救措施,当基于处理器的系统的至少一个处理器执行处理器可执行指令时,能够使处理器执行以下中的一项或更多项操作:停止一个或更多个机器人的移动,使一个或更多个机器人沿相应标称轨迹指定的相应轨迹前进,之后能够重新启动机器人的移动。重新启动移动通常涉及从移动停止的地方重新开始移动,尽管在一些情况下可能包括返回到相应轨迹的起点并从该起点重新开始。For example, to take at least one remedy, when at least one processor of the processor-based system executes processor-executable instructions, it is able to cause the processor to perform one or more of the following operations: stop the movement of one or more robots, slow down the movement of one or more robots, and/or speed up the movement of one or more robots. For example, at least one processor can stop the movement of one, two, more, or even all robots. Similarly, for example, at least one processor can slow down the movement of one, two, more, or even all robots. Similarly, for example, at least one processor can speed up the movement of one, two, more, or even all robots. Similarly, for example, at least one processor can stop the movement of one or more robots while slowing down the movement of one or more robots. Similarly, for example, at least one processor can stop the movement of one or more robots while speeding up the movement of one or more robots or keeping the movement of one or more robots constant. Similarly, for example, at least one processor can slow down the movement of one or more robots while speeding up the movement of one or more robots or keeping the movement of one or more robots constant. Similarly, for example, at least one processor is capable of stopping the movement of one or more robots while slowing down the movement of one or more robots, while speeding up the movement of one or more robots, or keeping the movement of one or more robots constant. The term "keeping the movement constant" means that the nominal trajectory of the robot does not change, although the robot's movement speed (i.e., velocity and direction) may change as specified by the nominal trajectory. Similarly, for example, to take at least one remedy, when at least one processor of the processor-based system executes processor-executable instructions, it is capable of causing the processor to perform one or more of the following operations: stopping the movement of one or more robots, causing one or more robots to proceed along a corresponding trajectory specified by the corresponding nominal trajectory, and then being able to restart the movement of the robots. Restarting the movement typically involves restarting the movement from where it stopped, although in some cases it may involve returning to the starting point of the corresponding trajectory and starting again from that point.
可选地,在814中,基于处理器的系统的至少一个处理器监测由相应的机器人执行的相应实际轨迹与相应的标称轨迹相比的滞后时间量(实际滞后时间)。Optionally, in 814, at least one processor of the processor-based system monitors the amount of lag time (actual lag time) between the corresponding actual trajectory executed by the corresponding robot and the corresponding nominal trajectory.
可选地,在816中,对于在共享工作空间中操作的每个机器人,基于处理器的系统的至少一个处理器确定所监测的滞后时间量(即,实际滞后时间)是否不再超过相应机器人的相应轨迹的相应裕度或阈值(例如,确定的可接受滞后时间;相应确定的可接收滞后时间的百分比)。系统能够进入等待循环,继续监测滞后时间量(即实际滞后时间),直到其不再超过所有机器人的相应裕度或阈值(例如,确定的可接受滞后时间;相应确定的可接收滞后时间的百分比)。一旦达到该条件,就控制转到818处。Optionally, at 816, for each robot operating in the shared workspace, at least one processor of the processor-based system determines whether the monitored lag time (i.e., the actual lag time) no longer exceeds a corresponding margin or threshold (e.g., a determined acceptable lag time; a percentage of the corresponding determined acceptable lag time) for the corresponding robot's corresponding trajectory. The system is able to enter a waiting loop, continuing to monitor the lag time (i.e., the actual lag time) until it no longer exceeds the corresponding margin or threshold (e.g., a determined acceptable lag time; a percentage of the corresponding determined acceptable lag time) for all robots. Once this condition is met, control proceeds to 818.
可选地,在818中,基于处理器的系统的至少一个处理器使得一个或更多个机器人继续执行(例如,重新开始移动)相应的运动计划。Optionally, in 818, at least one processor of the processor-based system causes one or more robots to continue executing (e.g., restart movement) the corresponding motion plan.
方法800在820终止,例如,直到再次调用。虽然方法800是以有序流程来描述的,但在许多实施方式中,各种动作或操作将同时或并行执行,和/或能够包括额外的动作和/或省略一些动作。Method 800 terminates at 820, for example, until it is called again. Although method 800 is described as an ordered process, in many implementations, various actions or operations will be performed simultaneously or in parallel, and/or additional actions may be included and/or some actions may be omitted.
上文的详细描述经由使用框图、原理图和示例阐述了设备和/或过程的各种实施方式。在这些框图、原理图和示例包含一个或更多个功能和/或操作的范围内,本领域技术人员将理解,这些框图、流程图或示例中的每个功能和/或者操作都能够单独地和/或共同地通过多种硬件、软件、固件或其他们的任何组合来实现。在一个实施方式中,本主题可以经由布尔电路、专用集成电路(ASIC)和/或FPGA来实现。然而,本领域技术人员将认识到,本文公开的实施方式能够全部或部分地在标准集成电路中以各种不同的实施方式实现,作为在一台或更多台计算机上运行的一个或更多个计算机程序(例如,作为在一个或更多个计算机系统上运行的一个或更多个程序)、作为在一个或更多个控制器(例如,微控制器)上运行的一个或更多个程序、作为在一个或更多个处理器(例如微处理器)上运行的一个或更多个程序、作为固件,或作为其几乎任何组合实现,并且根据本公开内容,设计电路和/或为软件和/或固件编写代码将完全在本领域普通技术人员的技术范围内。The detailed description above illustrates various implementations of the device and/or process using block diagrams, schematics, and examples. Within the scope of these block diagrams, schematics, and examples encompassing one or more functions and/or operations, those skilled in the art will understand that each function and/or operation in these block diagrams, schematics, or examples can be implemented individually and/or collectively by various hardware, software, firmware, or any combination thereof. In one implementation, the subject matter can be implemented via Boolean circuits, application-specific integrated circuits (ASICs), and/or FPGAs. However, those skilled in the art will recognize that the implementations disclosed herein can be implemented, wholly or partially, in standard integrated circuits in a variety of different ways, as one or more computer programs running on one or more computers (e.g., as 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 as virtually any combination thereof, and that designing circuits and/or writing code for software and/or firmware in accordance with this disclosure will be entirely within the skill level 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 an order different from the specified order.
此外,本领域技术人员将理解,本文教导的机制能够在硬件中实现,例如在一个或更多个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日提交的国际专利申请号PCT/US2017/036880;2016年1月5日提交的国际专利申请,其公开号为WO2016/122840;2018年1月12日提交的美国专利申请号62/616783;2018年2月6日提交的美国专利申请号62/626939;2019年6月3日提交的美国专利申请号62/856548;2019年6月24日提交的美国专利申请号62/865,431;2020年1月22日提交的美国专利申请号62/964405;2022年4月6日提交的美国专利申请号63/327917;国际专利申请PCT/US2021/013610(公开号为WO2021150439A1),以上全部内容通过引用并入本文。根据上述详细描述,能够对实施例进行这些和其它改变。通常来讲,在所附权利要求中,所使用的术语不应被解释为将权利要求限制在说明书和权利要求中公开的特定实施例,而应被理解为包括所有可能的实施例以及这些权利要求所享有的等同物的全部范围。因此,权利要求不受本公开内容的限制。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; International Patent Application No. WO2016/122840 filed January 5, 2016; U.S. Patent Application No. 62/616783 filed January 12, 2018; and U.S. Patent Application No. 62/616783 filed February 6, 2018. U.S. Patent Application No. 62/626939; U.S. Patent Application No. 62/856548, filed June 3, 2019; U.S. Patent Application No. 62/865,431, filed June 24, 2019; U.S. Patent Application No. 62/964405, filed January 22, 2020; U.S. Patent Application No. 63/327917, filed April 6, 2022; and International Patent Application PCT/US2021/013610 (Publication No. WO2021150439A1), all of which 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 understood to include all possible embodiments and the full scope of equivalents enjoyed by these claims. Therefore, the claims are not limited by this disclosure.
Claims (31)
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US63/358,422 | 2022-07-05 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| HK40122307A HK40122307A (en) | 2025-09-26 |
| HK40122307B true HK40122307B (en) | 2026-04-02 |
Family
ID=
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP7332199B2 (en) | Motion planning for multiple robots in a shared workspace | |
| JP7489727B2 (en) | Configuring robots in a multi-robot environment | |
| JP6598090B2 (en) | Storage medium, method for planning robot operation, hardware for planning robot operation, and robot | |
| US20230286156A1 (en) | Motion planning and control for robots in shared workspace employing staging poses | |
| US20110153080A1 (en) | Method and apparatus for industrial robotic pathscycle time optimization using fly by | |
| JP7591317B2 (en) | SYSTEM, METHOD, AND USER INTERFACE FOR USING CLEARANCE DETERMINATION IN ROBOT MOTION PLANNING AND CONTROL - Patent application | |
| CN116457159A (en) | Safety system and method for use in robotic operation | |
| CN119604824B (en) | Robust motion planning and/or control for a multi-robot environment | |
| US20250249586A1 (en) | Motion planning and control for robots in shared workspace employing look ahead planning | |
| CN117707146A (en) | Robot obstacle avoidance control method and related equipment | |
| JP2023522179A (en) | Configuring the robot operating environment, including sensor placement | |
| HK40122307B (en) | Robust motion planning and/or control for multi-robot environments | |
| HK40122307A (en) | Robust motion planning and/or control for multi-robot environments | |
| HK40120090A (en) | Motion planning and control for robots in shared workspace employing look ahead planning | |
| HK40116937A (en) | Motion planning and control for robots in shared workspace employing staging poses | |
| HK40071862B (en) | Configuration of robots in multi-robot operational environment | |
| HK40072330B (en) | Motion planning for multiple robots in shared workspace | |
| KR20260053733A (en) | Apparatus for providing a robot arm power consumption prediction model, system and method for providing a robot arm power consumption prediction model | |
| Zhou et al. | Robot path optimization based on adaptive weight pseudospectral method | |
| JP2025534306A (en) | Automatic configuration of robots in a multi-robot operating environment to optimize wear and other parameters |