TW202415506A - Robust motion planning and/or control for multi-robot environments - Google Patents

Robust motion planning and/or control for multi-robot environments Download PDF

Info

Publication number
TW202415506A
TW202415506A TW112121349A TW112121349A TW202415506A TW 202415506 A TW202415506 A TW 202415506A TW 112121349 A TW112121349 A TW 112121349A TW 112121349 A TW112121349 A TW 112121349A TW 202415506 A TW202415506 A TW 202415506A
Authority
TW
Taiwan
Prior art keywords
robots
nominal
robot
processor
trajectories
Prior art date
Application number
TW112121349A
Other languages
Chinese (zh)
Inventor
露卡 柯拉山圖
雅納 席薇琳
Original Assignee
美商即時機器人股份有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 美商即時機器人股份有限公司 filed Critical 美商即時機器人股份有限公司
Publication of TW202415506A publication Critical patent/TW202415506A/en

Links

Abstract

Motion planning produces motion plans for robots operating in a shared workspace, the motion plans including nominal trajectories ( e.g., trajectories as specified). Acceptable lag times are determined for the nominal trajectories, where compliance with the acceptable lag times during actual operation ensures self-collision free operation. Actual operation ( e.g., actual trajectories) of the robots is monitored for compliance with respect to the respective acceptable lag times. Optionally, remedial action is selected and/or taken when warranted ( e.g., actual lag time approaches or exceeds a margin or threshold for instance the respective acceptable lag time). Motion planning can employ determined acceptable lag times to select trajectories that provide for more robust operation of the robots.

Description

穩健運動規劃及/或用於多機器人環境之控制Robust motion planning and/or control for multi-robot environments

本發明大體上係關於在一共用工作空間中操作之機器人之運動規劃及操作,並且係關於由機器人以一高效方式可執行之穩健運動計劃之運算高效產生(例如,減少或甚至消除碰撞及非規劃停頓),以及對運動計劃之實際執行之監控且視情況在得到保證時採取補救行動。The present invention generally relates to motion planning and operation of robots operating in a shared workspace, and to the computationally efficient generation of robust motion plans executable by the robot in an efficient manner (e.g., reducing or even eliminating collisions and unplanned stops), as well as the monitoring of the actual execution of the motion plans and, where appropriate, taking remedial action when warranted.

各種應用採用了在一共用工作空間中操作之兩個或更多機器人。舉例而言,兩個或更多個機器人可用於在共用工作空間中之一或多個物件或工件上執行任務,例如將螺栓旋入至一底盤,其中機器人之部分可在運動範圍中重疊。Various applications employ two or more robots operating in a common workspace. For example, two or more robots may be used to perform tasks on one or more objects or workpieces in the common workspace, such as driving bolts into a chassis, where parts of the robots may overlap in their range of motion.

規劃通常涉及任務規劃及運動規劃。舉例而言,任務規劃可判定為了執行一給定任務,一機器人要在兩個位姿之間(例如,自一開始位姿至一結束位姿)移動。相比而言,運動規劃專注於如何在兩個位姿之間移動一機器人。Planning usually involves mission planning and motion planning. For example, mission planning may determine that in order to perform a given mission, a robot needs to move between two poses (e.g., from a starting pose to an ending pose). In contrast, motion planning focuses on how to move a robot between two poses.

運動規劃係機器人控制及機器人學中之一基本問題。一運動計劃規定了一機器人可自一開始位姿、組態或狀態至一目標位姿、組態或狀態遵循之一軌跡,通常為了在不與共用工作空間中之任何障礙物碰撞的情況下或者在減小與共用工作空間中之任何障礙物碰撞之一可能性的情況下完成一任務。對運動規劃之挑戰涉及在可能計及環境改變(例如,改變共用工作空間中障礙物之地點或定向)的同時以快速速度(亦即,即時)執行運動規劃之能力。挑戰進一步包含使用相對低成本之設備、以相對低能量消耗並以有限運算能力及/或儲存量(例如,記憶體電路,例如「處理器晶片上」電路系統)來執行運動規劃。Motion planning is a fundamental problem in robot control and robotics. A motion plan specifies a trajectory that a robot can follow from a starting pose, configuration, or state to a target pose, configuration, or state, typically in order to complete a task without colliding with any obstacles in the shared workspace, or with a reduced probability of collision with any obstacles in the shared workspace. The challenge for motion planning involves the ability to perform motion planning at rapid speed (i.e., in real time) while potentially taking into account changes in the environment (e.g., changes in the location or orientation of obstacles in the shared workspace). Challenges further include performing motion planning using relatively low-cost equipment, with relatively low energy consumption, and with limited computing power and/or storage (e.g., memory circuits, such as "processor-on-a-chip" circuit systems).

兩個或更多個機器人在一共用工作空間(亦稱為一工作小區或一多機器人操作環境)中之操作呈現了一特殊類別之問題。舉例而言,運動計劃應計及並避免其中機器人或機器人之機器人附肢在執行任務期間可能彼此干涉之情景。The operation of two or more robots in a shared workspace (also called a work cell or a multi-robot operating environment) presents a special class of problems. For example, motion planning should account for and avoid situations in which robots or their robotic appendages may interfere with each other during the performance of a task.

在一共用工作空間中操作多個機器人之一種方法可被稱為一任務級方法。一工程師可藉由以下方式來手動確保機器人係無碰撞的:定義共用工作空間中機器人可能彼此碰撞之部分(亦即,干涉區域)並將個別機器人程式化,使得在任何給定時間點處僅一個機器人處於共用工作空間之一干涉區域中。舉例而言,當一第一機器人開始移動至共用工作空間之一干涉區域中時,該第一機器人設定一旗標。一控制器(例如,可程式化邏輯控制器(PLC))讀取該旗標並防止其他機器人移動至共用工作空間之干涉區域中,直至該第一機器人在退出該干擾區域時將該旗標解除確證為止。此方法直觀、易於理解,但實施起來通常困難且耗時,並且可能不會產生一經最佳化結果。此方法必然具有較低工作輸送量,此乃因使用解除衝突通常會導致機器人中之至少一者在相當長時間內係閒置的,即使閒置機器人在技術上有可能在共用工作空間中執行有用工作。One approach to operating multiple robots in a shared workspace may be referred to as a task-level approach. An engineer may manually ensure that the robots are collision-free by defining portions of the shared workspace where the robots may collide with each other (i.e., interference zones) and programming individual robots so that only one robot is in an interference zone of the shared workspace at any given point in time. For example, when a first robot begins to move into an interference zone of the shared workspace, the first robot sets a flag. A controller (e.g., a programmable logic controller (PLC)) reads the flag and prevents other robots from moving into the interference zone of the shared workspace until the first robot unasserts the flag when it exits the interference zone. This approach is intuitive and easy to understand, but is often difficult and time-consuming to implement and may not produce once-optimized results. This approach necessarily has a lower work throughput because the use of deconfliction often results in at least one of the robots being idle for a significant period of time, even though the idle robot could technically be performing useful work in the shared workspace.

在習用方法中,一工程師團隊通常將一問題分解,並彼此獨立地最佳化所得較小子問題(例如,將任務分配給機器人,對分配給每一機器人之任務進行排序,對每一機器人進行運動規劃)。此可採用迭代地模擬運動來確保機器人/機器人附肢不會彼此碰撞,此可能花費諸多小時之運算時間,且可能不會產生一經最佳化解決方案。另外,若對共用工作空間之一修改導致機器人/機器人附肢中之一者之一實際軌跡之一改變,則必須重新確認整個工作流程。此類方法當然不是最佳的,並且通常需要專家經歷緩慢迭代程序,以試圖找出解決方案之一組合,當組合在一起時產生一良好結果。在任何情形中,當運動計劃係由在真實世界條件下操作之機器人執行時,此類方法通常不能確保無碰撞操作。In the practice approach, a team of engineers typically breaks down a problem and optimizes the resulting smaller sub-problems independently of each other (e.g., assigning tasks to robots, sequencing the tasks assigned to each robot, and performing motion planning for each robot). This may involve iteratively simulating motion to ensure that the robots/robot appendages do not collide with each other, which may take many hours of computing time and may not produce an optimized solution. In addition, if a modification to the common workspace causes a change in the actual trajectory of one of the robots/robot appendages, the entire workflow must be revalidated. Such approaches are certainly not optimal and typically require experts to go through a slow iterative process to try to find a combination of solutions that, when combined together, produces a good result. In any case, such approaches generally fail to ensure collision-free operation when the motion planning is performed by a robot operating under real-world conditions.

本文中闡述了為在一共用工作空間中操作之機器人產生運動計劃之各種方法及裝備,該等運動計劃包括具有相關聯可接受滯後時間之標稱軌跡(例如,如所規定之軌跡),其中在實際操作期間符合可接受滯後時間確保了無自碰撞操作(亦即,一個機器人與其自身之碰撞以及一個機器人與機器人系統之其他機器人之碰撞)。舉例而言,該等標稱軌跡可表示各別無碰撞路徑。本文中闡述了相對於該等可接受滯後時間來監控該等機器人之該實際操作(例如,實際軌跡)並在得到保證時(例如,實際滯後時間接近或超過一臨限值,例如該各別可接受滯後時間)視情況採取一或多個補救行動之各種方法及裝備。Various methods and apparatus are described herein for generating motion plans for robots operating in a shared workspace, the motion plans comprising nominal trajectories (e.g., as specified) having associated acceptable hysteresis times, wherein compliance with the acceptable hysteresis times during actual operation ensures self-collision-free operation (i.e., collisions of a robot with itself and collisions of a robot with other robots of a robot system). For example, the nominal trajectories may represent respective collision-free paths. Various methods and apparatus are described herein for monitoring the actual operation (e.g., actual trajectory) of the robots relative to the acceptable lag times and taking one or more remedial actions as appropriate when warranted (e.g., the actual lag time approaches or exceeds a critical value, such as the respective acceptable lag time).

一種特別有利之方法闡述於公開號為WO2021150439A1之國際專利申請案PCT/US2021/013610中,該國際專利申請案闡述一種產生經最佳化多機器人運動計劃之系統。更具體而言,該運動計劃被最佳化,此乃因該運動計劃最小化或試圖最小化與系統效能相關之某些成本函數(例如,碰撞之概率或可能性)。每一運動計劃亦係基於時間的,此乃因該運動計劃規定了機器人系統之標稱軌跡。該等標稱軌跡係一機器人系統之一或多個機器人之每一可移動部分之位姿、組態或狀態之所規定有序序列,且藉由時間來參數化(例如,在一整個軌跡內之每一時間單位處)。舉例而言,該等標稱軌跡可表示各別無碰撞路徑。該運動計劃可係「多機器人」,此乃因該機器人系統可包括多個個別機器人。A particularly advantageous method is described in international patent application PCT/US2021/013610, published as WO2021150439A1, which describes a system for generating optimized multi-robot motion plans. More specifically, the motion plans are optimized because they minimize or attempt to minimize certain cost functions related to system performance (e.g., the probability or likelihood of collision). Each motion plan is also time-based because the motion plan specifies a nominal trajectory for the robotic system. The nominal trajectories are a specified ordered sequence of poses, configurations or states of each movable part of one or more robots of a robotic system, and are parameterized by time (e.g., at each time unit within a complete trajectory). For example, the nominal trajectories may represent respective collision-free paths. The motion plan may be "multi-robot" in that the robotic system may include multiple individual robots.

該運動計劃可藉由一組離散機器人軌跡來表示:Trj(t) = {trj_r(t),其中r ∈ {1…N}, t∈{0, ΔT, 2ΔT, …, T} },其中N表示該機器人系統之機器人之總數目,ΔT表示一樣本時間步長,T表示該運動計劃之一總持續時間。對於足夠小之ΔT值,確保Trj(t)相對於該機器人系統之該等機器人之全部係無碰撞的。換言之,由具有兩個或更多個機器人之一機器人系統之一組軌跡Trj(t)規定之運動不會導致自碰撞(亦即,一個機器人與其自身之碰撞以及一個機器人與該機器人系統之其他機器人之碰撞)。一機器人系統之該組軌跡Trj(t)未必相對於環境中之其他物件或障礙物無碰撞,儘管可執行相對於該共用工作空間中之其他物件或障礙物之碰撞評估。此無自碰撞條件可容易地以模擬進行檢查或審查;並且一旦得到檢查或審查,便可認為執行由該運動計劃規定之該等運動係安全的。The motion plan can be represented by a set of discrete robot trajectories: Trj(t) = {trj_r(t), with r ∈ {1…N}, t∈{0, ΔT, 2ΔT, …, T} }, where N represents the total number of robots of the robot system, ΔT represents a sample time step, and T represents a total duration of the motion plan. For sufficiently small values of ΔT, Trj(t) is guaranteed to be collision-free with respect to all the robots of the robot system. In other words, the motion specified by a set of trajectories Trj(t) of a robot system with two or more robots will not result in self-collisions (i.e., collisions of a robot with itself and collisions of a robot with other robots of the robot system). The set of trajectories Trj(t) of a robotic system may not be collision-free with respect to other objects or obstacles in the environment, although a collision assessment with respect to other objects or obstacles in the shared workspace may be performed. This no-self-collision condition can be easily checked or verified by simulation; and once checked or verified, it can be considered safe to perform the movements specified by the movement plan.

然而,在實踐中,當包括兩個或更多個機器人之一實體機器人系統正在實際執行一運動計劃時,眾多因素會不利地影響該等機器人之間的一同步。舉例而言,此等因素可包含:信號通信、控制延遲、感測器雜訊、數值近似值誤差等。此可能導致該實際實體機器人系統偏離由該運動計劃規定之該軌跡Trj(t)。除了用於產生並審查該(等)運動規劃之一所模擬環境與該真實實體機器人系統之實際操作之間的此「現實差距」以外,諸多其他因素亦可導致該機器人系統偏離提供一組標稱軌跡之一運動計劃。舉例而言,在某些例項中,一任務之執行可能需要比所預期的更多之時間來完成,因此,一機器人可能需要在一特定地點(例如,目標地點,並且因此處於一特定位姿、組態或狀態中)處暫停或停留比由該運動計劃中之該軌跡所規定的更長之時間。偏離經審查並被認為安全之一所規定運動計劃可係危險的,並且可能危及該機器人系統之安全性。However, in practice, when a physical robotic system including two or more robots is actually executing a motion plan, many factors may adversely affect a synchronization between the robots. For example, these factors may include: signal communication, control delays, sensor noise, numerical approximation errors, etc. This may cause the actual physical robotic system to deviate from the trajectory Trj(t) specified by the motion plan. In addition to this "reality gap" between the simulated environment of one of the motion plans and the actual operation of the real physical robotic system used to generate and review the motion plan(s), many other factors may also cause the robotic system to deviate from a motion plan that provides a set of nominal trajectories. For example, in some instances, the performance of a mission may require more time to complete than expected, and therefore, a robot may need to pause or remain at a particular location (e.g., a target location, and therefore in a particular pose, configuration, or state) for a longer time than specified by the trajectory in the motion plan. Deviations from a specified motion plan that has been reviewed and deemed safe may be dangerous and may compromise the safety of the robotic system.

由該運動計劃規定之該組軌跡Trj(t)在本文中被命名為一組標稱軌跡,以指示此類軌跡係如所規定之軌跡。由一運動計劃規定之一單個軌跡在本文中被稱為一標稱軌跡。由該等機器人之該實際實體運動執行之該組軌跡在本文中被命名為一組實際軌跡,以將此類軌跡與如所規定的或標稱軌跡區分開。由該等機器人之該實際實體運動執行之一單個軌跡在本文中被命名為一實際軌跡。The set of trajectories Trj(t) specified by the motion plan is named herein as a set of nominal trajectories to indicate that such trajectories are trajectories as specified. A single trajectory specified by a motion plan is called herein as a nominal trajectory. The set of trajectories performed by the actual physical motion of the robots is named herein as a set of actual trajectories to distinguish such trajectories from as specified or nominal trajectories. A single trajectory performed by the actual physical motion of the robots is named herein as an actual trajectory.

例如藉由對該機器人系統可在不會導致前文所闡述之自碰撞的情況下在其中操作之該等標稱軌跡或該運動規劃之標稱軌跡之一鄰域進行運算,本文中所闡述之方法有利地將一安全操作範圍擴展至與一組標稱軌跡或該等運動計劃之標稱軌跡相關聯之安全操作範圍之外。對於將在一共用工作空間中操作之每一機器人,一最大可接受滯後時間(例如,時間延遲或「滯後」)係針對該等標稱軌跡或該機器人將潛在地執行之標稱軌跡來運算的。在線上執行(亦即,運行時間)期間,對每一機器人之一實際滯後時間進行監控。若該實際滯後時間係在所定義裕量或臨限值內,則該運動計劃之繼續執行被認為係安全的,此乃因該等機器人當中的無自碰撞移動得到確保。若該等機器人中之任一者之一實際滯後時間超過該各別裕量或臨限值,則安全性被認為受到危及,此乃因無自碰撞操作不再得到確保。視情況,在此一事件中,一基於處理器之系統可選擇及/或採取一或多個補救行動。The methods described herein advantageously extend a safe operating range beyond the safe operating range associated with a set of nominal trajectories or nominal trajectories of the motion plans, such as by computing a neighborhood of the nominal trajectories or nominal trajectories of the motion plans within which the robotic system can operate without causing a self-collision as described above. For each robot to be operated in a common workspace, a maximum acceptable lag time (e.g., time delay or "lag") is calculated for the nominal trajectories or nominal trajectories that the robot will potentially execute. During online execution (i.e., run time), an actual lag time for each robot is monitored. If the actual lag time is within the defined margin or threshold, continued execution of the motion plan is considered safe because self-collision-free movement among the robots is ensured. If the actual lag time of any of the robots exceeds the respective margin or threshold, safety is considered compromised because self-collision-free operation is no longer ensured. Optionally, in such an event, a processor-based system may select and/or take one or more remedial actions.

相關申請案之交叉參考本專利申請案主張於2022年7月5日提出申請之美國專利申請案第63/358,422號的優先權,該美國專利申請案之整個揭示內容藉此出於所有目的以引用方式併入本文中。 CROSS-REFERENCE TO RELATED APPLICATIONS This patent application claims priority to U.S. Patent Application No. 63/358,422 filed on July 5, 2022, the entire disclosure of which is hereby incorporated by reference into this document for all purposes.

在以下闡述中,陳述某些具體細節以便提供對各種所揭示實施例之一透徹理解。然而,熟習此項技術者將認識到,實施例可在不具有此等具體細節中之一或多者的情況下或者可利用其他方法、組件、材料等來實踐。在其他例項中,與電腦系統、致動器系統、機器人及/或通信網路相關聯之眾所周知之結構尚未被展示或詳細闡述,以避免不必要地使對實施例之闡述模糊。在其他例項中,用於產生對一或多個物件及諸如此類之感知資料及體積表示之眾所周知之電腦視覺方法及技術尚未被詳細闡述,以避免不必要地使對實施例之闡述模糊。In the following description, certain specific details are set forth in order to provide a thorough understanding of one of the various disclosed embodiments. However, one skilled in the art will recognize that the embodiments may be practiced without one or more of these specific details or with other methods, components, materials, etc. In other instances, well-known structures associated with computer systems, actuator systems, robots, 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 sensory data and volume representations of one or more objects and the like have not been described in detail to avoid unnecessarily obscuring the description of the embodiments.

除非內容脈絡另有要求,否則在隨後的說明書及申請專利範圍通篇中,應將字詞「包括(comprise)」及其變化形式(諸如,「包括(comprises)」及「包括(comprising)」)視為一開放、包含性意義,亦即如「包含但不限於」。Unless the context requires otherwise, throughout the following specification and claims, the word "comprise" and variations thereof (e.g., "comprises" and "comprising") should be construed in an open, inclusive sense, i.e., as "including but not limited to."

在本說明書通篇中,對「一項實施方案」或「一實施方案」或者對「一項實施例」或「一實施例」之參考意味著結合該實施方案或實施例闡述之一特定特徵、結構或特性包含於至少一項實施方案或至少一項實施例中。因此,本說明書通篇中各個地方出現之片語「一項實施方案」或「一實施方案」或者「在一項實施例中」或「在一實施例中」未必全部係指同一實施方案或實施例。此外,特定特徵、結構或特性可以任何適合方式結合在一或多項實施方案或實施例中。Throughout this specification, references to "one embodiment" or "an embodiment" or to "an embodiment" or "an embodiment" mean that a particular feature, structure, or characteristic described in conjunction with that embodiment or embodiment is included in at least one embodiment or at least one embodiment. Therefore, the phrases "one embodiment" or "an embodiment" or "in an embodiment" or "in an embodiment" appearing in various places throughout this specification do not necessarily all refer to the same embodiment or embodiment. Furthermore, particular features, structures, or characteristics may be combined in any suitable manner in one or more embodiments or embodiments.

如本說明書及所附申請專利範圍中所使用,單數形式「一(a)」、「一(an)」及「該」包含複數指示物,除非內容清楚地另外指出。亦應注意,術語「或」一般以其包含「及/或」之意義使用,除非內容清楚地另外指出。As used in this specification and the appended claims, the singular forms "a", "an", and "the" include plural referents unless the context clearly dictates otherwise. It should also be noted that the term "or" is generally used in its sense including "and/or" unless the context clearly dictates otherwise.

如本說明書及所附申請專利範圍中所使用,術語「最佳化(optimizing)」、「最佳化(optimize)」及「經最佳化」意味著一經改良結果正在準備、產生(generated)或產生(produced),或者已準備、產生(generated)或產生(produced)。此類術語係在其相對意義上使用的,且未必意味著一絕對最佳值已準備、產生(generated)或產生(produced)。As used in this specification and the appended claims, the terms "optimizing," "optimize," and "optimized" mean that an improved result is being prepared, generated, or produced, or has been prepared, generated, or produced. Such terms are used in their relative sense and do not necessarily mean that an absolute optimum has been prepared, generated, or produced.

如本說明書及所附申請專利範圍中所使用,術語「工作空間」或「共用工作空間」用於指代兩個或更多個機器人在其中操作之一操作環境,共用工作空間之一或多個部分係機器人可在其中潛在地彼此碰撞之體積,因此可被命名為干涉區域。操作環境可包含障礙物(亦即,機器人待避免與其碰撞之物品)及/或工件(亦即,機器人待與其交互或在上面作用或與其作用之物品)。As used in this specification and the appended claims, the term "workspace" or "shared workspace" is used to refer to an operating environment in which two or more robots operate, one or more portions of the shared workspace being the volume in which the robots may potentially collide with each other, and thus may be termed interference zones. The operating environment may include obstacles (i.e., items that the robots are to avoid colliding with) and/or workpieces (i.e., items that the robots are to interact with or act on or with).

如本說明書及所附申請專利範圍中所使用,術語「任務」用於指代一機器人任務,其中一機器人在較佳地不與其環境中之障礙物發生碰撞的情況下自一位姿A轉變至一位姿B。該任務可能涉及抓握或鬆開一物品、移動或卸取一物品、旋轉一物品或者擷取或放置一物品。自位姿A至位姿B之轉變可視情況包含在一或多個中間位姿之間進行轉變。As used in this specification and the appended claims, the term "mission" is used to refer to a robot task in which a robot transitions from a position A to a position B, preferably without colliding with obstacles in its environment. The task may involve grasping or releasing an object, moving or unloading an object, rotating an object, or picking up or placing an object. The transition from position A to position B may optionally include transitioning between one or more intermediate positions.

如本說明書及所附申請專利範圍中所使用,術語「軌跡(trajectory或trajectories)」用於指代一或多個機器人之位姿或組態或狀態在藉由時間來參數化的情況下之一有序序列,機器人或其至少一部分可移動通過該序列,例如以執行一任務。軌跡較佳地在各別機器人之一組態空間(亦稱為C空間)中表示,但另一選擇係可在一共用工作空間之一真實空間或真實世界空間中表示。軌跡可包含在一或多個位姿處之暫停、方向之改變或甚至逆向,並且在方向、時間、速度或加速度方面未必係平滑的。As used in this specification and the appended claims, the term "trajectory" or "trajectories" is used to refer to an ordered sequence of positions or configurations or states of one or more robots, parameterized by time, through which the robot or at least a portion thereof can move, for example to perform a task. Trajectories are preferably represented in a configuration space (also called C-space) of the individual robots, but may alternatively be represented in a real space or real-world space of a common workspace. Trajectories may include pauses at one or more positions, changes of direction, or even reversals, and are not necessarily smooth in direction, time, velocity, or acceleration.

如本說明書及所附申請專利範圍中所使用,術語「標稱軌跡(nominal trajectory或nominal trajectories)」用於指代「如所規定之」一或多個軌跡。如本說明書及所附申請專利範圍中所使用,術語「實際軌跡(actual trajectory或actual trajectories)」用於指代藉由一實體機器人之實體運動來實際實行之一或多個軌跡,如與「標稱軌跡(nominal trajectory或nominal trajectories)區分開。在某些例項中,「實際軌跡(actual trajectory或actual trajectories)」可與「標稱軌跡(nominal trajectory或nominal trajectories)」匹配,儘管在諸多例項中,此兩者之間會存在差異,例如歸因於「實際軌跡(actual trajectory或actual trajectories)」滯後於「標稱軌跡(nominal trajectory或nominal trajectories)」。As used in this specification and the appended claims, the term "nominal trajectory" or "nominal trajectories" is used to refer to one or more trajectories "as specified." As used in this specification and the appended claims, the term "actual trajectory" or "actual trajectories" is used to refer to one or more trajectories actually achieved by the physical movement of a physical robot, as distinguished from "nominal trajectory" or "nominal trajectories". In some instances, "actual trajectory" or "actual trajectories" may match "nominal trajectory" or "nominal trajectories", although in many instances there may be differences between the two, such as due to the "actual trajectory" or "actual trajectories" lagging behind the "nominal trajectory" or "nominal trajectories".

如本說明書及所附申請專利範圍中所使用,術語「自碰撞(self-collision及self-collisions)」在用在包括兩個或更多個機器人之一機器人系統之內容脈絡中或者係指該機器人系統時囊括以下兩者:i)一個機器人與其自身之碰撞;及ii)一個機器人與機器人系統之其他機器人之碰撞。如本說明書及所附申請專利範圍中所使用,術語「自碰撞(self-collision及self-collisions)當用在一單個機器人之內容脈絡中或者係指該單個機器人時囊括一個機器人與其自身之碰撞。As used in this specification and the attached claims, the terms "self-collision" and "self-collisions" when used in the context of a robot system including two or more robots or referring to the robot system include 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 attached claims, the terms "self-collision" and "self-collisions" when used in the context of a single robot or referring to the single robot include collisions between a robot and itself.

本文中所提供之本發明之標題及發明摘要僅係為方便起見且並不解釋實施例之範疇或含義。The titles and abstracts of the invention provided herein are for convenience only and do not interpret the scope or meaning of the embodiments.

藉由在仍確保機器人系統之此種操作無自碰撞的同時判定一機器人系統之實體機器人可在其中操作之可接受滯後時間,本文中所闡述之方法有利地將機器人操作之一安全性擴展至由一運動計劃之標稱軌跡確保之安全性之外。在至少某些實施方案中,對於將在一共用工作空間中操作之一機器人系統之每一機器人,一最大可接受滯後時間(例如,時間延遲或「滯後」)係針對一或多個標稱軌跡中之每一者來運算的。有利地,此可在機器人執行運動計劃之前的一組態時間期間進行運算。在線上執行(亦即,運行時間,依循組態時間)期間,對每一機器人之實際運動(包含每一機器人沿著其實際軌跡之一實際滯後時間)進行監控。若實際滯後時間值係在所定義裕量或臨限值(例如,可接受滯後時間)內,則運動計劃之繼續執行被認為係安全的,此乃因無自碰撞移動得到確保。若一機器人之一實際滯後時間超過一對應裕量或臨限值,則安全性受到危及,此乃因無自碰撞操作不再得到確保。舉例而言,即使僅一個機器人正在經歷超過各別裕量或臨限值之一實際滯後時間,所有機器人之安全性亦可能被視為受到不利影響。視情況,在此一事件中,一基於處理器之系統可選擇及/或採取一或多個補救行動。The methods described herein advantageously extend a safety of robotic operation beyond that ensured by the nominal trajectory of a motion plan by determining an acceptable lag time within which a physical robot of a robotic system may operate while still ensuring that such operation of the robotic system is free of self-collision. In at least some embodiments, for each robot of a robotic system to be operated in a common workspace, a maximum acceptable lag time (e.g., time delay or "hysteresis") is calculated for each of one or more nominal trajectories. Advantageously, this can be calculated during a configuration time before the robot executes the motion plan. During online execution (i.e., run time, following configuration time), the actual motion of each robot (including an actual lag time of each robot along its actual trajectory) is monitored. If the actual lag time value is within a defined margin or threshold value (e.g., acceptable lag time), continued execution of the motion plan is considered safe because self-collision-free moves are ensured. If an actual lag time of a robot exceeds a corresponding margin or threshold value, safety is compromised because self-collision-free operation is no longer ensured. For example, the safety of all robots may be considered to be adversely affected even if only one robot is experiencing an actual lag time that exceeds a respective margin or threshold. Optionally, in such an event, a processor-based system may select and/or take one or more remedial actions.

圖1展示根據一項所圖解說明實施方案的包含複數個機器人102a、102b、102c (統稱為102)之一機器人系統100,該等複數個機器人在一共用工作空間104 (亦稱為一多機器人環境)中操作以實行任務。在圖1之機器人系統100中,可接受滯後時間被判定為一最佳化之一部分,並且可接受滯後時間連同經最佳化運動計劃一起被提供給一或多個機器人控制系統,該等經最佳化運動計劃包含機器人之標稱軌跡。FIG1 shows a robotic system 100 including a plurality of robots 102a, 102b, 102c (collectively 102) operating in a common workspace 104 (also referred to as a multi-robot environment) to perform tasks according to an illustrated embodiment. In the robotic system 100 of FIG1 , acceptable hysteresis is determined as part of an optimization and provided to one or more robot control systems along with optimized motion plans that include nominal trajectories for the robots.

若干個機器人可經組態以執行一組任務。任務可被規定為一任務計劃。任務計劃可規定需要由一數目N個機器人執行之一數目T個任務。一任務計劃可被模型化為每機器人一矢量,其中矢量係各別機器人待執行之任務之一有序清單(例如,{任務7、任務2、任務9})。視情況,一任務矢量亦可包含停留持續時間,該停留持續時間規定機器人或其一部分應停留在一給定組態或目標處之一持續時間。任務矢量亦可規定與解決任務不直接相關之一原位位姿及/或其他「功能性位姿」(例如,一「讓開」或儲存位姿)。位姿可在機器人之C空間中規定。A number of robots may be configured to perform a set of tasks. Tasks may be specified as a mission plan. A mission plan may specify a number T of tasks to be performed by a number N of robots. A mission plan may be modeled as a vector per robot, where the vector is an ordered list of tasks to be performed by the respective robot (e.g., {task 7, task 2, task 9}). Optionally, a mission vector may also include a dwell duration, which specifies a duration that the robot or a portion thereof should remain at a given configuration or target. Mission vectors may also specify a home pose and/or other "functional poses" that are not directly related to solving the task (e.g., a "get out of the way" or storage pose). Poses may be specified in the robot's C-space.

機器人102可採取各種各樣形式中之任一者。通常,機器人102將採取一或多個機器人附肢103 (僅一者被標出)以及機器人附肢103自其延伸之一基座105 (僅一者被標出)之形式,或者具有一或多個機器人附肢103及基座105。機器人102可包含具有一或多個關節之一或多個連桿機構以及耦合並可操作以回應於控制或驅動信號而移動連桿機構之致動器(例如,電馬達、步進馬達、螺線管、氣動致動器或液壓致動器)。舉例而言,氣動致動器可包含一或多個活塞、轉筒、閥、氣體貯存器及/或壓力源(例如,壓縮器、鼓風機)。舉例而言,液壓致動器可包含一或多個活塞、轉筒、閥、流體貯存器(例如,低壓縮性液壓流體)及/或壓力源(例如,壓縮器、泵、鼓風機)。機器人系統100可採用其他形式之機器人102,例如自主運載工具。The robot 102 may take any of a variety of forms. Typically, the robot 102 will take the form of or have one or more robot appendages 103 (only one of which is labeled) and a base 105 (only one of which is labeled) from which the robot appendage 103 extends. The robot 102 may include one or more linkage mechanisms having one or more joints and an actuator (e.g., an electric motor, a stepper motor, a solenoid, a pneumatic actuator, or a hydraulic actuator) coupled and operable to move the linkage mechanism in response to a control or drive signal. For example, a pneumatic actuator may include one or more pistons, drums, valves, gas reservoirs, and/or pressure sources (e.g., compressors, blowers). For example, a hydraulic actuator may include one or more pistons, drums, valves, fluid reservoirs (e.g., low-compressible hydraulic fluids) and/or pressure sources (e.g., compressors, pumps, blowers). The robotic system 100 may take the form of other robots 102, such as autonomous vehicles.

通常,共用工作空間104表示機器人102可在其中操作及移動之一個三維空間,儘管在某些有限實施方案中,共用工作空間104可表示一個二維空間。共用工作空間104係其中機器人102之至少一部分可在空間及時間上重疊或者若不控制運動來避免碰撞則可能會以其他方式發生碰撞之一體積或面積。應注意,共用工作空間104係一實體空間或體積、其中實體空間或體積可經由例如相對於某個參考座標系之笛卡耳座標來便利地表示之一位置或定向,舉例而言,該參考座標系係由圖1中所圖解說明之正交軸線X、Y及Z表示之一參考座標系。亦應注意,共用工作空間104之參考座標系不同於機器人102中之任一者之一各別「組態空間」或「C空間」,C空間通常由機器人102中之任一者之一各別參考座標系中之一組關節位置、定向或組態來表示。In general, the common workspace 104 represents a three-dimensional space in which the robots 102 can operate and move, although in certain limited implementations, the common workspace 104 can represent a two-dimensional space. The common workspace 104 is a volume or area in which at least a portion of the robots 102 can overlap in space and time or otherwise collide if movement is not controlled to avoid collision. It should be noted that the common workspace 104 is a physical space or volume, wherein a position or orientation of the physical space or volume can be conveniently represented, for example, by Cartesian coordinates relative to a reference coordinate system, for example, a reference coordinate system represented by orthogonal axes X, Y, and Z as illustrated in FIG. 1. It should also be noted that the reference coordinate system of the common workspace 104 is different from a respective “configuration space” or “C-space” of any of the robots 102, which is typically represented by a set of joint positions, orientations, or configurations in a respective reference coordinate system of any of the robots 102.

如本文中所解釋,當自另一機器人102b之一視點考慮時(亦即,當為另一機器人102b進行運動規劃時),一機器人102a或其一部分可能構成一障礙物。另外,共用工作空間104可包含其他障礙物,例如機械件(例如,運送機106)、立柱、柱子、牆壁、天花板、地板、桌子、人類及/或動物。另外,共用工作空間104可包含機器人102操縱為執行任務之一部分之一或多個工作物品或工件,例如一或多個包裹、包裝材料、緊固件、工具、物品或其他物件。As explained herein, a 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 the other robot 102b). Additionally, the shared workspace 104 may include other obstacles, such as machinery (e.g., conveyor 106), columns, posts, walls, ceilings, floors, tables, humans, and/or animals. Additionally, the shared workspace 104 may include one or more work items or workpieces, such as one or more packages, packaging materials, fasteners, tools, articles, or other objects, that the robot 102 manipulates as part of performing a task.

視情況,機器人系統100包含一或多個基於處理器之多機器人組態最佳化系統108 (一者展示於圖1中)。選用多機器人組態最佳化系統108接收一組輸入109,並產生規定機器人102之一組態之一或多個解決方案作為輸出111,該組態包含一工作小區佈局(例如,每一機器人102之一各別基座位置及定向)、任務計劃(例如,機器人102中之每一者之一各別任務計劃),以及視情況一或多個運動計劃,該一或多個運動計劃規定或包含機器人102a至102c之一或多個標稱軌跡(例如,機器人102中之每一者之一各別標稱軌跡)連同該等標稱軌跡中之每一者之可接受滯後時間。輸出111之一或多個分量可至少在某種程度上被最佳化。Optionally, the robotic system 100 includes one or more processor-based multi-robot configuration optimization systems 108 (one is shown in FIG. 1 ). The multi-robot configuration optimization system 108 is selected to receive a set of inputs 109 and generate as output 111 one or more solutions that specify a configuration of the robots 102, the configuration including a work cell layout (e.g., a respective base position and orientation of each robot 102), mission plans (e.g., a respective mission plan for each of the robots 102), and optionally one or more motion plans that specify or include one or more nominal trajectories for the robots 102a-102c (e.g., a respective nominal trajectory for each of the robots 102) along with an acceptable lag time for each of the nominal trajectories. One or more components of the output 111 may be optimized to at least 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 evaluator 115 .

群體產生器110基於所提供輸入109來產生一組候選解決方案116。候選解決方案116表示對一組態問題(亦即,如何對共用工作空間104中之機器人102進行組態以實現一組任務)之可能解決方案。實際上,任何給定候選解決方案116可係可行的或者可係不可行的。亦即,一初始候選可係無效的(例如,機器人在不可能之地方,具有一不可行任務計劃,其中存在一不可到達之目標,或者將導致碰撞)。在某些實施方案中,群體產生器可試圖找出較佳候選解決方案。The swarm generator 110 generates a set of candidate solutions 116 based on the provided input 109. The candidate solutions 116 represent possible solutions to a configuration problem (i.e., how to configure the robots 102 in the shared workspace 104 to achieve a set of tasks). In practice, any given candidate solution 116 may be feasible or infeasible. That is, an initial candidate may be invalid (e.g., the robot is in an impossible place, has an infeasible mission plan, has an unreachable goal, or will cause a collision). In some embodiments, the swarm generator may attempt to find a better candidate solution.

多機器人環境模擬器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 an amount of time required to complete the task, a probability or rate of collisions when completing the task, and the feasibility or infeasibility of a particular configuration as specified by the candidate solution. The multi-robot environment simulator 112 can reflect this in terms of cost, for example, which is generated via one or more cost functions.

舉例而言,成本或成本函數可表示碰撞之一概率或可能性。視情況,成本或成本函數可表示以下各項中之一或多者:一可接受滯後時間或「穩健性」、碰撞之一嚴重性、執行或完成對應於標稱軌跡之一運動之能量及/或時間或延時之一支出或消耗。在某些實施方案中,一成本或成本函數表示一給定機器人之一給定標稱軌跡之一所判定可接受滯後時間。所判定可接受滯後時間表示當在仍維持、確保或甚至擔保相對於其自身及相對於在共用工作空間或工作小區中操作之其他機器人之至少無自碰撞移動時的同時執行各別標稱軌跡時可能會遭受之一最大或近似最大或經最佳化滯後時間。因此,滯後時間可表示在不放棄一安全性因素(例如,無自碰撞操作)因此增強了一對應運動計劃之一穩健性的情況下可被引入至一標稱軌跡之實際執行中的或者當實際執行一標稱軌跡時以其他方式遭受之一延遲量。舉例而言,安全性係數可經由使用標稱軌跡來模擬機器人操作而被檢查或審查。因此,若一機器人之一實際軌跡滯後於標稱軌跡超過一所規定裕量或臨限值(例如,可接受滯後時間),則無碰撞操作可能不再得到確保。For example, a cost or cost function may represent a probability or likelihood of a collision. Depending on the circumstances, the cost or cost function may represent one or more of the following: an acceptable hysteresis or "robustness", a severity of a collision, an expenditure or consumption of energy and/or time or delay to perform or complete a movement corresponding to a nominal trajectory. In some embodiments, a cost or cost function represents a determined acceptable hysteresis for a given nominal trajectory of a given robot. The determined acceptable hysteresis represents a maximum or approximately maximum or optimized hysteresis that may be incurred when executing respective nominal trajectories while still maintaining, ensuring or even guaranteeing at least self-collision-free movement relative to itself and relative to other robots operating in a shared workspace or work cell. Thus, hysteresis may represent an amount of delay that may be introduced into the actual execution of a nominal trajectory, or otherwise incurred when actually executing a nominal trajectory, without giving up a safety factor (e.g., self-collision-free operation), thereby enhancing a robustness of a corresponding motion plan. For example, the safety factor may be checked or reviewed by simulating robot operation using the nominal trajectory. Thus, if an actual trajectory of a robot lags behind the nominal trajectory by more than a specified margin or threshold (e.g., acceptable hysteresis), collision-free operation may no longer be ensured.

多機器人最佳化引擎114至少部分地基於相關聯成本119來評價候選解決方案,並且跨越一組兩個或更多個非同質參數有利地進行共同最佳化,例如跨越以下各項中之兩者或更多者:機器人之各別基座位置及定向、對機器人中之各別者之任務之一分配、機器人之各別目標序列及/或連續目標之間的各別軌跡或路徑(例如,無碰撞軌跡或路徑)。連續目標之間的直線軌跡可用於簡化解釋,但軌跡未必係直線軌跡。The multi-robot optimization engine 114 evaluates candidate solutions based at least in part on the associated costs 119 and advantageously co-optimizes across a set of two or more non-homogeneous parameters, such as across two or more of the following: respective base positions and orientations of the robots, one assignment of tasks to respective ones of the robots, respective goal sequences for the robots, and/or respective trajectories or paths between consecutive goals (e.g., collision-free trajectories or paths). Straight-line trajectories between consecutive goals may be used to simplify the explanation, but the trajectories need not be 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 a floor, wall, ceiling, columns, other obstacles, etc. The operating environment or shared workspace 104 may be represented by one or more models, such as a geometric model (e.g., point cloud) representing a floor, wall, ceiling, obstacles, and other objects in the operating environment. For example, this may be represented using Cartesian coordinates.

輸入109可包含表示或表徵機器人102中之每一者之一或多個機器人模型,例如規定幾何結構及動力學,例如大小或長度、連桿數目、關節數目、關節類型、運動範圍、速度限制、加速度或急動度限制。機器人102可由定義一給定機器人102a至102c之一幾何結構之一或多個機器人幾何模型來表示,例如就關節、自由度、尺寸(例如,連桿機構長度)方面而言,及/或就機器人102a至102c之各別C空間而言。The input 109 may include one or more robot models representing or characterizing each of the robots 102, such as specifying geometry and dynamics, such as size or length, number of linkages, number of joints, type of joints, range of motion, velocity limits, acceleration or jerk limits. The robots 102 may be represented by one or more robot geometry models that define the geometry of a given one of the robots 102a-102c, such as in terms of joints, degrees of freedom, dimensions (e.g., linkage lengths), and/or in terms of the respective C-spaces of the robots 102a-102c.

輸入109可包含待執行之一或多組任務,例如表示為目標(例如,位姿、組態、狀態或者位置或地點)。舉例而言,任務可鑒於各別機器人102a至102c之端位姿、端組態或端狀態及/或中間位姿、中間組態或中間狀態來表示。舉例而言,位姿、組態或狀態可鑒於各別機器人102a至102c之關節位置及關節角度/旋轉(例如,關節位姿、關節座標)來定義。視情況,輸入109可包含一或多個停留持續時間,該等停留持續時間規定一機器人或其一部分應在一給定目標處停留以便完成一任務(例如,擰緊一螺釘或螺母,拾取及放置物件,目的係藉由在一共同工作空間中操作之兩個或更多個機器人將一堆物件分類成各別類型之物件中中兩個或更多個相異堆物件)之一標稱時間量。The input 109 may include one or more sets of tasks to be performed, for example, expressed as goals (e.g., poses, configurations, states, or positions or locations). For example, the tasks may be expressed in terms of end poses, end configurations, or end states and/or intermediate poses, intermediate configurations, or intermediate states of the respective robots 102a-102c. For example, poses, configurations, or states may be defined in terms of joint positions and joint angles/rotations (e.g., joint poses, joint coordinates) of the respective robots 102a-102c. Optionally, input 109 may include one or more dwell durations that specify a nominal amount of time that a robot or a portion thereof should remain at a given destination in order to complete a task (e.g., tightening a screw or nut, picking and placing objects, sorting a pile of objects into two or more distinct piles of objects of different types by two or more robots operating in a common workspace).

在某些實施方案中,多機器人組態最佳化系統108可為每一機器人產生標稱軌跡以執行一或多個任務。標稱軌跡係「如所規定之」軌跡,其中每一標稱軌跡包括一機器人在標稱軌跡之一初始或開始位姿、組態或狀態與一最終或結束位姿、組態或狀態之間的一時間參數化有序組或序列之位姿、組態或狀態,其中每一位姿、組態或狀態具有一各別定時。較佳地,位姿或組態在各別機器人之一組態空間(亦稱為C空間)中表示,或者另一選擇係在工作空間之一真實空間或真實世界空間中表示。定時可用相對術語(例如,由相對於前一位姿之一定時之相對偏移定義之定時)或絕對術語(例如,以由自例如軌跡之執行開始之持續時間定義之定時,以及例如相對於一共同時脈)來規定。在至少某些例項中,標稱軌跡可規定或包含機器人或其一部分之一運動或路徑中之一或多個暫停,及/或可規定機器人或其一部分之運動或路徑之一方向之逆向,且以其他方式在方向或時間方面可能並非一平滑運動。申請人注意到,雖然任何給定軌跡可對應於機器人之一平滑運動,但如本文中所使用之術語軌跡並不限於此,且通常將規定既不平滑亦不定義機器人或其一部分之直線路徑之一運動。舉例而言,一標稱軌跡可規定一時間參數化有序組或序列之位姿,一機器人或其一部分透過該等位姿移動以實現一任務或一任務之一部分。執行任何給定任務可採用一個標稱軌跡或不止一個標稱軌跡。如本文中所闡述,例如歸因於在位姿之間進行轉變時之非所期望延遲(例如,歸因於在一目標物件處(例如,上方)逗留或停留比以其他方式預期的更長時間之一需要),一機器人或其一部分之一實際運動或實際軌跡可能偏離一各別標稱軌跡。In some embodiments, the multi-robot configuration optimization system 108 may generate nominal trajectories for each robot to perform one or more tasks. Nominal trajectories are "as specified" trajectories, where each nominal trajectory includes a time-parameterized ordered set or sequence of poses, configurations, or states of a robot between an initial or starting pose, configuration, or state and a final or ending pose, configuration, or state of the nominal trajectory, where each pose, configuration, or state has a respective timing. Preferably, the poses or configurations are represented in a configuration space (also referred to as C-space) for each robot, or alternatively in a real space or real-world space of a workspace. Timing may be specified in relative terms (e.g., timing defined by a relative offset from a timing of a previous pose) or absolute terms (e.g., timing defined by a duration since the start of, for example, execution of a trajectory, and, for example, relative to a common clock). In at least some instances, a nominal trajectory may specify or include one or more pauses in a motion or path of a robot or a portion thereof, and/or may specify a reversal of a direction of motion or path of a robot or a portion thereof, and may otherwise not be a smooth motion in direction or time. Applicants note that while any given trajectory may correspond to a smooth motion of the robot, the term trajectory as used herein is not so limited, and will generally specify a motion that is neither smooth nor defines a straight path of the robot or a portion thereof. For example, a nominal trajectory may specify a time-parameterized ordered set or sequence of poses through which a robot or a portion thereof moves to accomplish a task or a portion of a task. One nominal trajectory or more than one nominal trajectory may be employed to perform any given task. As explained herein, an actual motion or actual trajectory of a robot or a portion thereof may deviate from a respective nominal trajectory, for example due to undesirable delays in transitioning between poses (e.g., due to a need to dwell or stay at (e.g., over) a target object for a longer time than otherwise expected).

可接受滯後時間評估器115對一給定標稱軌跡之各種候選滯後時間進行評估,以判定即使一對應機器人之實際軌跡滯後於標稱軌跡不超過可接受滯後時間亦能確保無自碰撞操作之一可接受滯後時間。在一較佳方法中,可接受滯後時間評估器115不僅將一給定機器人之標稱軌跡中一滯後之效應納入考量,還將在一共用工作空間中操作之其他機器人之各別標稱軌跡中之效應或滯後納入考量。因此,可接受滯後時間評估器115可識別每一標稱軌跡之可接受滯後時間,或者換言之時間滯後,該標稱軌跡假設在共用工作空間中操作之機器人之全部之實際軌跡正在經歷其自身各別可接受滯後時間之一最糟糕情況。因此,可接受滯後時間評估器115可例如判定每一機器人之一最大可接受滯後時間,即使假設所有機器人正在經歷其自身各別最大可接受滯後時間,所述最大可接受滯後時間仍確保無自碰撞操作。判定可接受滯後時間之數種方法闡述於本文中。The acceptable hysteresis time evaluator 115 evaluates various candidate hysteresis times for a given nominal trajectory to determine an acceptable hysteresis time that ensures self-collision-free operation even if the actual trajectory of a corresponding robot lags behind the nominal trajectory by no more than the acceptable hysteresis time. In a preferred approach, the acceptable hysteresis time evaluator 115 takes into account not only the effect of a hysteresis in the nominal trajectory of a given robot, but also the effect or hysteresis in the respective nominal trajectories of other robots operating in a common workspace. Thus, the acceptable hysteresis time evaluator 115 can identify an acceptable hysteresis time, or in other words, time hysteresis, for each nominal trajectory that assumes that all actual trajectories of the robots operating in the common workspace are experiencing a worst case of their own respective acceptable hysteresis times. Thus, the acceptable hysteresis time evaluator 115 can, for example, determine a maximum acceptable hysteresis time for each robot that ensures self-collision-free operation even assuming that all robots are experiencing their own respective maximum acceptable hysteresis times. Several methods of determining acceptable hysteresis times are described herein.

輸入109可視情況包含對可在共用工作空間104中組態之機器人數目之一限制。輸入109可視情況包含對可分配給一給定機器人102a至102c之任務或目標數目(在本文中命名為一任務能力)之一限制,給定機器人102a至102c可在共用工作空間104中組態,例如從而限制組態問題之複雜性,以確保組態問題係可解決的,或者可在某一可接受時間段內使用可用運算資源來解決,或者預先消除在一給定機器人102a至102c之任務或目標之一明顯過度分配的情況下被揣測過慢之某些解決方案。輸入109可視情況包含變數或其他參數之一或多個邊界或約束。輸入109可視情況包含迭代循環之總數目或者迭代之時間限制,其可用於改善候選解決方案,例如以確保組態問題係可解決的或者可在某一可接受時間段內使用可用運算資源來解決。The input 109 visual condition includes a limit on the number of robots that can be configured in the shared workspace 104. The input 109 visual condition includes a limit on the number of tasks or goals (referred to herein as a task capacity) that can be assigned to a given robot 102a-102c that can be configured in the shared workspace 104, for example to limit the complexity of the configuration problem to ensure that the configuration problem is solvable, or can be solved within an acceptable time period using available computing resources, or to preemptively eliminate certain solutions that are presumed to be too slow in the event that one of the tasks or goals of a given robot 102a-102c is significantly over-allocated. The input 109 visual condition includes one or more boundaries or constraints on variables or other parameters. The input 109 may optionally include a total number of iteration cycles or a time limit for iterations, which may be used to refine candidate solutions, for example to ensure that the configuration problem is solvable or can be solved within an acceptable time period using available computing resources.

機器人系統100可視情況包含通信地耦合以控制機器人102之一或多個機器人控制系統118 (圖1中僅展示一者)。機器人控制系統118可例如將控制信號(例如,驅動信號)提供給各種致動器,以致使機器人102在各種組態之間移動至各種所規定目標,以便執行所規定任務。The robotic system 100 may optionally include one or more robot control systems 118 (only one is shown in FIG. 1 ) that are communicatively coupled to control the robot 102. The robot control system 118 may, for example, provide control signals (e.g., drive signals) to various actuators to cause the robot 102 to move between various configurations to various specified targets in order to perform specified tasks.

機器人系統100可視情況包含通信地耦合以控制機器人102之一或多個運動規劃器120 (圖1中僅展示一者)。運動規劃器120產生(produce)、產生(generate)、選擇或改善機器人102之運動計劃,例如以慮及相對於由多機器人最佳化引擎114提供之運動計劃之時間上之小偏差,或者以慮及障礙物之非預期出現(例如,人類進入操作環境或共用工作空間104),如本文中他處所闡述。選用運動規劃器120可操作以動態地產生運動計劃來致使機器人102在一操作環境中實行任務。運動規劃器120以及其他結構及/或操作可採用於2019年6月24日提出申請之美國專利申請案序列號62/865,431中所闡述之彼等。The robotic system 100 may optionally include one or more motion planners 120 (only one is shown in FIG. 1 ) communicatively coupled to control the robot 102. The motion planner 120 produces, generates, selects, or improves a motion plan for the robot 102, for example to account for small deviations in timing relative to a motion plan provided by the multi-robot optimization engine 114, or to account for the unexpected presence of obstacles (e.g., a human entering an operating environment or shared workspace 104), as described elsewhere herein. The motion planner 120 may be operable to dynamically generate motion plans to cause the robot 102 to perform tasks in an operating environment. The motion planner 120 and other structures and/or operations may be those described in U.S. patent application serial number 62/865,431 filed on June 24, 2019.

在包含運動規劃器120的情況下,運動規劃器120視情況通信地耦合以接收例如由一感知子系統(未展示)提供之感知資料作為輸入。感知資料表示共用工作空間104中先驗未知之靜態及/或動態物件。感知資料可係經由一或多個感測器(例如,相機、立體相機、飛行時間相機、LIDAR)來感測之原始資料及/或由感知子系統轉換成障礙之數位表示之原始資料,該感知子系統可產生機器人102將在其中操作以執行各種不同場景之任務的一環境之一表示之一各別離散化。Where a motion planner 120 is included, the motion planner 120 is optionally communicatively coupled to receive as input sensory data, such as provided by a sensory subsystem (not shown). The sensory data represents a priori unknown static and/or dynamic objects in the shared workspace 104. The sensory data may be raw data sensed via one or more sensors (e.g., camera, stereo camera, time-of-flight camera, LIDAR) and/or raw data converted into digital representations of obstacles by the sensory subsystem, which may generate a respective discretization of a representation of an environment in which the robot 102 will operate to perform tasks in a variety of different scenarios.

各種通信路徑在圖1中被圖解說明為各種結構之間的線,在某些情形中,箭頭指示輸入109及輸出111之方向。通信路徑可例如採取一或多個有線通信路徑(例如,電導體、信號匯流排或光纖)及/或一或多個無線通信路徑(例如,經由RF或微波無線電及天線、紅外線收發器)之形式。通信通道可包含例如一或多個傳輸器、接收器、收發器、無線電設備、路由器、有線埠,例如乙太網路埠等。機器人系統100之一般操作,且特定而言多機器人組態最佳化系統108之一般操作圖解說明及闡述於公開號為WO 2021/150439之國際專利申請案PCT/US2021/013610中,為了簡明起見,此處中不再重複。本文中僅闡述操作中之某些更顯著差異,舉例而言:在其中多機器人組態最佳化系統108執行本文中所闡述之各種方法以判定可接受滯後時間之實施方案中,至少部分地基於所判定可接受滯後時間來產生或選擇運動計劃;及/或在機器人控制系統118執行本文中所闡述之各種方法以對執行運動計劃之機器人之實際滯後時間進行監控的情況下,將實際滯後時間與裕量或臨限值進行比較(例如,可接受滯後時間);及/或例如藉由在一或多個實際滯後時間超過一或多個可接受滯後時間或相關聯臨限值的情況下引起一或多個補救動作來相應地控制機器人。Various communication paths are illustrated in FIG. 1 as lines between various structures, with arrows indicating, in some cases, the direction of inputs 109 and outputs 111. The communication paths may, for example, take the form of one or more wired communication paths (e.g., 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). The communication channels may include, for example, one or more transmitters, receivers, transceivers, radios, routers, wired ports, such as Ethernet ports, etc. The general operation of the robot system 100, and in particular the general operation of the multi-robot configuration optimization system 108, is illustrated and described in the international patent application PCT/US2021/013610 with publication number WO 2021/150439, and for the sake of brevity, it is not repeated here. Only some of the more significant differences in operation are described herein, for example: in an embodiment in which the multi-robot configuration optimization system 108 executes the various methods described herein to determine an acceptable lag time, the motion plan is generated or selected based at least in part on the determined acceptable lag time; and/or in an embodiment in which the robot control system 118 executes the various methods described herein to determine an acceptable lag time; The method monitors the actual lag time of a robot executing a motion plan, compares the actual lag time with a margin or threshold value (e.g., an acceptable lag time); and/or controls the robot accordingly, for example by inducing one or more remedial actions when one or more actual lag times exceed one or more acceptable lag times or associated threshold values.

圖2展示根據一項所圖解說明實施方案的一機器人系統,其中一第一機器人控制系統200a包含一第一運動規劃器204a,該第一運動規劃器204a產生第一運動計劃206a以控制一第一機器人202之操作,並且該第一運動規劃器204a視情況經由至少一個通信通道(由鄰近箭頭指示,例如,傳輸器、接收器、收發器、無線電、路由器、乙太網路)將第一運動計劃206a及/或作為障礙物之運動表示提供給其他機器人控制系統200b之其他運動規劃器204b以控制其他機器人(圖2中未圖解說明)。在圖2之機器人控制系統200a、200b中,可接受滯後時間係由一運動規劃器連同運動計劃206a、206b一起判定的,運動計劃206a、206b包含由機器人202執行之一或多個標稱軌跡。與機器人控制系統100 (圖1)相比,圖2之機器人控制系統200a、200b未必執行工作小區佈局或任務規劃之最佳化。另外,如本文中所闡述,圖2之機器人控制系統200a、200b對實際滯後時間進行監控,並且若得到保證,則視情況選擇及/或採取補救行動。FIG. 2 shows a robotic system according to an illustrated embodiment, 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 the first motion planner 204a provides the first motion plan 206a and/or a motion representation of an obstacle to other motion planners 204b of other robot control systems 200b to control other robots (not illustrated in FIG. 2 ) via at least one communication channel (indicated by adjacent arrows, e.g., transmitter, receiver, transceiver, radio, router, Ethernet), as appropriate. In the robot control systems 200a, 200b of FIG2, acceptable lag time is determined by a motion planner in conjunction with the motion plan 206a, 206b, which includes one or more nominal trajectories to be executed by the robot 202. Compared to the robot control system 100 (FIG. 1), the robot control systems 200a, 200b of FIG2 do not necessarily perform optimization of work cell layout or mission planning. In addition, as explained herein, the robot control systems 200a, 200b of FIG2 monitor actual lag time and, if warranted, select and/or take remedial actions as appropriate.

同樣地,其他機器人控制系統200b之其他運動規劃器204b產生其他運動計劃206b以控制其他機器人(圖2中未圖解說明)之操作,並且視情況將其他運動計劃206b提供給其他機器人控制系統200b之第一運動規劃器204a及其他運動規劃器204b中之其他者。運動規劃器204a、204b亦可視情況接收指示各個機器人202之運動何時已完成之運動完成訊息209。此可允許運動規劃器204a、204b基於共用工作空間之一當前或經更新狀態來產生新運動計劃或經更新運動計劃。舉例而言,在一第一機器人202已完成作為由第一機器人202完成一任務之一部分而形成之一組運動之一部分或全部之一運動之後,一共用工作空間之一部分可被阻擋、解除阻擋或以其他方式可供一第二機器人在其中執行一任務。另外或另一選擇係,運動規劃器204a、204b可接收由各種感測器收集或由其他運動規劃器204b產生之資訊(例如,影像、佔用網格、關節位置及關節角度/旋轉),該資訊指示,在一第一機器人202已完成作為由第一機器人202完成一任務之一部分而形成之一組運動之一部分或全部之一運動之後,一共用工作空間之一部分何時可被阻擋、解除阻擋或以其他方式可供一第二機器人在其中執行一任務。Similarly, the other motion planners 204b of the other robot control systems 200b generate other motion plans 206b to control the operation of other robots (not illustrated in FIG. 2 ) and provide the other motion plans 206b to the first motion planner 204a and other of the other motion planners 204b of the other robot control systems 200b as appropriate. The motion planners 204a, 204b may also receive motion completion messages 209 indicating when the motion of each robot 202 has been completed as appropriate. This may allow the motion planners 204a, 204b to generate new or updated motion plans based on a current or updated state of one of the shared workspaces. For example, a portion of a shared workspace may be blocked, unblocked, or otherwise made available for a second robot to perform a task therein after a first robot 202 has completed a motion that is part or all of a set of motions formed as part of a task completed by the first robot 202. Additionally or alternatively, the motion planners 204a, 204b may 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 a shared workspace may be blocked, unblocked, or otherwise made available for a second robot to perform a task therein after a first robot 202 has completed a motion that is part or all of a set of motions formed as part of a task completed by the first robot 202.

如本文中所闡述,運動計劃206a、206b規定每一機器人之標稱軌跡,例如以執行一或多個任務。如先前所解釋,標稱軌跡係「如規定之」軌跡,其中每一標稱軌跡包括一機器人之一時間參數化有序組或序列之位姿、組態或狀態,其中每一位姿、組態或狀態具有一各別定時。位姿、組態或狀態較佳地在各別機器人之一組態空間(也稱為C空間)中表示。As described herein, motion plans 206a, 206b specify a nominal trajectory for each robot, e.g., to perform one or more tasks. As previously explained, a nominal trajectory is an "as specified" trajectory, wherein each nominal trajectory comprises a time-parameterized ordered set or sequence of poses, configurations, or states of a robot, wherein each pose, configuration, or state has a respective timing. The poses, configurations, or states are preferably represented in a configuration space (also referred to as C-space) for the respective robot.

機器人控制系統200a、200b可視情況例如經由至少一個通信通道(由鄰近箭頭表示,例如,傳輸器、接收器、收發器、無線電、路由器、乙太網路)來通信耦合,以視情況自運動規劃圖208及/或掃掠體積表示211之一或多個源212接收運動規劃圖208及/或掃掠體積表示211。根據一項所圖解說明實施方案,運動規劃圖208及/或掃掠體積表示211之源212可與運動規劃器204a、204b分離且相異。運動規劃圖208及/或掃掠體積表示211之源212可例如係可由機器人202之各別製造商或由某些其他實體操作或控制之一或多個基於處理器之電腦系統(例如,伺服器電腦)。運動規劃圖208可各自包含表示各別機器人之位姿、組態或狀態之一組節點214 (在圖2中僅標出兩個)以及耦合各別的多對節點214中之節點214並表示位姿、組態或狀態之間的合法或有效轉變之一組邊緣216 (在圖2中僅標出兩個)。位姿、組態或狀態可例如在機器人之一各別組態空間(C空間)中定義,從而表示各別機器人202之關節中之每一者之多組關節位置、方向、位姿或座標。因此,每一節點214可表示一機器人202或其一部分的完全由包括機器人202之關節之位姿、組態或狀態定義之一位姿、組態或狀態。運動規劃圖208可在一運行時間之前(例如在一預運行時間或組態時間期間)被判定、設置或定義(亦即,在執行任務之前被定義)。選用掃掠體積表示211表示一機器人202或其一部分在執行對應於運動規劃圖208之一各別邊緣216之位姿之間的一運動或轉變時將佔用之各別體積。選用掃掠體積表示211可以多種形式中之任一種表示例如為體素、一歐氏距離場或一幾何物件層次。此有利地准許在運行時間之前執行運算最密集之工作中之某些,此時回應並非一特別關心之問題。雖然本文中使用了掃掠體積,但此係例示性的,並且可採用碰撞評估之多種其他方法中之任一種。The robot control systems 200a, 200b may be communicatively coupled, such as via at least one communication channel (represented by adjacent arrows, such as a transmitter, receiver, transceiver, radio, router, Ethernet), to receive the motion planning map 208 and/or the swept volume representation 211 from one or more sources 212 of the motion planning map 208 and/or the swept volume representation 211, as the case may be. According to one illustrated embodiment, the sources 212 of the motion planning map 208 and/or the swept volume representation 211 may be separate and distinct from the motion planners 204a, 204b. The source 212 of the motion planning graph 208 and/or the swept volume representation 211 may be, for example, 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 by some other entity. The motion planning graph 208 may each include a set of nodes 214 (only two are labeled in FIG. 2 ) representing the pose, configuration, or state of the respective robot and a set of edges 216 (only two are labeled in FIG. 2 ) coupling the nodes 214 in the respective plurality of pairs of nodes 214 and representing legal or valid transitions between the poses, configurations, or states. The poses, configurations, or states may be defined, for example, in a respective configuration space (C-space) of the robot, thereby representing multiple sets of joint positions, orientations, poses, or coordinates of each of the joints of the respective robot 202. Thus, each node 214 may represent a pose, configuration, or state of a robot 202 or a portion thereof that is completely defined by the poses, configurations, or states of the joints comprising the robot 202. The motion planning graph 208 may be determined, set, or defined prior to a run time (e.g., during a pre-run time or configuration time) (i.e., defined prior to executing a task). The optional swept volume representation 211 represents the respective volumes that a robot 202 or a portion thereof will occupy when executing a movement or transition between poses corresponding to a respective edge 216 of the motion planning graph 208. The optional swept volume representation 211 may be represented in any of a variety of forms such as voxels, a Euclidean distance field, or a geometric object level. This advantageously allows some of the most computationally intensive work to be performed before runtime, when responsiveness is not a particular concern. Although swept volumes are used herein, this is exemplary and any of a variety of other methods of collision assessment may be employed.

每一機器人202可視情況包含一基座(圖2中未展示)。基座在環境中可係固定的或者在環境中係可移動的(例如,自動或半自動運載工具)。每一機器人202可視情況包含一組連桿、關節、臂端工具或末端執行器及/或致動器218a、218b、218c (展示了三個,統稱為218),其可操作以圍繞關節移動連桿。該組連桿、關節、臂端工具或末端執行器通常包括機器人之一或多個附肢,機器人附肢可以可移動地連接至機器人之基座。每一機器人202可視情況包含一或多個運動控制器(例如,馬達控制器) 220 (僅展示一個),其接收例如呈運動規劃206a形式之控制信號並提供驅動信號以驅動致動器218。另一選擇係,運動控制器220可與機器人202分離並通信地耦合至機器人202。每一機器人202可基於一經最佳化工作小區佈局在共用工作空間中進行定位及定向,例如如公開號為WO 2021/150439之國際專利申請案PCT/US2021/013610中所闡述。Each robot 202 visibly includes a base (not shown in FIG. 2 ). The base may be fixed in the environment or may be movable in the environment (e.g., an autonomous or semi-autonomous vehicle). Each robot 202 visibly includes a set of linkages, joints, end-of-arm tools or end effectors and/or actuators 218 a, 218 b, 218 c (three are shown, collectively referred to as 218 ) that are operable to move the linkages around the joints. The set of linkages, joints, end-of-arm tools or end effectors typically include one or more appendages of the robot, which may be movably connected to the base of the robot. Each robot 202 may include one or more motion controllers (e.g., motor controllers) 220 (only one is shown) that receive control signals, such as in the form of motion plans 206a, and provide drive signals to drive actuators 218. Alternatively, the motion controllers 220 may be separate from the robots 202 and communicatively coupled to the robots 202. Each robot 202 may be positioned and oriented in a shared workspace based on an optimized work cell layout, such as described in International Patent Application PCT/US2021/013610, published as WO 2021/150439.

每一機器人202可具有一各別機器人控制系統200a、200b (圖2中僅圖解說明一個機器人),或者另一選擇係一個機器人控制系統200a可為兩個或更多個機器人202執行運動規劃。出於說明目的,將詳細闡述第一機器人控制系統200a。熟習此項技術者將認識到,該闡述可應用於其他機器人控制系統200b之類似或甚至相同額外例項。Each robot 202 may have a separate robot control system 200a, 200b (only one robot is illustrated in FIG. 2 ), or alternatively one robot control system 200a may perform motion planning for two or more robots 202. For purposes of illustration, a first robot control system 200a will be described in detail. Those skilled in the art will recognize that the description may apply to similar or even identical additional instances of other robot control systems 200b.

第一機器人控制系統200a可包括一或多個處理器222,以及一或多個相關聯非暫時性電腦或處理器可讀儲存媒體,例如系統記憶體224a、磁碟機224b及/或處理器222之記憶體或暫存器(未展示)。非暫時性電腦或處理器可讀儲存媒體(例如,系統記憶體224a、磁碟機224b)經由一或多個通信通道(例如,系統匯流排234)通信地耦合至處理器222a。系統匯流排234可採用任何已知匯流排結構或架構,包含具有記憶體控制器之一記憶體匯流排、一周邊匯流排及/或一區域匯流排。此類組件中之一或多者亦可或替代地經由一或多個其他通信通道或經由Thunderbolt ®彼此通信,例如,一或多個並行電纜、串列電纜或者能夠高速通信之無線網路通道,例如通用串列匯流排(「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, disk drive 224b, and/or memory or register (not shown) of the processor 222. The non-transitory computer or processor readable storage media (e.g., system memory 224a, disk drive 224b) is communicatively coupled to the processor 222a via one or more communication channels (e.g., system bus 234). The system bus 234 may adopt 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 of such components may also or alternatively communicate with each other via one or more other communication channels or via Thunderbolt® , such as one or more parallel cables, serial cables, or a wireless network channel capable of high-speed communication, such as Universal Serial Bus (“USB”) 3.0, Peripheral Component Interconnect Express (PCIe).

第一機器人控制系統200a亦可以可通信地耦合至例如經由介面227直接可通信地耦合或間接可通信地耦合至第一機器人控制系統200a之各種組件之一或多個遠端電腦系統,例如,伺服器電腦(例如源212)、桌上型電腦、膝上型電腦、超可攜式電腦、平板電腦、智慧型電話、可穿戴電腦及/或感測器(圖2中未圖解說明)。例如伺服器電腦(例如,源212)之遠端運算系統可用於對第一機器人控制系統200a以及第一機器人控制系統200a內之各種組件進行程式化、組態、控制或以其他方式與第一機器人控制系統200a以及第一機器人控制系統200a內之各種組件交互或向其輸入資料(例如,運動規劃圖208、掃掠體積表示211、任務規範215、甚至候選路徑或標稱軌跡)。此一連接可係透過一或多個通信通道210,例如一或多個廣域網路(WAN),例如乙太網路,或者使用網際網路協議之網際網路。如上所述,預運行時間計算可由與第一機器人控制系統200a或第一機器人202分離之一系統執行,而運行時間計算可由第一機器人控制系統200a之處理器222在一或多個機器人正在執行任務時執行。在某些實施方案中,機器人控制系統200a、200b中之一或多者可載於各別機器人(例如,第一機器人202)上。The first robot control system 200a may also be communicatively coupled to one or more remote computer systems, such as a server computer (e.g., source 212), a desktop computer, a laptop computer, an ultraportable computer, a tablet computer, a smart phone, a wearable computer, and/or sensors (not illustrated in FIG. 2 ), for example, directly communicatively coupled via interface 227 or indirectly communicatively coupled to various components of the first robot control system 200a. A remote computing system such as a server computer (e.g., source 212) may be used to program, configure, control, or otherwise interact with or input data (e.g., motion planning map 208, sweep volume representation 211, mission specification 215, or even candidate paths or nominal trajectories) to the first robot control system 200a and various components within the first robot control system 200a. Such a connection may be through one or more communication channels 210, such as one or more wide area networks (WANs), such as Ethernet, or the Internet using Internet protocols. As described above, the estimated runtime calculation may be performed by a system separate from the first robot control system 200a or the first robot 202, and the runtime calculation may be performed by the processor 222 of the first robot control system 200a while one or more robots are performing a task. In some embodiments, one or more of the robot control systems 200a, 200b may be onboard a 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., circuit systems), non-temporary storage media (e.g., system memory 224a, disk drive 224b), and a system bus 234 coupling various system components. The processor 222 may be any logic processing unit, such as one or more central processing units (CPUs), digital signal processors (DSPs), graphic 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, which may form part of the ROM 226, contains basic routines that help transfer information between components within the first robot control system 200a, such as during startup.

磁碟機224b可係例如用於自一磁碟進行讀取及向磁盤進行寫入之硬碟機、用於自固態記憶體進行讀取及向固態記憶體進行寫入之一固態(例如,快閃記憶體)硬碟及/或用於自可移式光碟進行讀取及向可移式光碟進行寫入之一光碟機。在各種不同實施例中,第一機器人控制系統200a亦可包含此類磁碟機之任一組合。磁碟機224b可經由系統匯流排234與處理器222通信。如熟習此項技術者所知,磁碟機224b可包含耦合在此類磁碟機與系統匯流排234之間的介面或控制器(未展示)。磁碟機224b及其相關聯電腦可讀媒體為第一機器人控制系統200a提供電腦或處理器可讀及/或可執行指令、資料結構、程式模組及其他資料之非易失性儲存。熟習此項技術者將理解,可採用能夠儲存可由一電腦進行存取之資料之其他類型之電腦可讀媒體,例如WORM磁碟機、RAID磁碟機、磁帶盒、數位視訊磁碟(「DVD」)、Bernoulli盒、RAM、ROM、智慧卡等。The disk drive 224b can be, for example, a hard disk drive for reading from and writing to a disk, a solid-state (e.g., flash memory) hard disk for reading from and writing to a solid-state memory, and/or an optical disk drive for reading from and writing to a removable optical disk. In various different embodiments, the first robot control system 200a may also include any combination of such disk drives. The disk drive 224b can communicate with the processor 222 via the system bus 234. As known to those skilled in the art, the disk drive 224b may include an interface or controller (not shown) coupled between such a disk drive and the system bus 234. The disk drive 224b and its associated computer-readable media provide non-volatile storage of computer or processor-readable and/or executable instructions, data structures, program modules, and other data for the first robot control system 200a. Those skilled in the art will appreciate that other types of computer-readable media capable of storing data accessible by a computer may be used, such as WORM disk drives, RAID disk drives, tape cartridges, digital video disks ("DVDs"), Bernoulli boxes, RAM, ROM, smart cards, etc.

可執行指令及資料可儲存在系統記憶體224a中,例如一作業系統236、一或多個應用程式238、其他程式或模組240及程式資料242。應用程式238可包含致使處理器222執行以下各項中之一或多者之處理器可執行指令。Executable instructions and data may be stored in system memory 224a, such as an operating system 236, one or more applications 238, other programs or modules 240, and program data 242. Applications 238 may include processor-executable instructions that cause processor 222 to perform one or more of the following.

應用程式238可包含致使處理器222接收或產生機器人202將在其中操作之共用工作空間之離散化表示之處理器可執行指令,該等離散化表示包含共用工作空間中之障礙物及/或目標物件或工件,其中其他機器人之所規劃運動可表示為障礙物。The application 238 may include processor executable instructions that cause the processor 222 to receive or generate a discretized representation of the common workspace in which the robot 202 will operate, the discretized representation including obstacles and/or target objects or workpieces in the common workspace, where the planned movements of other robots may be represented as obstacles.

應用程式238可包含致使處理器222產生規定標稱軌跡之運動計劃206a、206b之處理器可執行指令。標稱軌跡中之每一者一般定義一機器人或其一部分之位姿、組態或狀態在藉由時間來參數化的情形下之一各別有序序列。The application 238 may include processor executable instructions that cause the processor 222 to generate motion plans 206a, 206b that specify nominal trajectories. Each of the nominal trajectories generally defines a respective ordered sequence of poses, configurations, or states of a robot or a portion thereof, parameterized by time.

應用程式238可包含致使處理器222判定標稱軌跡之各別可接受滯後時間之處理器可執行指令。可接受滯後時間一般係一機器人202之實際運動(例如,實際軌跡)在仍確保相對於在一共用工作空間中操作之一或多個其他機器人之至少無自碰撞操作的同時可滯後於或不同於由對應標稱軌跡規定之一標稱時間之時間量。在某些實施方案中,無自碰撞操作以其他機器人在執行中沒有經歷任何滯後時間為前提,儘管較佳地,無自碰撞操作以所有機器人在其各別標稱軌跡之各別可接受滯後時間內操作為前提,因此慮及每一機器人在其各別標稱軌跡之執行中經歷滯後時間。The application 238 may include processor executable instructions that cause the processor 222 to determine respective acceptable lag times for nominal trajectories. An acceptable lag time is generally an amount of time that the actual motion of a robot 202 (e.g., actual trajectory) may lag behind or differ from a nominal time specified by the corresponding nominal trajectory while still ensuring at least self-collision-free operation relative to one or more other robots operating in a common workspace. In some embodiments, self-collision-free operation is premised on the other robots not experiencing any lag time in their execution, although preferably, self-collision-free operation is premised on all robots operating within their respective acceptable lag times in their respective nominal trajectories, thereby taking into account the lag time experienced by each robot in the execution of its respective nominal trajectory.

為了產生運動計劃、產生標稱軌跡及/或判定可接受滯後時間,應用程式238可包含致使處理器222叫用或以其他方式執行一碰撞評估之處理器可執行指令。碰撞評估通常被稱為「碰撞偵測」或「碰撞檢查」,即使此通常判定碰撞之一概率或可能性,並且通常發生在機器人之實際移動之前,而並非指在機器人之實體移動期間偵測機器人之一實際實體碰撞。碰撞評估在本文中可互換地稱為「碰撞偵測」或「碰撞檢查」或「碰撞分析」。In order to generate a motion plan, generate a nominal trajectory and/or determine acceptable lag time, the application 238 may include processor executable instructions that cause the processor 222 to call or otherwise perform a collision assessment. Collision assessment is often referred to as "collision detection" or "collision checking", even though this usually determines a probability or likelihood of a collision and usually occurs before the actual movement of the robot, and does not refer to detecting an actual physical collision of the robot during the physical movement of the robot. Collision assessment may be interchangeably referred to as "collision detection" or "collision checking" or "collision analysis" herein.

應用程式238可包含處理器可執行指令,其致使處理器222為一運動規劃圖中之邊緣設定成本值或成本函數,例如從而反映經歷一碰撞之一所判定概率或可能性以及視情況其他參數。應用程式238可包含處理器可執行指令,其致使處理器222為標稱軌跡設定成本值或成本函數,例如從而反映各別可接受滯後時間並且另一選擇係另外反映經歷一碰撞之一所判定概率或可能性以及視情況其他參數。The application 238 may include processor-executable instructions that cause the processor 222 to set cost values or cost functions for edges in a motion planning graph, e.g., to reflect a determined probability or likelihood of experiencing a collision and other parameters as appropriate. The application 238 may include processor-executable instructions that cause the processor 222 to set cost values or cost functions for nominal trajectories, e.g., to reflect respective acceptable lag times and, alternatively, to additionally reflect a determined probability or likelihood of experiencing a collision and other parameters as appropriate.

應用程式238可包含處理器可執行指令,其致使處理器222:評價自運動規劃圖產生之可用標稱軌跡;基於例如成本或成本函數來識別(例如,選擇、判定、產生)標稱軌跡;及/或識別或產生可由機器人執行以致使機器人執行運動(例如由機器人進一步執行一或多個任務)之運動計劃。應用程式238可包含處理器可執行指令,其致使處理器222視情況儲存所判定運動計劃及/或提供致使一或多個機器人按照運動計劃來執行或以其他方式移動之指令。運動規劃及運動計劃構造(例如,舉例而言至少部分地基於碰撞評估或偵測並且視情況部分地基於所判定可接受滯後時間來進行碰撞評估或偵測、設定、更新或調整成本或成本函數)以及候選標稱軌跡之標稱軌跡產生、分析或評估(例如,至少部分地基於各別可接受滯後時間在兩個標稱軌跡之間進行選擇)可如本文中所闡述且如以引用方式併入本文中之參考文獻中所闡述地執行(例如,參考圖3、圖4、圖5、圖6、圖7及圖8之方法)。碰撞評估或偵測可採用在本文中所闡述之任何種類之結構、技術及演算法以及在他處所闡述之適合結構、技術及/或演算法。The application 238 may include processor-executable instructions that cause the processor 222 to: evaluate available nominal trajectories generated from a motion planning map; identify (e.g., select, determine, generate) a nominal trajectory based on, for example, a cost or a cost function; and/or identify or generate a motion plan executable by a robot to cause the robot to perform motion (e.g., further perform one or more tasks by the robot). The application 238 may include processor-executable instructions that cause the processor 222 to store the determined motion plan and/or provide instructions that cause one or more robots to execute or otherwise move in accordance with the motion plan, as appropriate. Movement planning and movement plan construction (e.g., for example, performing collision assessment or detection, setting, updating, or adjusting costs or cost functions based at least in part on collision assessment or detection and, as appropriate, based in part on a determined acceptable hysteresis time) and nominal trajectory generation, analysis, or evaluation of candidate nominal trajectories (e.g., selecting between two nominal trajectories based at least in part on respective acceptable hysteresis times) may be performed as described herein and as described in the references incorporated herein by reference (e.g., the methods of reference FIGS. 3 , 4 , 5 , 6 , 7 , and 8 ). Collision assessment or detection may employ any of the types of structures, techniques, and algorithms described herein as well as suitable structures, techniques, and/or algorithms described elsewhere.

應用程式238亦可包含一或多個機器可讀及機器可執行指令,其致使處理器222對機器人運動(例如,實際軌跡)進行監控,評估此等實際軌跡與對應標稱軌跡之裕量或臨限值(例如,可接受滯後時間或基於可接受滯後時間)相比之實際延遲或實際滯後時間。應用程式238亦可視情況包含一或多個機器可讀及機器可執行指令,其致使處理器222若得到保證(例如,若實際滯後時間接近或超過可接受滯後時間)則選擇及/或採取補救行動(例如,使一或多個機器人減速、使一或多個機器人停止及/或使一或多個機器人加速)。The application 238 may also include one or more machine-readable and machine-executable instructions that cause the processor 222 to monitor robot motion (e.g., actual trajectories) and evaluate actual delays or actual lag times of such actual trajectories compared to margins or thresholds (e.g., acceptable lag times or based on acceptable lag times) of corresponding nominal trajectories. The application 238 may also include one or more machine-readable and machine-executable instructions, as appropriate, that cause the processor 222 to select and/or take remedial action (e.g., slowing down one or more robots, stopping one or more robots, and/or speeding up one or more robots) if warranted (e.g., if the actual lag time approaches or exceeds an acceptable lag time).

應用程式238亦可包含一或多個機器可讀及機器可執行指令,其視情況致使處理器222:對環境中之機器人進行監控;判定沿著一實際軌跡之一路徑何時變得解除阻擋或暢通;並且致使機器人回應於沿著實際軌跡之路徑變得解除阻擋或暢通而移動至一目標。The application 238 may also include one or more machine-readable and machine-executable instructions that cause the processor 222 to, as appropriate: monitor the robot in the environment; determine when a path along an actual trajectory becomes unblocked or clear; and cause the robot to move to a target in response to the path along the actual trajectory becoming unblocked or clear.

應用程式238可另外包含一或多個機器可讀及機器可執行指令,其致使處理器222執行其他操作,例如視情況處置感知資料(經由感測器捕獲)。應用程式238可另外包含一或多個機器可執行指令,其致使處理器222執行本文中所闡述以及以引用方式併入本文中之參考文獻中所闡述之各種其他方法。The application 238 may further include one or more machine-readable and machine-executable instructions that cause the processor 222 to perform other operations, such as processing sensory data (captured via sensors) as appropriate. The application 238 may further include one or more machine-executable instructions that cause the processor 222 to perform various other methods described herein and in the references incorporated herein by reference.

在各種實施例中,上文所闡述之操作中之一或多者可由一或多個遠端處理裝置或電腦來執行,該等裝置或電腦經由一介面227透過一通信通道210 (例如,網路)進行鏈接。In various embodiments, one or more of the operations described above may be performed by one or more remote processing devices or computers that are linked via an interface 227 through a communication channel 210 (e.g., a network).

雖然在圖2中被展示為儲存在系統記憶體224a中,但作業系統236、應用程式238、其他程式/模組240及程式資料242可儲存在例如磁碟機224b之其他非暫時性電腦或處理器可讀媒體上。Although shown in FIG. 2 as being stored in system memory 224a, operating system 236, applications 238, other programs/modules 240, and program data 242 may be stored on other non-transitory computer or processor-readable media such as disk drive 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 in whole or in part via the processor 222 and processor executable instructions stored in the system memory 224a and/or the disk drive 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 evaluator 253, a cost setter 254, optionally a path analyzer 255, a trajectory generator 256, an acceptable lag time evaluator 257, and optionally a nominal trajectory analyzer 258. Each of these devices may be implemented via one or more processors (e.g., circuit systems) that execute logic (e.g., executable software instructions, firmware instructions, hardwired logic, or any combination thereof).

運動轉換器250將物件(例如,機器人中之其他者、人)之運動轉換成障礙物之表示。運動轉換器250自其他運動規劃器204b接收運動計劃206b或其他運動表示。The motion converter 250 converts the motion of an object (e.g., other robots, people) into a representation of an obstacle. The motion converter 250 receives a motion plan 206b or other motion representation 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., other robots, other objects including, for example, humans), for example, when the trajectory of the transient object is unknown (e.g., when the object is another robot but has not yet received a motion plan from the other robot, when the object is not another robot (e.g., a human). The trajectory predictor 251 may, for example, assume that an object will continue an existing motion in one of the two aspects of direction, velocity, and acceleration if there is no change. The trajectory predictor 251 may, for example, take into account an expected change in a motion or path of an object, for example, where the object's path will result in a collision, so the object may be expected to stop or change direction, or where a destination of the object is known, so the object may be expected to stop shortly after reaching the destination. In at least some instances, the trajectory predictor 251 may employ a learned behavior model of the object to predict the trajectory of the object. The trajectory predictor 251 may, for example, extrapolate known motions and expected changes to produce a predicted trajectory of the instantaneous object.

運動轉換器250然後視情況判定對應於物件之已知及/或經外推運動之一面積或體積。舉例而言,運動轉換器可例如藉由產生機器人或其一部分之一體積表示並沿著由機器人或其一部分之軌跡定義之一路徑對體積表示進行投影來將運動轉換成一對應掃掠體積,亦即由對應機器人或其一部分在如由運動計劃表示之位姿之間移動或轉變時掃掠之一體積。又舉例而言,運動轉換器可例如藉由產生一物件(例如,非機器人物件,例如一人類)之一體積表示並沿著由物件之一已知及/或經外推軌跡定義之一路徑對物件之體積表示進行投影來將運動轉換成一對應掃掠體積。有利地,運動規劃器204a可簡單地對障礙物(例如,掃掠體積)進行排隊,並且可無需判定、跟蹤或指示對應運動或掃掠體積之一時間。雖然一般被闡述為第一機器人202的可將其他機器人(圖2中未圖解說)之運動轉換為障礙物之一運動轉換器250,但在某些實施方案中,在共用工作空間中操作之其他機器人之其他機器人控制系統200b可將一特定運動之障礙物表示(例如,掃掠體積)提供給第一機器人202之運動規劃器204a。The motion converter 250 then determines an area or volume corresponding to the known and/or extrapolated motion of the object, as appropriate. For example, the motion converter can convert the motion into a corresponding swept volume, i.e., a volume swept by the corresponding robot or part thereof as it moves or transitions between poses as represented by the motion plan, such as by generating a volume representation of the robot or part thereof and projecting the volume representation along a path defined by the trajectory of the robot or part thereof. For another example, the motion converter may convert motion into a corresponding swept volume, for example, by generating a volume representation of an object (e.g., a non-robotic object, such as a human) and projecting the volume representation of the object along a path defined by a known and/or extrapolated trajectory of the object. Advantageously, the motion planner 204a may simply queue obstacles (e.g., swept volumes) and may not need to determine, track, or indicate a time corresponding to the motion or swept volume. Although generally described as a motion converter 250 of the first robot 202 that can convert the motion of other robots (not illustrated in Figure 2) into obstacles, in some embodiments, other robot control systems 200b of other robots operating in a shared workspace can provide an obstacle representation of a particular motion (e.g., a swept volume) to the motion planner 204a of the first robot 202.

路徑產生器252產生自一個位姿、組態或狀態(例如,開始位姿、組態或狀態)至另一位姿、組態或狀態(例如,結束位姿、組態或狀態;或目標位姿、組態或狀態)之路徑。路徑產生器252可判定或識別自一開始處(例如,開始節點或開始位姿或開始狀態)至一目標(例如,目標節點或目標位姿或目標狀態;結束節點或結束位姿或結束狀態)之一或多個可行路徑。舉例而言,路徑產生器252可判定或識別一運動規劃圖中之一有序序列之節點,該有序序列之節點提供自一開始或當前節點至一目標或結束節點之一完整路徑(亦即,一有序組節點,對於該有序組節點,完整路徑中一對連續節點中之每一者在其間具有一各別有效轉變,如耦合該對節點中之節點之一邊緣之存在所表示)。如上所述,每一節點可對應於各別機器人之一各別位姿、組態或狀態。路徑產生器252可使用或執行任何種類之路徑尋找方法、技術及/或演算法。舉例而言,路徑產生器252可採用隨機或偽隨機地產生路徑之各種方法、技術及/或演算法,從而選擇一運動規劃圖中多序列之節點,其中一節點經由一邊緣(亦即,表示由所連接節點表示之位姿之間的有效轉變之邊緣)連接至序列中之下一節點。路徑產生器252可在一開始節點與一結束節點之間因此在一開始位姿、組態或狀態與一結束位姿、組態或狀態之間產生相對大數目之候選路徑。在某些實施方案中,路徑產生器252可獨立於成本(例如,表示沿著路徑經歷碰撞之一概率或可能性之成本)來判定或識別可行路徑或軌跡,從而建立建一組可行路徑或候選路徑,稍後可至少部分地基於經歷碰撞之概率或可能性來評價該組可行路徑或候選路徑。在其他例項中,當判定或識別可行路徑或軌跡時,路徑產生器252可將成本(例如,表示沿著路徑經歷碰撞之概率或可能性之成本)納入考量。The path generator 252 generates a path from one pose, configuration, or state (e.g., a starting pose, configuration, or state) to another pose, configuration, or state (e.g., an ending pose, configuration, or state; or a target pose, configuration, or state). The path generator 252 may determine or identify one or more feasible paths from a start (e.g., a starting node or a starting pose or a starting state) to a target (e.g., a target node or a target pose or a target state; an ending node or an ending pose or an ending state). For example, the path generator 252 may determine or identify an ordered sequence of nodes in a motion planning graph that provide a complete path from a start or current node to a target or end node (i.e., an ordered set of nodes for which each of a pair of consecutive nodes in the complete path has a respective valid transition therebetween, as indicated by the presence of an edge coupling the nodes in the pair of nodes). As described above, each node may correspond to a respective pose, configuration, or state of a respective robot. The path generator 252 may use or execute any type of path finding methods, techniques, and/or algorithms. For example, the path generator 252 may employ various methods, techniques and/or algorithms for randomly or pseudo-randomly generating paths to select a plurality of sequences of nodes in a motion planning graph, wherein a node is connected to the next node in the sequence via an edge (i.e., an edge representing a valid transition between the poses represented by the connected nodes). The path generator 252 may generate a relatively large number of candidate paths between a starting node and an ending node, and thus between a starting pose, configuration or state and an ending pose, configuration or state. In some implementations, the path generator 252 may determine or identify feasible paths or trajectories independently of cost (e.g., cost representing a probability or likelihood of experiencing a collision along the path), thereby establishing a set of feasible paths or candidate paths that may later be evaluated based at least in part on the probability or likelihood of experiencing a collision. In other examples, the path generator 252 may take cost (e.g., cost representing a probability or likelihood of experiencing a collision along the path) into consideration when determining or identifying feasible paths or trajectories.

碰撞評估器253執行碰撞評估,亦稱為碰撞偵測或碰撞分析。特定而言,碰撞評估器253視情況執行碰撞評估,作為判定表示如由一標稱軌跡規定之一給定機器人202或其一部分之一轉變或運動之一候選路徑是否將導致或可能導致與一障礙物之一碰撞的一部分。如上所述,其他機器人之運動可有利地表示為障礙物。因此,碰撞評估器253可判定一個機器人之一運動是否將導致或可能導致與移動通過共用工作空間之另一機器人之碰撞。The collision evaluator 253 performs collision evaluation, also known as collision detection or collision analysis. Specifically, the collision evaluator 253 performs collision evaluation as part of determining whether a candidate path representing a transition or movement of a given robot 202 or a portion thereof as specified by a nominal trajectory will result in or may result in a collision with an obstacle. As described above, the movement of other robots can advantageously be represented as obstacles. Therefore, the collision evaluator 253 can determine whether a movement of a robot will result in or may result in a collision with another robot moving through a shared workspace.

如此處所闡述,碰撞評估、偵測或分析不僅可針對候選路徑來執行,而且另外或另一選擇係可針對標稱軌跡(例如,如所規定之軌跡)且特定而言針對其中引入了各種滯後時間之標稱軌跡(例如,模擬可能滯後於標稱軌跡之實際軌跡)來執行。在至少某些實施方案中,其中引入了各種滯後時間之標稱軌跡之碰撞評估、偵測或分析可針對兩個或更多個機器人中之每一者(舉例而言多對機器人)來執行。碰撞評估、偵測或分析可針對多對機器人中機器人中之每一者之各別多組一或多個標稱軌跡來執行。碰撞評估、偵測或分析可針對軌跡中之每一者來執行,其中一滯後時間等於零,並且其中將各種(例如,一個、兩個或更多個)非零滯後時間引入至彼等各別標稱軌跡中,例如針對該對軌跡之滯後時間之每一排列來評價該對軌跡。如本文中所闡述,碰撞評估、偵測或分析不一定導致一個二進制結果,而是可導致一非二進制值,例如從而表示由路徑或軌跡導致之一對機器人之間碰撞之一概率或可能性。As explained herein, collision assessment, detection, or analysis may be performed not only for candidate paths, but may additionally or alternatively be performed for nominal trajectories (e.g., trajectories as specified) and particularly for nominal trajectories in which various hysteresis times are introduced (e.g., simulating an actual trajectory that may lag behind the nominal trajectory). In at least some embodiments, collision assessment, detection, or analysis of nominal trajectories in which various hysteresis times are introduced may be performed for each of two or more robots (e.g., multiple pairs of robots). Collision assessment, detection, or analysis may be performed for respective sets of one or more nominal trajectories for each of the robots in multiple pairs of robots. Collision assessment, detection, or analysis may be performed for each of the trajectories with a hysteresis equal to zero and with various (e.g., one, two, or more) non-zero hysteresis times introduced into their respective nominal trajectories, such as evaluating the pair of trajectories for each permutation of their hysteresis times. As explained herein, collision assessment, detection, or analysis does not necessarily result in a binary result, but may result in a non-binary value, such as thereby representing a probability or likelihood of a collision between a pair of robots resulting from the path or trajectory.

在某些實施方案中,碰撞評估器253實施基於軟體之碰撞評估、偵測或分析,例如從而基於由機器人(例如,第一機器人202)或其部分在移動期間掃掠之體積之幾何(例如,球體)表示之一層級來執行一邊界方框-邊界方框碰撞評估、偵測或分析。在某些實施方案中,碰撞評估器253實施基於硬體之碰撞評估、偵測或分析,例如從而採用一組專用硬體邏輯電路來表示障礙物以及透過專用硬體邏輯電路之運動之串流化表示。在基於硬體之碰撞評估、偵測或分析中,碰撞偵測器可採用一或多個可組態電路陣列,例如一或多個FPGA 259,並且可視情況產生布林碰撞評估。In some embodiments, the collision evaluator 253 implements software-based collision evaluation, detection, or analysis, such as to perform a bounding box-bounding box collision evaluation, detection, or analysis based on a level of geometric (e.g., sphere) representation of a volume swept by a robot (e.g., the first robot 202) or a portion thereof during movement. In some embodiments, the collision evaluator 253 implements hardware-based collision evaluation, detection, or analysis, such as to employ a set of dedicated hardware logic circuits to represent obstacles and stream representations of motion through the dedicated hardware logic circuits. In hardware-based collision assessment, detection or analysis, the collision detector may employ one or more configurable circuit arrays, such as one or more FPGAs 259, and may optionally generate Boolean collision assessments.

成本設定器254可設定、更新及/或調整與轉變(例如,一運動規劃圖中之邊緣)或移動(例如,一運動規劃之軌跡)相關聯之一成本或成本函數。成本設定器254可例如至少部分地基於碰撞評估、偵測或分析來設定、更新及/或調整一成本或成本函數。舉例而言,成本設定器254可為表示節點或運動之間的轉變將導致或可能導致碰撞之邊緣或軌跡設定一相對高成本值。又舉例而言,成本設定器254可為表示節點或運動之間的轉變不會導致或可能不會導致碰撞之邊緣或軌跡設定一相對低成本值。設定、更新及/或調整一成本或成本函數可包含設定、更新或調整經由某些資料結構(例如,一記錄中之欄位、一清單中之指針、表)與一對應邊緣或軌跡邏輯相關聯之一成本或成本函數。The cost setter 254 may set, update and/or adjust a cost or cost function associated with a transition (e.g., an edge in a motion planning graph) or a movement (e.g., a trajectory of a motion planning). The cost setter 254 may set, update and/or adjust a cost or cost function, for example, based at least in part on collision assessment, detection or analysis. For example, the cost setter 254 may set a relatively high cost value for an edge or trajectory that indicates that a transition between nodes or motions will or may result in a collision. For another example, the cost setter 254 may set a relatively low cost value for an edge or trajectory that indicates that a transition between nodes or motions will not or may not result in a collision. Setting, updating and/or adjusting a cost or cost function may include setting, updating or adjusting a cost or cost function that is logically associated with a corresponding edge or track via some data structure (e.g., a field in a record, a pointer in a list, a table).

在某些實施方案中,成本設定器254視情況可例如設定、更新或調整一成本或成本函數,以至少部分地表示一各別標稱軌跡之一所判定可接受滯後時間。此可有利地允許第一機器人控制系統200a自一組可用或候選標稱軌跡選擇一標稱軌跡,以供一機器人執行一給定任務,例如從而選擇具有最長或最大所判定可接受滯後時間之標稱軌跡,以供在產生在機器人實行任務的同時正在經歷真實世界條件時達成更穩健操作之一運動計劃時使用。In some implementations, the cost setter 254 may, for example, set, update, or adjust a cost or cost function, as appropriate, to at least partially represent a determined acceptable hysteresis time for a respective nominal trajectory. This may advantageously allow the first robot control system 200a to select a nominal trajectory from a set of available or candidate nominal trajectories for a robot to perform a given task, such as thereby selecting the nominal trajectory with the longest or largest determined acceptable hysteresis time for use in generating a motion plan that results in more robust operation when the robot is experiencing real-world conditions while performing the task.

在某些實施方案中,成本設定器254可另外或另一選擇係設定、更新或調整一成本或成本函數,以至少部分地表示一或多個其他參數,例如以下各項中之一或多者:碰撞之一嚴重性、執行或完成之能量及/或時間或延時之一支出或消耗。In some embodiments, the cost setter 254 may additionally or alternatively set, update, or adjust a cost or cost function to at least partially represent one or more other parameters, such as one or more of: a severity of the collision, an expenditure or consumption of energy and/or time or delay to perform or complete.

選用路徑分析器255可使用運動規劃圖208連同成本或成本函數來判定或識別一或多個適合路徑及/或選擇一單個路徑(亦即,所選擇路徑,例如,一最佳或經最佳化路徑)。選用路徑分析器255可例如識別滿足某些所規定準則(例如,一臨限值上限內之成本)之一或多個路徑,或者甚至自由路徑產生器252判定或識別之一組候選可行路徑選擇一單個路徑(例如,選擇一單個最低成本路徑)。所識別路徑可被命名適為適合路徑,此乃因彼等路徑表示具有可接受低碰撞概率或可能性之選項。選用路徑分析器255可例如構成判定兩個節點之間(因此,由運動規劃圖中之各別節點表示之兩個位姿、組態或狀態之間)的一最低或相對低成本路徑之一最小成本路徑最佳化器。選用路徑分析器255可使用或執行任何種類之路徑尋找演算法,例如最低成本路徑尋找演算法,從而將與每一邊緣相關聯之成本值、表示碰撞之一概率或可能性並且視情況表示一或多個其他參數(例如,碰撞之一嚴重性、執行或完成之能量及/或時間或延時之一支出或消耗)之成本值納入考量。在某些實施方案中,基於成本之最佳化可另一選擇係或另外應用於標稱軌跡,以有利地允許可接受滯後時間在成本值或成本函數中表示,如本文中所闡述,例如除了碰撞之一概率或可能性以外,並且視情況除了或代替以下各項中之一或多者以外:碰撞之一嚴重性、執行或完成之能量及/或時間或延時之一支出或消耗。The alternative path analyzer 255 may use the motion planning graph 208 along with the cost or cost function to determine or identify one or more suitable paths and/or select a single path (i.e., the selected path, e.g., an optimal or optimized path). The alternative path analyzer 255 may, for example, identify one or more paths that meet certain specified criteria (e.g., a cost within a critical upper limit), or even select a single path from a set of candidate feasible paths determined or identified by the free path generator 252 (e.g., select a single minimum cost path). The identified paths may be named suitable paths because they represent options with an acceptably low probability or likelihood of collision. The alternative path analyzer 255 may, for example, be configured as a minimum cost path optimizer that determines a minimum or relatively low cost path between two nodes (and therefore, between two poses, configurations, or states represented by respective nodes in the motion planning graph). The alternative path analyzer 255 may use or execute any type of path finding algorithm, such as a minimum cost path finding algorithm, thereby taking into account the cost value associated with each edge, the cost value representing a probability or likelihood of a collision and, as appropriate, one or more other parameters (e.g., a severity of the collision, an expenditure or consumption of energy and/or time or delay to execute or complete). In certain embodiments, cost-based optimization may alternatively or additionally be applied to the nominal trajectory to advantageously allow acceptable lag times to be expressed in cost values or cost functions, as described herein, for example in addition to a probability or likelihood of a collision, and optionally in addition to or in lieu of one or more of: a severity of the collision, an expenditure or consumption of energy and/or time or delay to execute or complete.

標稱軌跡產生器256可產生一機器人可依循例如以完成一任務之標稱軌跡。如本文中所解釋,軌跡包括在藉由由時間來參數化的情況下位姿或組態或狀態之一有序序列,一機器人或其至少一部分可移動通過該序列例如以完成一任務。標稱軌跡產生器256可為所產生路徑中之全部產生軌跡,或者若採用選用路徑分析器255,則可僅為所選擇路徑或僅為一個所選擇路徑產生軌跡。The nominal trajectory generator 256 can generate a nominal trajectory that a robot can follow, for example, to complete a task. As explained herein, a trajectory includes an ordered sequence of poses or configurations or states parameterized by time through which a robot or at least a portion thereof can move, for example, to complete a task. The nominal trajectory generator 256 can generate trajectories for all of the generated paths, or if the optional path analyzer 255 is used, it can generate trajectories for only selected paths or only one selected path.

可接受滯後時間評估器257對一給定標稱軌跡之各種候選滯後時間進行評估,以判定即使一對應機器人之實際軌跡滯後於標稱軌跡不超過可接受滯後時間亦能確保無自碰撞操作之一可接受滯後時間。在一較佳方法中,可接受滯後時間評估器257不僅將一給定機器人之標稱軌跡中一滯後之效應納入考量,而且將在一共用工作空間中操作之其他機器人之各別標稱軌跡中之效應或滯後納入考量。因此,可接受滯後時間評估器257識別每一標稱軌跡之可接受滯後時間,該標稱軌跡假定其中在共用工作空間中操作之機器人中之全部之實際軌跡正在經歷其自身各別可接受滯後時間之一最糟糕情況。因此,可接受滯後時間評估器257可例如判定仍確保無自碰撞操作之每一機器人之一最佳化(例如,最大)滯後時間。本文中例如關於一方法300 (圖3)、方法400 (圖4)、方法500 (圖5)、方法600 (圖6)及/或方法700 (圖7)闡述了判定可接受滯後時間之數種方法。The acceptable hysteresis time evaluator 257 evaluates various candidate hysteresis times for a given nominal trajectory to determine an acceptable hysteresis time that ensures self-collision-free operation even if the actual trajectory of a corresponding robot lags behind the nominal trajectory by no more than the acceptable hysteresis time. In a preferred approach, the acceptable hysteresis time evaluator 257 takes into account not only the effect of a hysteresis in the nominal trajectory of a given robot, but also the effect or hysteresis in the respective nominal trajectories of other robots operating in a common workspace. Thus, the acceptable hysteresis time evaluator 257 identifies an acceptable hysteresis time for each nominal trajectory that assumes that the actual trajectories of all of the robots operating in the common workspace are experiencing a worst case scenario of their own respective acceptable hysteresis times. Thus, the acceptable hysteresis time evaluator 257 can, for example, determine an optimized (e.g., maximum) hysteresis time for each robot that still ensures self-collision-free operation. Several methods of determining acceptable hysteresis times are described herein, for example, with respect to a method 300 (FIG. 3), a method 400 (FIG. 4), a method 500 (FIG. 5), a method 600 (FIG. 6), and/or a method 700 (FIG. 7).

選用標稱軌跡分析器258可使用成本值或成本值函數或某些其他目標函數來判定、識別或選擇一或多個適合軌跡及/或判定、識別或選擇一單個軌跡(亦即,所選擇軌跡,例如,一最佳或經最佳化軌跡)。標稱軌跡分析器258可例如判定、識別或選擇滿足某些所規定準則(例如,一臨限值上限內之成本)之一或多個軌跡,或者甚至自由軌跡產生器256產生之一組可行或候選軌跡判定、識別或選擇一單個軌跡(例如,具有最低成本之軌跡)(例如,判定、識別或選擇一最低成本軌跡)。標稱軌跡分析器258可例如構成一最小成本軌跡最佳化器,其判定由運動規劃圖中之各別節點表示之兩個位姿、組態或狀態之間的一最低或相對低成本軌跡。標稱軌跡分析器258可例如例如藉由將跨越所有機器人在一給定時間段、一給定任務或待由機器人執行之給定的一組任務之所有滯後時間之一總和最大化為將穩健操作最佳化之所有機器人選擇一組軌跡。標稱軌跡分析器258可使用或執行任何種類之演算法,例如最低成本軌跡尋找演算法,從而將與每一軌跡相關聯之成本納入考量,其中成本或成本函數表示碰撞之一概率或可能性以及一可接受滯後時間,並且視情況表示以下各項中之一或多者:碰撞之一嚴重性、執行或完成之能量及/或時間或延時之一支出或消耗。The nominal trajectory analyzer 258 may use a cost value or cost value 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., a selected trajectory, e.g., an optimal or optimized trajectory). The nominal trajectory analyzer 258 may, for example, determine, identify or select one or more trajectories that meet some specified criteria (e.g., a cost within a critical upper limit), or even determine, identify or select a single trajectory (e.g., a trajectory with the lowest cost) from a set of feasible or candidate trajectories generated by the free trajectory generator 256 (e.g., determine, identify or select a lowest cost trajectory). The nominal trajectory analyzer 258 may, for example, constitute a minimum cost trajectory optimizer that determines a minimum or relatively low cost trajectory between two poses, configurations, or states represented by respective nodes in the motion planning graph. The nominal trajectory analyzer 258 may, for example, select a set of trajectories for all robots that optimizes robust operation by maximizing a sum of all lag times across all robots in a given time period, a given task, or a given set of tasks to be performed by the robots. The nominal trajectory analyzer 258 may use or execute any type of algorithm, such as a minimum cost trajectory finding algorithm, that takes into account a cost associated with each trajectory, where the cost or cost function represents a probability or likelihood of a collision and an acceptable lag time, and optionally represents one or more of the following: a severity of the collision, an expenditure or consumption of energy and/or time or delay to execute or complete.

可使用各種演算法及結構來判定最小成本路徑及/或最小成本軌跡,包含實施Bellman-Ford演算法之彼等算法及結構,但也可使用其他演算法及結構,包含但不限於任何此種程序,其中一最小成本路徑或最小成本軌跡被判定為運動規劃圖208中兩個節點之間的路徑或者如由位姿之一時間參數化之有序序列規定使得其構成邊緣或運動之成本或權重之一總和被最小化之一軌跡。此程序藉由判定可接受滯後時間、視情況基於所判定可接受滯後時間來選擇軌跡、對實際軌跡進行監控以評估實際滯後時間是否接近或超過一裕量或臨限值(例如,可接受滯後時間)以及若得到保證則視情況選擇及/或採取補救行動來改良一機器人102 (圖1)、202(圖2)之運動規劃之技術。Various algorithms and structures may be used to determine minimum cost paths and/or minimum cost trajectories, including those implementing the Bellman-Ford algorithm, but other algorithms and structures may also be used, including but not limited to any such procedures in which a minimum cost path or minimum cost trajectory is determined to be a path between two nodes in the motion planning graph 208 or a trajectory such that the sum of the costs or weights of its constituent edges or motions is minimized as specified by an ordered sequence of time-parameterized poses. This process improves the motion planning of a robot 102 (Figure 1), 202 (Figure 2) by determining an acceptable lag time, selecting a trajectory based on the determined acceptable lag time, monitoring the actual trajectory to evaluate whether the actual lag time approaches or exceeds a margin or threshold value (e.g., the acceptable lag time), and selecting and/or taking remedial actions as appropriate if warranted.

雖然未經圖解說明,但運動規劃器204a可視情況包含一前瞻評估器,其可例如回應於對存在或出現一阻擋或可能阻擋條件之一判定或者若一給定機器人及/或其他機器人沿著一各別軌跡移動則一阻擋或可能阻擋位置將出現之一判定來致使待採取一改善行動。在至少某些實施方案中,前瞻評估器可例如基於一或多個準則自一組不同類型之改善行動進行選擇來判定或選擇待採取之改善行動之一類型。如2022年4月6日提出申請之美國專利申請案63/327,917所闡述,可實施一或多種不同類型之改善行動(其中稱為補救行動)。舉例而言,可基於對將一給定機器人自一第一目標移動之一第二運動規劃之分析來產生一新的、經修訂或替換第一運動計劃,以將該給定機器人移動至該第一目標。又舉例而言,可為正在阻擋或可能阻擋給定機器人之另一機器人產生一新的、經修訂或替換運動計劃。又舉例而言,可判定或產生一組目標之一新次序,該組目標包含第一目標及至少第二目標。此可偽隨機地或基於一或多個試探法來判定或產生(例如,總是試圖將第一目標相對於正被修改之一組目標之次序向下游移動一個位置)。Although not illustrated, the motion planner 204a may include a forward-looking evaluator that may, for example, cause an improvement action to be taken in response to a determination that a blocking or possible blocking condition exists or occurs, or a determination that an blocking or possible blocking position will occur if a given robot and/or other robots move along a respective trajectory. In at least some embodiments, the forward-looking evaluator may determine or select a type of improvement action to be taken, for example, by selecting from a set of different types of improvement actions based on one or more criteria. As described in U.S. Patent Application No. 63/327,917 filed on April 6, 2022, one or more different types of improvement actions (referred to as remedial actions) may be implemented. For example, a new, revised or replacement first motion plan may be generated to move a given robot to a first target based on an analysis of a second motion plan to move the given robot from the first target. For another example, a new, revised or replacement motion plan may be generated for another robot that is blocking or may block the given robot. For another example, a new order of a set of targets including a first target and at least a second target may be determined or generated. This may 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 illustrated, the motion planner 204a may include an optional multi-path analyzer that can analyze a total cost or aggregate cost associated with the trajectories of two or more motion plans (e.g., the aggregate cost of a first motion plan and a second motion plan), such as described in U.S. Patent Application No. 63/327,917 filed on April 6, 2022. This can be used to identify the combination of motion plans that has the lowest overall cost. The multi-path analyzer may, for example, use or execute any type of minimum cost finding algorithm, such as to consider the total cost or aggregate cost of two or more options for a first motion plan in combination with a second motion plan, thereby taking into account cost values representing an associated likelihood of collision and, as appropriate, one or more of: an acceptable lag time, a severity of the collision, an expenditure or consumption of energy and/or time or delay associated with executing or completing the transition represented by the respective edges.

運動規劃器204a可視情況包含一修剪器260。修剪器260可接收表示由其他機器人完成運動之資訊,該資訊在本文中被命名為運動完成訊息209。另一選擇係,可設定一旗標來指示完成。作為回應,修剪器260可移除表示現已完成之運動之一障礙物或者一障礙之一部分。此可允許為一給定機器人產生一新運動計劃,此可能更有效或者允許給定機器人專注於執行先前由另一機器人之運動阻止之一任務。此方法有利地允許運動轉換器250在仍實現比使用其他技術更佳之輸送量的同時產生運動之障礙物表示時忽略運動之定時。運動規劃器204a可另外發送一信號、提示或觸發,以致使碰撞評估器253在給定障礙物之修改的情況下執行一新碰撞偵測或評估來產生一經更新運動規劃圖,其中與邊緣相關聯之邊緣權重或成本已被修改,並且致使成本設定器254、選用路徑分析器255及標稱軌跡分析器258更新成本值並相應地判定一新的或經修訂路徑、軌跡及/或運動計劃。The motion planner 204a visually includes a trimmer 260. The trimmer 260 can receive information indicating the completion of a motion by another robot, which information is named herein as a motion completion message 209. Another option is that a flag can be set to indicate completion. In response, the trimmer 260 can remove an obstacle or a portion of an obstacle that represents the now completed motion. This can allow a new motion plan to be generated for a given robot, which may be more efficient or allow the given robot to focus on performing a task that was previously blocked by the motion of another robot. This method advantageously allows the motion converter 250 to ignore the timing of the motion when generating an obstacle representation of the motion while still achieving a better throughput than using other techniques. The motion planner 204a may additionally send a signal, prompt or trigger to cause the collision evaluator 253 to perform a new collision detection or evaluation given the modification of the obstacle to produce an updated motion planning graph in which the edge weights or costs associated with the edges have been modified, and cause the cost setter 254, the optional path analyzer 255 and the nominal trajectory analyzer 258 to update the cost values and accordingly determine a new or revised path, trajectory and/or motion plan.

運動規劃器204a可視情況包含一環境轉換器263,其將來自選用感測器262 (例如,數位相機)之輸出(例如,環境之數位化表示)轉換成障礙物之表示。因此,運動規劃器204a可執行將環境中之瞬時物件(例如人、動物等)納入考量之運動規劃。The motion planner 204a may include an environment converter 263 that converts the output from the optional sensor 262 (e.g., a digital camera) (e.g., a digitized representation of the environment) into a representation of obstacles. Thus, the motion planner 204a may perform motion planning that takes into account transient objects in the environment (e.g., people, animals, etc.).

處理器222及/或運動規劃器204a可係或可包含任何邏輯處理單元,諸如一或多個中央處理單元(CPU)、數位信號處理器(DSP)、圖形處理單元(GPU)、特殊應用積體電路(ASIC)、場可程式化閘陣列(FPGA)、可程式化邏輯控制器(PLC)等。可商購獲得之電腦系統之非限制性實例包含但不限於:由美國Intel ®公司提供之Celeron、Core、Core 2、Itanium及Xeon族系之微處理器;由美國先進微裝置公司(Advanced Micro Devices)提供之K8、K10、Bulldozer及Bobcat系列之微處理器;由美國蘋果電腦公司提供之A5、A6及A7系列之微處理器;由美國高通公司提供之Snapdragon系列之微處理器;以及由美國甲骨文公司提供之SPARC系列之微處理器。圖2中所展示之各種結構之構造及操作可實施或採用以下專利中所闡述或類似於以下專利中所闡述之結構、技術及演算法:於2017年6月9日提出申請之國際專利申請案第PCT/US2017/036880號;於2016年1月5日提出申請之國際專利申請公開案第WO 2016/122840號;於2018年1月12日提出申請之美國專利申請案第62/616,783號;公開號為WO 2021/150439之國際專利申請案PCT/US2021/013610;及/或於2022年4月6日提出申請之美國專利申請案63/327,917。 The processor 222 and/or the 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 families of microprocessors provided by Intel® Corporation; K8, K10, Bulldozer, and Bobcat series of microprocessors provided by Advanced Micro Devices; A5, A6, and A7 series of microprocessors provided by Apple Computer; Snapdragon series of microprocessors provided by Qualcomm; and SPARC series of microprocessors provided by Oracle Corporation. The structures and operations of the various structures shown in FIG. 2 may implement or employ structures, techniques, and algorithms described in or similar to those described in the following patents: International Patent Application No. PCT/US2017/036880 filed on June 9, 2017; International Patent Application Publication No. WO 2016/122840 filed on January 5, 2016; U.S. Patent Application No. 62/616,783 filed on January 12, 2018; International Patent Application PCT/US2021/013610 with Publication No. WO 2021/150439; and/or U.S. Patent Application No. 63/327,917 filed on April 6, 2022.

儘管不是必需的,但諸多實施方案將闡述於電腦可執行指令之一般內容脈絡中,諸如儲存在電腦或處理器可讀媒體上並由一或多個電腦或處理器執行之程式應用模組、物件或巨集,該等電腦或處理器可執行障礙物表示、碰撞評估及其他運動規劃操作。Although not required, many embodiments will be described in the general context of computer-executable instructions, such as program application modules, objects or macros stored on a computer or processor-readable medium and executed by one or more computers or processors that can perform obstacle representation, collision assessment and other motion planning operations.

運動規劃操作可包含但不限於,產生或變換以下各項中之一者、多者或全部:基於一幾何模型之機器人幾何形狀之一表示、任務規範215以及機器人在各種狀態或位姿下及/或在狀態或位姿之間移動期間所佔用之體積(例如掃掠體積)之視情況表示、呈數位形式之表示,例如點雲、歐氏距離場、資料結構格式(例如階層格式、非階層格式)及/或曲線(例如多項式或樣條表示)。運動規劃操作可視情況包含但不限於產生或變換以下各項中之一者、多者或全部:靜態或持久障礙物之一表示及/或表示靜態或瞬時障礙物之感知資料,例如,點雲、歐氏距離場、資料結構格式(例如,階層格式、非階層格式)及/或曲線(例如,多項式或樣條表示)。Motion planning operations may include, but are not limited to, generating or transforming one, more or all of the following: a representation of the robot's geometry based on a geometric model, the mission specification 215, and optionally a representation of the volume (e.g., a swept volume) occupied by the robot in various states or postures and/or during movement between states or postures, a representation in digital form, such as a point cloud, a Euclidean distance field, a data structure format (e.g., a hierarchical format, a non-hierarchical format), and/or a curve (e.g., a polynomial or spline representation). Motion planning operations may include, but are not limited to, generating or transforming one, more, or all of the following: a representation of a static or persistent obstacle and/or sensory data representing a static or transient obstacle, such as a point cloud, a Euclidean distance field, a data structure format (e.g., a hierarchical format, a non-hierarchical format), and/or a curve (e.g., a polynomial or spline representation).

運動規劃操作可包含但不限於使用各種碰撞評估技術或演算法(例如,基於軟體的、基於硬體的)來評估、偵測、判定或預測機器人之各種位姿、組態或狀態狀態之間的轉變之碰撞,或者機器人沿著各別軌跡之狀態或位姿之間的運動。Motion planning operations may include, but are not limited to, using various collision assessment techniques or algorithms (e.g., software-based, hardware-based) to assess, detect, determine, or predict collisions between various poses, configurations, or state transitions of the robot, or the movement of the robot between states or poses along respective trajectories.

在某些實施方案中,運動規劃操作可包含但不限於:判定一或多個運動規劃圖、運動計劃或具有標稱軌跡之路線圖;標稱軌跡之可接受滯後時間,儲存所判定規劃圖、運動計劃或路線圖或可接受滯後時間;及/或提供規劃圖、運動計劃或路線圖或可接受滯後時間,以控制一或多個機器人之操作,並且視情況監控機器人之操作,並且若得到保證則選擇及/或採取補救行動。In certain embodiments, motion planning operations may include, but are not limited to: determining one or more motion planning maps, motion plans, or roadmaps having a nominal trajectory; an acceptable lag time for the nominal trajectory, storing the determined planning maps, motion plans, or roadmaps or the acceptable lag time; and/or providing planning maps, motion plans, or roadmaps or the acceptable lag time to control the operation of one or more robots, and monitoring the operation of the robots as appropriate, and selecting and/or taking remedial actions if warranted.

在一項實施方案中,回應於一函數叫用或類似程序來執行碰撞偵測或估計,並向其返回一布林值。碰撞評估器253可經由一或多個場可程式化閘陣列(FPGA) 259及/或一或多個特殊應用積體電路(ASIC)來實施,以執行碰撞偵測,同時實現低延時、相對低功耗,並增加可處置之一資訊量。In one embodiment, collision detection or estimation is performed in response to a function call or similar process and a Boolean value is returned thereto. 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 perform collision detection while achieving low latency, relatively low power consumption, and increasing the amount of information that can be processed.

在各種實施方案中,此類操作可完全在硬體電路系統中執行,或者作為儲存在諸如系統記憶體224a之一記憶體中之軟體來執行,並且由一或多個硬體處理器222a來執行,該等硬體處理器222a諸如係一或多個微處理器、數位信號處理器(DSP)、場可程式化閘陣列(FPGA)、特殊應用積體電路(ASIC)、圖形處理單元(GPU)處理器、可程式化邏輯控制器(PLC)、電可程式化唯讀記憶體(EEPROM),或者作為硬體電路系統與儲存在記憶體儲存器件中之軟體之一組合來執行。In various implementations, such operations may be performed entirely in hardware circuitry, or as software stored in a memory such as system memory 224a, and executed by one or more hardware processors 222a, such as one or more microprocessors, digital signal processors (DSPs), field programmable gate arrays (FPGAs), application specific integrated circuits (ASICs), graphics processing unit (GPU) processors, programmable logic controllers (PLCs), electrically programmable read-only memories (EEPROMs), or as a combination of hardware circuitry and software stored in a memory storage device.

可全部或部分採用之感知、規劃圖構造、碰撞偵測及路徑搜尋之各項態樣亦闡述於以下專利中:於2017年6月9日提出申請之國際專利申請案第PCT/US2017/036880號;於2016年1月5日提出申請之國際專利申請公開案第WO 2016/122840號;於2018年1月12日提出申請之美國專利申請案第62/616,783號;於2019年6月3日提出申請之美國專利申請案第62/856,548號;於2020年6月23日提出申請之國際專利申請案第PCT/US2020/039193號且其公開號為WO 2020/263861;公開號為WO 2021/150439之國際專利申請案PCT/US2021/013610;及/或於2022年4月6日提出申請之美國專利申請案63/327,917。熟習此項技術者將瞭解,所圖解說明實施方案以及其他實施方案可用其他系統結構及配置及/或其他運算系統結構及配置來實踐,包含機器人、手持式裝置、多處理器系統、基於微處理器的或可程式化消費電子器件、個人電腦(「PC」)、經網路連接PC、小型電腦、大型電腦及諸如此類。實施方案或實施例或其部分(例如,在組態時間及運行時間)可在分佈式運算環境中實踐,其中任務或模組由透過一通信網路鏈接之遠端處理裝置來執行。在一分佈式運算環境中,程式模組可位於本端及遠端記憶體儲存裝置或媒體兩者中。然而,某些類型之資訊儲存在何處以及如何儲存對於幫助改良運動規劃係重要的。Various aspects of perception, map construction, collision detection, and path finding that may be used in whole or in part are also described in the following patents: International Patent Application No. PCT/US2017/036880 filed on June 9, 2017; International Patent Application Publication No. WO 2016/122840 filed on January 5, 2016; U.S. Patent Application No. 62/616,783 filed on January 12, 2018; U.S. Patent Application No. 62/856,548 filed on June 3, 2019; International Patent Application No. PCT/US2020/039193 filed on June 23, 2020 and its publication number is WO 2020/263861; International Patent Application PCT/US2021/013610, Publication No. WO 2021/150439; and/or U.S. Patent Application No. 63/327,917, filed on April 6, 2022. Those skilled in the art will appreciate that the illustrated embodiments and other embodiments may be practiced with other system structures and configurations and/or other computing system structures and configurations, including robots, handheld devices, multiprocessor systems, microprocessor-based or programmable consumer electronics, personal computers ("PCs"), network-connected PCs, minicomputers, mainframe computers, and the like. Embodiments or embodiments or portions thereof (e.g., at configuration time and run time) may be practiced in a distributed computing environment where tasks or modules are executed by remote processing devices linked via a communications network. In a distributed computing environment, program modules may be located in both local and remote memory storage devices or media. However, where and how certain types of information are stored are important to help improve campaign planning.

舉例而言,各種運動規劃解決方案將一路線圖(亦即,一運動規劃圖)「烘烤」至處理器(例如,FPGA 259)中,並且路線圖中之每一邊緣對應於處理器之一不可重新組態之布林電路。其中將規劃圖「烘烤」至處理器中之設計提出了一個問題,亦即有限處理器電路系統無法儲存多個或大型規劃圖且一般不可重新組態以供與不同機器人搭配使用。For example, various motion planning solutions "bake" a roadmap (i.e., a motion plan) into a processor (e.g., FPGA 259), and each edge in the roadmap corresponds to a non-reconfigurable Boolean circuit of the processor. Designs that "bake" the plan into the processor present a problem in that finite processor circuitry cannot store multiple or large plans and generally cannot be reconfigured for use with different robots.

一種解決方案提供了一種將規劃圖資訊放置至記憶體儲存器件中之可重新組態設計。此方法將資訊儲存在記憶體中而不是烘烤至一電路中。另一方法採用經模板化可重新組態電路來代替記憶體。One solution provides a reconfigurable design that places the schematic information in a memory storage device. This approach stores the information in memory rather than baking it into a circuit. Another approach uses a templated reconfigurable circuit to replace the memory.

如上所述,資訊(例如,機器人幾何模型)中之某些可在一組態時間期間(亦即在運行時間之前)被捕獲、接收、輸入或提供。所接收資訊可在組態時間期間被處理,以產生經處理資訊(例如,運動規劃圖208),從而在運行時間期間使操作加速或使運算複雜度降低。As described above, some of the information (e.g., robot geometry) may be captured, received, input, or provided during a configuration time (i.e., prior to run time). The received information may be processed during configuration time to produce processed information (e.g., motion plan 208) to speed up operations or reduce computational complexity during run time.

在運行時間期間,可對整個環境(亦即,共用工作空間)執行碰撞偵測,包含針對任何位姿或位姿之間的移動判定機器人之任何部分與機器人本身之另一部分、與其他機器人或其部分、與環境中之持續或靜態障礙物或者與環境中具有未知軌跡之瞬時障礙物(例如,人)是否將碰撞或被預測為與其碰撞。During runtime, collision detection may be performed for the entire environment (i.e., the shared workspace), including determining, for any pose or motion between poses, whether any part of the robot will collide or is predicted 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., humans).

第一機器人控制系統200a或某些其他基於處理器之系統可包含一滯後監控器264 (可互換地稱為滯後時間監控器264)及/或一補救行動選擇器266。滯後時間監控器264及/或一補救行動選擇器266在一運行時間期間(例如,在一或多個機器人完成一或多個任務之操作期間)操作,從而對機器人之操作進行監控,並且在得到保證時視情況選擇及採取補救行動(例如,若實際滯後時間接近或超過一裕量或臨限值,諸如一對應可接受滯後時間,則使一或多個機器人減速或停止)。The first robot control system 200a or some other processor-based system may include a lag monitor 264 (interchangeably referred to as a lag time monitor 264) and/or a remedial action selector 266. The lag time monitor 264 and/or a remedial action selector 266 operate during an operating time (e.g., during operation of one or more robots to complete one or more tasks) to monitor the operation of the robots and select and take remedial actions as appropriate when warranted (e.g., if the actual lag time approaches or exceeds a margin or threshold value, such as a corresponding acceptable lag time, then slowing down or stopping one or more robots).

滯後時間監控器264對由機器人執行之實際軌跡之實際滯後時間進行監控,並將實際滯後時間與對應標稱軌跡之裕量或臨限值(例如,表示或甚至等於對應可接受滯後時間之裕量或臨限值)進行比較。如先前所解釋,雖然在某些例項中實際軌跡可匹配標稱軌跡,但在諸多例項中實際軌跡將不會匹配標稱軌跡,通常實際軌跡之位姿、組態、狀態或運動中之至少某些之執行之一定時滯後於如由標稱軌跡規定之彼等位姿、組態、狀態或運動之定時。滯後時間監控器264判定實際滯後時間以及一機器人之實際軌跡之實際滯後時間之所監控量是否接近或超過一各別機器人之一裕量或臨限值(例如,一各別標稱軌跡之一各別所判定可接受滯後時間)。若在共用工作空間中操作之機器人中之任一者之實際滯後時間超過一各別臨限值(例如,接近或超過一對應可接受滯後時間),則滯後時間監控器264可例如提供一指示(例如,設定一旗標、發送一訊息及/或調用補救行動選擇器266)。在某些實施方案中,裕量或臨限值可被設定為包含一所期望安全係數,例如係小於各別標稱軌跡之所判定可接受滯後時間之一設定量或所界定百分比。因此,在某些實施方案中,裕量或臨限值可被設定為等於對應可接受滯後時間,而在其他實施方案中,裕量或臨限值可小於(例如,小10%)對應可接受滯後時間,並且藉此允許在一自碰撞可能發生之前採取偵測及補救行動。The hysteresis monitor 264 monitors the actual hysteresis of the actual trajectory executed by the robot and compares the actual hysteresis to a margin or threshold value corresponding to the nominal trajectory (e.g., representing or even equal to a margin or threshold value corresponding to an acceptable hysteresis). As previously explained, while in some instances the actual trajectory may match the nominal trajectory, in many instances the actual trajectory will not match the nominal trajectory, typically with a timing of at least some of the execution of the pose, configuration, state, or motion of the actual trajectory lagging behind the timing of those poses, configurations, states, or motions as specified by the nominal trajectory. The lag time monitor 264 determines whether the actual lag time and the monitored amount of the actual lag time of the actual trajectory of a robot approach or exceed a margin or threshold value for a respective robot (e.g., a respective determined acceptable lag time for a respective nominal trajectory). If the actual lag time of any of the robots operating in the shared workspace exceeds a respective threshold value (e.g., approaches or exceeds a corresponding acceptable lag time), the lag time monitor 264 can, for example, provide an indication (e.g., set a flag, send a message and/or call the remedial action selector 266). In some embodiments, the margin or threshold value may be set to include a desired safety factor, such as a set amount or defined percentage less than the determined acceptable hysteresis time for the respective nominal trajectory. Thus, in some embodiments, the margin or threshold value may be set equal to the corresponding acceptable hysteresis time, while in other embodiments, the margin or threshold value may be less than (e.g., 10% less) the corresponding acceptable hysteresis time and thereby allow detection and remedial action to be taken before a self-collision may occur.

選用補救行動選擇器266回應於對任何機器人之一各別軌跡之所監控滯後時間量超過一各別臨限值(例如,所判定可接受滯後時間)之一判定來選擇一或多個適當補救行動及/或致使採取所選擇補救行動。對實際滯後時間超過一各別臨限值(例如,所判定可接受滯後時間)之一判定意味著不再確保無自碰撞運動,因此採取一或多個補救行動可得到保證。The remedial action selector 266 selects one or more appropriate remedial actions and/or causes the selected remedial actions to be taken in response to a determination that the monitored amount of lag time for a respective trajectory of any robot exceeds a respective threshold value (e.g., a determined acceptable lag time). A determination that the actual lag time exceeds a respective threshold value (e.g., a determined acceptable lag time) means that self-collision-free motion is no longer ensured, and therefore taking one or more remedial actions may be warranted.

補救行動可包含以下各項中之一或多者:使一或多個機器人之一移動停止;使一或多個機器人之一移動減速;及/或使一或多個機器人之一移動加速。舉例而言,可使一個、兩個、更多個或甚至所有機器人之移動停止。又舉例而言,可使一個、兩個、更多個或甚至所有機器人之移動減速,例如相對於彼此減速不同量。又舉例而言,可使一個、兩個、更多個或甚至所有機器人之移動加速,例如相對於彼此加速不同量。又舉例而言,可使一或多個機器人之移動停止,而使一或多個機器人之移動減速。又舉例而言,可使一或多個機器人之移動停止,而使一或多個機器人之移動加速或保持恆定。又舉例而言,可使一或多個機器人之移動減速,而使一或多個機器人之移動加速或保持恆定。又舉例而言,可使一或多個機器人之移動停止,而使一或多個機器人之移動減速並且使一或多個其他機器人之移動加速或保持恆定。為了採取至少一個補救行動,基於處理器之系統可將指令發送給一或多個致動器(例如,經由運動控制器220之致動器218a至218c),以致使機器人之移動停止、減速、加速或甚至沿著如由各別標稱軌跡規定之一各別軌跡前進。舉例而言,此後續接著可係機器人之移動之一重新開始,例如自使移動停止或減速之處重新開始移動,儘管在某些例項中可包含返回至一各別標稱軌跡之開始處並自該開始處重新開始。The remedial action may include one or more of the following: stopping a movement of one or more robots; slowing down a movement of one or more robots; and/or speeding up a movement of one or more robots. For example, the movement of one, two, more, or even all robots may be stopped. For another example, the movement of one, two, more, or even all robots may be slowed down, such as by different amounts relative to each other. For another example, the movement of one, two, more, or even all robots may be accelerated, such as by different amounts relative to each other. For another example, the movement of one or more robots may be stopped, while the movement of one or more robots may be slowed down. For another example, the movement of one or more robots may be stopped, while the movement of one or more robots may be accelerated or maintained constant. For another example, the movement of one or more robots may be decelerated, while the movement of one or more robots may be accelerated or maintained constant. For another example, the movement of one or more robots may be stopped, while the movement of one or more robots may be decelerated and the movement of one or more other robots may be accelerated or maintained constant. To take at least one remedial action, the processor-based system may send instructions to one or more actuators (e.g., via actuators 218a to 218c of motion controller 220) to cause the robot's movement to stop, slow down, speed up, or even advance along a respective trajectory as specified by the respective nominal trajectory. This may be followed, for example, by a restart of the robot's movement, such as restarting the movement from where it was stopped or slowed down, although in some instances may include returning to the beginning of a respective nominal trajectory and restarting from that beginning.

圖3展示根據至少一項所圖解說明實施方案的一基於處理器之系統之操作之一方法300,該基於處理器之系統執行運動規劃以控制將在一共用工作空間中操作之機器人。基於處理器之系統包含一或多個處理器,其執行處理器可執行指令以基於其他機器人之一標稱軌跡來判定每一機器人之一可接受滯後時間,而不必考慮其他機器人之標稱軌跡中滯後時間之一效應,並且根據至少一項所圖解說明實施方案來產生或選擇規定標稱軌跡之運動計劃,該等標稱軌跡與各別可接受滯後時間相關聯。舉例而言,方法300可在一組態或「預運行」時間(亦即發生某些或所有運動規劃之一時間)期間執行,例如以為機器人中之每一者產生標稱軌跡及/或運動計劃。組態或「預運行」時間可發生在如由各別機器人之標稱軌跡規定之機器人之移動之前,舉例而言,在一運行時間之前,其中運行時間係一或多個機器人正在執行各別運動計劃之一時間。此有利地准許在運行時間之前執行運算最密集之工作中之某些,此時回應並非一特別關心之問題。在至少某些實施方案中,方法300或其一部分係在一組態時間或預運行時間之後的一運行時間(亦即,一或多個機器人正在執行任務之一時間)期間執行的。在又其他實施方案中,方法300係在一組態時間或預運行時間之後的一運行時間(亦即,一或多個機器人正在執行任務之一時間)期間執行的。3 shows a method 300 of operation of a processor-based system that performs motion planning to control robots to be operated in a common workspace according to at least one illustrated embodiment. The processor-based system includes one or more processors that execute instructions to determine an acceptable lag time for each robot based on a nominal trajectory of the other robots without considering an effect of the lag time in the nominal trajectory of the other robots, and to generate or select motion plans that specify nominal trajectories that are associated with respective acceptable lag times according to at least one illustrated embodiment. For example, the method 300 may be executed during a configuration or "pre-run" time (i.e., a time when some or all motion planning occurs), such as to generate nominal trajectories and/or motion plans for each of the robots. The configuration or "pre-run" time may occur prior to movement of the robots as dictated by the respective robots' nominal trajectories, for example, prior to a run time, where a run time is a time when one or more robots are executing respective motion plans. This advantageously permits some of the most computationally intensive work to be performed prior to run time, when responsiveness is not a particular concern. In at least some embodiments, method 300 or a portion thereof is performed during a run time (i.e., a time when one or more robots are performing a task) after a configuration time or a pre-run time. In still other embodiments, method 300 is performed during a run time (i.e., a time when one or more robots are performing a task) after a configuration time or a pre-run time.

方法300開始於302處,舉例而言,回應於系統或其組件之一啟動或接通電源、資訊或資料之接收或者藉由一叫用常式或程式之一叫用或調用。Method 300 begins at 302, for example, in response to a system or component thereof being started or powered on, receipt of information or data, or being called or invoked by a calling routine or program.

雖然在圖3中未經圖解說明,但方法300可:產生路徑;對彼等路徑執行碰撞評估或偵測或分析;設定、更新或調整路徑之邊緣之成本;並且視情況執行分析以基於成本來識別或選擇一路徑(例如,最小成本路徑)。此在上文關於圖2進行了闡述,並且至少此之至少某些態樣在本文中所引用之參考文獻中進行了闡述。為了簡明起見,將此自方法300省略。Although not illustrated in FIG. 3 , method 300 may: generate paths; perform collision assessment or detection or analysis on those paths; set, update or adjust costs of edges of the paths; and optionally perform analysis to identify or select a path (e.g., a minimum cost path) based on cost. This is explained above with respect to FIG. 2 , and at least some aspects of at least this are explained in the references cited herein. For the sake of brevity, this is omitted from method 300 .

視情況,在304處,基於處理器之系統之至少一個處理器產生每一機器人I之多組標稱軌跡或對該等標稱軌跡進行存取(例如,接收、擷取)。如前所述,標稱軌跡係「如所規定之」軌跡,其中每一軌跡包括一機器人之一有序組或序列之位姿、組態或狀態,該有序組或序列在兩個位姿、組態或狀態(例如,開始位姿、組態或狀態;結束位姿、組態或狀態)之間延伸,包含連同每一位姿或組態之一各別定時。定時可以相對術語(由相對於先前位姿之相對偏移定義之定時)或絕對術語(由相對於軌跡之執行之開始之相對偏移定義之定時,例如相對於一共同時脈)來規定。申請人注意到,雖然任何給定軌跡可對應於機器人之一平滑運動,但如本文中所使用之術語軌跡並不限於此,並且將通常規定既不平滑亦不定義機器人或其一部分之一直線路徑之一運動。在至少某些例項中,標稱軌跡可規定或包含機器人或其一部分之一運動中之一或多個暫停,及/或可規定機器人或其一部分之運動或路徑之一方向上之方向改變或甚至逆向、速率改變、速度改變、加速度改變,並且在方向、速度、速率或時間方面可能並非一平滑運動。舉例而言,一標稱軌跡可規定時間參數化之一有序組或序列之位姿,一機器人或其一部分透過該有序組或序列移動以執行一任務或者一任務之一部分。執行任何給定任務可採用一個標稱軌跡或不止一個標稱軌跡。如本文中所闡述,一機器人或其一部分之實際運動或實際軌跡可能偏離一各別標稱軌跡,例如歸因於位姿之間轉變時之非預期延遲(例如,舉例而言歸因於在目標物件處(例如,上方)比所預期的逗留或停留得更長之一需要)。Optionally, at 304, at least one processor of the processor-based system generates or accesses (e.g., receives, captures) multiple sets of nominal trajectories for each robot 1. As previously described, nominal trajectories are "as specified" trajectories, wherein each trajectory includes an ordered set or sequence of poses, configurations, or states of a robot, the ordered set or sequence extending between two poses, configurations, or states (e.g., a starting pose, configuration, or state; an ending pose, configuration, or state), including a separate timing for each pose or configuration. Timing can be specified in relative terms (timing defined by a relative offset from a previous pose) or absolute terms (timing defined by a relative offset from the start of execution of the trajectory, such as relative to a common clock). Applicants note that while any given trajectory may correspond to a smooth motion of a robot, the term trajectory as used herein is not so limited and will generally specify a motion that is neither smooth nor defines a straight path of a robot or a portion thereof. In at least some instances, a nominal trajectory may specify or include one or more pauses in a motion of a robot or a portion thereof, and/or may specify changes in direction or even reversals in direction, changes in velocity, changes in speed, changes in acceleration in a direction of motion or path of a robot or a portion thereof, and may not be a smooth motion in direction, speed, velocity, or time. For example, a nominal trajectory may specify an ordered set or sequence of poses parameterized in time through which a robot or a portion thereof moves to perform a task or a portion of a task. Any given task may be performed using one nominal trajectory or more than one nominal trajectory. As described herein, the actual motion or actual trajectory of a robot or a portion thereof may deviate from a respective nominal trajectory, for example due to unexpected delays in transitioning between poses (e.g., due to a need to linger or stay at (e.g., over) a target object longer than expected, for example).

可採用多種技術及/或演算法中之任一種來產生標稱軌跡,例如基於取樣之運動規劃器(SBMP),諸如概率路線圖(PRM)或快速探索隨機樹(RRT,RTT*)、穩定稀疏RRT* (SST*)及/或快速匹配樹(FMT)。在至少一項實施方案中,標稱軌跡可經由公開號為WO2021150439A1之國際專利申請案PCT/US2021/013610中所闡述之系統、方法及技術來產生。本專利申請案之教示不限於一具體形式之標稱軌跡產生。有利地,在此等態樣之任何組合或排列中,本文中之教示包含:在運算上有效地使用標稱軌跡來產生具有相關聯可接受滯後時間之運動計劃;依據滯後時間來監控實際運動與標稱軌跡之偏離;視情況對超過各別可接受滯後時間之偏離採取補救行動;及/或視情況使用所判定滯後時間來為運動計劃選擇一組標稱軌跡以增強操作之穩健性。Nominal trajectories may be generated using any of a variety of techniques and/or algorithms, such as a sample-based motion planner (SBMP), such as a probabilistic roadmap (PRM) or rapidly exploring random trees (RRT, RTT*), stable sparse RRT* (SST*), and/or fast matching trees (FMT). In at least one embodiment, the nominal trajectory may be generated by the systems, methods, and techniques described in international patent application PCT/US2021/013610, having publication number WO2021150439A1. The teachings of this patent application are not limited to a specific form of nominal trajectory generation. Advantageously, in any combination or arrangement of such aspects, the teachings herein include: computationally efficiently using nominal trajectories to generate a motion plan having an associated acceptable hysteresis time; monitoring deviations of actual motion from the nominal trajectory based on the hysteresis time; taking remedial action for deviations exceeding respective acceptable hysteresis times, as appropriate; and/or using the determined hysteresis times to select a set of nominal trajectories for the motion plan to enhance robustness of the operation, as appropriate.

在306處,基於處理器之系統之至少一個處理器將一機器人計數器I初始化,例如將機器人計數器設定為等於一整數值1。在308處,基於處理器之系統之至少一個處理器執行一外部迭代迴路,從而對將在一共用工作空間中操作之兩個或更多個機器人中之每一者執行一迭代,或者直至達到一停止條件為止(例如,判定確保無自碰撞運動之一最大滯後時間)。At 306, at least one processor of the processor-based system initializes a robot counter I, e.g., setting the robot counter equal to an integer value of 1. At 308, at least one processor of the processor-based system executes an outer iteration loop, thereby performing an iteration for each of two or more robots to be operated in a common workspace, or until a stop condition is reached (e.g., determining a maximum lag time that ensures no self-collision motion).

在310處,基於處理器之系統之至少一個處理器將一標稱軌跡計數器J初始化,例如將標稱軌跡計數器設定為等於一整數值1。At 310, at least one processor of the processor-based system initializes a nominal trajectory counter J, for example, setting the nominal trajectory counter equal to an integer value of 1.

在312處,基於處理器之系統之至少一個處理器執行一內部迭代迴路,從而對給定機器人之標稱軌跡中之每一者執行一迭代,至少直至達到一停止條件為止。At 312, at least one processor of the processor-based system executes an inner iterative loop, performing one iteration for each of the nominal trajectories of a given robot, at least until a stop condition is reached.

在314處,基於處理器之系統之至少一個處理器判定當前機器人之當前標稱軌跡(亦即,內部迭代迴路中之當前)之一各別可接受滯後時間(亦即,外部迭代迴路中之當前)。各別可接受滯後時間反映了當前標稱軌跡J中之一最大可接受延遲或滯後,當當前機器人執行標稱軌跡時,該最大可接受延遲或滯後在對應可接受滯後時間被引入至當前機器人之標稱軌跡中的情況下仍擔保當前機器人相對於其他機器人之無自碰撞運動,其中每一機器人按照各別標稱軌跡移動。一給定機器人I之可接受滯後時間擔保了自碰撞自由,只要所有其他機器人都在其各別標稱軌跡上操作(亦即,其中滯後時間=0)。換言之,只要一給定機器人之一各別當前實際滯後時間小於或等於(亦即,不大於)該機器人之各別可接受滯後時間並且其他機器人按照其標稱軌跡操作,機器人便不會彼此碰撞(亦即,擔保機器人之間的自碰撞自由)。At 314, at least one processor of the processor-based system determines a respective acceptable hysteresis time (i.e., current in an outer iterative loop) of a current nominal trajectory (i.e., current in an inner iterative loop) of the current robot. The respective acceptable hysteresis time reflects a maximum acceptable delay or hysteresis in the current nominal trajectory J that, when the current robot executes the nominal trajectory, is introduced into the nominal trajectory of the current robot while still ensuring self-collision-free motion of the current robot relative to other robots, each of which moves according to the respective nominal trajectory. The acceptable hysteresis time of a given robot I guarantees self-collision freedom as long as all other robots are operating on their respective nominal trajectories (i.e., with hysteresis time = 0). In other words, as long as a respective current actual hysteresis time of a given robot is less than or equal to (i.e., not greater than) the respective acceptable hysteresis time of that robot and the other robots are operating according to their nominal trajectories, the robots will not collide with each other (i.e., self-collision freedom between the robots is guaranteed).

在316處,基於處理器之系統之至少一個處理器判定是否已考慮給定機器人之標稱軌跡中之每一者,例如從而判定標稱軌跡計數器J是否等於給定機器人之標稱軌跡之總數目(例如,J=M?)。若尚未考慮給定機器人之標稱軌跡中之每一者,則控制轉至318,其中標稱軌跡計數器遞增(例如,J=J+1),且然後控制返回至312,以考慮給定機器人之下一標稱軌跡。若已考慮給定機器人之標稱軌跡中之每一者(例如,J=M),則控制直接轉至320。At 316, at least one processor of the processor-based system determines whether each of the nominal trajectories for the given robot has been considered, for example, thereby determining whether the nominal trajectory counter J is equal to the total number of nominal trajectories for the given robot (e.g., J=M?). If each of the nominal trajectories for the given robot has not been considered, control transfers to 318, where the nominal trajectory counter is incremented (e.g., J=J+1), and then control returns to 312 to consider the next nominal trajectory for the given robot. If each of the nominal trajectories for the given robot has been considered (e.g., J=M), control transfers directly to 320.

視情況,在320處,基於處理器之系統之至少一個處理器選擇針對給定機器人來判定之一組所判定可接受滯後時間中之一最大值。Optionally, at 320, at least one processor of the processor-based system selects a maximum value of a set of determined acceptable lag times determined for a given robot.

在322處,基於處理器之系統之至少一個處理器為給定機器人提供一或多個所判定可接受滯後時間(例如,提供所判定可接受滯後時間中之所選擇最大值),以供在判定至少給定機器人之一運動計劃及/或控制至少給定機器人之操作時使用。舉例而言,此可包含將所判定可接受滯後時間提供給一不同處理器,或者將所判定可接受滯後時間傳送給處理器之一不同暫存器。At 322, at least one processor of the processor-based system provides one or more determined acceptable hysteresis times (e.g., provides a selected maximum of the determined acceptable hysteresis times) for a given robot for use in determining a motion plan for at least the given robot and/or controlling operation of at least the given robot. For example, this may include providing the determined acceptable hysteresis times to a different processor, or transmitting the determined acceptable hysteresis times to a different register of the processor.

在324處,基於處理器之系統之至少一個處理器判定是否已考慮機器人中之每一者,例如從而判定機器人計數器I是否等於機器人之總數目(例如,I=N?)。若機器人中之每一者尚未被考慮(例如,I<N),則控制轉至326,其中基於處理器之系統之至少一個處理器對機器人計數器進行迭代(例如,I=I+1),且然後控制返回至308,以考慮下一機器人。若機器人中之每一者已被處理(例如,I=N),則控制直接轉至328。At 324, at least one processor of the processor-based system determines whether each of the robots has been considered, e.g., thereby determining whether the robot counter I is equal to the total number of robots (e.g., I=N?). If each of the robots has not been considered (e.g., I<N), control passes to 326, where the at least one processor of the processor-based system iterates the robot counter (e.g., I=I+1), and then control returns to 308 to consider the next robot. If each of the robots has been processed (e.g., I=N), control passes directly to 328.

在328處,基於處理器之系統之至少一個處理器為每一機器人產生或選擇一各別運動計劃。運動計劃可係或可表示機器人的與可接受滯後時間中之一最大值相關聯之標稱軌跡。運動計劃可係或可表示一或多個機器人之標稱軌跡。此方法可有利地增強由運動規劃產生之運動計劃之穩健性,並且因此改良執行所得運動計劃之機器人之操作。At 328, at least one processor of the processor-based system generates or selects a separate motion plan for each robot. The motion plan may be or may represent a nominal trajectory for the robot associated with a maximum value in acceptable lag time. The motion plan may be or may represent the nominal trajectory for one or more robots. This method may advantageously enhance the robustness of the motion plan generated by the motion planner and thereby improve the operation of the robot executing the resulting motion plan.

在330處,基於處理器之系統之至少一個處理器將各別運動計劃提供給每一機器人或一運動控制器,以致使機器人按照各別運動計劃來移動。At 330, at least one processor of the processor-based system provides the respective motion plan to each robot or a motion controller so that the robots move according to the respective motion plan.

在332處,方法300可終止,例如直至再次被調用為止。雖然方法300係依據一有序流程來闡述的,但在諸多實施方案中,各種動作或操作將同時或並行執行,及/或可包含額外動作及/或省略某些動作。At 332, method 300 may terminate, for example, until called again. Although method 300 is described according to an ordered flow, in many implementations, various actions or operations may be performed simultaneously or in parallel, and/or may include additional actions and/or omit certain actions.

圖4展示根據至少一項所圖解說明實施方案的基於處理器之系統之操作之一方法400,該基於處理器之系統執行運動規劃以控制將在一共用工作空間中操作之機器人。該基於處理器之系統包含一或多個處理器,該處理器執行處理器可執行指令以基於其他機器人之一標稱軌跡來判定每一機器人之一可接受滯後時間,同時必定考慮其他機器人之標稱軌跡中滯後時間之一效應,並且根據至少一項所圖解說明實施方案來產生或選擇規定標稱軌跡之運動計劃,該標稱軌跡與各別可接受滯後時間相關聯。舉例而言,方法400可在一組態或「預運行」時間(亦即發生某些或所有運動規劃之一時間)期間執行,例如以為機器人中之每一者產生標稱軌跡及/或運動計劃。組態或「預運行」時間可發生在如由各別機器人之標稱軌跡規定之機器人之移動之前,舉例而言,在一運行時間之前,其中運行時間係一或多個機器人正在執行各別運動計劃之一時間。此有利地准許在運行時間之前執行運算最密集工作中之某些,此時回應並非一特別關心之問題。在至少某些實施方案中,方法400或其一部分係在一組態時間或預運行時間之後的一運行時間(亦即,一或多個機器人正在執行任務之一時間)期間執行的。在又其他實施方案中,方法400係在一組態時間或預運行時間之後的一運行時間(亦即,一或多個機器人正在執行任務之一時間)期間執行的。4 shows a method 400 of operation of a processor-based system that performs motion planning to control robots to be operated in a common 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 a nominal trajectory of the other robots, while always considering an effect of the lag time in the nominal trajectory of the other robots, and to generate or select motion plans that specify nominal trajectories that are associated with respective acceptable lag times according to at least one illustrated embodiment. For example, the method 400 may be executed during a configuration or "pre-run" time (i.e., a time when some or all motion planning occurs), such as to generate nominal trajectories and/or motion plans for each of the robots. The configuration or "pre-run" time may occur prior to movement of the robots as dictated by the respective robots' nominal trajectories, for example, prior to a run time, where a run time is a time when one or more robots are executing respective motion plans. This advantageously permits some of the most computationally intensive work to be performed prior to run time, when responsiveness is not a particular concern. In at least some embodiments, method 400 or a portion thereof is performed during a run time (i.e., a time when one or more robots are performing a task) after a configuration time or a pre-run time. In still other embodiments, method 400 is performed during a run time (i.e., a time when one or more robots are performing a task) after a configuration time or a pre-run time.

方法400開始於402處,舉例而言,回應於系統或其組件之一啟動或接通電源、資訊或資料之接收或者藉由一叫用常式或程式之一叫用或調用。Method 400 begins at 402, for example, in response to a system or component thereof being started or powered on, receipt of information or data, or being called or invoked by a calling routine or program.

雖然圖4中未圖解說明,但方法400可:產生路徑;對彼等路徑執行碰撞評估或偵測或分析;設定、更新或調整路徑之邊緣之成本;並且視情況執行分析以基於成本來識別或選擇一路徑(例如,最小成本路徑)。此在上文參考圖2進行了闡述,並且此之至少某些態樣在本文中所引用之參考文獻中進行了闡述。為了簡明起見,將此自方法400省略。Although not illustrated in FIG. 4 , method 400 may: generate paths; perform collision assessment or detection or analysis on those paths; set, update or adjust costs of edges of the paths; and optionally perform analysis to identify or select a path (e.g., a minimum cost path) based on cost. This is explained above with reference to FIG. 2 , and at least some aspects of this are explained in the references cited herein. For the sake of brevity, this is omitted from method 400 .

視情況,在404處,基於處理器之系統之至少一個處理器為每一機器人(i)產生多組標稱軌跡或對多組標稱軌跡進行存取(例如,接收、擷取)。如前所述,標稱軌跡係「如所規定之」軌跡,其中每一軌跡包括一機器人在兩個位姿、組態或狀態之間的一有序組或序列之位姿、組態或狀態,連同每一位姿或組態之一各別定時。定時可以相對術語(由相對於先前位姿之相對偏移定義之定時)或絕對術語(由相對於軌跡之執行開始之相對偏移定義之定時,例如相對於一共同時脈)來規定。申請人注意到,雖然任何給定軌跡可對應於機器人之一平滑運動,但如本文中所使用之術語軌跡並不限於此,並且通常規定既不平滑亦不定義機器人或其一部分之一直線路徑之一運動。在至少某些例項中,標稱軌跡可規定或包含機器人或其一部分之一運動中之一或多個暫停,及/或可規定機器人或其一部分之運動或路徑之一方向上之方向改變或甚至逆向、速率改變、速度改變、加速度改變,並且在方向、速度、速率或時間方面可能並非一平滑運動。舉例而言,一標稱軌跡可規定時間參數化之一有序組或序列之位姿,一機器人或其一部分透過一有序組或序列之位姿來移動以執行一任務或者一任務之一部分。執行任何給定任務可採用一個標稱軌跡或不止一個標稱軌跡。如本文中所闡述,一機器人或其一部分之實際運動或實際軌跡可能偏離一各別標稱軌跡,例如歸因於位姿之間轉變時之非期望延遲(例如,舉例而言歸因於在一目標物件處(例如,上方)比所預期的逗留或停留得更長之一需求)。Optionally, at 404, at least one processor of the processor-based system generates or accesses (e.g., receives, captures) multiple sets of nominal trajectories for each robot (i). As previously described, nominal trajectories are "as specified" trajectories, where each trajectory includes an ordered set or sequence of poses, configurations, or states of a robot between two poses, configurations, or states, together with a respective timing for each pose or configuration. The timing can be specified in relative terms (timing defined by a relative offset from a previous pose) or absolute terms (timing defined by a relative offset from the start of execution of the trajectory, such as relative to a common clock). Applicants note that while any given trajectory may correspond to a smooth motion of a robot, the term trajectory as used herein is not so limited and generally specifies a motion that is neither smooth nor defines a straight path of a robot or a portion thereof. In at least some instances, a nominal trajectory may specify or include one or more pauses in a motion of a robot or a portion thereof, and/or may specify changes in direction or even reversals in direction, changes in velocity, changes in speed, changes in acceleration in a direction of motion or path of a robot or a portion thereof, and may not be a smooth motion in direction, speed, velocity, or time. For example, a nominal trajectory may specify an ordered set or sequence of poses parameterized in time through which a robot or a portion thereof moves to perform a task or a portion of a task. Any given task may be performed using one nominal trajectory or more than one nominal trajectory. As described herein, the actual motion or actual trajectory of a robot or a portion thereof may deviate from a respective nominal trajectory, for example due to undesirable delays in transitioning between poses (e.g., due to a need to linger or stay longer than expected at (e.g., over) a target object).

可採用多種技術及/或演算法中之任一種來產生標稱軌跡,例如基於取樣之運動規劃器(SBMP),諸如概率路線圖(PRM)或快速探索隨機樹(RRT、RTT*)、穩定稀疏RRT* (SST*)及/或快速匹配樹(FMT)。在至少一項實施方案中,標稱軌跡可經由公開號為WO2021150439A1之國際專利申請案PCT/US2021/013610中所闡述之系統、方法及技術來產生。本專利申請案之教示不限於一具體形式之標稱軌跡產生。有利地,在此等態樣之任何組合或排列中,本文中之教示包含:在運算上高效地使用標稱軌跡來產生具有相關聯可接受滯後時間之運動計劃;依據滯後時間來監控實際運動與標稱軌跡之偏離;視情況對超過各別可接受滯後時間之一偏離採取補救行動;及/或視情況使用所判定滯後時間來為運動計劃選擇一組標稱軌跡以增強操作之穩健性。Nominal trajectories may be generated using any of a variety of techniques and/or algorithms, such as a sample-based motion planner (SBMP), such as a probabilistic roadmap (PRM) or rapidly exploring random trees (RRT, RTT*), stable sparse RRT* (SST*), and/or fast matching trees (FMT). In at least one embodiment, the nominal trajectory may be generated by the systems, methods, and techniques described in international patent application PCT/US2021/013610, having publication number WO2021150439A1. The teachings of this patent application are not limited to a specific form of nominal trajectory generation. Advantageously, in any combination or arrangement of such aspects, the teachings herein include: computationally efficiently using nominal trajectories to generate a motion plan having an associated acceptable hysteresis time; monitoring deviations of actual motion from the nominal trajectory based on the hysteresis time; taking remedial action for a deviation that exceeds a respective acceptable hysteresis time, as appropriate; and/or using the determined hysteresis time to select a set of nominal trajectories for the motion plan to enhance the robustness of the operation, as appropriate.

在406處,基於處理器之系統之至少一個處理器將一機器人計數器I初始化,例如將機器人計數器設定為等於一整數值1。在408處,基於處理器之系統之至少一個處理器執行一外部迭代迴路,從而對將在一共用工作空間中操作之兩個或更多個機器人中之機器人中之每一者執行一迭代,或者直至達到一停止條件為止(例如,判定確保機器人當中無自碰撞運動之一最大滯後時間)。At 406, at least one processor of the processor-based system initializes a robot counter I, e.g., setting the robot counter equal to an integer value of 1. At 408, at least one processor of the processor-based system executes an outer iteration loop, thereby performing an iteration for each of two or more robots to be operated in a common workspace, or until a stopping condition is reached (e.g., determining a maximum lag time that ensures no self-collision motion among the robots).

在410處,基於處理器之系統之至少一個處理器將一標稱軌跡計數器J初始化,例如將標稱軌跡計數器設定為等於一整數值1。在412處,基於處理器之系統之至少一個處理器執行一內部迭代迴路,從而對給定機器人之標稱軌跡中之每一者執行一迭代,至少直至達到一停止條件為止。At 410, at least one processor of the processor-based system initializes a nominal trajectory counter J, for example, setting the nominal trajectory counter equal to an integer value of 1. At 412, at least one processor of the processor-based system executes an inner iteration loop, performing one iteration for each of the nominal trajectories of a given robot, at least until a stop condition is reached.

在414處,基於處理器之系統之至少一個處理器判定當前機器人(亦即,外部迭代迴路中之當前)之當前標稱軌跡(亦即,內部迭代迴路中之當前)之一各別可接受滯後時間。各別可接受滯後時間反映了當前標稱軌跡J中之一最大可接受延遲或滯後,當當前機器人執行標稱軌跡時,該最大可接受延遲或滯後在對應可接受滯後時間被引入至當前機器人之標稱軌跡中的情況下仍擔保當前機器人相對於其他機器人之無自碰撞運動,其中每一機器人在引入了各別可接受滯後時間的情況下按照各別標稱軌跡來移動。只要所有其他機器人之當前實際滯後時間小於其自身各別可接受滯後時間,一給定機器人I之可接受滯後時間便擔保自碰撞自由。亦即,其他機器人不必在其各別標稱軌跡上操作(亦即,其中滯後時間=0)。換言之,只要在共用工作空間中操作之所有機器人中機器人中之每一者之一各別當前實際滯後時間小於或等於(亦即,不大於)機器人之各別可接受滯後時間,機器人便不會彼此碰撞或與其自身碰撞(亦即,擔保機器人之間的自碰撞自由)。At 414, at least one processor of the processor-based system determines a respective acceptable hysteresis time of a current nominal trajectory (i.e., current in an inner iterative loop) of a current robot (i.e., current in an outer iterative loop). The respective acceptable hysteresis time reflects a maximum acceptable delay or hysteresis in the current nominal trajectory J that, when the current robot executes the nominal trajectory, still ensures self-collision-free motion of the current robot relative to other robots when a corresponding acceptable hysteresis time is introduced into the nominal trajectory of the current robot, wherein each robot moves according to the respective nominal trajectory with the respective acceptable hysteresis time introduced. The acceptable hysteresis time of a given robot I is guaranteed to be self-collision free as long as the current actual hysteresis time of all other robots is less than their own respective acceptable hysteresis time. That is, the other robots do not have to operate on their respective nominal trajectories (that is, where hysteresis time = 0). In other words, as long as one of the respective current actual hysteresis times of each of the robots among all robots operating in the common workspace is less than or equal to (that is, not greater than) the robot's respective acceptable hysteresis time, the robots will not collide with each other or with themselves (that is, self-collision freedom between robots is guaranteed).

在416處,基於處理器之系統之至少一個處理器判定是否已考慮給定機器人之標稱軌跡中之每一者,例如從而判定標稱軌跡計數器J是否等於給定機器人之標稱軌跡之總數目(例如,J=M?)。若尚未考慮給定機器人之標稱軌跡中子每一者,則控制轉至418,其中標稱軌跡計數器遞增(例如,J=J+1),且然後控制返回至412,以考慮給定機器人之下一標稱軌跡。若已考慮給定機器人之標稱軌跡中之每一者(例如,J=M),則控制直接轉至420。At 416, at least one processor of the processor-based system determines whether each of the nominal trajectories for the given robot has been considered, e.g., thereby determining whether the nominal trajectory counter J is equal to the total number of nominal trajectories for the given robot (e.g., J=M?). If each of the nominal trajectories for the given robot has not been considered, control passes 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 for the given robot. If each of the nominal trajectories for the given robot has been considered (e.g., J=M), control passes directly to 420.

視情況,在420處,基於處理器之系統之至少一個處理器選擇針對給定機器人來判定之一組所判定可接受滯後時間中之一最大值。在422處,基於處理器之系統之至少一個處理器為給定機器人提供一或多個所判定可接受滯後時間(例如,所判定可接受滯後時間中之所選擇最大值),以供在判定至少給定機器人之一運動計劃及/或控制至少給定機器人之操作時使用。舉例而言,此可包含將所判定可接受滯後時間提供給一不同處理器,或者將所判定可接受滯後時間傳送至處理器之一不同暫存器。Optionally, at 420, at least one processor of the processor-based system selects a maximum value of a set of determined acceptable lag times determined for a given robot. At 422, at least one processor of the processor-based system provides one or more determined acceptable lag times (e.g., the selected maximum value of the determined acceptable lag times) for the given robot for use in determining a motion plan for at least the given robot and/or controlling operation of at least the given robot. For example, this may include providing the determined acceptable lag times to a different processor, or transmitting the determined acceptable lag times to a different register of the processor.

在424處,基於處理器之系統之至少一個處理器判定是否已考慮機器人中之每一者,例如從而判定機器人計數器I是否等於機器人之總數目(例如,I=N?)。若機器人中之每一者尚未被考慮(例如,I<N),則控制轉至426,其中基於處理器之系統之至少一個處理器對機器人計數器進行迭代(例如,I=I+1),且然後控制返回至408,以考慮下一機器人。若機器人中之每一者已被處理(例如,I=N),則控制直接轉至428。At 424, at least one processor of the processor-based system determines whether each of the robots has been considered, e.g., thereby determining whether the robot counter I is equal to the total number of robots (e.g., I=N?). If each of the robots has not been considered (e.g., I<N), control passes to 426, where the at least one processor of the processor-based system iterates the robot counter (e.g., I=I+1), and then control returns to 408 to consider the next robot. If each of the robots has been processed (e.g., I=N), control passes directly to 428.

在428處,基於處理器之系統之至少一個處理器為每一機器人產生或選擇一各別運動計劃。運動計劃可係或可表示機器人的與可接受滯後時間中之一最大值相關聯之標稱軌跡。運動計劃可係或可表示一或多個機器人之標稱軌跡。此方法可有利地增強藉由進行運動規劃來產生之運動計劃之穩健性,並且因此改良執行所得運動計劃之機器人之操作。At 428, at least one processor of the processor-based system generates or selects a separate motion plan for each robot. The motion plan can be or can represent a nominal trajectory of the robot associated with a maximum value in acceptable lag time. The motion plan can be or can represent the nominal trajectory of one or more robots. This method can advantageously enhance the robustness of the motion plan generated by performing motion planning, and thereby improve the operation of the robot executing the resulting motion plan.

在430處,基於處理器之系統之至少一個處理器將各別運動計劃提供給每一機器人或一運動控制器,以致使機器人按照各別運動計劃來移動。At 430, at least one processor of the processor-based system provides the respective motion plan to each robot or a motion controller so that the robots move according to the respective motion plan.

在432處,方法400可終止,例如直至再次被調用為止。雖然方法400係依據一有序流程來闡述的,但在諸多實施方案中,各種動作或操作將同時或並行執行,及/或可包含額外動作及/或省略某些動作。At 432, method 400 may terminate, for example, until called again. Although method 400 is described according to an ordered flow, in many implementations, various actions or operations may be performed simultaneously or in parallel, and/or may include additional actions and/or omit certain actions.

如本文中所闡述,為了判定可接受滯後時間,一基於處理器之系統可執行碰撞評估,以判定一組候選滯後時間中之哪一個將導致或可能導致一碰撞。碰撞評估之一種方法係使用機器人之掃掠體積來執行碰撞評估。掃掠體積表示由一機器人或其一部分在沿著一給定軌跡移動時掃掠之一體積。掃掠體積係由一給定機器人之幾何構造及運動學以及由一給定軌跡規定之一開始及結束位置來規定的。值得注意的係,掃掠體積本身並不受執行由軌跡規定之運動之特定時間之影響。因此,在機器人執行(execute或perform)任務之運行時間之前,掃掠體積可在一組態或預運行時間期間被有利地判定。因此,一基於處理器之系統可為將在一共用工作空間中操作之機器人中之每一者產生若干個(例如,複數個)路徑中之每一者之一掃掠體積,機器人之軌跡將自該等路徑產生。一基於處理器之系統可使用掃掠體積來執行碰撞評估。舉例而言,對於兩個或更多個機器人中之每一機器人,一基於處理器之系統可在以下兩者之間執行碰撞評估:i)表示機器人之各別標稱軌跡的一各別樣本軌跡之至少一部分,其中引入了至少一個各別滯後時間;及ii)兩個或更多個機器人中其他機器人中之每一者的各別軌跡中之每一者之一各別樣本之至少一部分,其中在兩個或更多個機器人中其他機器人中之每一者之各別軌跡中引入了至少一個各別滯後時間。回應於判定在該機器人與兩個或更多個機器人中其他機器人中之至少一者之間將發生或將可能發生(例如,表示為一概率或可能性)一碰撞,基於處理器之系統可針對機器人之一或多個標稱軌跡將小於導致一碰撞將發生之判定之一各別滯後時間的一各別滯後時間識別為各別可接受滯後時間。可接受滯後時間可表示來自標稱軌跡之位姿之定時之一最大可接受延遲,其仍擔保機器人透過由標稱軌跡規定之多序列之位姿進行之移動相對於兩個或更多個機器人中其他機器人之移動將保持無碰撞(機器人系統無自碰撞)。使用掃掠體積來判定可接受滯後時間之一非限制性方法闡述於下文圖5及圖6中。As described herein, to determine acceptable hysteresis times, a processor-based system may perform collision assessment to determine which of a set of candidate hysteresis times will result in or may result in a collision. One method of collision assessment is to perform collision assessment using a sweep volume of a robot. A sweep volume represents a volume swept by a robot or a portion thereof while moving along a given trajectory. The sweep volume is defined by the geometry and kinematics of a given robot and a start and end position defined by a given trajectory. Notably, the sweep volume itself is not affected by the specific time at which the motion defined by the trajectory is performed. Thus, the swept volume can be advantageously determined during a configuration or pre-runtime period before the robot executes or performs a task. Thus, a processor-based system can generate a swept volume for each of a number (e.g., a plurality) of paths from which the robot's trajectory will be generated for each of the robots to be operated in a common workspace. A processor-based system can use the swept volume to perform collision assessment. For example, for each robot of two or more robots, a processor-based system may perform a collision assessment between: i) at least a portion of a respective sample trajectory representing a respective nominal trajectory of the robot, wherein at least one respective hysteresis time is introduced; and ii) at least a portion of a respective sample of each of the respective trajectories of each of the other robots of the two or more robots, wherein at least one respective hysteresis time is introduced in the respective trajectory of each of the other robots of the two or more robots. In response to determining that a collision will occur or will likely occur (e.g., expressed as a probability or likelihood) between the robot and at least one of the other robots of the two or more robots, the processor-based system may identify as respective acceptable hysteresis times a respective hysteresis time for one or more nominal trajectories of the robot to be less than a respective hysteresis time that would result in a determination that a collision will occur. The acceptable hysteresis time may represent a maximum acceptable delay in the timing of the poses from the nominal trajectory that still ensures that the movement of the robot through the multiple sequences of poses specified by the nominal trajectory will remain collision-free (no self-collision of the robot system) relative to the movement of the other robots of the two or more robots. One non-limiting method of using the scan volume to determine acceptable lag time is described below in FIGS. 5 and 6 .

圖5展示根據至少一項所圖解說明實施方案的一基於處理器之系統之操作之一方法500,該基於處理器之系統為將在一共用工作空間中操作之若干個機器人中之每一者之一或多個軌跡產生掃掠體積。根據至少一項所圖解說明實施方案,基於處理器之系統包含一或多個處理器,其執行處理器可執行指令以產生掃掠體積。舉例而言,方法500可在一組態或「預運行」時間(亦即運動規劃中之某些或全部可發生之一時間)期間被執行,例如為機器人中之每一者產生標稱軌跡及/或運動計劃。舉例而言,組態或「預運行」時間可係處於運行時間之前,其中運行時間係一或多個機器人正在執行各別運動計劃之一時間。此有利地准許在運行時間之前執行運算最密集工作中之某些,此時回應並非一特別關心之問題。在至少某些實施方案中,機器人組態方法500或其一部分係在一組態時間或預運行時間之後的一運行時間(亦即,一或多個機器人正在執行任務之一時間)期間執行的。視情況,組態時操作可經由與執行運行時間操作之一基於處理器之系統不同之一基於處理器之系統來執行。方法500可例如視情況用於執行圖3、圖4及/或圖6之方法,例如作為在判定各別滯後可接受滯後時間時314 (圖3)及414 (圖4)執行碰撞偵測(參見方法600,圖6)之一部分。FIG5 shows a method 500 of operation of a processor-based system to generate a swept volume for one or more trajectories for each of a number of robots to be operated in a common workspace in accordance with at least one illustrated embodiment. According to at least one illustrated embodiment, the processor-based system includes one or more processors, whose execution processors can execute instructions to generate the swept volume. For example, method 500 can be executed during a configuration or "pre-run" time (i.e., a time when some or all of motion planning can occur), such as generating nominal trajectories and/or motion plans for each of the robots. For example, configuration or "pre-run" time may be prior to run time, where run time is a time when one or more robots are executing respective motion plans. This advantageously permits some of the most computationally intensive work to be performed prior to run time, when responsiveness is not a particular concern. In at least some embodiments, the robot configuration method 500 or a portion thereof is performed during a run time (i.e., a time when one or more robots are executing tasks) after a configuration time or pre-run time. Optionally, configuration-time operations may be performed via a processor-based system that is different from a processor-based system that performs run-time operations. Method 500 may, for example, be used to perform the methods of FIGS. 3 , 4 , and/or 6 , as appropriate, such as as part of performing collision detection (see method 600 , FIG. 6 ) when determining respective acceptable hysteresis times 314 ( FIG. 3 ) and 414 ( FIG. 4 ).

產生掃掠體積之方法500開始於502處,舉例而言,回應於系統或其組件之一啟動或接通電源、資訊或資料之接收、或藉由一叫用常式或程式之一叫用或調用。Method 500 of generating a swept volume begins at 502, for example, in response to a system or component thereof being started or powered on, receipt of information or data, or by a call or invocation of a call routine or program.

在504處,基於處理器之系統之至少一個處理器將一機器人計數器I初始化(例如,I=1)。在506處,基於處理器之系統之至少一個處理器執行一外部機器人處理迴路。外部機器人處理迴路允許基於處理器之系統之至少一個處理器為將在一共用工作空間中操作之機器人中之每一者執行掃掠體積產生。At 504, at least one processor of the processor-based system initializes a robot counter I (e.g., I=1). At 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 perform sweep volume generation for each of the robots to be operated in a common workspace.

在508處,基於處理器之系統之至少一個處理器將一軌跡計數器J初始化(例如,J=1)。在510處,基於處理器之系統之至少一個處理器執行一內部標稱軌跡處理迴路。內部標稱軌跡處理迴路被巢套在外部機器人處理迴路內。內部標稱軌跡處理迴路允許基於處理器之系統之至少一個處理器為給定機器人之一或多個標稱軌跡中之每一者產生各別掃掠體積。At 508, at least one processor of the processor-based system initializes a trajectory counter J (e.g., J=1). At 510, at least one processor of the processor-based system executes an inner nominal trajectory processing loop. The inner nominal trajectory processing loop is nested within the outer robot processing loop. The inner nominal trajectory processing loop allows the at least one processor of the processor-based system to generate a respective sweep volume for each of one or more nominal trajectories for a given robot.

在512處,基於處理器之系統之至少一個處理器產生一掃掠體積表示,該掃掠體積表示表示由在由給定標稱軌跡J規定之一組或序列位姿中之位姿之間移動之給定機器人I之至少一部分掃掠之一體積。因此,對於兩個或更多個機器人中之每一者,以及針對一或多個標稱軌跡中之每一者,基於處理器之系統可產生一掃掠體積表示,該掃掠體積表示表示由機器人之至少一部分在自標稱軌跡中之至少一個時間至標稱軌跡中之另一時間在由標稱軌跡規定之一組位姿序列之間移動時掃掠之一體積。可採用多種技術中之任一種來產生掃掠體積,包含用一或多個(例如,階層式)資料結構或點雲來數位地表示一機器人或其一部分,以及沿著路徑或軌跡將數位表示投影以產生掃掠體積之一數位表示(例如,一組體素)。At 512, at least one processor of the processor-based system generates a swept volume representation representing a volume swept by at least a portion of a given robot I moving between poses in a set or sequence of poses defined by a given nominal trajectory J. Thus, for each of two or more robots, and for each of one or more nominal trajectories, the processor-based system may generate a swept volume representation representing a volume swept by at least a portion of the robot while moving between a set or sequence of poses defined by the nominal trajectory from at least one time in the nominal trajectory to another time in the nominal trajectory. The swept volume may be generated using any of a variety of techniques, including digitally representing a robot or a portion thereof using one or more (e.g., hierarchical) data structures or point clouds, and projecting the digital representation along a path or trajectory to generate a digital representation of the swept volume (e.g., a set of voxels).

在514處,基於處理器之系統之至少一個處理器判定是否已處理給定機器人之所有軌跡(例如,J=M?)。若給定機器人之所有軌跡尚未被處理,則控制轉至516,其中軌跡計數器遞增(例如,J=J+1),且然後控制返回至內部標稱軌跡處理迴路510之頂部。若所有標稱軌跡已被處理(例如,J=M),則控制直接轉至518。At 514, at least one processor of the processor-based system determines whether all trajectories for a given robot have been processed (e.g., J=M?). If all trajectories for a given robot have not been processed, control passes to 516, where a trajectory counter is incremented (e.g., J=J+1), and control then returns to the top of the inner nominal trajectory processing loop 510. If all nominal trajectories have been processed (e.g., J=M), control passes directly to 518.

在518處,基於處理器之系統之至少一個處理器判定所有機器人是否已被處理(例如,I=N?)。若所有機器人尚未被處理,則控制轉至520,其中機器人計數器遞增(例如,I=I+1),且然後控制返回至外部機器人處理迴路506之頂部。若所有機器人已被處理(例如,I=N),則控制直接轉至522。At 518, at least one processor of the processor-based system determines whether all robots have been processed (e.g., I=N?). If all robots have not been processed, control passes to 520, where the robot counter is incremented (e.g., I=I+1), and then control returns to the top of the outer robot processing loop 506. If all robots have been processed (e.g., I=N), control passes directly to 522.

在522處,方法500可終止,例如直至再次被調用為止。雖然方法500係依據一有序流程來闡述的,但在諸多實施方案中,各種動作或操作將同時或並行執行,及/或可包含額外動作及/或可省略某些動作。At 522, method 500 may terminate, for example, until called again. Although method 500 is described according to an ordered flow, in many implementations, various actions or operations may be performed simultaneously or in parallel, and/or may include additional actions and/or may omit certain actions.

圖6展示根據至少一項所圖解說明實施方案的一基於處理器之系統之操作之一方法600,該基於處理器之系統對若干個機器人並對機器人中之每一者之若干個標稱軌跡執行碰撞評估。方法600可用於執行碰撞評估,以便識別一運動規劃圖中一開始節點與一結束節點之間的可行路徑。另外或另一選擇係,方法600可用於執行碰撞評估,以便為在一共用工作空間中操作之機器人之一或多個標稱軌跡判定各別可接受滯後時間。基於處理器之系統包含一或多個處理器,根據至少一項所圖解說明實施方案,該等處理器執行處理器可執行指令以例如使用掃掠體積來執行碰撞評估。掃掠體積表示由一機器人或其一部分掃掠之體積或將該等體積模型化,舉例而言,在各種位姿、組態或狀態之間進行轉變時、在沿著一運動規劃圖中所表示之一路徑之一開始節點與一結束節點之間進行轉變時,或者舉例而言,在沿著一開始位姿、組態或狀態至一結束位姿、組態或狀態之間的一標稱軌跡移動時。方法600可例如有利地使用經由方法500來產生之掃掠體積。舉例而言,方法600可在一組態或「預運行」時間(亦即運動規劃中之某些或全部可發生之一時間)期間執行,例如以為機器人中之每一者產生標稱軌跡及/或運動計劃。舉例而言,組態或「預運行」時間可處於一運行時間之前,其中運行時間係一或多個機器人正在執行各別運動計劃之一時間。此有利地准許在運行時間之前執行運算最密集工作中之某些,此時回應並非一特別關心之問題。在至少某些實施方案中,機器人組態方法600或其一部分係在一組態時間或預運行時間之後的一運行時間(亦即,一或多個機器人正在執行任務之一時間)期間執行的。FIG6 shows a method 600 of operation of a processor-based system according to at least one illustrated embodiment, the processor-based system performing collision assessment for a number of robots and for a number of nominal trajectories for each of the robots. The method 600 may be used to perform collision assessment to identify feasible paths between a start node and an end node in a motion planning graph. Additionally or alternatively, the method 600 may be used to perform collision assessment to determine respective acceptable lag times for one or more nominal trajectories of robots operating in a common workspace. The processor-based system includes one or more processors that execute instructions to perform collision assessment, such as using a sweep volume, according to at least one illustrated embodiment. A swept volume represents or models a volume swept by a robot or a portion thereof, for example, while transitioning between various poses, configurations, or states, while transitioning between a start node and an end node along a path represented in a motion planning graph, or, for example, while moving along a nominal trajectory between a start pose, configuration, or state to an end pose, configuration, or state. Method 600 may, for example, advantageously use a swept volume generated via method 500. For example, method 600 may be executed during a configuration or "pre-run" time (i.e., a time when some or all of motion planning may occur), such as to generate nominal trajectories and/or motion plans for each of the robots. For example, the configuration or "pre-run" time may be before a run time, where run time is a time when one or more robots are executing respective motion plans. This advantageously allows some of the most computationally intensive work to be performed before run time, when responsiveness is not a particular concern. In at least some embodiments, the robot configuration method 600 or a portion thereof is executed during a run time (i.e., a time when one or more robots are executing a task) after a configuration time or pre-run time.

判定可接受滯後時間之方法600開始於602處,舉例而言,回應於系統或其組件之一啟動或接通電源、資訊或資料之接收或者藉由一叫用常式或程式之一叫用或調用。Method 600 of determining acceptable lag time begins at 602, for example, in response to a system or component thereof being started or powered on, receipt of information or data, or being called or invoked by a calling routine or program.

在604處,基於處理器之系統之至少一個處理器開始一外部機器人對碰撞評價迴路。外部機器人對碰撞評價迴路允許基於處理器之系統之至少一個處理器對將在一共用工作空間中操作之每一對機器人中之機器人之間的碰撞之一概率或可能性進行評估或評價。外部機器人對碰撞評價迴路可針對潛在碰撞來處理多對機器人之每一組合或排列。At 604, at least one processor of the processor-based system starts 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 assess a probability or likelihood of a collision between robots in each pair of robots that will operate in a common workspace. The external robot pair collision evaluation loop can process each combination or arrangement of multiple pairs of robots for potential collision.

在606處,基於處理器之系統之至少一個處理器將一軌跡計數器J初始化(例如,J=1)。在608處,基於處理器之系統之至少一個處理器執行一內部標稱軌跡碰撞評價迴路。內部標稱軌跡碰撞評價迴路被巢套在外部機器人碰撞評價迴路中。內部標稱軌跡碰撞評價迴路允許基於處理器之系統之至少一個處理器對一給定對之機器人之一或多個標稱軌跡中之每一者之碰撞之一概率或可能性進行評估或評價。At 606, at least one processor of the processor-based system initializes a trajectory counter J (e.g., J=1). At 608, at least one processor of the processor-based system executes an inner nominal trajectory collision evaluation loop. The inner nominal trajectory collision evaluation loop is nested within the outer robot collision evaluation loop. The inner nominal trajectory collision evaluation loop allows the at least one processor of the processor-based system to evaluate or assess a probability or likelihood of a collision for each of one or more nominal trajectories of a given pair of robots.

在610處,基於處理器之系統之至少一個處理器將一滯後時間計數器K初始化(例如,K=1)。在612處,基於處理器之系統之至少一個處理器執行一巢套式內部滯後時間碰撞評價迴路。巢套式內部滯後時間碰撞評價迴路被巢套在內部標稱軌跡碰撞評價迴路內。巢套式內部滯後時間碰撞評價迴路允許基於處理器之系統之至少一個處理器對若干個可能滯後時間(即,來自一組候選滯後時間的候選滯後時間)中之每一者在被引入至給定標稱軌跡中時所具有之一效應進行評估或評價。因此,舉例而言,一標稱軌跡可用等於零之滯後時間並且用引入之若干個(一個、兩個或更多個)非零滯後時間來進行評價,以判定若執行對應於標稱軌跡之一軌跡及其中引入各別滯後時間時發生一碰撞之一概率或可能性。可對持續時間愈來愈長之滯後時間進行評價。At 610, at least one processor of the processor-based system initializes a hysteresis counter K (e.g., K=1). At 612, at least one processor of the processor-based system executes a nested inner hysteresis collision evaluation loop. The nested inner hysteresis collision evaluation loop is nested within the inner nominal trajectory collision evaluation loop. The nested inner hysteresis collision evaluation loop allows at least one processor of the processor-based system to evaluate or assess an effect that each of a number of possible hysteresis times (i.e., candidate hysteresis times from a set of candidate hysteresis times) has when introduced into a given nominal trajectory. Thus, for example, a nominal trajectory may be evaluated with a hysteresis equal to zero and with a number (one, two or more) of non-zero hysteresis times introduced to determine the probability or likelihood of a collision occurring if a trajectory corresponding to the nominal trajectory and with the respective hysteresis times introduced is executed. Hysteresis times of increasing duration may be evaluated.

在614處,基於處理器之系統之至少一個處理器在引入了滯後時間(例如,針對零滯後時間及非零滯後時間)的情況下使用對應軌跡之所產生掃掠體積來執行碰撞評估。基於處理器之系統之至少一個處理器可例如判定各別掃掠體積是否相交,其中各別掃掠體積對應於當在一滯後時間等於零及/或在其中引入若干個非零滯後時間中之每一者的情況下執行標稱軌跡時由一對機器人中之機器人掃掠之各別體積。舉例而言,對於兩個或更多個機器人中之每一機器人,基於處理器之系統可在以下兩者之間執行碰撞評估:i)表示機器人之各別標稱軌跡的一各別樣本軌跡之至少一部分,其中引入了至少一個各別滯後時間(例如,一零滯後時間,以及至少一個非零滯後時間);及ii)兩個或更多個機器人中其他機器人中之每一者的各別軌跡中之每一者之一各別樣本之至少一部分,其中在兩個或更多個機器人中其他機器人中之每一者之各別軌跡中引入了至少一個各別滯後時間(例如,一零滯後時間,以及至少一個非零滯後時間)。因此,可對標稱軌跡中之每一者及機器人中之每一者的「候選」滯後時間之所有排列進行評估,例如以識別碰撞之一概率或可能性何時等於或超過某一碰撞偵測臨限值。At 614, at least one processor of the processor-based system performs collision assessment using the resulting swept volumes corresponding to the trajectory when hysteresis is introduced (e.g., for zero hysteresis and non-zero hysteresis). The at least one processor of the processor-based system can, for example, determine whether respective swept volumes intersect, wherein the respective swept volumes correspond to respective volumes swept by a robot of a pair of robots when executing the nominal trajectory when a hysteresis is equal to zero and/or when each of a number of non-zero hysteresis times is introduced. For example, for each robot of two or more robots, a processor-based system may perform a collision assessment between: i) at least a portion of a respective sample trajectory representing a respective nominal trajectory of the robot, in which at least one respective hysteresis time is introduced (e.g., a zero hysteresis time, and at least one non-zero hysteresis time); and ii) at least a portion of a respective sample of each of the respective trajectories of each of the other robots of the two or more robots, in which at least one respective hysteresis time is introduced in the respective trajectory of each of the other robots of the two or more robots (e.g., a zero hysteresis time, and at least one non-zero hysteresis time). Thus, all permutations of "candidate" hysteresis times for each of the nominal trajectories and each of the robots may be evaluated, for example to identify when a probability or likelihood of a collision equals or exceeds a certain collision detection threshold.

雖然碰撞評估係依據掃掠體積來闡述的,但本文中之教示未必限於此,並且該方法及系統可採用各種其他碰撞評估或偵測技術或演算法。Although collision assessment is described in terms of sweep volume, the teachings herein are not necessarily limited thereto, and the methods and systems may employ a variety of other collision assessment or detection techniques or algorithms.

在616處,基於處理器之系統之至少一個處理器係基於碰撞評估來判定一給定對之機器人是否將會或可能會導致一碰撞。在至少某些實施方案中,碰撞評估可產生表示碰撞之一機會或概率之一非二進制值。對是否會或可能會導致一碰撞之判定可基於非二進制值高於一所定義碰撞偵測臨限值(例如,碰撞概率>50%;>10%>5%)。回應於對一碰撞已被偵測到或可能已發生(例如,碰撞概率等於或大於碰撞偵測臨限值),在617處,基於處理器之系統可識別及/或儲存未導致一潛在碰撞之先前滯後時間值,並且視情況退出巢套式內部滯後時間碰撞評估迴路612,從而將控制返回至內部標稱軌跡碰撞評估迴路608之頂部。因此,舉例而言,回應於對在該機器人與兩個或更多個機器人中其他機器人中之至少一者之間將發生或將可能發生一碰撞之一判定,針對已判定一碰撞將會發生之兩個或更多個機器人中其他機器人中之至少一者之一或多個標稱軌跡,基於處理器之系統將小於導致對一碰撞將發生之判定之各別滯後時間的一各別滯後時間識別為各別可接受滯後時間,其中可接受滯後時間反映相對於標稱軌跡之位姿之定時的最大可接受延遲,該最大可接受延遲仍擔保機器人透過由各別標稱軌跡規定之序列之位姿進行之移動相對於兩個或更多個機器人中之其他機器人之移動將保持無碰撞。回應於對一碰撞已被偵測到或可能已發生(例如,碰撞概率等於或大於碰撞偵測臨限值)之一判定,控制直接轉至618。At 616, at least one processor of the processor-based system determines whether a given pair of robots will or is likely to cause a collision based on the collision evaluation. In at least some embodiments, the collision evaluation can produce a non-binary value representing a chance or probability of a collision. The determination of whether a collision will or is likely to cause a collision can be based on the non-binary value being above a defined collision detection threshold (e.g., collision probability >50%; >10% >5%). In response to a collision being detected or possibly occurring (e.g., a collision probability equal to or greater than a collision detection threshold), at 617, the processor-based system may identify and/or store previous hysteresis values that did not result in a potential collision and, if appropriate, exit the nested inner hysteresis collision evaluation loop 612, thereby returning control to the top of the inner nominal trajectory collision evaluation loop 608. Thus, for example, in response to a determination that a collision will or may occur between the robot and at least one of the other robots of the two or more robots, the processor-based system identifies, for one or more nominal trajectories of at least one of the other robots of the two or more robots in which it has been determined that a collision will occur, a respective hysteresis time that is less than a respective hysteresis time that would result in a determination that a collision will occur as a respective acceptable hysteresis time, wherein the acceptable hysteresis time reflects a maximum acceptable delay in timing relative to a pose of the nominal trajectory that still ensures that movement of the robot through the sequence of poses specified by the respective nominal trajectory will remain collision-free relative to movement of the other robots of the two or more robots. In response to a determination that a collision has been detected or may have occurred (eg, the collision probability is equal to or greater than the collision detection threshold), control transfers directly to 618 .

在618處,基於處理器之系統之至少一個處理器判定當前一對機器人之當前軌跡之所有滯後時間是否已被考慮(例如,K=P?)。若所有滯後時間尚未被考慮,則在620處,滯後時間計數器K遞增(例如,K=K+1),以自一組候選滯後時間選擇用於評價之下一候選滯後時間,並且控制返回至巢套式內部滯後時間碰撞評價迴路612之頂部。若所有滯後時間已被考慮,則控制直接轉至622。At 618, at least one processor of the processor-based system determines whether all hysteresis times for the current trajectory of the current pair of robots have been considered (e.g., K=P?). If all hysteresis times have not been considered, then at 620, a hysteresis time counter K is incremented (e.g., K=K+1) to select the next candidate hysteresis time for evaluation from a set of candidate hysteresis times, and control returns to the top of the nested inner hysteresis time collision evaluation loop 612. If all hysteresis times have been considered, control passes directly to 622.

在622處,基於處理器之系統之至少一個處理器判定一給定對之機器人之所有軌跡是否已被處理(例如,J=M?)。若一給定對之機器人之所有軌跡尚未被處理,則在624處,軌跡計數器遞增(例如,J=J+1),並且控制返回至內部標稱軌跡碰撞評估迴路608之頂部。若所有標稱軌跡已被處理(例如,J=M),則控制轉至626。At 622, at least one processor of the processor-based system determines whether all trajectories for a given pair of robots have been processed (e.g., J=M?). If all trajectories for a given pair of robots have not been processed, then at 624, a trajectory counter is incremented (e.g., J=J+1) and control returns to the top of the inner nominal trajectory collision evaluation loop 608. If all nominal trajectories have been processed (e.g., J=M), then control passes to 626.

在626處,基於處理器之系統之至少一個處理器判定額外多對機器人是否保持待被處理。方法600可處理多對機器人之每一排列、彼等多對機器人之軌跡之每一排列以及候選滯後時間之每一排列,至少直至達到一停止條件為止(例如,找出碰撞之一不可接受高概率)。因此,任何給定機器人之所判定可接受滯後時間(例如,最大滯後時間)可係在一共用工作空間中操作之其他機器人中之每一者之各別所選擇軌跡及與彼等所選擇軌跡相關聯之所判定可接受滯後時間之一函數。在此意義上,術語最大滯後時間未必意味著一給定機器人在孤立狀態下之一絕對最大滯後時間,而是可意味著一給定機器人鑒於在共用工作空間中操作之其他機器人之軌跡及相關聯滯後時間之一最大滯後時間。若額外多對機器人保持待被處理,則控制轉至628,其中選擇新的一對機器人,且然後控制轉至外部機器人對碰撞評價迴路之頂部。若額外多對機器人未保持待被處理,則控制直接轉至630。At 626, at least one processor of the processor-based system determines whether additional pairs of robots remain to be processed. The method 600 may process each permutation of pairs of robots, each permutation of trajectories for those pairs of robots, and each permutation of candidate lag times, at least until a stopping condition is reached (e.g., an unacceptably high probability of collision is found). Thus, the determined acceptable lag time (e.g., maximum lag time) for any given robot may be a function of the respective selected trajectories of each of the other robots operating in a common workspace and the determined acceptable lag times associated with those selected trajectories. In this sense, the term maximum hysteresis does not necessarily mean an absolute maximum hysteresis for a given robot in isolation, but rather may mean a maximum hysteresis for a given robot in view of the trajectories and associated hysteresis of other robots operating in the shared workspace. If additional pairs of robots remain to be processed, control passes to 628 where a new pair of robots is selected and control then passes to the top of the external robot pair collision evaluation loop. If additional pairs of robots do not remain to be processed, control passes directly to 630.

在630處,基於處理器之系統之至少一個處理器返回一或多個標稱軌跡之各別可接受滯後時間。可接受滯後時間可例如被儲存至非暫時性處理器可讀媒體,例如儲存在與標稱軌跡相關聯之一或多個資料結構中。控制然後轉至632。At 630, at least one processor of the processor-based system returns respective acceptable lags for one or more nominal trajectories. The acceptable lags may be stored, for example, in a non-transitory processor-readable medium, such as in one or more data structures associated with the nominal trajectories. Control then passes to 632.

在632處,方法600可終止,例如直至再次被調用為止。雖然方法600係依據一有序流程來闡述的,但在諸多實施方案中,各種動作或操作將同時或並行執行,及/或可包含額外動作及/或省略某些動作。At 632, method 600 may terminate, for example, until called again. Although method 600 is described according to an ordered flow, in many implementations, various actions or operations may be performed simultaneously or in parallel, and/or may include additional actions and/or omit certain actions.

為了判定標稱軌跡之一各別可接受滯後時間,基於處理器之系統可例如:自一相對小候選滯後時間至一相對大候選滯後時間之一序列中迭代通過複數個候選滯後時間中之每一者,至少直至達成一停止條件為止;迭代通過由標稱軌跡涵蓋之複數個時間中之每一者;基於候選滯後時間中之當前一者來檢查兩個或更多個機器人中之一個機器人與兩個或更多個機器人中之至少一個其他機器人之間有無一碰撞。回應於對在兩個或更多個機器人中之一個機器人與兩個或更多個機器人中之至少一個其他機器人之間將會發生或將可能發生一碰撞之一判定,基於處理器之系統可將已判定一碰撞將發生之機器人以及兩個或更多個機器人中其他機器人中之至少一者的標稱軌跡之各別可接受滯後時間設定為一最緊接之先前候選滯後時間(例如,碰撞之一概率低於指示一可接受碰撞風險之一碰撞偵測臨限值之一滯後時間)。為了檢查一碰撞,基於處理器之系統可例如判定一對機器人中機器人中之一者之掃掠體積與該對機器人中機器人中之另一者之掃掠體積是否相交。舉例而言,基於處理器之系統可回應於對一對機器人中機器人中之一者之掃掠體積與該對機器人中機器人中之另一者之掃掠體積相交之一判定以及對被判定為處於碰撞中之機器人之一識別來產生一碰撞之一指示。To determine a respective acceptable hysteresis time for the nominal trajectory, the processor-based system may, for example: iterate through each of a plurality of candidate hysteresis times in a sequence from a relatively small candidate hysteresis time to a relatively large candidate hysteresis time, at least until a stopping condition is met; iterate through each of a plurality of times covered by the nominal trajectory; and check for a collision between one of the two or more robots and at least one other of the two or more robots based on a current one of the candidate hysteresis times. In response to a determination that a collision will or may occur between one of the two or more robots and at least one of the other robots of the two or more robots, the processor-based system may set respective acceptable hysteresis times of nominal trajectories of the robot for which a collision is determined to occur and at least one of the other robots of the two or more robots to a closest previous candidate hysteresis time (e.g., a hysteresis time for which a probability of collision is less than a collision detection threshold indicating an acceptable risk of collision). To check for a collision, the processor-based system may, for example, determine whether a swept volume of one of the robots in a pair of robots intersects a swept volume of the other of the robots in the pair of robots. For example, a processor-based system may generate an indication of a collision in response to a determination that a swept volume of one of a pair of robots intersects a swept volume of the other of the pair of robots and an identification of the robots determined to be in collision.

判定並應用可接受滯後時間以提供安全性裕量之一例示性方法係如下所述。An exemplary method for determining and applying acceptable hysteresis time to provide a safety margin is described as follows.

首先,例如使用公開號為WO2021150439A1之國際專利申請案PCT/US2021/013610中所闡述之最佳化來產生包括一組標稱軌跡(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, a motion plan including a set of nominal trajectories (Trj(t)) is generated, for example using the optimization described in international patent application PCT/US2021/013610 with publication number WO2021150439A1. Therefore, for each mobile robot r in a motion plan, an acceptable lag time relative to the motion plan (e.g., a maximum safe lag value (max_lag_r)) is calculated. It is important to note the following: (i) for each robot r, the acceptable lag time value (max_lag) may be different (e.g., max_lag_r1 ≠ max_lag_r2); (ii) the acceptable lag time value (max_lag) is strictly dependent on a set of nominal trajectories Trj(t) and the relative position of the robot r; and (iii) static obstacles and static robots (if any) do not affect the acceptable lag time value (max_lag). In this example, a set of nominal trajectories Trj(t) and the acceptable lag time value (max_lag_r) are calculated sequentially, and preferably offline during configuration time before run time; however, this is not intended to limit the methods described herein. During execution (e.g., on-line; during run-time) a central clock (t) is implemented which is common to all robots operating in a common workspace. For each robot r, the lag (lag_r) relative to the nominal motion plan is calculated at a high frequency, i.e., monitoring of the actual lag time relative to a movement speed of the robots is performed at a sufficiently high frequency to avoid undesired actual collisions.

在理想情形中,較佳地,每一機器人r與運動計劃同步,並且機器人之實際滯後係零(lag_r=0)。然而,在一般情形中,一或多個機器人可能落後於排程,其中一當前機器人狀態係由軌跡trj_r(t-nΔT)及實際滯後lag_r=nΔT給出。In the ideal case, each robot r is preferably synchronized with the motion plan and the actual lag of the robot is zero (lag_r=0). However, in the general case, one or more robots may fall behind the schedule, where a 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),則認為繼續執行係安全的,此乃因無自碰撞條件得到確保。否則,無自碰撞條件未得到確保,因此系統之安全性被認為受到損害。The processor-based system monitors the actual hysteresis values to ensure the safety of the robotic system. If all actual hysteresis values are within the safety margin specified by the acceptable hysteresis time (e.g., lag_r ≤ max_lag_r), it is considered safe to continue execution because the no-self-collision condition is ensured. Otherwise, the no-self-collision condition is not ensured, and therefore the safety of the system is considered to be compromised.

為了維持機器人始終處於安全操作中,系統可對實際滯後值進行監控,並在越過一安全裕量(例如,超過裕量或臨限值)時簡單地中止整個機器人系統之移動。為了安全地重新開始操作,機器人可移動至一組標稱軌跡Trj(t*)之任何(安全)狀態,並且中央時脈被重設為t*。In order to keep the robot always in safe operation, the system can monitor the actual hysteresis value and simply stop the movement of the entire robot system when a safety margin is crossed (e.g., a margin or threshold value is exceeded). To safely restart the 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 destructive solutions may include taking remedial or corrective action on robots while they are still within the safety margin but relatively close to the limit. For example, a movement of a robot approaching the limit may be accelerated (increased in speed) in order to reduce the value of its actual lag time. This action will directly increase the distance to the limit and improve the safety level. Alternatively, the other robots may be slowed down. This action may utilize a time dilation of the central clock to maintain consistency. Hybrid actions may also be very effective.

判定安全性裕量之一例示性處理器可執行演算法係如下文之偽碼中所述。An exemplary processor-executable algorithm for determining the safety margin is described in the pseudo code below.

為了一較佳理解,該演算法可分為4個分量: •  main_loop:其橫跨自0至L之候選滯後值並對標稱軌跡Trj(t)進行迭代。 •  CheckLagCollision():對在一具體時間t處應用之候選滯後值之效應進行評價。在給定機器人中之每一者之一組候選滯後值的情況下,其判定在一給定時間t處是否存在任何機器人發生碰撞。在不具有滯後之一世界中,一機器人佔據由其當前位姿判定之一體積。現在,在具有滯後的情況下,一機器人可基於其在時間t-lag直至時間t-lag處之軌跡對一體積進行掃掠。 •  ComputeSweptVolume_r(t1, t2):對機器人r在自時間t1至時間t2沿著軌跡之一分段移動的同時掃掠之體積進行運算(trj_r(t1 … t2))。 •  VolumesIntersect():以幾何方式搜尋兩個體積之間的相交處。 For a better understanding, the algorithm can be divided into 4 components: •  main_loop: It steps through candidate hysteresis values from 0 to L and iterates the nominal trajectory Trj(t). •  CheckLagCollision(): It evaluates the effect of candidate hysteresis values applied at a specific time t. Given a set of candidate hysteresis values for each of the robots, it determines if any robot is in collision at a given time t. In a world without hysteresis, a robot occupies a volume determined by its current pose. Now, with hysteresis, a robot can sweep a volume based on its trajectory at time t-lag up to time t-lag. •  ComputeSweptVolume_r(t1, t2): computes the volume swept by robot r while moving along one segment of the trajectory from time t1 to time t2 (trj_r(t1 … t2)). •  VolumesIntersect(): geometrically searches for the intersection between two volumes.

在下文中詳細呈現main_loop()及CheckLagCollision()。並未詳細闡述ComputeSweptVolume_r()及VolumesIntersect(),乃因可採用諸多演算法來實施此類演算法。main_loop() and CheckLagCollision() are presented in detail below. ComputeSweptVolume_r() and VolumesIntersect() are not described in detail because there are many algorithms that can be used to implement such algorithms.

輸入包含:trj[1…N]:N個機器人之一組無碰撞軌跡;ΔT:樣本時間;T:機器人活動之最大持續時間;ΔL:進行搜尋之樣本滯後時間值;及L:進行搜尋之最大滯後值(L <= T)。The input includes: trj[1…N]: a set of collision-free trajectories of N robots; ΔT: sample time; T: maximum duration of robot activity; ΔL: sample hysteresis time value for search; and L: maximum hysteresis value for search (L <= T).

輸出包含:max_lag[1…N],每機器人之最大滯後值,其擔保機器人當中無自碰撞運動。The output includes: max_lag[1…N], the maximum lag value of each robot, which ensures that there is no self-collision movement among the robots.

內部變數包含:lag_candidate:當前迭代中所評價之滯後值;lag[1…N]:每機器人在當前迭代中所評價之滯後值;lag_prev[1…N]:每機器人在前一迭代中所評價之滯後值;及found_max_lag[1…N]:每機器人停止搜尋之布林值。 main_loop(trj[], T, ΔT, L, ΔL) -> max_lag[1..N] 1.      lag[1…N] = 0 2.      lag_prev[1…N] = 0 3.      found_max_lag[1…N] = false 4.      FOR lag_candidate in [0, L]//for all possible lag candidates 1. (for r in [1,N])    IF found_max_lag[r] == false 1.  lag[r] = lag_candidate 2. t = 0 3. FOR t in [0, T]   // for all possible trajectory times 1.  IF CheckLagCollision(trj[], t, lag[]) == true 1.     FOR x in robots_in_collision[] 1.  found_max_lag[x] = true 2.  lag[x] = lag_prev[x] 2.     FOR r in [1,N])   IF found_max_lag[r] == true 1.  GOTO 4.4 2.    t = t + ΔT 4.  (for r in [1,N])   lag_prev[r] = lag[r] 5.  lag_candidate = lag_candidate + ΔL 5.      RETURN lag_prev[] CheckLagCollision(trj[],t,lag[])->[true/false,robots_in_collision[]] 1.      swept_volume[1…N] = none 2.      r = 1 3.      robots_in_collision[] = NULL 4.      bool any_collision = FALSE 5.      (for r in [1,N]) 1. t_min = max(0, t - lag[r]) 2. swept_volume[r] = ComputeSweptVolume_r(t_min, t) 6.      FOR r1 in [1,N], r2 in [1,N]  // r1 != r2 1. IF VolumesIntersect(swept_volume[r1],swept_volume[r2]) == true i.   robots_in_collision[].add(r1 and r2) 7.      RETURN [any_collision, robots_in_collision[]] Internal variables include: lag_candidate: the lag value evaluated in the current iteration; lag[1…N]: the lag value evaluated by each robot in the current iteration; lag_prev[1…N]: the lag value evaluated by each robot in the previous iteration; and found_max_lag[1…N]: the Boolean value at which each robot stops searching. main_loop(trj[], T, ΔT, L, ΔL) -> max_lag[1..N] 1.      lag[1…N] = 0 2.      lag_prev[1…N] = 0 3.      found_max_lag[1…N] = false 4.      FOR lag_candidate in [0, L]//for all possible lag candidates 1. (for r in [1,N])    IF found_max_lag[r] == false 1.  lag[r] = lag_candidate 2. t = 0 3. FOR t in [0, T]   // for all possible trajectory times 1.  IF CheckLagCollision(trj[], t, lag[]) == true 1.     FOR x in robots_in_collision[] 1.  found_max_lag[x] = true 2.  lag[x] = lag_prev[x] 2.     FOR r in [1,N])   IF found_max_lag[r] == true 1.  GOTO 4.4 2.    t = t + ΔT 4.  (for r in [1,N])   lag_prev[r] = lag[r] 5.  lag_candidate = lag_candidate + ΔL 5.      RETURN lag_prev[] CheckLagCollision(trj[],t,lag[])->[true/false,robots_in_collision[]] 1.      swept_volume[1…N] = none 2.      r = 1 3.      robots_in_collision[] = NULL 4.      bool any_collision = FALSE 5.      (for r in [1,N]) 1. t_min = max(0, t - lag[r]) 2. swept_volume[r] = ComputeSweptVolume_r(t_min, t) 6.      FOR r1 in [1,N], r2 in [1,N]  // r1 != r2 1. IF VolumesIntersect(swept_volume[r1],swept_volume[r2]) == true i.   robots_in_collision[].add(r1 and r2) 7.      RETURN [any_collision, robots_in_collision[]]

圖7展示根據至少一項所圖解說明實施方案的一基於處理器之系統之操作之一方法700,該基於處理器之系統至少部分地基於可接受滯後時間並且視情況至少部分地基於其他準則為將在一共用工作空間中操作之一或多個機器人產生或選擇運動計劃。滯後時間以及視情況其他準則可被表示為一成本或成本函數。舉例而言,方法700可在一組態或「預運行」時間(亦即運動規劃中之某些或全部可發生之一時間)期間執行,例如以為機器人中之每一者產生標稱軌跡及/或運動計劃。舉例而言,組態或「預運行」時間可處於一運行時間之前,該運行時間係一或多個機器人正在執行各別運動計劃之一時間。此有利地准許在運行時間之前執行運算最密集工作中之某些,此時回應並非一特別關心之問題。在至少某些實施方案中,方法700或其一部分係在一組態時間或預運行時間之後的一運行時間(亦即,一或多個機器人正在執行任務之一時間)期間執行的。FIG. 7 shows a method 700 of operation of a processor-based system to generate or select motion plans for one or more robots to be operated in a common workspace based at least in part on acceptable lag time and, as appropriate, at least in part on other criteria, according to at least one illustrated embodiment. The lag time and, as appropriate, other criteria may be expressed as a cost or cost function. For example, the method 700 may be executed during a configuration or "pre-run" time (i.e., a time when some or all of the motion planning may occur), e.g., to generate nominal trajectories and/or motion plans for each of the robots. For example, a configuration or "pre-run" time may be prior to a run time, which is a time when one or more robots are executing respective motion plans. This advantageously permits some of the most computationally intensive work to be performed prior to the run time, when responsiveness is not a particular concern. In at least some embodiments, method 700 or a portion thereof is performed during a run time (i.e., a time when one or more robots are executing a task) after a configuration time or pre-run time.

判定可接受滯後時間之方法700開始於702處,例如回應於系統或其組件之一啟動或接通電源、資訊或資料之接收或者藉由一叫用常式或程式之一叫用或調用。Method 700 of determining acceptable lag time begins at 702, such as in response to a system or component thereof being started or powered on, receipt of information or data, or by a call or invocation of a routine or program.

視情況,在704處,基於處理器之系統之至少一個處理器為每一機器人產生或存取(例如,接收、擷取)標稱軌跡。如先前所闡述,標稱軌跡係「如所規定之」軌跡,其中每一軌跡包括一機器人之位姿或組態之一有序序列連同每一位姿或組態之一各別定時。亦如本文中所闡述,一機器人或其一部分之實際運動或實際軌跡可能偏離一各別標稱軌跡,例如歸因於在位姿之間進行轉變時之非所期望延遲(例如,舉例而言歸因於在一目標物件處(例如,上方)比以其他方式預期的逗留或停留得更長)。Optionally, at 704, at least one processor of the processor-based system generates or accesses (e.g., receives, captures) a nominal trajectory for each robot. As previously explained, a nominal trajectory is an "as specified" trajectory, wherein each trajectory includes an ordered sequence of poses or configurations of a robot together with a respective timing for each pose or configuration. As also explained herein, actual motion or actual trajectory of a robot or a portion thereof may deviate from a respective nominal trajectory, such as due to undesirable delays in transitioning between poses (e.g., due to, for example, a longer stay or dwell at (e.g., over) a target object than would otherwise be expected).

如先前所解釋,可採用多種技術及/或演算法中之任一種來產生標稱軌跡,例如基於取樣之運動規劃器(SBMP),諸如概率路線圖(PRM)或快速探索隨機樹(RRT、RTT*)、穩定稀疏RRT* (SST*)及/或快速匹配樹(FMT)。有利地,本文中之教示包含在運算上高效地使用所判定滯後時間來為運動計劃選擇一組標稱軌跡,此增強了操作之穩健性。As previously explained, any of a variety of techniques and/or algorithms may be employed to generate nominal trajectories, such as a sampling-based motion planner (SBMP), such as a probabilistic roadmap (PRM) or rapidly exploring random trees (RRT, RTT*), stable sparse RRT* (SST*), and/or fast matching trees (FMT). Advantageously, the teachings herein include computationally efficient use of determined hysteresis times to select a set of nominal trajectories for motion planning, which enhances robustness of operation.

在706處,基於處理器之系統之至少一個處理器將一機器人計數器I初始化,例如將機器人計數器設定為等於一整數值1。在708處,基於處理器之系統之至少一個處理器執行一外部機器人處理迭代迴路,從而對將在一共用工作空間中操作之兩個或更多個機器人中機器人中之每一者執行一迭代,或者直至達到一停止條件為止(例如,判定確保無碰撞運動之一最大滯後時間)。At 706, at least one processor of the processor-based system initializes a robot counter I, e.g., setting the robot counter equal to an integer value of 1. At 708, at least one processor of the processor-based system executes an outer robot processing iteration loop, thereby performing an iteration for each of two or more robots to be operated in a common workspace, or until a stop condition is reached (e.g., determining a maximum lag time to ensure collision-free motion).

在710處,基於處理器之系統之至少一個處理器將一標稱軌跡計數器J初始化,例如從而將標稱軌跡計數器設定為等於一整數值1。在712處,基於處理器之系統之至少一個處理器執行一內部標稱軌跡處理迭代迴路,從而對給定機器人之標稱軌跡中之每一者執行一迭代。內部標稱軌跡處理迭代迴路712被巢套在外部機器人處理迭代迴路708中。At 710, at least one processor of the processor-based system initializes a nominal trajectory counter J, for example, thereby setting the nominal trajectory counter equal to an integer value of 1. At 712, at least one processor of the processor-based system executes an inner nominal trajectory processing iterative loop, thereby performing one iteration for each of the nominal trajectories of a given robot. The inner nominal trajectory processing iterative loop 712 is nested in the outer robot processing iterative loop 708.

在714處,基於處理器之系統之至少一個處理器判定當前機器人I之當前標稱軌跡J之一各別可接受滯後時間。各別可接受滯後時間反映了當前標稱軌跡J中之一最大可接受延遲或滯後,該最大可接受延遲或滯後至少在當前機器人I (外部機器人處理迭代迴路之當前機器人)執行當前標稱軌跡J (內部當前標稱軌跡迭代迴路之當前標稱軌跡)時仍擔保當前機器人I相對於各自按照各別標稱軌跡移動之其他機器人之無自碰撞移動,其中對應可接受滯後時間被引入至當前機器人I之當前標稱軌跡J中。此可較佳地相對於其他機器人之標稱軌跡來進行評估,其中引入了各種候選滯後時間(例如,零滯後時間及非零滯後時間),或者其中若已知曉則甚至引入了一各別可接受滯後時間。一給定機器人I之可接受滯後時間擔保自碰撞自由,只要所有其他機器人在其各別標稱軌跡處或其內操作(亦即,其中滯後時間=0),或者另一選擇係在其各別標稱軌跡處操作或具有其各別標稱軌跡,其中各別滯後時間被引入至其他機器人之標稱軌跡中。因此,在至少一項實施方案中,只要一給定機器人之一各別當前實際滯後時間小於該機器人之各別可接受滯後時間,並且其他機器人正在按照其標稱軌跡操作,則機器人將不會彼此碰撞(擔保機器人之間的自碰撞自由)。因此,在至少一項較佳實施方案中,只要所有機器人之一各別當前實際滯後時間小於機器人中之每一者之各別可接受滯後時間,則機器人將不會彼此碰撞(擔保機器人之間的自碰撞自由)。At 714, at least one processor of the processor-based system determines a respective acceptable hysteresis time of the current nominal trajectory J of the current robot I. The respective acceptable hysteresis time reflects a maximum acceptable delay or hysteresis in the current nominal trajectory J that still ensures self-collision-free movement of the current robot I relative to other robots that are each moving according to the respective nominal trajectory when at least the current robot I (the current robot of the external robot processing iteration loop) executes the current nominal trajectory J (the current nominal trajectory of the internal current nominal trajectory iteration loop), wherein the corresponding acceptable hysteresis time is introduced into the current nominal trajectory J of the current robot I. This may preferably be evaluated relative to the nominal trajectories of the other robots, where various candidate hysteresis times are introduced (e.g., zero hysteresis times and non-zero hysteresis times), or where even a respective acceptable hysteresis time is introduced if known. An acceptable hysteresis time for a given robot I guarantees self-collision freedom as long as all other robots are operating at or within their respective nominal trajectories (i.e., with hysteresis time = 0), or alternatively are operating at or having their respective nominal trajectories, where the respective hysteresis times are introduced into the nominal trajectories of the other robots. Therefore, in at least one embodiment, as long as one of the respective current actual lag times of a given robot is less than the respective acceptable lag time of that robot, and the other robots are operating according to their nominal trajectories, the robots will not collide with each other (ensuring self-collision freedom between robots). Therefore, in at least one preferred embodiment, as long as one of the respective current actual lag times of all robots is less than the respective acceptable lag time of each of the robots, the robots will not collide with each other (ensuring self-collision freedom between robots).

在716處,基於處理器之系統之至少一個處理器判定給定機器人之標稱軌跡中之每一者是否被考慮,例如從而判定標稱軌跡計數器J是否等於給定機器人之標稱軌跡之總數目(例如,J=M?)。若給定機器人之標稱軌跡中之每一者尚未被考慮,則控制轉至718,其中標稱軌跡計數器遞增(例如,J=J+1),並且控制然後返回至內部標稱軌跡處理迭代迴路712之頂部,以考慮給定機器人I之下一標稱軌跡。若給定機器人I之標稱軌跡中之每一者已被考慮(例如,J=M),則控制直接轉至720。At 716, at least one processor of the processor-based system determines whether each of the nominal trajectories for the given robot has been considered, for example, thereby determining whether the nominal trajectory counter J is equal to the total number of nominal trajectories for the given robot (e.g., J=M?). If each of the nominal trajectories for the given robot has not been considered, control transfers to 718, where the nominal trajectory counter is incremented (e.g., J=J+1), and control then returns to the top of the inner nominal trajectory processing iteration loop 712 to consider the next nominal trajectory for the given robot I. If each of the nominal trajectories for the given robot I has been considered (e.g., J=M), control transfers directly to 720.

在720處,基於處理器之系統之至少一個處理器選擇為給定機器人I判定之一組所判定可接受滯後時間中之一最大值。在722處,基於處理器之系統之至少一個處理器為給定機器人提供一或多個所判定可接受滯後時間(例如,提供所判定可接受滯後時間中之所選擇最大值),以供在判定至少給定機器人之一運動規劃時使用。舉例而言,此可包含將所判定可接受滯後時間提供給一不同處理器,或者將所判定可接受滯後時間傳送至處理器之一不同暫存器,或以其他方式將此儲存在非暫時性處理器可讀媒體中。At 720, at least one processor of the processor-based system selects a maximum value of a set of determined acceptable lag times to be determined for a given robot 1. At 722, at least one processor of the processor-based system provides one or more determined acceptable lag times for the given robot (e.g., provides the selected maximum value of the determined acceptable lag times) for use in determining a motion plan for at least the given robot. For example, this may include providing the determined acceptable lag times to a different processor, or transmitting the determined acceptable lag times to a different register of the processor, or otherwise storing them in a non-transitory processor-readable medium.

在724處,基於處理器之系統之至少一個處理器判定機器人中之每一者是否已被考慮,例如從而判定機器人計數器I是否等於機器人之總數目(例如,I=N?)。若機器人中之每一者尚未被考慮(例如,I<N),則控制轉至726,其中基於處理器之系統之至少一個處理器對機器人計數器進行迭代(例如,I=I+1),且然後控制返回至外部迭代機器人處理迴路708之頂部,以考慮下一機器人。若機器人中之每一者已被處理(例如,I=N),則控制直接轉至728。At 724, at least one processor of the processor-based system determines whether each of the robots has been considered, for example, thereby determining whether the robot counter I is equal to the total number of robots (e.g., I=N?). If each of the robots has not been considered (e.g., I<N), control passes to 726, where the 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 of the robots has been processed (e.g., I=N), control passes directly to 728.

在728處,基於處理器之系統之至少一個處理器為每一機器人產生或選擇一各別運動計劃。運動計劃可係或可表示機器人的與可接受滯後時間中之一最大值相關聯之一各別標稱軌跡。此可有利地增強由運動規劃產生之運動計劃之穩健性,並且因此改良執行所得運動計劃之機器人之操作。At 728, at least one processor of the processor-based system generates or selects a respective motion plan for each robot. The motion plan may be or may represent a respective nominal trajectory for the robot associated with a maximum value in acceptable lag time. This may advantageously enhance the robustness of the motion plan generated by the motion planner and thereby improve the operation of the robot executing the resulting motion plan.

當考慮每機器人之多個軌跡時,任何給定機器人之所判定可接受滯後時間(例如,最大滯後時間)可係在一共用工作空間中操作之其他機器人中之每一者之各別所選擇軌跡及與彼等所選擇軌跡相關聯之所判定可接受滯後時間之一函數。因此,如本文中所闡述,在至少某些實施方案中,在給定所有其他機器人之候選軌跡及候選滯後時間之每個其他可能組合的情況下,系統為每一機器人及該機器人之每一候選軌跡判定一可接受滯後時間。一旦完成,系統(例如,圖2之標稱軌跡分析器258)可為在共用工作空間中操作之所有機器人選擇一組軌跡。系統(例如,圖2之標稱軌跡分析器258)可藉由例如將一目標函數最佳化(例如,跨越所有機器人之所有滯後時間之最大總和)來分割該組軌跡。When considering multiple trajectories per robot, the determined acceptable hysteresis time (e.g., maximum hysteresis time) for any given robot can be a function of the respective selected trajectories of each of the other robots operating in a common workspace and the determined acceptable hysteresis times associated with those selected trajectories. Thus, as described herein, in at least some embodiments, the system determines an acceptable hysteresis time for each robot and each candidate trajectory of that robot, given every other possible combination of candidate trajectories and candidate hysteresis times for all other robots. Once completed, the system (e.g., nominal trajectory analyzer 258 of FIG. 2 ) can select a set of trajectories for all robots operating in the common workspace. The system (e.g., nominal trajectory analyzer 258 of FIG. 2 ) may segment the set of trajectories by, for example, optimizing an objective function (e.g., the maximum sum of all hysteresis times across all robots).

在730處,基於處理器之系統之至少一個處理器將各別運動計劃提供給每一機器人或每一運動控制器,以致使機器人按照各別運動計劃來移動。舉例而言,此可包含將運動計劃提供給機器人中之每一者之一各別運動控制器。At 730, at least one processor of the processor-based system provides a respective motion plan to each robot or each motion controller so that the robot moves according to the respective motion plan. For example, this may include providing the motion plan to a respective motion controller of each of the robots.

在732處,方法700可終止,例如直至再次被調用為止。雖然方法700係依據一有序流程來闡述的,但在諸多實施方案中,各種動作或操作將同時或並行執行,及/或可包含額外動作及/或省略某些動作。At 732, method 700 may terminate, for example, until called again. Although method 700 is described according to an ordered flow, in many implementations, various actions or operations may be performed simultaneously or in parallel, and/or may include additional actions and/or omit certain actions.

因此,舉例而言,對於兩個或更多個機器人中之每一者,以及針對兩個或更多個機器人中之各別機器人之兩個或更多標稱軌跡中之每一者,一基於處理器之系統可判定標稱軌跡之一各別可接受滯後時間,該可接受滯後時間反映相對於標稱軌跡之位姿之定時的一最大可接受延遲,該最大可接受延遲仍擔保機器人透過由標稱軌跡規定之位姿之序列進行之一移動相對於兩個或更多個機器人中其他機器人中之每一者透過由各別標稱軌跡規定之位姿之各別序列進行之一移動將保持無碰撞,此乃因其自身係按兩個或更多個機器人中其他機器人中之每一者之標稱軌跡之一各別可接受滯後時間來延遲的。基於處理器之系統可例如:至少部分地基於兩個或更多個標稱軌跡之各別可接受滯後時間在兩個或更多個標稱軌跡之間進行選擇;並且至少部分地基於標稱軌跡中之所選擇一者為各別機器人提供一運動計劃,以控制兩個或更多個機器人中之各別機器人之操作。基於處理器之系統可例如選擇各別機器人之兩個或更多個標稱軌跡中具有可接受滯後時間中之最大一者的標稱軌跡,從而產生比以其他方式產生的更穩健之運動計劃。舉例而言,基於處理器之系統可基於一各別成本函數來選擇標稱軌跡,該成本函數表示可接受滯後時間及視情況碰撞之一風險或概率,每一成本函數與各別機器人之兩個或更多標稱軌跡中之各別標稱軌跡相關聯。基於處理器之系統可例如基於一各別成本函數來選擇標稱軌跡,該成本函數表示可接受滯後時間、碰撞之一風險或概率以及視情況碰撞之一嚴重性,每一成本函數與各別機器人之兩個或更多標稱軌跡中之各別標稱軌跡相關聯。基於處理器之系統可例如基於一各別成本函數來選擇標稱軌跡,該成本函數表示可接受滯後時間、碰撞之一風險或概率、碰撞之一嚴重性以及視情況:完成之一持續時間或能量之一支出中之至少一者,每一成本函數與各別機器人之兩個或更多標稱軌跡中之各別標稱軌跡相關聯,其中成本函數中分別表示可接受滯後時間、碰撞之風險或概率、碰撞之嚴重性以及完成之持續時間或能量之支出中之至少一者的每一變數在各別成本函數中被加權。基於處理器之系統可例如為兩個或更多個機器人中之每一者選擇一各別標稱軌跡,該標稱軌跡將可接受滯後時間在跨越兩個或更多個機器人中之機器人之一彙總中最大化。基於處理器之系統可例如為兩個或更多個機器人中之每一者選擇各別標稱軌跡,該標稱軌跡將機器人中之每一者之一各別成本函數在跨越兩個或更多個機器人中之所有機器人之一彙總中最佳化,其中每一成本函數表示可接受滯後時間及碰撞之至少一風險或概率,每一成本函數與各別機器人之兩個或更多標稱軌跡中之各別一者之各別標稱軌跡相關聯。基於處理器之系統可例如為兩個或更多個機器人中之每一者選擇一各別標稱軌跡,該標稱軌跡將機器人中之每一者之一各別成本函數在跨越兩個或更多個機器人中之所有機器人之一彙總中最佳化,其中每一成本函數表示可接受滯後時間、碰撞之至少一風險或概率以及碰撞之一嚴重性,每一成本函數與各別機器人之兩個或更多標稱軌跡中之各別一者之各別標稱軌跡相關聯。基於處理器之系統可例如為兩個或更多個機器人中之每一者選擇一各別標稱軌跡,該標稱軌跡將機器人中之每一者之一各別成本函數在跨越兩個或更多個機器人中之所有機器人之一彙總中最佳化,其中每一成本函數表示可接受滯後時間、碰撞之至少一風險或概率、碰撞之一嚴重性以及完成之一持續時間或能量之一支出中之至少一者,每一成本函數與各別機器人之兩個或更多個標稱軌跡中之各別一者之各別標稱軌跡相關聯,其中成本函數中分別表示可接受滯後時間、碰撞之風險或概率、碰撞之嚴重性以及完成之持續時間或能量之支出中之至少一者的每一變數在各別成本函數中被加權。Thus, for example, for each of two or more robots, and for each of two or more nominal trajectories for a respective one of the two or more robots, a processor-based system may determine a respective acceptable lag time for the nominal trajectory, the acceptable lag time reflecting a maximum acceptable delay in timing relative to the poses of the nominal trajectory that still ensures that a movement of the robot through a sequence of poses specified by the nominal trajectory will remain collision-free relative to a movement of each of the other robots of the two or more robots through a respective sequence of poses specified by the respective nominal trajectory because it is itself delayed by a respective acceptable lag time for the nominal trajectory of each of the other robots of the two or more robots. The processor-based system may, for example: select between two or more nominal trajectories based at least in part on respective acceptable hysteresis times of the two or more nominal trajectories; and provide a motion plan for the respective robot to control operation of the respective robot of the two or more robots based at least in part on the selected one of the nominal trajectories. The processor-based system may, for example, select the nominal trajectory of the two or more nominal trajectories of the respective robot that has the largest one of the acceptable hysteresis times, thereby generating a more robust motion plan than would otherwise be generated. For example, a processor-based system may select a nominal trajectory based on a respective cost function representing acceptable lag time and, optionally, a risk or probability of collision, each cost function being associated with a respective one of two or more nominal trajectories for a respective robot. A processor-based system may, for example, select a nominal trajectory based on a respective cost function representing acceptable lag time, a risk or probability of collision, and, optionally, a severity of collision, each cost function being associated with a respective one of two or more nominal trajectories for a respective robot. A processor-based system may select a nominal trajectory, for example, based on a respective cost function representing an acceptable lag time, a risk or probability of a collision, a severity of a collision, and, as the case may be, at least one of a duration of completion or an expenditure of energy, each cost function being associated with a respective one of two or more nominal trajectories of a respective robot, wherein each variable in the cost function representing, respectively, at least one of the acceptable lag time, the risk or probability of a collision, the severity of a collision, and the duration of completion or the expenditure of energy is weighted in the respective cost function. A processor-based system may, for example, select a respective nominal trajectory for each of two or more robots that maximizes an acceptable lag time in an aggregate across the robots of the two or more robots. A processor-based system may, for example, select a respective nominal trajectory for each of two or more robots that optimizes a respective cost function for each of the robots in an aggregate across all of the two or more robots, wherein each cost function represents an acceptable lag time and at least one risk or probability of collision, each cost function being associated with a respective nominal trajectory of a respective one of the two or more nominal trajectories of the respective robot. A processor-based system may, for example, select a respective nominal trajectory for each of two or more robots that optimizes a respective cost function for each of the robots in an aggregate across all of the two or more robots, wherein each cost function represents an acceptable lag time, at least a risk or probability of a collision, and a severity of the collision, each cost function being associated with a respective nominal trajectory of a respective one of the two or more nominal trajectories of the respective robot. A processor-based system may, for example, select a respective nominal trajectory for each of two or more robots that optimizes a respective cost function for each of the robots in an aggregate across all of the two or more robots, wherein each cost function represents at least one of an acceptable lag time, at least a risk or probability of collision, a severity of collision, and a duration or energy expenditure to complete, and each cost function is associated with a respective nominal trajectory of a respective one of the two or more nominal trajectories of the respective robot, wherein each variable in the cost function that represents at least one of the acceptable lag time, the risk or probability of collision, the severity of collision, and the duration or energy expenditure to complete is weighted in the respective cost function.

基於處理器之系統可例如判定標稱軌跡之一各別可接受滯後時間,該可接受滯後時間反映相對於標稱軌跡之位姿之定時的一最大可接受延遲,該最大可接受延遲仍擔保機器人透過由標稱軌跡規定之位姿之序列之一移動在一共用工作空間中之兩個或更多個機器人之間將保持無自碰撞,此可包含對兩個或更多個機器人中之每一機器人執行碰撞評估。A processor-based system may, for example, determine a respective acceptable hysteresis time for a nominal trajectory, the acceptable hysteresis time reflecting a maximum acceptable delay in timing relative to a pose of the nominal trajectory, the maximum acceptable delay still ensuring that self-collision-free movement between two or more robots in a common workspace through one of a sequence of poses specified by the nominal trajectory will remain, which may include performing a collision assessment on each of the two or more robots.

基於處理器之系統可例如在以下兩者之間執行碰撞評估:i)表示機器人之各別標稱軌跡的一各別樣本軌跡之至少一部分,其中引入了至少一個各別滯後時間;及ii)兩個或更多個機器人中其他機器人中之每一者的各別軌跡中之每一者的一各別樣本之至少一部分,其中在兩個或更多個機器人其他機器人中之每一者之各別軌跡中引入了至少一個各別滯後時間。A processor-based system may, for example, perform collision assessment between: i) at least a portion of a respective sample trajectory representing a respective nominal trajectory of the robot, into which at least one respective hysteresis time is introduced; and ii) at least a portion of a respective sample of each of the respective trajectories of each of the other of two or more robots, into which at least one respective hysteresis time is introduced.

圖8展示根據至少一項所圖解說明實施方案的一基於處理器之系統之操作之一方法800,該基於處理器之系統至少部分地基於可接受滯後時間來控制在一共用工作空間中操作之機器人之操作。根據至少一項所圖解說明實施方案,基於處理器之系統包含一或多個處理器,該等處理器對與可接受滯後時間相比之實際滯後時間進行監控,並且若實際滯後時間處於一臨限值之外則視情況採取補救行動。方法800可例如依循方法300 (圖3)、方法400 (圖4)、方法500 (圖5)、方法600 (圖6)及/或方法700 (圖7)之執行。方法800可例如在一運行時間期間執行,亦即在一或多個機器人正在執行各別運動規劃及/或正在執行任務之一時間期間。運行時間可例如遵循運動規劃中之某些或全部可發生之一組態或「預運行」時間,例如以為機器人中之每一者產生標稱軌跡及/或運動計劃。FIG8 shows a method 800 of operation of a processor-based system to control operation of a robot operating in a shared workspace based at least in part on acceptable lag time according to at least one illustrated embodiment. According to at least one illustrated embodiment, the processor-based system includes one or more processors that monitor actual lag time compared to acceptable lag time and take remedial action if the actual lag time is outside a critical value. Method 800 may, for example, follow execution of method 300 ( FIG3 ), method 400 ( FIG4 ), method 500 ( FIG5 ), method 600 ( FIG6 ), and/or method 700 ( FIG7 ). The method 800 may be executed, for example, during a run time, i.e., during a time when one or more robots are executing respective motion plans and/or are executing tasks. The run time may, for example, follow a configuration or "pre-run" time during which some or all of the motion planning may occur, such as to generate a nominal trajectory and/or motion plan for each of the robots.

方法800開始於802處,例如回應於系統或其組件之一啟動或接通電源、資訊或資料之接收或者藉由一叫用常式或程式之一叫用或調用。Method 800 begins at 802, for example, in response to a system or component thereof being started or powered on, receipt of information or data, or by a call or invocation of a routine or program.

視情況,在804處,基於處理器之系統之至少一個處理器對每一機器人之一各別運動計劃進行存取(例如,接收、擷取)。可自一或多個非暫時性處理器可讀媒體對各別運動計劃進行儲存及存取。Optionally, at 804, at least one processor of the processor-based system accesses (e.g., receives, retrieves) a respective motion plan for each robot. The respective motion plans may be stored and accessed from one or more non-transitory processor-readable media.

在806處,基於處理器之系統之至少一個處理器指示一或多個機器人執行各別運動計劃。舉例而言,至少一個處理器可將指令提供給一或多個機器人之一或多個運動控制器。運動控制器將控制信號提供給一或多個致動器(例如,電馬達、螺線管、閥、泵),該等致動器經耦合以驅動機器人之各種連桿機構,從而致使一機器人或其一部分移動。At 806, at least one processor of the processor-based system instructs one or more robots to execute respective motion plans. For example, at least one processor may provide instructions to one or more motion controllers of one or more robots. The motion controller provides control signals to one or more actuators (e.g., electric motors, solenoids, valves, pumps) that are coupled to drive various linkage mechanisms of the robot, thereby causing a robot or a portion thereof to move.

在808處,當實際軌跡係由機器人中之各別一者執行時,基於處理器之系統之至少一個處理器對一各別實際軌跡的與對應標稱軌跡相比之一滯後時間(實際滯後時間)量進行監控。如先前所解釋,實際軌跡係如由各別機器人執行之位姿及彼等位姿之定時之實際序列。雖然在某例項中,實際軌跡可匹配標稱軌跡,但在諸多例項中,實際軌跡將不匹配標稱軌跡,通常,其中機器人中之一或多者之實際軌跡的位姿中之至少某些之執行之一定時滯後於如由各別機器人之各別標稱軌跡規定之彼等位姿之定時。監控可以多種方式中之任一種來執行。舉例而言,基於處理器之系統可使用經由一或多個感測器來感測之輸入,該一或多個感測器被定位成感測共用工作空間中機器人之位置及/或移動及/或位姿或組態或狀態。感測器可對整個工作空間進行監控,感測器例如採取相機、視訊相機、立體相機、運動偵測器等形式,被定位並具有囊封共用工作空間之全部或至少一部分之一視場。另外或另一選擇係,感測器可對具體機器人之位置及/或移動及/或位姿或組態或狀態進行監控,例如包含以下各項中之任何一或多者:相機、視訊相機、運動偵測器、位置編碼器或旋轉編碼器、霍爾效應感測器及/或與機器人之一或多個關節、連機構桿及/或致動器相關聯之Reed開關。一或多個處理器可執行處理(例如,機器視覺處理)來監控實際軌跡。另外或另一選擇係,基於處理器之系統可使用來自機器人控制系統及/或驅動系統(例如,馬達控制器、氣動控制器、液壓控制器等)之資訊,該資訊表示用於驅動機器人或其部分之控制信號(例如,PWM電機控制信號),及/或使用自機器人或機器人之驅動系統接收之回饋信號(例如,回式EMF)。一或多個處理器可執行處理(例如,機器視覺處理)以判定實際軌跡之各別實際滯後時間。At 808, at least one processor of the processor-based system monitors an amount of lag time (actual lag time) of a respective actual trajectory compared to a corresponding nominal trajectory as the actual trajectory is executed by a respective one of the robots. As previously explained, the actual trajectory is an actual sequence of poses and the timing of those poses as executed by the respective robot. While in some instances the actual trajectory may match the nominal trajectory, in many instances the actual trajectory will not match the nominal trajectory, typically where a timing of execution of at least some of the poses of the actual trajectory of one or more of the robots lags behind the timing of those poses as specified by the respective nominal trajectories of the respective robots. Monitoring may be performed in any of a variety of ways. For example, a processor-based system may 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 entire workspace may be monitored by sensors, such as in the form of cameras, video cameras, stereo cameras, motion detectors, etc., positioned and having a field of view that encapsulates all or at least a portion of the shared workspace. Additionally or alternatively, the position and/or movement and/or posture or configuration or state of a specific robot may be monitored by sensors, such as any one or more of the following: cameras, video cameras, motion detectors, position encoders or rotation encoders, Hall effect sensors and/or Reed switches associated with one or more joints, linkages and/or actuators of the robot. One or more processors may perform processing (e.g., machine vision processing) to monitor the actual trajectory. Additionally or alternatively, the processor-based system may use information from a robot control system and/or drive system (e.g., motor controller, pneumatic controller, hydraulic controller, etc.) representing control signals used to drive the robot or portions thereof (e.g., PWM motor control signals), and/or use feedback signals received from the robot or the robot's drive system (e.g., feedback EMF). One or more processors may perform processing (e.g., machine vision processing) to determine respective actual lag times of actual trajectories.

在810處,基於處理器之系統之至少一個處理器判定所監控滯後時間(實際滯後時間)量是否超過在共用工作空間中操作之機器人中任一者中之各別機器人之各別軌跡之一裕量或臨限值(例如,各別所判定可接受滯後時間;各別所判定可接受滯後時間之百分比)。At 810, at least one processor of the processor-based system determines whether the amount of monitored lag time (actual lag time) exceeds a margin or threshold (e.g., a respective determined acceptable lag time; a percentage of a respective determined acceptable lag time) for a respective trajectory of any of the robots operating in a common workspace.

回應於對所監控滯後時間(亦即,實際滯後時間)量超過任何機器人之各別機器人之各別軌跡之各別裕量或臨限值(例如,所判定可接受滯後時間;各別所判定可接受滯後時間之百分比)之一判定,視情況,在812處,基於處理器之系統之至少一個處理器選擇及/或採取一或多個補救行動。In response to a determination that a monitored lag time (i.e., actual lag time) exceeds a respective margin or threshold (e.g., a determined acceptable lag time; a percentage of the respective determined acceptable lag time) for a respective trajectory of a respective robot of any robot, at 812, at least one processor of the processor-based system selects and/or takes one or more remedial actions, as appropriate.

舉例而言,為了採取至少一個補救行動,當由基於處理器之系統之至少一個處理器執行時,處理器可執行指令可致使處理器執行以下各項中之一或多者:使一或多個機器人之一移動停止;使一或多個機器人之一移動減速;及/或使一或多個機器人之一移動加速。舉例而言,至少一個處理器可使一個、兩個、更多個或者甚至所有機器人之移動停止。又舉例而言,至少一個處理器可使一個、兩個、更多個或者甚至所有機器人之移動減速。又舉例而言,至少一個處理器可使一個、兩個、更多個或者甚至所有機器人之移動加速。又舉例而言,至少一個處理器可在使一或多個機器人之移動減速的同時使一或多個機器人之移動停止。又舉例而言,至少一個處理器可在使一或多個機器人之移動加速或保持恆定的同時使一或多個機器人之移動停止。又舉例而言,至少一個處理器可在使一或多個機器人之移動加速或保持恆定的同時使一或多個機器人之移動減速。又舉例而言,至少一個處理器可在使一或多個機器人之移動減速的同時並且亦在使一或多個其他機器人之移動加速或保持恆定的同時使一或多個機器人之移動停止。術語「使移動保持恆定」意味著機器人之標稱軌跡沒有改變,但機器人之運動速率(亦即,速度及方向)可發生變化,此乃因此係由標稱軌跡來規定的。又舉例而言,為了採取至少一個補救行動,當由基於處理器之系統之至少一個處理器執行時,處理器可執行指令可致使處理器執行以下各項中之一或多者:使一或多個機器人之移動停止;使一或多個機器人沿著如由各別標稱軌跡規定之一各別軌跡前進;後續接著機器人之移動之一重新開始。使移動重新開始通常將涉及自使移動停止之處重新開始移動,但在某些例項中可包含返回至一各別軌跡之一開始處並自該開始處重新開始。For example, to take at least one remedial action, when executed by at least one processor of the processor-based system, the processor may execute instructions that may cause the processor to perform one or more of the following: stop a movement of one or more robots; slow down a movement of one or more robots; and/or speed up a movement of one or more robots. For example, at least one processor may stop the movement of one, two, more, or even all robots. For another example, at least one processor may slow down the movement of one, two, more, or even all robots. For another example, at least one processor may speed up the movement of one, two, more, or even all robots. For another example, at least one processor may stop the movement of one or more robots while slowing down the movement of one or more robots. For another example, at least one processor may stop the movement of one or more robots while accelerating or keeping the movement of one or more robots constant. For another example, at least one processor may slow down the movement of one or more robots while accelerating or keeping the movement of one or more robots constant. For another example, at least one processor may slow down the movement of one or more robots while also stopping the movement of one or more robots while accelerating or keeping the movement of one or more other robots constant. The term "keeping the movement constant" means that the nominal trajectory of the robot does not change, but the rate of movement (i.e., speed and direction) of the robot may change, which is therefore specified by the nominal trajectory. For another example, to take at least one remedial action, when executed by at least one processor of the processor-based system, the processor may execute instructions that may cause the processor to perform one or more of the following: stop the movement of one or more robots; cause one or more robots to move along a respective trajectory as specified by the respective nominal trajectory; followed by a restart of one of the movements of the robots. Restarting a move will typically involve restarting the move from where it was stopped, but in some instances may include returning to the beginning of a respective trajectory and restarting from that beginning.

視情況,在814處,基於處理器之系統之至少一個處理器對一各別實際軌跡的與對應標稱軌跡相比之一滯後時間(實際滯後時間)量進行監控,此乃因實際軌跡係由機器人中之各別一者來執行的。Optionally, at 814, at least one processor of the processor-based system monitors an amount of lag time (actual lag time) of a respective actual trajectory compared to a corresponding nominal trajectory as the actual trajectory is executed by a respective one of the robots.

視情況,在816處,對於在共用工作空間中操作之機器人中之每一者,基於處理器之系統之至少一個處理器判定所監控滯後時間(亦即,實際滯後時間)量是否不再超過各別機器人之各別軌跡之一各別裕量或臨限值(例如,所判定可接受滯後時間;各別所判定可接受滯後時間之百分比)。系統可進入一等待迴路,繼續對滯後時間(亦即,實際滯後時間)量進行監控,直至此不再超過所有機器人之各別裕量或臨限值位置(例如,所判定可接受滯後時間;各別所判定可接受滯後時間之百分比)為止。一旦達成此種條件,則控制轉至818。Optionally, at 816, for each of the robots operating in the shared workspace, at least one processor of the processor-based system determines whether the monitored lag time (i.e., actual lag time) amount no longer exceeds a respective margin or threshold value (e.g., determined acceptable lag time; percentage of the respective determined acceptable lag time) for the respective trajectory of the respective robot. The system may enter a waiting loop to continue monitoring the lag time (i.e., actual lag time) amount until it no longer exceeds the respective margin or threshold value position (e.g., determined acceptable lag time; percentage of the respective determined acceptable lag time) for all robots. Once this condition is met, control is transferred to 818.

視情況,在818處,基於處理器之系統之至少一個處理器致使機器人中之一或多者繼續執行一各別運動計劃(例如,重新開始移動)。Optionally, at 818, at least one processor of the processor-based system causes one or more of the robots to continue executing a respective motion plan (e.g., resume movement).

方法800在820處終止,例如直至再次被調用為止。雖然方法800係依據一有序流程來闡述的,但在諸多實施方案中,各種動作或操作將同時或並行執行,及/或可包含額外動作及/或省略某些動作。The method 800 terminates at 820, for example, until it is called again. Although the method 800 is described according to an ordered flow, in many implementations, various actions or operations will be performed simultaneously or in parallel, and/or may include additional actions and/or omit certain actions.

前述詳細說明已經由使用方塊圖、示意圖及實例來陳述裝置及/或程序之各項實施例。只要此等方塊圖、示意圖及實例含有一或多個功能及/或操作,熟習此項技術者將理解,可藉由一寬廣範圍之硬體、軟體、韌體或幾乎其任一組合來個別地及/或共同地實施此等方塊圖、流程圖或實例內之每一功能及/或操作。在一項實施例中,本發明標的物可經由布林電路、特殊應用積體電路(ASIC)及/或FPGA來實施。然而,熟習此項技術者將認識到,在各種不同實施方案中,本文中所揭示之實施例可作為在一或多個電腦上運行之一或多個電腦程式(例如,作為在一或多個電腦系統上運行之一或多個程式)、作為在一或多個控制器(例如,微控制器)上運行之一或多個程式、作為在一或多個處理器(例如,微處理器)上運行之一或多個程式、作為韌體或者作為幾乎其任一組合而全部或部分地在標準積體電路中實施,並且鑒於本發明,針對設計電路系統及/或為軟體及/或韌體寫入碼將恰好在熟習此項技術者之技能範圍內。The foregoing detailed description has been presented by using block diagrams, schematics, and examples to describe various embodiments of devices and/or programs. As long as such block diagrams, schematics, and examples contain one or more functions and/or operations, those skilled in the art will understand that each function and/or operation within such block diagrams, flow charts, or examples may be implemented individually and/or collectively by a wide range of hardware, software, firmware, or any combination thereof. In one embodiment, the subject matter of the present invention may be implemented via a Boolean circuit, an application specific integrated circuit (ASIC), and/or an FPGA. However, those skilled in the art will recognize that, in various implementations, the embodiments disclosed herein may be implemented in whole or in part in standard integrated circuits 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 any combination thereof, and that in view of the present invention, designing circuit systems and/or writing code for the software and/or firmware will be well within the skills of those skilled in the art.

熟習此項技術者將認識到,本文中所陳述之諸多方法或演算法可採用額外動作,可省略某些動作,及/或可以不同於所規定的一次序執行動作。Those skilled in the art will recognize that many of the methods or algorithms described herein may utilize additional actions, may omit certain actions, and/or may perform the actions in a different order than that specified.

另外,熟習此項技術者將瞭解,本文中所教示之機制能夠在硬體中實施,例如在一或多個FPGA或ASIC中實施。Additionally, those skilled in the art will appreciate 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/616,783號;於2018年2月6日提出申請之美國專利申請案第62/626,939號;於2019年6月3日提出申請之美國專利申請案第62/856,548號;於2019年6月24日提出申請之美國專利申請案第62/865,431號;於2020年1月22日提出申請之美國專利申請案第62/964,405號;於2022年4月6日提出申請之美國專利申請案第63/327,917號;公開號為WO2021150439A1之國際專利申請案PCT/US2021/013610。可鑒於上文詳述之說明對該等實施例作出此等及其他改變。一般而言,在以下申請專利範圍中,所使用之術語不應理解為將申請專利範圍限於說明書及申請專利範圍中所揭示之具體實施例,而應理解為包含所有可能實施例連同此申請專利範圍所賦予之等效物之全部範圍。因此,申請專利範圍並不受本揭示內容限制。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 are incorporated herein by reference in their entirety, including but not limited to: International Patent Application No. PCT/US2017/036880 filed on June 9, 2017; International Patent Application Publication No. WO2016/122840 filed on January 5, 2016; U.S. Patent Application No. 62/616,783 filed on January 12, 2018; U.S. Patent Application No. 62/626,939 filed on June 3, 2019; U.S. Patent Application No. 62/856,548 filed on June 3, 2019; U.S. Patent Application No. 62/865,431 filed on June 24, 2019; U.S. Patent Application No. 62/964,405 filed on January 22, 2020; U.S. Patent Application No. 63/327,917 filed on April 6, 2022; International Patent Application No. PCT/US2021/013610 with Publication No. WO2021150439A1. These and other changes may be made to the embodiments in light of the description detailed above. In general, in the following claims, the terms used should not be construed to limit the claims to the specific embodiments disclosed in the specification and claims, but should be construed to include all possible embodiments together with the full range of equivalents granted by this claim. Therefore, the claims are not limited by the present disclosure.

100:機器人系統/機器人控制系統 102a:機器人/給定機器人 102b:機器人/給定機器人 102c:機器人/給定機器人 103:機器人附肢 104:共用工作空間 105:基座 106:運送機 108:多機器人組態最佳化系統/選用多機器人組態最佳化系統/基於處理器之多機器人組態最佳化系統 109:輸入/所提供輸入 110:群體產生器 111:輸出 112:多機器人環境模擬器 114:多機器人最佳化引擎 115:可接受滯後時間評估器 116:候選解決方案/給定候選解決方案 118:機器人控制系統 120:運動規劃器/選用運動規劃器 200a:機器人控制系統/第一機器人控制系統 200b:機器人控制系統/其他機器人控制系統 202:機器人/第一機器人/給定機器人 204a:運動規劃器/第一運動規劃器 204b:運動規劃器/其他運動規劃器 206a:運動計劃/第一運動計劃 206b:運動計劃/其他運動計劃 208:運動規劃圖 209:運動完成訊息 210:通信通道 211:掃掠體積表示/選用掃掠體積表示 212:源 214:節點 215:任務規範 216:邊緣 218a:致動器 218b:致動器 218c:致動器 220:運動控制器 222:處理器 224a:系統記憶體 224b:磁碟機 226:唯讀記憶體 227:介面 228:隨機存取記憶體 230:快閃記憶體 232:基本輸入/輸出系統 234:系統匯流排 236:作業系統 238:應用程式 240:程式/模組 242:程式資料 250:運動轉換器 251:軌跡預測器 252:路徑產生器 253:碰撞評估器 254:成本設定器 255:路徑分析器/選用路徑分析器 256:軌跡產生器/標稱軌跡產生器 257:可接受滯後時間評估器 258:標稱軌跡分析器/選用標稱軌跡分析器 259:場可程式化閘陣列 260:修剪器 262:選用感測器 263:環境轉換器 264:滯後監控器/滯後時間監控器 266:補救行動選擇器/選用補救行動選擇器 300:方法 302:步驟 304:步驟 306:步驟 308:步驟 310:步驟 312:步驟 314:步驟 316:步驟 318:步驟 320:步驟 322:步驟 324:步驟 326:步驟 328:步驟 330:步驟 332:步驟 400:方法 402:步驟 404:步驟 406:步驟 408:步驟 410:步驟 412:步驟 414:步驟 416:步驟 418:步驟 420:步驟 422:步驟 424:步驟 426:步驟 428:步驟 430:步驟 432:步驟 500:方法/機器人組態方法 502:步驟 504:步驟 506:步驟/外部機器人處理迴路 508:步驟 510:步驟/內部標稱軌跡處理迴路 512:步驟 514:步驟 516:步驟 518:步驟 520:步驟 522:步驟 600:方法/機器人組態方法 602:步驟 604:步驟 606:步驟 608:步驟/內部標稱軌跡碰撞評估迴路 610:步驟 612:步驟/巢套式內部滯後時間碰撞評價迴路 614:步驟 616:步驟 617:步驟 618:步驟 620:步驟 622:步驟 624:步驟 626:步驟 628:步驟 630:步驟 632:步驟 700:方法 702:步驟 704:步驟 706:步驟 708:步驟/外部迭代機器人處理迴路/外部機器人處理迭代迴路 710:步驟 712:步驟/內部標稱軌跡處理迭代迴路 714:步驟 716:步驟 718:步驟 720:步驟 722:步驟 724:步驟 726:步驟 728:步驟 730:步驟 732:步驟 800:方法 802:步驟 804:步驟 806:步驟 808:步驟 810:步驟 812:步驟 814:步驟 816:步驟 818:步驟 820:步驟 X:正交軸線 Y:正交軸線 Z:正交軸線 100: robot system/robot control system 102a: robot/given robot 102b: robot/given robot 102c: robot/given robot 103: robot appendage 104: shared workspace 105: base 106: conveyor 108: multi-robot configuration optimization system/selected multi-robot configuration optimization system/processor-based multi-robot configuration optimization system 109: input/provided input 110: swarm generator 111: output 112: multi-robot environment simulator 114: multi-robot optimization engine 115: acceptable lag time estimator 116: candidate solution/given candidate solution 118: robot control system 120: motion planner/selected motion planner 200a: robot control system/first robot control system 200b: robot control system/other robot control systems 202: robot/first robot/given robot 204a: motion planner/first motion planner 204b: motion planner/other motion planners 206a: motion plan/first motion plan 206b: motion plan/other motion plan 208: motion plan graph 209: motion completion message 210: communication channel 211: swept volume representation/selected swept volume representation 212: source 214: Node 215: Task specification 216: Edge 218a: Actuator 218b: Actuator 218c: Actuator 220: Motion controller 222: Processor 224a: System memory 224b: Disk drive 226: Read-only memory 227: Interface 228: Random access memory 230: Flash memory 232: Basic input/output system 234: System bus 236: Operating system 238: Application 240: Program/module 242: Program data 250: Motion converter 251: Trajectory predictor 252: Path Generator 253: Collision Evaluator 254: Cost Setter 255: Path Analyzer/Optional Path Analyzer 256: Trajectory Generator/Nominal Trajectory Generator 257: Acceptable Lag Time Evaluator 258: Nominal Trajectory Analyzer/Optional Nominal Trajectory Analyzer 259: Field Programmable Gate Array 260: Trimmer 262: Optional Sensor 263: Environment Translator 264: Lag Monitor/Lag Time Monitor 266: Remedial Action Selector/Optional Remedial Action Selector 300: Method 302: Step 304: Step 306: step 308: step 310: step 312: step 314: step 316: step 318: step 320: step 322: step 324: step 326: step 328: step 330: step 332: step 400: method 402: step 404: step 406: step 408: step 410: step 412: step 414: step 416: step 418: step 420: step 422: Step 424: Step 426: Step 428: Step 430: Step 432: Step 500: Method/Robot Configuration Method 502: Step 504: Step 506: Step/External Robot Processing Loop 508: Step 510: Step/Internal Nominal Path Processing Loop 512: Step 514: Step 516: Step 518: Step 520: Step 522: Step 600: Method/Robot Configuration Method 602: Step 604: Step 606: step 608: step/internal nominal trajectory collision evaluation loop 610: step 612: step/nested internal hysteresis time collision evaluation loop 614: step 616: step 617: step 618: step 620: step 622: step 624: step 626: step 628: step 630: step 632: step 700: method 702: step 704: step 706: step 708: Step/External Iterative Robot Processing Loop/External Robot Processing Iterative Loop 710: Step 712: Step/Internal Nominal Trajectory Processing Iterative Loop 714: Step 716: Step 718: Step 720: Step 722: Step 724: Step 726: Step 728: Step 730: Step 732: Step 800: Method 802: Step 804: Step 806: Step 808: Step 810: Step 812: Step 814: Step 816: Step 818: Step 820: Step X: Orthogonal axis Y: Orthogonal axis Z: Orthogonal axis

在各圖式中,相同參考編號識別類似元件或動作。圖式中之元件之大小及相對位置未必按比例繪製。舉例而言,各種元件之形狀以及角度未按比例繪製,並且此等元件中之某些經任意放大及定位以改良圖式易讀性。此外,如所繪製之元件之特定形狀並不意欲表明關於特定元件之實際形狀之任何資訊,且僅僅係出於在圖式中易於辨識之目的而選擇的。 圖1係根據一項所圖解說明實施方案的複數個機器人在其中操作以實行任務之一共用工作空間以及執行一最佳化以組態機器人之一組態最佳化系統之一示意圖。 圖2係根據至少另一所圖解說明實施方案的至少一第一機器人及可通信地耦合以控制該第一機器人之操作之機器人控制系統之一功能性方塊圖,其中該機器人控制系統包含一運動規劃器,該運動規劃器有利地判定並採用運動規劃中機器人之各別標稱軌跡之可接受滯後時間並視情況對至少第一機器人之實際操作進行監控,將實際滯後時間與一裕量或臨限值(例如,可接受滯後時間)進行比較,且視情況在得到保證時採取補救行動。 圖3圖解說明根據至少一項所圖解說明實施方案的一基於處理器之系統執行運動規劃以控制將在一共用工作空間中操作之機器人的操作之一方法,其中在不必考慮其他機器人之標稱軌跡中之滯後時間之一效應的情況下基於其他機器人之一標稱軌跡來判定每一機器人之一可接受滯後時間,並且產生或選擇規定標稱軌跡之運動計劃,該等標稱軌跡與各別可接受滯後時間相關聯。 圖4展示根據至少一項所圖解說明實施方案的一基於處理器之系統執行運動規劃以控制將在一共用工作空間中操作之機器人的操作之一方法,其中在有必要考慮其他機器人之標稱軌跡中之滯後時間之一效應的同時,基於其他機器人之標稱軌跡來判定每一機器人之一可接受滯後時間,並且產生或選擇規定標稱軌跡之運動計劃,該等標稱軌跡與各別可接受滯後時間相關聯。 圖5展示根據至少一項所圖解說明實施方案的一基於處理器之系統之操作之一方法,該基於處理器之系統為將在一共用工作空間中操作之若干個機器人中之每一者之一或多個軌跡產生掃掠體積,該基於處理器之系統可視情況用於執行圖3、圖4及/或圖6之方法。 圖6展示根據至少一項所圖解說明實施方案的一基於處理器之系統針對若干個機器人以及機器人中之每一者之若干個軌跡執行碰撞評估的操作之一方法,其中機器人或其部分沿著軌跡之移動被表示為掃掠體積,並且碰撞評估可用於判定在一共用工作空間中操作之一或多個機器人之可接受滯後時間。 圖7展示根據至少一項所圖解說明實施方案的一基於處理器之系統之操作之一方法,該基於處理器之系統至少部分地基於可接受滯後時間並且視情況至少部分地基於表示為例如一成本或成本函數之其他準則為將在一共用工作空間中操作之一或多個機器人產生或選擇運動計劃。 圖8展示根據至少一項所圖解說明實施方案的一基於處理器之系統之操作之一方法,該基於處理器之系統至少部分地基於可接受滯後時間來控制在一共用工作空間中操作之機器人之操作。 In the drawings, the same reference numbers identify similar elements or actions. The size and relative position of the elements in the drawings are not necessarily drawn to scale. For example, the shapes and angles of various elements are not drawn to scale, and some of these elements are arbitrarily enlarged and positioned to improve the legibility of the drawings. In addition, the specific shapes of the elements as drawn are not intended to indicate any information about the actual shape of the specific elements, and are selected solely for the purpose of easy identification in the drawings. Figure 1 is a schematic diagram of a shared workspace in which multiple robots operate to perform tasks and a configuration optimization system that performs an optimization to configure the robots according to an illustrated embodiment. FIG. 2 is a functional block diagram of at least one first robot and a robot control system communicatively coupled to control operation of the first robot according to at least another illustrated embodiment, wherein the robot control system includes a motion planner that advantageously determines and employs acceptable lag times for respective nominal trajectories of the robots in motion planning and optionally monitors actual operation of at least the first robot, compares actual lag time to a margin or threshold value (e.g., acceptable lag time), and optionally takes remedial action when warranted. FIG. 3 illustrates a method for a processor-based system to perform motion planning to control the operation of robots to be operated in a common workspace according to at least one illustrated embodiment, wherein an acceptable lag time for each robot is determined based on a nominal trajectory of the other robots without having to consider an effect of lag time in the nominal trajectory of the other robots, and a motion plan is generated or selected that specifies nominal trajectories that are associated with respective acceptable lag times. FIG. 4 shows a method of a processor-based system performing motion planning to control the operation of robots to be operated in a common workspace according to at least one illustrated embodiment, wherein an acceptable lag time for each robot is determined based on the nominal trajectories of the other robots while considering an effect of lag time in the nominal trajectories of the other robots as necessary, and motion plans are generated or selected that specify nominal trajectories that are associated with respective acceptable lag times. FIG. 5 shows a method of operation of a processor-based system according to at least one illustrated embodiment to generate a swept volume for one or more trajectories for each of a number of robots operating in a common workspace, the processor-based system being operable to perform the methods of FIG. 3 , FIG. 4 , and/or FIG. 6 , as appropriate. FIG. 6 shows a method of operation of a processor-based system according to at least one illustrated embodiment to perform collision assessment for a number of robots and a number of trajectories for each of the robots, wherein movement of the robots or portions thereof along the trajectories is represented as swept volumes, and collision assessment can be used to determine acceptable lag times for one or more robots operating in a common workspace. FIG. 7 shows a method of operation of a processor-based system according to at least one illustrated embodiment to generate or select motion plans for one or more robots to be operated in a shared workspace based at least in part on acceptable lag time and, as appropriate, at least in part on other criteria represented, for example, as a cost or cost function. FIG. 8 shows a method of operation of a processor-based system according to at least one illustrated embodiment to control the operation of robots operating in a shared workspace based at least in part on acceptable lag time.

100:機器人系統/機器人控制系統 100:Robot system/Robot control system

102a:機器人/給定機器人 102a:Robot/Given robot

102b:機器人/給定機器人 102b:Robot/given robot

102c:機器人/給定機器人 102c:Robot/given robot

103:機器人附肢 103: Robotic Appendages

104:共用工作空間 104: Shared workspace

105:基座 105: Base

106:運送機 106: Conveyor machine

108:多機器人組態最佳化系統/選用多機器人組態最佳化系統/基於處理器之多機器人組態最佳化系統 108: Multi-robot configuration optimization system/selection of multi-robot configuration optimization system/processor-based multi-robot configuration optimization system

109:輸入/所提供輸入 109: Input/Input provided

110:群體產生器 110: Group Generator

111:輸出 111: Output

112:多機器人環境模擬器 112:Multi-robot environment simulator

114:多機器人最佳化引擎 114:Multi-robot optimization engine

115:可接受滯後時間評估器 115: Acceptable lag time estimator

116:候選解決方案/給定候選解決方案 116: Candidate solution/Given candidate solution

118:機器人控制系統 118:Robot control system

120:運動規劃器/選用運動規劃器 120: Movement Planner/Select Movement Planner

X:正交軸線 X: orthogonal axis

Y:正交軸線 Y: orthogonal axis

Z:正交軸線 Z: orthogonal axis

Claims (60)

一種在一基於處理器之系統中操作以便於使複數個機器人針對複數個機器人將在其中操作之一多機器人操作環境進行操作之方法,該方法包括: 對於兩個或更多個機器人中之每一者, 針對該兩個或更多個機器人中該各別機器人之一或多個標稱軌跡中之每一者,該等標稱軌跡規定該各別機器人之位姿之一各別序列及該等位姿之定時, 判定該標稱軌跡之一各別可接受滯後時間,該各別可接受滯後時間反映相對於該標稱軌跡之該等位姿之該定時的一最大可接受延遲,該最大可接受延遲仍擔保該機器人透過由該標稱軌跡規定之位姿之該等序列進行之一移動相對於該兩個或更多個機器人中該等其他機器人中之每一者透過由該各別標稱軌跡規定之位姿之該等各別序列進行之一移動將保持無碰撞;及 將該可接受滯後時間提供給至少一個處理器以控制該兩個或更多個機器人中之每一者之操作。 A method operating in a processor-based system to cause a plurality of robots to operate in a multi-robot operating environment in which the plurality of robots are to operate, the method comprising: for each of two or more robots, for each of one or more nominal trajectories for the respective robot of the two or more robots, the nominal trajectories specifying a respective sequence of poses of the respective robot and the timing of the poses, Determining a respective acceptable hysteresis time for the nominal trajectory, the respective acceptable hysteresis time reflecting a maximum acceptable delay of the timing of the poses relative to the nominal trajectory, the maximum acceptable delay still ensuring that a movement of the robot through the sequences of poses specified by the nominal trajectory will remain collision-free relative to a movement of each of the other robots of the two or more robots through the respective sequences of poses specified by the respective nominal trajectory; and Providing the acceptable hysteresis time to at least one processor to control the operation of each of the two or more robots. 如請求項1之方法,其中判定該標稱軌跡之一各別可接受滯後時間包含: 對於該兩個或更多個機器人中之每一者, 針對該一或多個標稱軌跡中之每一者, 產生一掃掠體積表示,該掃掠體積表示表示由該機器人之至少一部分在自該標稱軌跡中之至少一個時間至該標稱軌跡中之另一時間在由該標稱軌跡規定之位姿之一組該等序列之間移動時掃掠之一體積。 The method of claim 1, wherein determining a respective acceptable lag time of the nominal trajectory comprises: For each of the two or more robots, For each of the one or more nominal trajectories, Generating a swept volume representation representing a volume swept by at least a portion of the robot while moving between a set of said sequences of poses specified by the nominal trajectory from at least one time in the nominal trajectory to another time in the nominal trajectory. 如請求項2之方法,其中判定該標稱軌跡之一各別可接受滯後時間進一步包含: 使用該等所產生掃掠體積來執行碰撞評估。 The method of claim 2, wherein determining a respective acceptable lag time of the nominal trajectory further comprises: Using the generated sweep volumes to perform a collision assessment. 如請求項3之方法,其中使用該等所產生掃掠體積來執行碰撞評估包含:對於該兩個或更多個機器人中之每一機器人,在以下兩者之間執行碰撞評估:i)表示該機器人之該各別標稱軌跡的一各別樣本軌跡之至少一部分,其中引入了至少一個各別滯後時間;及ii)該兩個或更多個機器人中該等其他機器人中之每一者的該等各別軌跡中之每一者的一各別樣本之至少一部分,其中在該兩個或更多個機器人中該等其他機器人中之每一者的該等各別軌跡中引入了至少一個各別滯後時間,及 回應於判定在該機器人與該兩個或更多個機器人中該等其他機器人中之至少一者之間將發生一碰撞,針對該機器人之該一或多個標稱軌跡,將小於導致對一碰撞將發生之該判定之一各別滯後時間的一各別滯後時間識別為該各別可接受滯後時間,其中該可接受滯後時間反映相對於該標稱軌跡之該等位姿之該定時的該最大可接受延遲,該最大可接受延遲仍擔保該機器人透過由該標稱軌跡規定之位姿之該等序列進行之該移動相對於該兩個或更多個機器人中該等其他機器人之該移動將保持無碰撞。 The method of claim 3, wherein using the generated swept volumes to perform collision assessment comprises: for each of the two or more robots, performing collision assessment between: i) at least a portion of a respective sample trajectory representing the respective nominal trajectory of the robot, wherein at least one respective hysteresis time is introduced; and ii) at least a portion of a respective sample of each of the respective trajectories of each of the other robots in the two or more robots, wherein at least one respective hysteresis time is introduced in the respective trajectories of each of the other robots in the two or more robots, and In response to determining that a collision will occur between the robot and at least one of the other robots in the two or more robots, a respective hysteresis time that is less than a respective hysteresis time that would cause the determination that a collision will occur is identified as the respective acceptable hysteresis time for the one or more nominal trajectories of the robot, wherein the acceptable hysteresis time reflects the maximum acceptable delay of the timing relative to the poses of the nominal trajectory, the maximum acceptable delay still ensuring that the movement of the robot through the sequence of poses specified by the nominal trajectory will remain collision-free relative to the movement of the other robots in the two or more robots. 如請求項4之方法,其中判定該標稱軌跡之一各別可接受滯後時間進一步包含: 回應於判定在該機器人與該兩個或更多個機器人中該等其他機器人中之至少一者之間將發生一碰撞,針對該兩個或更多個機器人中該等其他機器人中之該至少一者的已判定一碰撞將發生之該一或多個標稱軌跡,將小於導致對一碰撞將發生之該判定之一各別滯後時間的一各別滯後時間識別為該各別可接受滯後時間,其中該可接受滯後時間反映相對於該標稱軌跡之該等位姿之該定時的該最大可接受延遲,該最大可接受延遲仍擔保該機器人透過由該等各別標稱軌跡規定之位姿之該等序列進行之該移動相對於該兩個或更多個機器人中該等其他機器人之該移動將保持無碰撞。 As in the method of claim 4, determining an acceptable lag time of each of the nominal trajectories further comprises: In response to determining that a collision will occur between the robot and at least one of the other robots of the two or more robots, the one or more nominal trajectories for which it is determined that a collision will occur for the at least one of the other robots of the two or more robots are identified as the respective acceptable hysteresis times by respective hysteresis times that are less than respective hysteresis times that would result in the determination that a collision will occur, wherein the acceptable hysteresis times reflect the maximum acceptable delay of the timing of the poses relative to the nominal trajectories that still ensures that the movement of the robot through the sequences of poses specified by the respective nominal trajectories will remain collision-free relative to the movement of the other robots of the two or more robots. 如請求項1之方法,其中判定該標稱軌跡之一各別可接受滯後時間進一步包含: 以自一相對較小候選滯後時間至一相對較大候選滯後時間之一序列迭代通過複數個候選滯後時間中之每一者,至少直至達成一停止條件為止, 迭代通過由該標稱軌跡涵蓋之複數個時間中之每一者, 基於該等候選滯後時間中之當前一者來檢查該兩個或更多個機器人中之一個機器人與該兩個或更多個機器人中之至少一個其他機器人之間有無一碰撞;及 回應於判定在該兩個或更多個機器人中之一個機器人與該兩個或更多個機器人中之至少一個其他機器人之間將發生一碰撞,將該機器人以及該兩個或更多個機器人中該等其他機器人中之該至少一者的已判定一碰撞將發生之該等標稱軌跡之該各別可接受滯後時間設定為一最緊接之先前候選滯後時間。 The method of claim 1, wherein determining a respective acceptable hysteresis time of the nominal trajectory further comprises: iterating through each of a plurality of candidate hysteresis times in a sequence from a relatively smaller candidate hysteresis time to a relatively larger candidate hysteresis time, at least until a stop condition is met, iterating through each of a plurality of times covered by the nominal trajectory, checking whether there is a collision between one of the two or more robots and at least one other of the two or more robots based on a current one of the candidate hysteresis times; and In response to determining that a collision will occur between one of the two or more robots and at least one other of the two or more robots, the respective acceptable lag times of the nominal trajectories of the robot and the at least one of the other of the two or more robots where it is determined that a collision will occur are set to a closest previous candidate lag time. 如請求項6之方法,其中基於該等候選滯後時間中之當前一者來檢查該機器人與該等其他機器人之間有無一碰撞包含: 對於該兩個或更多個機器人中之每一者, 相對於在具有該等候選滯後時間中之該當前一者的情況下該兩個或更多個機器人中該等其他機器人中之每一者的該等各別軌跡中之每一者之至少一部分,對在具有該等候選滯後時間中之該當前一者或者另一先前所判定滯後時間的情況下該機器人之該各別標稱軌跡之至少一部分執行碰撞評估。 The method of claim 6, wherein checking whether there is a collision between the robot and the other robots based on the current one of the waiting and selecting delay times comprises: For each of the two or more robots, performing a collision assessment on at least a portion of the respective nominal trajectory of the robot with the current one of the waiting and selecting delay times or another previously determined delay time relative to at least a portion of each of the respective trajectories of each of the other robots of the two or more robots with the current one of the waiting and selecting delay times. 如請求項7之方法,其中相對於在具有該等候選滯後時間中之該當前一者的情況下該兩個或更多個機器人中該等其他機器人中之每一者的該等各別軌跡中之每一者之至少一部分對在具有該等候選滯後時間中之該當前一者或者另一先前所判定滯後時間的情況下該機器人之該等各別標稱軌跡之至少一部分執行碰撞評估包含:執行碰撞評估以判定在該機器人及該等其他機器人沿著如按該等候選滯後時間來延遲之該等各別標稱軌跡之至少該部分移動的同時該機器人之至少一部分與該兩個或更多個機器人中該等其他機器人中之任一者之至少一部分是否碰撞。A method as claimed in claim 7, wherein performing a collision assessment on at least a portion of the respective nominal trajectories of the robot with the current preceding one of the waiting and selection delay time or another previously determined hysteresis time relative to at least a portion of each of the respective trajectories of each of the other robots of the two or more robots with the current preceding one of the waiting and selection delay time comprises: performing a collision assessment to determine whether at least a portion of the robot collides with at least a portion of any of the other robots of the two or more robots while the robot and the other robots move along at least that portion of the respective nominal trajectories as delayed by the waiting and selection delay time. 如請求項6之方法,其中基於該等候選滯後時間中之當前一者來檢查該機器人與該等其他機器人之間有無一碰撞包含: 對於該兩個或更多個機器人中之每一者, 產生一掃掠體積表示,該掃掠體積表示表示該機器人之至少一部分在自該各別標稱軌跡中之至少一個時間至該各別標稱軌跡中之另一時間在由該各別標稱軌跡規定之位姿之一組該等序列之間移動時掃掠之一體積;及 對於該兩個或更多個機器人中之每一對, 至少在偵測到一相交處之前,針對在沒有引入任何滯後時間的情況下由該等標稱軌跡規定之該等位姿之該定時,以及針對在複數個候選滯後時間中之每一者被引入至該等各別標稱軌跡中的情況下由該等標稱軌跡規定之該等位姿之該定時,判定該對該等機器人中該等機器人中之一者之該等掃掠體積與該對機器人中該等機器人中之另一者之該等掃掠體積是否相交,及 回應於對該對機器人中該等機器人中之一者之該掃掠體積與該對機器人中該等機器人中之另一者之該掃掠體積相交之一判定以及對被判定為處於碰撞中之該等機器人之一識別,產生一碰撞之一指示。 The method of claim 6, wherein checking for a collision between the robot and the other robots based on the current one of the waiting delay times comprises: For each of the two or more robots, Generating a swept volume representation representing a volume swept by at least a portion of the robot while moving between a set of the sequences of positions defined by the respective nominal trajectories from at least one time in the respective nominal trajectories to another time in the respective nominal trajectories; and For each pair of the two or more robots, At least before an intersection is detected, determining, for the timing of the positions defined by the nominal trajectories without introducing any hysteresis time, and for the timing of the positions defined by the nominal trajectories when each of a plurality of candidate hysteresis times is introduced into the respective nominal trajectories, whether the swept volumes of one of the robots in the pair intersect with the swept volumes of the other of the robots in the pair, and In response to a determination that the swept volume of one of the robots in the pair intersects the swept volume of the other of the robots in the pair and an identification of the robots determined to be in collision, an indication of a collision is generated. 如請求項1之方法,其進一步包括: 對於該兩個或更多個機器人中之每一者, 針對如由該各別機器人執行之一或多個實際軌跡中之每一者, 對該標稱軌跡與如由該各別機器人執行之該各別實際軌跡之間的一滯後量進行監控; 判定該所監控滯後量是否超過該各別機器人之該各別實際軌跡之該各別所判定可接受滯後時間;及 回應於該所監控滯後量超過該各別機器人之該各別軌跡之該各別所判定可接受滯後時間,採取至少一個補救行動。 The method of claim 1, further comprising: For each of the two or more robots, For each of one or more actual trajectories as executed by the respective robot, Monitoring a hysteresis between the nominal trajectory and the respective actual trajectory as executed by the respective robot; Determining whether the monitored hysteresis exceeds the respective determined acceptable hysteresis time of the respective actual trajectory of the respective robot; and Taking at least one remedial action in response to the monitored hysteresis exceeding the respective determined acceptable hysteresis time of the respective trajectory of the respective robot. 如請求項10之方法,其中採取至少一個補救行動包含以下各項中之一或多者:使該等機器人中之一或多者之移動停止;使該等機器人中之一或多者之移動減速;使該等機器人中之一或多者之移動加速。A method as claimed in claim 10, wherein taking at least one remedial action comprises one or more of the following: stopping the movement of one or more of the robots; slowing down the movement of one or more of the robots; speeding up the movement of one or more of the robots. 如請求項10之方法,其中採取至少一個補救行動包含:使該等機器人之該移動停止;使該等機器人中之一或多者沿著如由該各別標稱軌跡規定之一各別軌跡前進;後續接著使該等機器人之該移動重新開始。A method as claimed in claim 10, wherein taking at least one remedial action comprises: stopping the movement of the robots; moving one or more of the robots along a respective trajectory as specified by the respective nominal trajectory; and subsequently restarting the movement of the robots. 如請求項10之方法,其中該判定該標稱軌跡之一各別可接受滯後時間發生在如由該各別機器人之該一或多個標稱軌跡規定之該至少兩個機器人之移動之前的一組態時間期間。A method as claimed in claim 10, wherein the determination of a respective acceptable lag time of the nominal trajectory occurs during a configuration time period prior to movement of the at least two robots as specified by the one or more nominal trajectories of the respective robots. 如請求項13之方法,其中在該至少兩個機器人正在執行如由該各別機器人之該一或多個標稱軌跡所規定之移動的同時,該監控該標稱軌跡與如由該各別機器人執行之該各別實際軌跡之間的該滯後量發生在一運行時間期間,該運行時間依循該組態時間。A method as claimed in claim 13, wherein while the at least two robots are executing movements as specified by the one or more nominal trajectories of the respective robots, the lag between the monitored nominal trajectories and the respective actual trajectories as executed by the respective robots occurs during a run time that follows the configuration time. 如請求項10之方法,其中該監控該標稱軌跡與如由該各別機器人執行之該各別實際軌跡之間的該滯後量包含使用一中央時脈,該中央時脈對於該一或多個機器人中該等機器人中之每一者之監控器係共同的。A method as in claim 10, wherein monitoring the lag between the nominal trajectory and the respective actual trajectory as executed by the respective robots includes using a central clock that is common to a monitor of each of the one or more robots. 如請求項1至15中任一項及其任一組合之方法,其進一步包括: 接收該等機器人中之每一者之一各別運動規劃,該等運動規劃中之每一者規定該各別機器人之該一或多個標稱軌跡中之各別一者,該等標稱軌跡表示各別無碰撞路徑。 The method of any one of claims 1 to 15 and any combination thereof, further comprising: Receiving a respective motion plan for each of the robots, each of the motion plans specifying a respective one of the one or more nominal trajectories for the respective robot, the nominal trajectories representing respective collision-free paths. 一種便於使複數個機器人針對複數個機器人將在其中操作之一多機器人操作環境進行操作的基於處理器之系統,該基於處理器之系統包括: 至少一個處理器;及 儲存處理器可執行指令之至少一個非暫時性處理器可讀媒體,該等處理器可執行指令在由該至少一個處理器執行時致使該至少一個處理器執行如請求項1至16中任一項之方法。 A processor-based system for facilitating the operation of a plurality of robots against a multi-robot operating environment in which the plurality of robots will operate, the processor-based system comprising: At least one processor; and At least one non-transitory processor-readable medium storing processor-executable instructions that, when executed by the at least one processor, cause the at least one processor to perform a method as claimed in any one of claims 1 to 16. 一種針對複數個機器人將在其中操作之一多機器人操作環境組態複數個機器人的基於處理器之系統,該基於處理器之系統包括: 至少一個處理器;及 至少一個非暫時性處理器可讀媒體,其儲存資料及處理器可執行指令中之至少一者,該等處理器可執行指令在由該至少一個處理器執行時致使該處理器: 對於兩個或更多個機器人中之每一者, 針對該兩個或更多個機器人中該各別機器人之一或多個標稱軌跡中之每一者,該等標稱軌跡規定該各別機器人之位姿之一各別序列及該等位姿之定時, 判定該標稱軌跡之一各別可接受滯後時間,該可接受滯後時間反映相對於該標稱軌跡之該等位姿之該定時的一最大可接受延遲,該最大可接受延遲仍擔保該機器人透過由該標稱軌跡規定之位姿之該等序列進行之一移動相對於該兩個或更多個機器人中該等其他機器人中之每一者透過由該各別標稱軌跡規定之位姿之該等各別序列進行之一移動將保持無碰撞;且 將該可接受滯後時間提供給至少一個處理器以控制該兩個或更多個機器人中之每一者之操作。 A processor-based system for configuring a plurality of robots for a multi-robot operating environment in which the plurality of robots are to operate, the processor-based system comprising: At least one processor; and At least one non-transitory processor-readable medium storing at least one of data and processor-executable instructions, the processor-executable instructions, when executed by the at least one processor, causing the processor to: For each of two or more robots, For each of one or more nominal trajectories for the respective robots of the two or more robots, the nominal trajectories specifying a respective sequence of poses for the respective robots and the timing of the poses, Determining a respective acceptable hysteresis time for the nominal trajectory, the acceptable hysteresis time reflecting a maximum acceptable delay of the timing of the poses relative to the nominal trajectory, the maximum acceptable delay still ensuring that a movement of the robot through the sequences of poses specified by the nominal trajectory will remain collision-free relative to a movement of each of the other robots of the two or more robots through the respective sequences of poses specified by the respective nominal trajectory; and providing the acceptable hysteresis time to at least one processor to control the operation of each of the two or more robots. 如請求項18之基於處理器之系統,其中判定該標稱軌跡之一各別可接受滯後時間包含: 對於該兩個或更多個機器人中之每一者, 針對該一或多個標稱軌跡中之每一者, 產生一掃掠體積表示,該掃掠體積表示表示由該機器人之至少一部分在自該標稱軌跡中之至少一個時間至該標稱軌跡中之另一時間在由該標稱軌跡規定之位姿之一組該等序列之間移動時掃掠之一體積。 The processor-based system of claim 18, wherein determining a respective acceptable lag time of the nominal trajectory comprises: For each of the two or more robots, For each of the one or more nominal trajectories, Generating a swept volume representation representing a volume swept by at least a portion of the robot while moving between a set of said sequences of poses specified by the nominal trajectory from at least one time in the nominal trajectory to another time in the nominal trajectory. 如請求項19之基於處理器之系統,其中判定該標稱軌跡之一各別可接受滯後時間進一步包含: 使用該等所產生掃掠體積來執行碰撞評估。 The processor-based system of claim 19, wherein determining a respective acceptable lag time of the nominal trajectory further comprises: Using the generated sweep volumes to perform collision assessment. 如請求項20之基於處理器之系統,其中為了使用該等所產生掃掠體積來執行碰撞評估,該等處理器可執行指令在由該至少一個處理器執行時致使該至少一個處理器:對於該兩個或更多個機器人中之每一者,在以下兩者之間執行碰撞評估:i)表示該機器人之該各別標稱軌跡的一各別樣本軌跡之至少一部分,其中引入了至少一個各別滯後時間;及ii)該兩個或更多個機器人中該等其他機器人中之每一者的該等各別軌跡中之每一者的一各別樣本之至少一部分,其中在該兩個或更多個機器人中該等其他機器人中之每一者之該等各別軌跡中引入了至少一個各別滯後時間,且 回應於對在該機器人與該兩個或更多個機器人中該等其他機器人中之每一者之間將發生一碰撞之一判定,針對該機器人之該一或多個標稱軌跡,將小於導致對一碰撞將發生之該判定之一各別滯後時間的一各別滯後時間識別為該各別可接受滯後時間,其中該可接受滯後時間反映相對於該標稱軌跡之該等位姿之該定時的該最大可接受延遲,該最大可接受延遲仍擔保該機器人透過由該標稱軌跡規定之位姿之該等序列進行之該移動相對於該兩個或更多個機器人中該等其他機器人之該移動將保持無碰撞。 A processor-based system as claimed in claim 20, wherein in order to perform collision assessment using the generated swept volumes, the processors may execute instructions that when executed by the at least one processor cause the at least one processor to: for each of the two or more robots, perform collision assessment between: i) at least a portion of a respective sample trajectory representing the respective nominal trajectory of the robot, wherein at least one respective hysteresis time is introduced; and ii) at least a portion of a respective sample of each of the respective trajectories of each of the other robots of the two or more robots, wherein at least one respective hysteresis time is introduced in the respective trajectories of each of the other robots of the two or more robots, and In response to a determination that a collision will occur between the robot and each of the other robots in the two or more robots, identifying, for the one or more nominal trajectories of the robot, a respective hysteresis time that is less than a respective hysteresis time that would cause the determination that a collision will occur as the respective acceptable hysteresis time, wherein the acceptable hysteresis time reflects the maximum acceptable delay of the timing relative to the poses of the nominal trajectory that still ensures that the movement of the robot through the sequences of poses specified by the nominal trajectory will remain collision-free relative to the movement of the other robots in the two or more robots. 如請求項21之基於處理器之系統,其中為了判定該標稱軌跡之一各別可接受滯後時間,該等處理器可執行指令在由該至少一個處理器執行時致使該至少一個處理器進一步: 回應於判定在該機器人與該兩個或更多個機器人中該等其他機器人中之至少一者之間將發生一碰撞,針對該兩個或更多個機器人中該等其他機器人中之至少一者的已判定一碰撞將發生之該一或多個標稱軌跡,將小於導致對一碰撞將發生之該判定之一各別滯後時間的一各別滯後時間識別為該各別可接受滯後時間,其中該可接受滯後時間反映相對於該標稱軌跡之該等位姿之該定時的該最大可接受延遲,該最大可接受延遲仍擔保該機器人透過由該等各別標稱軌跡規定之位姿之該等序列進行之該移動相對於該兩個或更多個機器人中該等其他機器人之該移動將保持無碰撞。 A processor-based system as claimed in claim 21, wherein in order to determine a respective acceptable lag time of the nominal trajectory, the processors may execute instructions which, when executed by the at least one processor, cause the at least one processor to further: In response to determining that a collision will occur between the robot and at least one of the other robots of the two or more robots, the one or more nominal trajectories for which it is determined that a collision will occur for at least one of the other robots of the two or more robots are identified as respective acceptable hysteresis times that are less than respective hysteresis times that would result in the determination that a collision will occur, wherein the acceptable hysteresis times reflect the maximum acceptable delay of the timing of the poses relative to the nominal trajectories that still ensures that the movement of the robot through the sequences of poses specified by the respective nominal trajectories will remain collision-free relative to the movement of the other robots of the two or more robots. 如請求項18之基於處理器之系統,其中為了判定該標稱軌跡之一各別可接受滯後時間,該等處理器可執行指令在由該至少一個處理器執行時致使該處理器進一步: 以自一相對較小候選滯後時間至一相對較大候選滯後時間之一序列迭代通過複數個候選滯後時間中之每一者,至少直至達成一停止條件為止, 迭代通過由該標稱軌跡涵蓋之複數個時間中之每一者, 基於該等候選滯後時間中之當前一者來檢查該兩個或更多個機器人中之一個機器人與該兩個或更多個機器人中之至少一個其他機器人之間有無一碰撞;且 回應於對在該兩個或更多個機器人中之一個機器人與該兩個或更多個機器人中之至少一個其他機器人之間將發生一碰撞之一判定,將該機器人以及該兩個或更多個機器人中該等其他機器人中之至少一者的已判定一碰撞將發生之該等標稱軌跡之該各別可接受滯後時間設定為一最緊接之先前候選滯後時間。 A processor-based system as claimed in claim 18, wherein in order to determine a respective acceptable lag time for the nominal trajectory, the processors may execute instructions that when executed by the at least one processor cause the processor to further: iterate through each of a plurality of candidate lag times in a sequence from a relatively smaller candidate lag time to a relatively larger candidate lag time, at least until a stop condition is met, iterate through each of a plurality of times covered by the nominal trajectory, check for a collision between one of the two or more robots and at least one other of the two or more robots based on a current one of the candidate lag times; and In response to a determination that a collision will occur between one of the two or more robots and at least one of the other robots of the two or more robots, the respective acceptable lag times of the nominal trajectories of the robot and at least one of the other robots of the two or more robots where it is determined that a collision will occur are set to a closest previous candidate lag time. 如請求項23之基於處理器之系統,其中為了基於該等候選滯後時間中之當前一者來檢查該機器人與該等其他機器人之間有無一碰撞,該等處理器可執行指令在由該至少一個處理器執行時致使該處理器: 對於該兩個或更多個機器人中之每一者, 相對於在具有該等候選滯後時間中之該當前一者的情況下該兩個或更多個機器人中該等其他機器人中之每一者的該等各別軌跡中之每一者之至少一部分,對在具有該等候選滯後時間中之該當前者或者另一先前所判定滯後時間的情況下該機器人之該各別標稱軌跡之至少一部分執行碰撞評估。 A processor-based system as claimed in claim 23, wherein in order to check for a collision between the robot and the other robots based on the current one of the waiting post-selection delay times, the processors may execute instructions that when executed by the at least one processor cause the processor to: For each of the two or more robots, Perform a collision assessment on at least a portion of the respective nominal trajectory of the robot with the previous or another previously determined delay time in the waiting post-selection delay time relative to at least a portion of each of the respective trajectories of each of the other robots of the two or more robots with the current previous one of the waiting post-selection delay time. 如請求項24之基於處理器之系統,其中相對於在具有該等候選滯後時間中之該當前一者的情況下該兩個或更多個機器人中該等其他機器人中之每一者的該等各別軌跡中之至少一部分,對在具有該等候選滯後時間中之該當前一者或者另一先前所判定滯後時間的情況下該機器人之該各別標稱軌跡之至少一部分執行碰撞評估,該等處理器可執行指令在由該至少一個處理器執行時致使該處理器執行碰撞評估,以判定在該機器人以及該兩個或更多個機器人中之該等其他機器人沿著如按該等候選滯後時間來延遲之該等各別標稱軌跡之至少該部分移動的同時該機器人之至少一部分與該等其他機器人中之任一者之至少一部分是否碰撞。The processor-based system of claim 24, wherein a collision detection is performed on at least a portion of the respective nominal trajectory of the robot with the current preceding one of the waiting and selection delay times or another previously determined delay time relative to at least a portion of the respective trajectories of each of the other robots of the two or more robots with the current preceding one of the waiting and selection delay times. Collision assessment, the processors may execute instructions that, when executed by the at least one processor, cause the processor to perform a collision assessment to determine whether at least a portion of the robot collides with at least a portion of any of the other robots while the robot and the other robots among the two or more robots move along at least the portion of the respective nominal trajectories delayed by the waiting delay time. 如請求項23之基於處理器之系統,其中為了基於該等候選滯後時間中之當前一者來檢查該機器人與該等其他機器人之間有無一碰撞,該等處理器可執行指令在由該至少一個處理器執行時致使該處理器: 對於該兩個或更多個機器人中之每一者, 產生一掃掠體積表示,該掃掠體積表示表示由該機器人之至少一部分在自該各別標稱軌跡中之至少一個時間至另一時間時在由該各別標稱軌跡規定之位姿之一組該等序列之間移動時掃掠之一體積,其中該等候選滯後時間中之當前一者被引入至該各別標稱軌跡中;且 對於該兩個或更多個機器人中之每一對, 至少在偵測到一相交處之前,針對在沒有引入任何滯後時間的情形下由該等標稱軌跡規定之該等位姿之該定時,以及針對在將複數個候選滯後時間中之每一者引入至該等各別標稱軌跡中的情況下由該等標稱軌跡規定之該等位姿之該定時,判定該對機器人中該等機器人中之一者之該等掃掠體積與該對機器人中該等機器人中之另一者之該等掃掠體積是否相交,且 回應於對該對機器人中該等機器人中之一者之該掃掠體與該對機器人中該等機器人中之另一者之該掃掠體相交之一判定以及對被判定為處於碰撞中之該等機器人之一識別,產生一碰撞之一指示。 A processor-based system as claimed in claim 23, wherein in order to check for a collision between the robot and the other robots based on the current one of the waiting delay times, the processors may execute instructions that when executed by the at least one processor cause the processor to: For each of the two or more robots, Generate a swept volume representation, the swept volume representation representing a volume swept by at least a portion of the robot while moving between a set of said sequences of poses specified by the respective nominal trajectory from at least one time in the respective nominal trajectory to another time, wherein the current one of the waiting delay times is introduced into the respective nominal trajectory; and For each pair of the two or more robots, At least before detecting an intersection, determining, for the timing of the positions defined by the nominal trajectories without introducing any hysteresis time and for the timing of the positions defined by the nominal trajectories with each of a plurality of candidate hysteresis times introduced into the respective nominal trajectories, whether the swept volumes of one of the robots in the pair intersect with the swept volumes of the other of the robots in the pair, and In response to a determination that the swept volume of one of the robots in the pair intersects with the swept volume of the other of the robots in the pair and an identification of the robots determined to be in collision, generating an indication of a collision. 如請求項18之基於處理器之系統,其中該等處理器可執行指令在由該至少一個處理器執行時致使該處理器進一步: 對於該兩個或更多個機器人中之每一者, 針對如由該各別機器人執行之一或多個實際軌跡中之每一者, 對該標稱軌跡與如由該各別機器人執行之該各別實際軌跡之間的一滯後量進行監控; 判定該所監控滯後量是否超過該各別機器人之該各別實際軌跡之該各別所判定可接受滯後時間;且 回應於該所監控滯後量超過該各別機器人之該各別軌跡之該各別所判定可接受滯後時間,致使至少一個補救行動發生。 A processor-based system as claimed in claim 18, wherein the processors can execute instructions that when executed by the at least one processor cause the processor to further: For each of the two or more robots, For each of one or more actual trajectories as executed by the respective robot, Monitor a lag between the nominal trajectory and the respective actual trajectory as executed by the respective robot; Determine whether the monitored lag exceeds the respective determined acceptable lag time of the respective actual trajectory of the respective robot; and In response to the monitored lag exceeding the respective determined acceptable lag time of the respective trajectory of the respective robot, at least one remedial action occurs. 如請求項27之基於處理器之系統,其中為了採取至少一個補救行動,該等處理器可執行指令在由該至少一個處理器執行時致使該處理器執行以下各項中之一或多者:使該等機器人中之一或多者之移動停止;使該等機器人中之一或多者之移動減速;使該等機器人中之一或多者之移動加速。A processor-based system as in claim 27, wherein, in order to take at least one remedial action, the processors may execute instructions that, when executed by the at least one processor, cause the processor to perform one or more of the following: stop the movement of one or more of the robots; slow down the movement of one or more of the robots; speed up the movement of one or more of the robots. 如請求項27之基於處理器之系統,其中為了採取至少一個補救行動,該等處理器可執行指令在由該至少一個處理器執行時致使該處理器:使該等機器人之該移動停止;使一或多個機器人沿著如由該各別標稱軌跡規定之一各別軌跡前進;且後續接著該等機器人之該移動之一重新開始。A processor-based system as in claim 27, wherein, in order to take at least one remedial action, the processors may execute instructions that, when executed by the at least one processor, cause the processor to: stop the movement of the robots; cause one or more robots to move along a respective trajectory as specified by the respective nominal trajectory; and subsequently restart one of the movements of the robots. 如請求項27之基於處理器之系統,其中對該標稱軌跡之一各別可接受滯後時間之該判定發生在如由該各別機器人之該一或多個標稱軌跡規定之該至少兩個機器人之移動之前的一組態時間期間。A processor-based system as in claim 27, wherein the determination of a respective acceptable lag time for the nominal trajectory occurs during a configuration time prior to movement of the at least two robots as specified by the one or more nominal trajectories of the respective robots. 如請求項30之基於處理器之系統,其中在該至少兩個機器人正在執行如由該各別機器人之該一或多個標稱軌跡規定之移動的同時,對該標稱軌跡與如由該各別機器人執行之該各別實際軌跡之間的該滯後量之該監控發生在一運行時間期間,該運行時間依循該組態時間。A processor-based system as in claim 30, wherein while the at least two robots are executing movements as specified by the one or more nominal trajectories of the respective robots, the monitoring of the hysteresis between the nominal trajectories and the respective actual trajectories as executed by the respective robots occurs during a run time that follows the configuration time. 如請求項27之基於處理器之系統,其中對該標稱軌跡與如由該各別機器人執行之該各別實際軌跡之間的該滯後量之該監控係包含使用一中央時脈,該中央時脈對於該一或多個機器人中該等機器人中之每一者之該監控器係共同的。A processor-based system as in claim 27, wherein the monitoring of the amount of lag between the nominal trajectory and the respective actual trajectory as executed by the respective robots comprises using a central clock that is common to the monitor of each of the one or more robots. 如請求項18至32中任一項及其任一組合之基於處理器之系統,其中該等處理器可執行指令在由該至少一個處理器執行時致使該處理器進一步: 接收該等機器人中之每一者之一各別運動規劃,該等運動規劃中之每一者規定該各別機器人之該一或多個標稱軌跡中之各別一者,該等標稱軌跡表示各別無碰撞路徑。 A processor-based system as claimed in any of claims 18 to 32 and any combination thereof, wherein the processors can execute instructions that when executed by the at least one processor cause the processor to further: Receive a respective motion plan for each of the robots, each of the motion plans specifying a respective one of the one or more nominal trajectories for the respective robot, the nominal trajectories representing respective collision-free paths. 一種在一基於處理器之系統中操作以便於使複數個機器人針對複數個機器人將在其中操作之一多機器人操作環境進行操作之方法,該方法包括: 對於兩個或更多個機器人中之每一者, 針對該兩個或更多個機器人中之該各別機器人之兩個或更多標稱軌跡中之每一者,該等標稱軌跡規定該各別機器人之位姿之一各別序列及該等位姿之定時, 判定該標稱軌跡之一各別可接受滯後時間,該各別可接受滯後時間反映相對於該標稱軌跡之該等位姿之該定時的一最大可接受延遲,該最大可接受延遲仍擔保該機器人透過由該標稱軌跡規定之位姿之該等序列進行之一移動相對於該兩個或更多個機器人中該等其他機器人中之每一者透過如由該各別標稱軌跡規定之位姿之該等各別序列進行之一移動將保持無碰撞,該各別標稱軌跡係如按該兩個或更多個機器人中之該至少一個其他機器人之該標稱軌跡之一各別可接受滯後時間來延遲的; 至少部分地基於該兩個或更多標稱軌跡之該等各別可接受滯後時間,在該兩個或更多個標稱軌跡之間進行選擇;及 至少部分地基於該等標稱軌跡中之所選擇一者為該各別機器人提供一運動規劃,以控制該兩個或更多個機器人中該各別機器人之操作。 A method operating in a processor-based system to cause a plurality of robots to operate in a multi-robot operating environment in which the plurality of robots are to operate, the method comprising: for each of two or more robots, for each of two or more nominal trajectories for the respective robots of the two or more robots, the nominal trajectories specifying a respective sequence of poses of the respective robots and timing of the poses, Determining a respective acceptable hysteresis time for the nominal trajectory, the respective acceptable hysteresis time reflecting a maximum acceptable delay of the timing relative to the poses of the nominal trajectory, the maximum acceptable delay still ensuring that a movement of the robot through the sequences of poses specified by the nominal trajectory will remain collision-free relative to a movement of each of the other robots of the two or more robots through the respective sequences of poses as specified by the respective nominal trajectory, the respective nominal trajectory being delayed by a respective acceptable hysteresis time of the nominal trajectory of the at least one other robot of the two or more robots; Selecting between the two or more nominal trajectories based at least in part on the respective acceptable hysteresis times of the two or more nominal trajectories; and Providing a motion plan for the respective robot to control the operation of the respective robot of the two or more robots based at least in part on the selected one of the nominal trajectories. 如請求項34之方法,其中至少部分地基於每一機器人之該兩個或更多個標稱軌跡之該各別可接受滯後時間在該兩個或更多個標稱軌跡之間進行選擇包含選擇該各別機器人之該兩個或更多個標稱軌跡中具有該等可接受滯後時間中之最大一者之該標稱軌跡。A method as in claim 34, wherein selecting between the two or more nominal trajectories based at least in part on the respective acceptable hysteresis times of the two or more nominal trajectories for each robot includes selecting the nominal trajectory among the two or more nominal trajectories of the respective robot having a maximum of the acceptable hysteresis times. 如請求項34之方法,其中至少部分地基於每一機器人之該兩個或更多個標稱軌跡之該等各別可接受滯後時間在該兩個或更多個標稱軌跡之間進行選擇包含基於表示可接受滯後時間及碰撞之至少一風險或概率之一各別成本函數來選擇該標稱軌跡,每一成本函數與該各別機器人之該兩個或更多個標稱軌跡中之該各別標稱軌跡相關聯。A method as in claim 34, wherein selecting between the two or more nominal trajectories based at least in part on the respective acceptable lag times for the two or more nominal trajectories for each robot includes selecting the nominal trajectory based on a respective cost function representing the acceptable lag time and at least one risk or probability of collision, each cost function being associated with a respective one of the two or more nominal trajectories for the respective robot. 如請求項34之方法,其中至少部分地基於每一機器人之該兩個或更多個標稱軌跡之該等各別可接受滯後時間在該兩個或更多個標稱軌跡之間進行選擇包含基於表示可接受滯後時間、碰撞之一風險或概率及碰撞之一嚴重性的一各別成本函數來選擇該標稱軌跡,每一成本函數與該各別機器人之該兩個或更多個標稱軌跡中之該各別標稱軌跡相關聯。A method as in claim 34, wherein selecting between the two or more nominal trajectories based at least in part on the respective acceptable lag times for the two or more nominal trajectories for each robot includes selecting the nominal trajectory based on a respective cost function representing the acceptable lag time, a risk or probability of a collision, and a severity of the collision, each cost function being associated with a respective one of the two or more nominal trajectories for the respective robot. 如請求項34之方法,其中至少部分地基於每一機器人之該兩個或更多個標稱軌跡之該等各別可接受滯後時間在該兩個或更多個標稱軌跡之間進行選擇包含基於一各別成本函數來選擇該標稱軌跡,該成本函數表示可接受滯後時間、碰撞之一風險或概率、碰撞之一嚴重性以及完成之一持續時間或能量之一支出中之至少一者,每一成本函數與該各別機器人之該兩個或更多標稱軌跡中之該各別標稱軌跡相關聯,其中該成本函數中分別表示該可接受滯後時間、碰撞之該風險或概率、碰撞之該嚴重性以及完成之該持續時間或能量之該支出中之至少一者的每一變數在該各別成本函數中被加權。A method as in claim 34, wherein selecting between the two or more nominal trajectories based at least in part on the respective acceptable lag times for the two or more nominal trajectories for each robot comprises selecting the nominal trajectory based on a respective cost function representing at least one of the acceptable lag time, the risk or probability of a collision, the severity of a collision, and the duration or energy expenditure to complete, each cost function being associated with the respective one of the two or more nominal trajectories for the respective robot, wherein each variable in the cost function representing at least one of the acceptable lag time, the risk or probability of a collision, the severity of a collision, and the duration or energy expenditure to complete is weighted in the respective cost function. 如請求項34之方法,其中至少部分地基於該兩個或更多個標稱軌跡之該等各別可接受滯後時間在該兩個或更多個標稱軌跡之間進行選擇包含為該兩個或更多個機器人中之每一者選擇一各別標稱軌跡,該各別標稱軌跡使該等可接受滯後時間在跨越該兩個或更多個機器人中該等機器人之全部之一彙總中最大化。A method as in claim 34, wherein selecting between the two or more nominal trajectories based at least in part on the respective acceptable hysteresis times for the two or more nominal trajectories includes selecting a respective nominal trajectory for each of the two or more robots that maximizes the acceptable hysteresis times in an aggregate across all of the two or more robots. 如請求項34之方法,其中至少部分地基於每一機器人之該兩個或更多個標稱軌跡之該等各別可接受滯後時間在該兩個或更多個標稱軌跡之間進行選擇包含為該兩個或更多個機器人中之每一者選擇一各別標稱軌跡,該各別標稱軌跡將該兩個或更多個機器人中該等機器人中之每一者之一各別成本函數在跨越該等機器人之全部之一彙總中最佳化,其中每一成本函數表示該可接受滯後時間及碰撞之至少一風險或概率,每一成本函數與該各別機器人之該兩個或更多標稱軌跡中該各別一者中之各別標稱軌跡相關聯。A method as in claim 34, wherein selecting between the two or more nominal trajectories based at least in part on the respective acceptable lag times for the two or more nominal trajectories for each robot comprises selecting a respective nominal trajectory for each of the two or more robots, the respective nominal trajectory optimizing a respective cost function for each of the two or more robots in an aggregate across all of the robots, wherein each cost function represents the acceptable lag time and at least a risk or probability of collision, each cost function being associated with a respective nominal trajectory in a respective one of the two or more nominal trajectories of the respective robot. 如請求項34之方法,其中至少部分地基於每一機器人之該兩個或更多個標稱軌跡之該等各別可接受滯後時間在該兩個或更多個標稱軌跡之間進行選擇包含為該兩個或更多個機器人中之每一者選擇一各別標稱軌跡,該各別標稱軌跡將該兩個或更多個機器人中該等機器人中之每一者之一各別成本函數在跨越該等機器人之全部之一彙總中最佳化,其中每一成本函數表示該可接受滯後時間、碰撞之至少一風險或概率及碰撞之一嚴重性,每一成本函數與該各別機器人之該兩個或更多標稱軌跡中該各別一者中之該各別標稱軌跡相關聯。A method as in claim 34, wherein selecting between the two or more nominal trajectories based at least in part on the respective acceptable lag times for the two or more nominal trajectories for each robot comprises selecting a respective nominal trajectory for each of the two or more robots, the respective nominal trajectory optimizing a respective cost function for each of the two or more robots in an aggregate across all of the robots, wherein each cost function represents the acceptable lag time, at least a risk or probability of a collision, and a severity of a collision, each cost function being associated with the respective nominal trajectory in a respective one of the two or more nominal trajectories for the respective robot. 如請求項34之方法,其中至少部分地基於每一機器人之該兩個或更多個標稱軌跡之該等各別可接受滯後時間在該兩個或更多個標稱軌跡之間進行選擇包含為該兩個或更多個機器人中之每一者選擇一各別標稱軌跡,該各別標稱軌跡將該兩個或更多個機器人中該等機器人中之每一者之一各別成本函數在跨越該等機器人之全部之一彙總中最佳化,其中每一成本函數表示該可接受滯後時間、碰撞之至少一風險或概率、碰撞之一嚴重性以及完成之一持續時間或能量之一支出中之至少一者,每一成本函數與該各別機器人之該兩個或更多個標稱軌跡中該各別一者中之該各別標稱軌跡相關聯,其中該成本函數中分別表示該可接受滯後時間、碰撞之該風險或概率、碰撞之該嚴重性以及完成之該持續時間或能量之該支出中之至少一者之每一變數在該各別成本函數中被加權。The method of claim 34, wherein selecting between the two or more nominal trajectories based at least in part on the respective acceptable hysteresis times for the two or more nominal trajectories for each robot comprises selecting a respective nominal trajectory for each of the two or more robots that optimizes a respective cost function for each of the two or more robots in an aggregate across all of the robots, wherein each cost function represents the acceptable hysteresis time. The invention relates to a method for controlling a robot to perform a certain desired lag time, wherein each cost function is associated with a respective one of the two or more nominal trajectories of the respective robot, wherein each variable in the cost function representing at least one of the acceptable lag time, the risk or probability of collision, the severity of collision, and the duration or energy expenditure to complete is weighted in the respective cost function. 如請求項34之方法,其中判定該標稱軌跡之一各別可接受滯後時間包含對該兩個或更多個機器人中之每一機器人執行碰撞評估,該各別可接受滯後時間反映相對於該標稱軌跡之該等位姿之該定時的一最大可接受延遲,該最大可接受延遲仍擔保該機器人透過由該標稱軌跡規定之該等位姿序列進行之一移動將保持無碰撞。A method as in claim 34, wherein determining a respective acceptable lag time for the nominal trajectory comprises performing a collision assessment for each of the two or more robots, the respective acceptable lag time reflecting a maximum acceptable delay of the timing of the poses relative to the nominal trajectory, the maximum acceptable delay still ensuring that a movement of the robot through the sequence of poses specified by the nominal trajectory will remain collision-free. 如請求項43之方法,其中對該兩個或更多個機器人中之每一機器人執行碰撞評估包含: 在以下兩者之間執行碰撞評估:i)表示該機器人之該各別標稱軌跡之一各別樣本軌跡之至少一部分,其中引入了至少一個各別滯後時間;及ii)該兩個或更多個機器人中該等其他機器人中之每一者的該等各別軌跡中之每一者的一各別樣本之至少一部分,其中在該兩個或更多個機器人中該等其他機器人中之每一者之該等各別軌跡中引入了至少一個各別滯後時間。 The method of claim 43, wherein performing a collision assessment on each of the two or more robots comprises: Performing a collision assessment between: i) at least a portion of a respective sample trajectory representing the respective nominal trajectory of the robot, wherein at least one respective hysteresis time is introduced; and ii) at least a portion of a respective sample of each of the respective trajectories of each of the other robots in the two or more robots, wherein at least one respective hysteresis time is introduced in the respective trajectories of each of the other robots in the two or more robots. 如請求項44之方法,其中判定該標稱軌跡之一各別可接受滯後時間進一步包含: 回應於判定在該機器人與該兩個或更多個機器人中該等其他機器人中之至少一者之間將發生一碰撞,針對該機器人之該一或多個標稱軌跡,將小於導致對一碰撞將發生之該判定之一各別滯後時間的一各別滯後時間識別為該各別可接受滯後時間,其中該可接受滯後時間反映相對於該標稱軌跡之該等位姿之該定時的一最大可接受延遲,該最大可接受延遲仍擔保該機器人透過由該標稱軌跡規定之位姿之該等序列進行之該移動相對於該兩個或更多個機器人中該等其他機器人之該移動將保持無碰撞。 The method of claim 44, wherein determining a respective acceptable hysteresis time for the nominal trajectory further comprises: In response to determining that a collision will occur between the robot and at least one of the other robots in the two or more robots, identifying a respective hysteresis time for the one or more nominal trajectories of the robot that is less than a respective hysteresis time that would cause the determination that a collision will occur as the respective acceptable hysteresis time, wherein the acceptable hysteresis time reflects a maximum acceptable delay of the timing relative to the poses of the nominal trajectory, the maximum acceptable delay still ensuring that the movement of the robot through the sequence of poses specified by the nominal trajectory will remain collision-free relative to the movement of the other robots in the two or more robots. 如請求項45之方法,其中判定該標稱軌跡之一各別可接受滯後時間進一步包含: 回應於判定在該機器人與該兩個或更多個機器人中該等其他機器人中之至少一者之間將發生一碰撞,針對該兩個或更多個機器人中該等其他機器人中之該至少一者的已判定一碰撞將發生之該一或多個標稱軌跡,將小於導致對一碰撞將發生之該判定之一各別滯後時間的一各別滯後時間識別為該各別可接受滯後時間,其中該可接受滯後時間反映相對於該標稱軌跡之該等位姿之該定時的該最大可接受延遲,該最大可接受延遲仍擔保該機器人透過由該等各別標稱軌跡規定之位姿之該等序列進行之該移動相對於該兩個或更多個機器人中該等其他機器人之該移動將保持無碰撞。 As in the method of claim 45, determining an acceptable lag time of each of the nominal trajectories further comprises: In response to determining that a collision will occur between the robot and at least one of the other robots of the two or more robots, the one or more nominal trajectories for which it is determined that a collision will occur for the at least one of the other robots of the two or more robots are identified as the respective acceptable hysteresis times by respective hysteresis times that are less than respective hysteresis times that would result in the determination that a collision will occur, wherein the acceptable hysteresis times reflect the maximum acceptable delay of the timing of the poses relative to the nominal trajectories that still ensures that the movement of the robot through the sequences of poses specified by the respective nominal trajectories will remain collision-free relative to the movement of the other robots of the two or more robots. 一種便於使複數個機器人針對複數個機器人將在其中操作之一多機器人操作環境進行操作的基於處理器之系統,該基於處理器之系統包括: 至少一個處理器;及 儲存處理器可執行指令之至少一個非暫時性處理器可讀媒體,該等處理器可執行指令在由該至少一個處理器執行時致使該至少一個處理器執行如請求項34至46中任一項之方法。 A processor-based system for facilitating the operation of a plurality of robots against a multi-robot operating environment in which the plurality of robots will operate, the processor-based system comprising: At least one processor; and At least one non-transitory processor-readable medium storing processor-executable instructions that, when executed by the at least one processor, cause the at least one processor to perform a method as claimed in any one of claims 34 to 46. 一種針對複數個機器人將在其中操作之一多機器人操作環境組態複數個機器人的基於處理器之系統,該基於處理器之系統包括: 至少一個處理器;及 至少一個非暫時性處理器可讀媒體,其儲存資料及處理器可執行指令中之至少一者,該等處理器可執行指令在由該至少一個處理器執行時致使該處理器: 對於兩個或更多個機器人中之每一者, 針對該兩個或更多個機器人中之該各別機器人的該兩個或更多標稱軌跡中之每一者,該等標稱軌跡規定該各別機器人之位姿之一各別序列及該等位姿之定時, 判定該標稱軌跡之一各別可接受滯後時間,該各別可接受滯後時間反映相對於該標稱軌跡之該等位姿之該定時的一最大可接受延遲,該最大可接受延遲仍擔保該機器人透過由該標稱軌跡規定之位姿之該等序列進行之一移動相對於該兩個或更多個機器人中該等其他機器人中之每一者透過由該各別標稱軌跡規定的位姿之該等各別序列進行之一移動將保持無碰撞,該各別標稱軌跡係如按該兩個或更多個機器人中該至少一個其他機器人之該標稱軌跡之一各別可接受滯後時間來延遲的; 至少部分地基於該兩個或更多標稱軌跡之該等各別可接受滯後時間在該兩個或更多標稱軌跡之間進行選擇;且 至少部分地基於該等標稱軌跡中所選擇一者為該各別機器人提供一運動規劃,以控制該兩個或更多個機器人中該各別機器人之操作。 A processor-based system for configuring a plurality of robots for a multi-robot operating environment in which the plurality of robots are to operate, the processor-based system comprising: At least one processor; and At least one non-transitory processor-readable medium storing at least one of data and processor-executable instructions, the processor-executable instructions, when executed by the at least one processor, causing the processor to: For each of two or more robots, For each of the two or more nominal trajectories of the respective robots of the two or more robots, the nominal trajectories specifying a respective sequence of poses of the respective robots and the timing of the poses, Determining a respective acceptable hysteresis time for the nominal trajectory, the respective acceptable hysteresis time reflecting a maximum acceptable delay of the timing relative to the poses of the nominal trajectory, the maximum acceptable delay still ensuring that a movement of the robot through the sequences of poses specified by the nominal trajectory will remain collision-free relative to a movement of each of the other robots of the two or more robots through the respective sequences of poses specified by the respective nominal trajectory, the respective nominal trajectory being delayed by a respective acceptable hysteresis time of the nominal trajectory of the at least one other robot of the two or more robots; Selecting between the two or more nominal trajectories based at least in part on the respective acceptable lag times of the two or more nominal trajectories; and Providing a motion plan for the respective robot to control the operation of the respective robot of the two or more robots based at least in part on the selected one of the nominal trajectories. 如請求項48之基於處理器之系統,其中為了至少部分地基於每一機器人之該兩個或更多個標稱軌跡之該等各別可接受滯後時間在該兩個或更多個標稱軌跡之間進行選擇,該等處理器可執行指令在被執行時致使該至少一個處理器選擇該各別機器人之該兩個或更多個標稱軌跡中具有該等可接受滯後時間中之最大一者之該標稱軌跡。A processor-based system as in claim 48, wherein in order to select between the two or more nominal trajectories of each robot based at least in part on the respective acceptable lag times of the two or more nominal trajectories, the processors may execute instructions that, when executed, cause at least one of the processors to select the nominal trajectory of the two or more nominal trajectories of the respective robot having the largest of the acceptable lag times. 如請求項48之基於處理器之系統,其中為了至少部分地基於每一機器人之該兩個或更多個標稱軌跡之該各別可接受滯後時間在該兩個或更多個標稱軌跡之間進行選擇,該等處理器可執行指令在被執行時致使該至少一個處理器基於一各別成本函數來選擇該標稱軌跡,該各別成本函數表示可接受滯後時間及碰撞之至少一風險或概率,每一成本函數與該各別機器人之該兩個或更多個標稱軌跡中之該各別標稱軌跡相關聯。A processor-based system as in claim 48, wherein in order to select between two or more nominal trajectories based at least in part on the respective acceptable lag times for the two or more nominal trajectories for each robot, the processors may execute instructions that, when executed, cause at least one processor to select the nominal trajectory based on a respective cost function representing acceptable lag times and at least one risk or probability of collision, each cost function being associated with a respective one of the two or more nominal trajectories for the respective robot. 如請求項48之基於處理器之系統,其中為了至少部分地基於每一機器人之該兩個或更多個標稱軌跡之該等各別可接受滯後時間在該兩個或更多個標稱軌跡之間進行選擇,該等處理器可執行指令在被執行時致使該至少一個處理器基於一各別成本函數來選擇該標稱軌跡,該成本函數表示可接受滯後時間、碰撞之一風險或概率及碰撞之一嚴重性,每一成本函數與該各別機器人之該兩個或更多個標稱軌跡中之該各別標稱軌跡相關聯。A processor-based system as in claim 48, wherein in order to select between the two or more nominal trajectories based at least in part on the respective acceptable lag times for the two or more nominal trajectories for each robot, the processors may execute instructions that, when executed, cause the at least one processor to select the nominal trajectory based on a respective cost function representing the acceptable lag time, a risk or probability of a collision, and a severity of the collision, each cost function being associated with the respective one of the two or more nominal trajectories for the respective robot. 如請求項48之基於處理器之系統,其中為了至少部分地基於每一機器人之該兩個或更多個標稱軌跡之該等各別可接受滯後時間在該兩個或更多個標稱軌跡之間進行選擇,該等處理器可執行指令在被執行時致使該至少一個處理器基於一各別成本函數來選擇該標稱軌跡,該各別成本函數表示可接受滯後時間、碰撞之一風險或概率、碰撞之一嚴重性以及完成之一持續時間或能量之一支出中之至少一者,每一成本函數與該各別機器人之該兩個或更多個標稱軌跡中之該各別標稱軌跡相關聯,其中該成本函數中分別表示該可接受滯後時間、碰撞之該風險或概率、碰撞之該嚴重性以及完成之該持續時間或能量之該支出中之至少一者之每一變數在該各別成本函數中被加權。A processor-based system as in claim 48, wherein in order to select between two or more nominal trajectories based at least in part on the respective acceptable lag times for the two or more nominal trajectories for each robot, the processors may execute instructions that, when executed, cause at least one of the processors to select the nominal trajectory based on a respective cost function representing the acceptable lag time, a risk or probability of collision, a probability of collision, and a probability of collision. A cost function is associated with a respective one of the two or more nominal trajectories of the respective robot, wherein each variable in the cost function representing at least one of the acceptable lag time, the risk or probability of collision, the severity of collision, and the duration or energy expenditure to complete is weighted in the respective cost function. 如請求項48之基於處理器之系統,其中為了至少部分地基於該兩個或更多個標稱軌跡之該等各別可接受滯後時間在該兩個或更多個標稱軌跡之間進行選擇,該等處理器可執行指令在被執行時致使該至少一個處理器為該兩個或更多個機器人中之每一者選擇一各別標稱軌跡,該各別標稱軌跡使該等可接受滯後時間在跨越該兩個或更多個機器人中該等機器人之全部之一彙總中最大化。A processor-based system as in claim 48, wherein in order to select between the two or more nominal trajectories based at least in part on the respective acceptable lag times of the two or more nominal trajectories, the processors may execute instructions that, when executed, cause the at least one processor to select a respective nominal trajectory for each of the two or more robots that maximizes the acceptable lag times in an aggregate across all of the two or more robots. 如請求項48之基於處理器之系統,其中為了至少部分地基於每一機器人之該兩個或更多個標稱軌跡之該等各別可接受滯後時間在該兩個或更多個標稱軌跡之間進行選擇,該等處理器可執行指令在被執行時致使該至少一個處理器為該兩個或更多個機器人中之每一者選擇一各別標稱軌跡,該各別標稱軌跡使該兩個或更多個機器人中該等機器人中之每一者之一各別成本函數在跨越該等機器人之全部之一彙總中最佳化,其中每一成本函數表示該可接受滯後時間及碰撞之至少一風險或概率,每一成本函數與該各別機器人之該兩個或更多個標稱軌跡中該各別一者中之該各別標稱軌跡相關聯。A processor-based system as in claim 48, wherein in order to select between two or more nominal trajectories based at least in part on the respective acceptable lag times for the two or more nominal trajectories of each robot, the processors may execute instructions that, when executed, cause the at least one processor to select a respective nominal trajectory for each of the two or more robots, the respective nominal trajectory optimizing a respective cost function for each of the two or more robots in an aggregate across all of the robots, wherein each cost function represents the acceptable lag time and at least a risk or probability of collision, each cost function being associated with the respective nominal trajectory in the respective one of the two or more nominal trajectories of the respective robot. 如請求項48之基於處理器之系統,其中為了至少部分地基於每一機器人之該兩個或更多個標稱軌跡之該等各別可接受滯後時間在該兩個或更多個標稱軌跡之間進行選擇,該等處理器可執行指令在被執行時致使該至少一個處理器為該兩個或更多個機器人中之每一者選擇一各別標稱軌跡,該各別標稱軌跡使該兩個或更多個機器人中該等機器人中之每一者之一各別成本函數在跨越該等機器人之全部之一彙總中最佳化,其中每一成本函數表示該可接受滯後時間、碰撞之至少一風險或概率及碰撞之一嚴重性,每一成本函數與該各別機器人之該兩個或更多個標稱軌跡中該各別一者中之該各別標稱軌跡相關聯。A processor-based system as in claim 48, wherein in order to select between the two or more nominal trajectories based at least in part on the respective acceptable lag times of the two or more nominal trajectories for each robot, the processors may execute instructions that when executed cause the at least one processor to select a respective nominal trajectory for each of the two or more robots, the respective nominal trajectory A respective cost function for each of the two or more robots is optimized in an aggregate across all of the robots, wherein each cost function represents the acceptable lag time, at least a risk or probability of collision, and a severity of collision, each cost function being associated with the respective nominal trajectory of the respective one of the two or more nominal trajectories of the respective robot. 如請求項48之基於處理器之系統,其中為了至少部分地基於每一機器人之該兩個或更多個標稱軌跡之該等各別可接受滯後時間在該兩個或更多個標稱軌跡之間進行選擇,該等處理器可執行指令在被執行時致使該至少一個處理器為該兩個或更多個機器人中之每一者選擇一各別標稱軌跡,該各別標稱軌跡使該兩個或更多個機器人中該等機器人中之每一者之一各別成本函數在跨越該等機器人之全部之一彙總中最佳化,其中每一成本函數表示該可接受滯後時間、碰撞之至少一風險或概率、碰撞之一嚴重性以及完成之一持續時間或能量之一支出中之至少一者,每一成本函數與該各別機器人之該兩個或更多個標稱軌跡中該各別一者中之該各別標稱軌跡相關聯,其中該成本函數中分別表示該可接受滯後時間、碰撞之該風險或概率、碰撞之該嚴重性以及完成之該持續時間或能量之該支出中之至少一者之每一變數在該各別成本函數中被加權。A processor-based system as in claim 48, wherein in order to select between two or more nominal trajectories based at least in part on the respective acceptable lag times for the two or more nominal trajectories for each robot, the processors may execute instructions that, when executed, cause the at least one processor to select a respective nominal trajectory for each of the two or more robots that optimizes a respective cost function for each of the two or more robots in an aggregate across all of the robots, wherein Each cost function represents at least one of the acceptable lag time, at least one risk or probability of collision, a severity of collision, and at least one of the duration or energy expenditure to complete, and each cost function is associated with the respective nominal trajectory of the respective one of the two or more nominal trajectories of the respective robot, wherein each variable in the cost function that represents at least one of the acceptable lag time, the risk or probability of collision, the severity of collision, and the duration or energy expenditure to complete is weighted in the respective cost function. 如請求項48之基於處理器之系統,其中為了判定該標稱軌跡之一各別可接受滯後時間,該各別可接受滯後時間反映相對於該標稱軌跡之該等位姿之該定時的一最大可接受延遲,該最大可接受延遲仍擔保該機器人透過由該標稱軌跡規定之位姿之該等序列進行之一移動將保持無碰撞,該等處理器可執行指令在被執行時致使該至少一個處理器對該兩個或更多個機器人中之每一機器人執行碰撞評估。A processor-based system as in claim 48, wherein in order to determine a respective acceptable lag time for the nominal trajectory, the respective acceptable lag time reflecting a maximum acceptable delay of the timing of the poses relative to the nominal trajectory, the maximum acceptable delay still ensuring that a movement of the robot through the sequence of poses specified by the nominal trajectory will remain collision-free, the processors may execute instructions that, when executed, cause the at least one processor to perform a collision assessment on each of the two or more robots. 如請求項57之基於處理器之系統,其中為了對該兩個或更多個機器人中之每一機器人執行碰撞評估,該等處理器可執行指令在被執行時致使該至少一個處理器: 在以下兩者之間執行碰撞評估:i)表示該機器人之該各別標稱軌跡之一各別樣本軌跡之至少一部分,其中引入了至少一個各別滯後時間;及ii)該兩個或更多個機器人中該等其他機器人中之每一者的該等各別軌跡中之每一者的一各別樣本之至少一部分,其中在該兩個或更多個機器人中該等其他機器人中之每一者的該等各別軌跡中引入了至少一個各別滯後時間。 A processor-based system as in claim 57, wherein in order to perform a collision assessment for each of the two or more robots, the processors may execute instructions that, when executed, cause the at least one processor to: Perform a collision assessment between: i) at least a portion of a respective sample trajectory representing the respective nominal trajectory of the robot, wherein at least one respective hysteresis time is introduced; and ii) at least a portion of a respective sample of each of the respective trajectories of each of the other robots in the two or more robots, wherein at least one respective hysteresis time is introduced in the respective trajectories of each of the other robots in the two or more robots. 如請求項58之基於處理器之系統,其中為了判定該標稱軌跡之一各別可接受滯後時間,該等處理器可執行指令在被執行時致使該至少一個處理器進一步: 回應於對該機器人與該兩個或更多個機器人中該等其他機器人中之至少一者之間將發生一碰撞之一判定,針對該機器人之該一或多個標稱軌跡,將小於導致對一碰撞將發生之該判定之一各別滯後時間的一各別滯後時間識別為該各別可接受滯後時間,其中該可接受滯後時間反映相對於該標稱軌跡之該等位姿之該定時的該最大可接受延遲,該最大可接受延遲仍擔保該機器人透過由該標稱軌跡規定之位姿之該等序列進行之該移動相對於該兩個或更多個機器人中該等其他機器人之該移動將保持無碰撞。 A processor-based system as claimed in claim 58, wherein in order to determine a respective acceptable lag time of the nominal trajectory, the processors may execute instructions which, when executed, cause the at least one processor to further: In response to a determination that a collision will occur between the robot and at least one of the other robots of the two or more robots, a respective hysteresis time that is less than a respective hysteresis time that would cause the determination that a collision will occur is identified as the respective acceptable hysteresis time for the one or more nominal trajectories of the robot, wherein the acceptable hysteresis time reflects the maximum acceptable delay of the timing relative to the poses of the nominal trajectory that still ensures that the movement of the robot through the sequence of poses specified by the nominal trajectory will remain collision-free relative to the movement of the other robots of the two or more robots. 如請求項59之基於處理器之系統,其中為了判定該標稱軌跡之一各別可接受滯後時間,該等處理器可執行指令在被執行時致使該至少一個處理器進一步: 回應於對該機器人與該兩個或更多個機器人中該等其他機器人中之至少一者之間將發生一碰撞之一判定,針對該兩個或更多個機器人中該等其他機器人中之至少一者的已判定一碰撞將發生之該一或多個標稱軌跡,將小於導致對一碰撞將發生之該判定之一各別滯後時間的一各別滯後時間識別為該各別可接受滯後時間,其中該可接受滯後時間反映相對於該標稱軌跡之該等位姿之該定時的該最大可接受延遲,該最大可接受延遲仍擔保該機器人透過由該等各別標稱軌跡規定之位姿之該等序列進行之該移動相對於該兩個或更多個機器人中該等其他機器人之該移動將保持無碰撞。 A processor-based system as claimed in claim 59, wherein in order to determine a respective acceptable lag time of the nominal trajectory, the processors may execute instructions which, when executed, cause the at least one processor to further: In response to a determination that a collision will occur between the robot and at least one of the other robots of the two or more robots, the one or more nominal trajectories for which it is determined that a collision will occur for at least one of the other robots of the two or more robots are identified as respective acceptable hysteresis times that are less than respective hysteresis times that would result in the determination that a collision will occur, wherein the acceptable hysteresis times reflect the maximum acceptable delay of the timing of the poses relative to the nominal trajectories that still ensures that the movement of the robot through the sequences of poses specified by the respective nominal trajectories will remain collision-free relative to the movement of the other robots of the two or more robots.
TW112121349A 2022-07-05 2023-06-08 Robust motion planning and/or control for multi-robot environments TW202415506A (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US63/358,422 2022-07-05

Publications (1)

Publication Number Publication Date
TW202415506A true TW202415506A (en) 2024-04-16

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
EP2561964B1 (en) Robotic apparatus implementing collision avoidance scheme and associated methods
US20110153080A1 (en) Method and apparatus for industrial robotic pathscycle time optimization using fly by
US20240091944A1 (en) Safety systems and methods employed in robot operations
US20240009845A1 (en) Systems, methods, and user interfaces employing clearance determinations in robot motion planning and control
JP7450297B2 (en) Configuration of robot operating environment including sensor placement
TW202415506A (en) Robust motion planning and/or control for multi-robot environments
WO2024011062A1 (en) Robust motion planning and/or control for multi-robot environments
Afaghani et al. Advanced-collision-map-based on-line collision and deadlock avoidance between two robot manipulators with PTP commands
Li et al. An Efficient Approach for Solving Robotic Task Sequencing Problems Considering Spatial Constraint
US20230286156A1 (en) Motion planning and control for robots in shared workspace employing staging poses
TW202406697A (en) Motion planning and control for robots in shared workspace employing look ahead planning
Afaghani et al. On-line collision avoidance of two command-based industrial robotic arms using advanced collision map
Silva et al. Manipulator path planning for pick-and-place operations with obstacles avoidance: an A* algorithm approach
Orton et al. Improving incremental planning performance through overlapping replanning and execution
US20240037393A1 (en) Method for training a control policy for controlling a technical system
Leeper et al. Arm teleoperation in clutter using virtual constraints from real sensor data
Szabó et al. GPU Accelerated Collision Detection for Robotic Manipulators
WO2024073245A1 (en) Automated configuration of robots in multi-robot operational environment optimizing for wear and other parameters
EP3659757A1 (en) Method for determining a controller sequence