Automated configuration of robots in multi-robot operating environment optimized for wear and other parameters
By collaborative optimization in a multi-robot operating environment, an optimized robot configuration solution is generated, which solves the problems of low motion planning efficiency and high collision risk in the prior art, and achieves more efficient resource utilization and lower energy consumption.
Patent Information
- Application Number
- CN202380069095.X
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2022-09-27
- Filing Date
- 2023-09-14
- Publication Date
- 2025-05-06
AI Technical Summary
In multi-robot operating environments, it is difficult for the prior art to effectively optimize the robot configuration, resulting in low motion planning efficiency, high collision risk and insufficient work throughput.
Generate a multi-robot configuration solution by collaborative optimization based on group tasks performed by robots in a multi-robot operating environment. This method utilizes a global optimizer, combined with a multivariate hybrid integer optimization algorithm, to optimize the robot's base layout, task planning, and motion paths to reduce wear, reduce collision risks and improve efficiency.
It realizes more efficient motion planning and resource utilization in a multi-robot operating environment, reduces the risk of collision between robots, improves work throughput, and optimizes energy consumption and time efficiency.
Smart Images

Figure CN119947860A_ABST
Abstract
Description
[0001] CROSS-REFERENCE TO RELATED APPLICATIONS
[0002] This application claims priority to U.S. Application No. 63 / 410,545, filed on September 27, 2022, the disclosure of which is incorporated herein by reference in its entirety for all purposes. Technical Field
[0003] The present disclosure generally relates to robot configuration in a multi-robot operating environment or in a shared workspace, and to optimization of robot configuration in such an environment or shared workspace. Background Art
[0004] Description of Related Technology
[0005] Various applications employ or may wish to employ two or more robots in a multi-robot operating environment that is common or shared by the two or more robots. The multi-robot operating environment may take the form of a shared workspace. For example, two or more robots may be employed to perform a task on one or more objects or workpieces in a common operating environment, such as tightening a bolt onto a chassis, wherein the ranges of motion of the robots may overlap.
[0006] Motion planning is a fundamental problem in robot control and robotics. A motion plan specifies a path that a robot can follow from a starting state to a destination state, typically in order to accomplish a task without colliding with, or with a reduced probability of colliding with, any obstacles in the operating environment. Challenges in motion planning involve the ability to execute motion plans quickly while potentially taking into account changes in the environment (e.g., changes in the location or orientation of obstacles in the environment). Challenges also include performing motion planning using relatively low-cost equipment, with relatively low energy consumption, and with limited amounts of storage (e.g., memory circuits, e.g., on processor chip circuits).
[0007] Operating two or more robots in a multi-robot operating environment or a shared workspace (a workspace is often referred to as a workcell) poses a specific class of problems. For example, motion planning should consider and avoid situations where the robots or their robotic appendages may interfere with each other during the execution of a task.
[0008] One approach to operating multiple robots in a common workspace can be referred to as a task-level approach. Engineers can manually ensure that robots do not collide by defining portions of the workspace where robots may collide with each other (i.e., interference zones) and programming individual robots so that only one robot is in the interference zone of the workspace at any given point in time. For example, when a first robot begins to move into the interference zone of the 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 workspace until the first robot removes the flag when it exits the interference zone. This approach is intuitive and easy to understand, but is often difficult to implement and time-consuming, and may not produce optimized results. Since using task-level conflict elimination typically leaves at least one of the robots idle for a considerable amount of time, this approach necessarily results in low work throughput, even if the idle robot is technically capable of performing useful work in the shared workspace.
[0009] In a traditional approach, a team of engineers would typically break the problem down and optimize smaller sub-problems independently of each other (e.g., assigning tasks to robots, sequencing the tasks assigned to each robot, motion planning for each robot). This can take the form of iterative simulations of motion to ensure that the robots / robot attachments do not collide with each other, which can take hours of computational time and may not result in an optimized solution. Furthermore, if a modification to the workspace causes the trajectory of one of the robots / robot attachments to change, the entire workflow must be revalidated. Clearly this approach is suboptimal and often requires experts to go through a slow iterative process in an attempt to find a combination of solutions that yields good results. Summary of the invention
[0010] Methods and apparatus are described herein that generate solutions for multi-robot configurations based on a given set of tasks performed by the robots in a multi-robot operating environment, performing co-optimization across a set of non-homogeneous parameters (e.g., a combination of co-optimization of work cell layout and task planning). These methods can be performed in an offline or pre-runtime environment, providing global optimizers for these types of problems.
[0011] The inputs may include a model of the multi-robot operating environment, models of the robots, a limit on the total number of robots that can be employed, a set of tasks to be completed by the robots, and a limit on the total number of tasks that can be assigned to each robot (i.e., the target capacity of the robots). The inputs may also optionally include one or more dwell durations for which the robots or parts thereof dwell at a target, e.g., to complete a task (e.g., tighten a bolt or nut) or to avoid collisions. The inputs may also optionally include one or more of the following: a set of bounds or constraints on one or more parameters or variables, or a time limit that limits the time provided for modeling or simulating collisions.
[0012] The output may include a complete solution to the problem, which solution may advantageously be optimized at least with respect to the amount of wear that the robot will experience while performing the task sequence, with respect to collision assessment (e.g., probability or likelihood of collision and / or severity of collision), and optionally additionally optimized with respect to one or more other parameters, such as: optimizing for energy loss, energy consumption or energy efficiency and / or optimizing with respect to performance or latency (also known as time efficiency, such as time to complete the task sequence). In particular, the solution may have been optimized among a population of candidate solutions by an optimization engine that performs collaborative optimization on a set of two or more non-homogeneous parameters. The non-homogeneous parameters may, for example, include two or more of the following: respective base positions and orientations of the robots, assignment of tasks to respective ones of the robots, and respective goal sequences of the robots. In the absence of any timing variability, the output can be used to control the robots in a multi-robot environment without any modification. Alternatively, one or more motion planners can be employed during runtime, for example, to avoid collisions that may result from small variations in timing (e.g., sometimes the time required to tighten a screw may be a little more or a little less than at other times).
[0013] For example, the outputs may include: a work cell layout, and for each robot: an ordered list or vector of goals (e.g., robot 1: {goal 7, goal 2, pause, goal 9}), optionally the dwell duration at the corresponding goal, and a path or trajectory between each pair of consecutive goals (e.g., a collision-free path or trajectory).
[0014] The work cell layout may provide (e.g., in Cartesian coordinates) a base position and orientation for each robot. The base position and orientation of the base of each robot is specified by a corresponding 6-tuple {X, Y, Z, r, p, y}, where X, Y, and Z represent positions along corresponding axes of an orthogonal coordinate system, respectively, and r (i.e., roll) indicates the amount of rotation around a first axis of the axes, p (e.g., pitch) indicates the amount of rotation around a second axis of the axes, and y (e.g., yaw) indicates the amount of rotation around a third axis of the axes.
[0015] For example, the global optimizer may be based on a multivariable mixed integer optimization algorithm, such as the algorithm known as differential evolution (DE). Unless the DE algorithm is explicitly recited in the claims, the claims are not limited to the algorithm.
[0016] The global optimizer optimizes the robot's base layout (in Cartesian coordinates), the robot's functional pose (i.e., in C-space), and each robot's mission plan (an ordered list of pauses and goals for the corresponding robot). The primary optimization goal may be the amount of wear the robot will experience and optimization based on collision assessment, but additional optimization goals may include: energy loss, energy consumption, or energy efficiency; performance or latency (also known as time efficiency, e.g., time to complete a sequence of tasks); efficient use of floor space; number of movements to accomplish a goal; the ability to operate robots in parallel; minimization of robot waiting time; robot availability; state conditions; and / or the availability of robots suitable for performing a particular type of task (e.g., the availability of robots with a certain type of end-of-arm tool or end effector), etc. Thus, the structures and algorithms described herein facilitate the operation of two or more robots operating in a shared workspace or workcell, at least to some extent, optimizing such layout and operation in terms of wear, and potentially preventing or at least reducing the risk of robots or robot accessories of robots colliding with each other when performing corresponding tasks in the shared workspace. By performing autonomous planning that has been optimized at least to some extent, the structures and algorithms described herein can advantageously reduce the programming workload of a multi-robot workspace. The input may be limited to a description of the operating environment, one or more tasks to be performed and a geometric model of the robot.The structures and algorithms described herein may advantageously dynamically assign tasks to be performed by a robot. BRIEF DESCRIPTION OF THE DRAWINGS
[0017] In the drawings, the same reference numerals identify similar elements or actions. The sizes and relative positions of 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 portions of such elements may be arbitrarily enlarged and positioned to improve the readability of the drawings. In addition, the particular shapes of the drawn elements are not intended to convey any information about the actual shape of the particular element, but are selected only for ease of identification in the drawings.
[0018] Figure 1 is a schematic diagram of a shared workspace or multi-robot operating environment in which multiple robots operate to perform a task and a configuration system performs optimization to configure the robots according to one illustrated embodiment.
[0019] Figure 2 According to an illustrated embodiment Figure 1A functional block diagram of a configuration system including one or more processors and one or more non-transitory processor-readable media storing processor-executable instructions; and also showing multiple robots.
[0020] Figure 3 A method of high-level robotic configuration of operation of a processor-based system according to at least one illustrated embodiment is shown for configuring a plurality of robots for a multi-robot operating environment in which the plurality of robots are to operate.
[0021] Figure 4 A high-level multi-robot environment simulation method is shown for configuring a plurality of robots for a multi-robot operating environment in which the plurality of robots are to operate, according to operation of a processor-based system in accordance with at least one illustrated embodiment.
[0022] Figure 5 A low-level multi-robot environment simulation method of operation of a processor-based system according to at least one illustrated embodiment is illustrated for configuring a plurality of robots for a multi-robot operating environment in which the plurality of robots are to operate.
[0023] Figure 6 A low-level multi-robot optimization DE method is shown that illustrates the operation of a processor-based system according to at least one illustrated embodiment for configuring a plurality of robots for a multi-robot operating environment in which the plurality of robots are to operate.
[0024] Figure 7 A parameterized cost function according to at least one illustrated embodiment is shown that can be used with embodiments employing a differential evolution (DE) algorithm.
[0025] Figure 8 is a further illustration according to at least one illustrated embodiment Figure 7 A graph of the cost function.
[0026] Fig. 9 A data structure is shown according to at least one illustrated embodiment that can be used by a processor-based system when representing candidate solutions in a format that allows perturbations (e.g., when executing Figure 6 A low-level multi-robot optimization DE method is adopted.
[0027] Fig.10 A low-level multi-robot DE candidate solution method is shown for configuring multiple robots for a multi-robot operating environment in which the multiple robots are to operate, detailing the operation of a swarm generator, according to the operation of a processor-based system according to at least one illustrated embodiment. DETAILED DESCRIPTION
[0028] In the description that follows, certain specific details are set forth in order to provide a thorough understanding of the various disclosed embodiments. However, one skilled in the relevant art will recognize that the embodiments may be implemented without one or more of these specific details, or using other methods, components, materials, etc. In other cases, well-known structures associated with computer systems, actuator systems, and / or communication networks are not shown or described in detail to avoid unnecessarily obscuring the description of the embodiments. In other cases, well-known computer vision methods and techniques for generating perceptual data and volumetric representations of one or more objects and the like are not described in detail to avoid unnecessarily obscuring the description of the embodiments.
[0029] Unless the context requires otherwise, throughout the specification and the appended claims, the word "comprise" and variations such as "include" and "comprising" should be construed in the open inclusive sense, ie, "including, but not limited to."
[0030] References throughout this specification to "one embodiment" or "an embodiment", or "an example" or "an example" mean that a particular feature, structure, or characteristic described in conjunction with the embodiment is included in at least one embodiment or at least one implementation example. Therefore, the phrases "one embodiment" or "an embodiment" or "in one example" or "in an example" appearing in various places in this specification do not necessarily refer to the same embodiment or example. Furthermore, particular features, structures, or characteristics may be combined in any suitable manner in one or more embodiments or examples.
[0031] As used in this specification and the appended claims, the singular forms "a", "an", and "the" include plural references unless the content clearly dictates otherwise. It should also be noted that the term "or" is generally used to include the meaning of "and / or" unless the content clearly dictates otherwise.
[0032] As used in this specification and the appended claims, the term "optimize" and its variations mean preparing, generating, or producing an improved result, or having prepared, generated, or produced an improved result. These terms are used in their relative sense and do not necessarily mean that the absolute optimal value has been prepared, generated, or produced.
[0033] 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 a volume in which the robots may potentially collide with each other, and thus the portion may be named an interference zone. The operating environment may include obstacles and / or artifacts (i.e., items with which or on which the robots need to interact or act).
[0034] As used in this specification and the appended claims, the term "task" is used to refer to a robot task for which the robot transitions from posture A to posture B without colliding with obstacles in its environment. The task may involve grasping or releasing an object, moving or dropping an object, rotating an object, or retrieving or placing an object. The transition from posture A to posture B may optionally include transitions between one or more intermediate postures.
[0035] The titles and abstracts of the disclosure provided herein are for convenience only and are not used to interpret the scope or meaning of the embodiments.
[0036] Figure 1 A robotic system 100 is shown including a plurality of robots 102a, 102b, 102c (collectively 102) operating in a shared workspace 104 to perform tasks, according to one illustrated embodiment.
[0037] The robot 102 can take any of a variety of forms. Typically, the robot 102 will take or have the form of one or more robot attachments 103 (only one is labeled) and a base 105 (only one is labeled). The robot 102 may include one or more connecting rods 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 connecting rods in response to a control or drive signal. For example, a pneumatic actuator may include one or more pistons, cylinders, valves, gas reservoirs, and / or pressure sources (e.g., compressors, blowers). For example, a hydraulic actuator may include one or more pistons, cylinders, valves, liquid reservoirs (e.g., low-compressibility hydraulic fluids), and / or pressure sources (e.g., compressors, blowers). The robot system 100 may take other forms of robots 102 (e.g., autonomous vehicles).
[0038] The shared workspace 104 generally represents a three-dimensional space in which the robots 102 can operate and move, although in certain limited embodiments, the shared workspace 104 can represent a two-dimensional space. The shared workspace 104 is a volume or area in which at least portions of the robots 102 can overlap in space and time, or collide if motion is not controlled to avoid collisions. Notably, the workspace 104 is a physical space or volume, where the position and orientation of the physical space or volume can be measured, for example, relative to some reference frame (e.g., Figure 11 and 10. The workspace 104 is conveniently represented by Cartesian coordinates of a reference frame represented by orthogonal axes X, Y, and Z as shown. It should also be noted that the reference frame of the workspace 104 is different from the corresponding "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 the corresponding reference frame of any of the robots 102.
[0039] As described 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 another robot 102b). The shared workspace 104 may also include other obstacles, such as mechanical parts (e.g., conveyor belt 106), columns, pillars, walls, ceilings, floors, tables, people and / or animals. The shared workspace 104 may also include one or more work items or artifacts (e.g., one or more packages, packages, fasteners, tools, projects, or other objects) that the robot 102 manipulates as part of performing a task.
[0040] The robot system 100 includes one or more processor-based multi-robot configuration optimization systems 108 ( Figure 1 1 ). One or more multi-robot configuration optimization systems 108 receive a set of inputs 109 and generate as outputs 111 one or more solutions specifying configurations of the robots 102, including respective base positions and orientations, respective sets of at least one defined poses, and respective target sequences for each of the robots 102, the solutions being optimized at least to some extent for the amount of wear the robots will experience while performing the task sequence and for collision assessments (e.g., the probability or likelihood of a collision and / or the severity of a collision), and optionally additionally optimized for one or more other parameters, such as: energy loss, energy consumption, or energy efficiency; and / or performance or latency (also referred to as time efficiency, such as the time to complete a task sequence); efficient use of floor space; number of moves to complete a target; the ability to operate robots in parallel; minimization of robot waiting time; robot availability; state conditions; and / or availability of robots suitable for performing a particular type of task (e.g., the availability of robots with a certain type of end-of-arm tool or end effector), etc.
[0041] The one or more multi-robot configuration optimization systems 108 may include a swarm generator 110 , a multi-robot environment simulator 112 , and a multi-robot optimization engine 114 .
[0042] 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 the configuration problem, i.e., how to configure the robots 102 in the workspace 104 to complete a set of tasks. Any given candidate solution 116 may or may not actually be feasible. That is, the initial candidate may be invalid (e.g., the robot is in an impossible place, has an unreachable goal, or an infeasible task plan that would result in a collision). In some embodiments, the swarm generator may attempt to find better candidate solutions.
[0043] The multi-robot environment simulator 112 models the multi-robot environment based on each candidate solution to determine certain properties, such as: the amount of wear and tear that the robot will incur or experience in order to complete the task; the probability or rate of collisions in completing the task; a rating or other indication of the severity of the collision; the feasibility or infeasibility of a particular configuration specified by the candidate solution; and optionally the energy loss or energy consumption required to complete the task; and / or the amount of time required to complete the task. The multi-robot environment simulator 112 may reflect this in terms of cost, which is generated via one or more cost functions.
[0044] The multi-robot optimization engine 114 evaluates candidate solutions based at least in part on the associated costs, and advantageously performs collaborative optimization across a set of two or more non-homogeneous parameters, for example, across two or more of the following parameters: respective base positions and orientations of the robots, assignment of tasks to respective ones of the robots, respective goal sequences of the robots, and / or respective trajectories or paths (e.g., collision-free paths) between consecutive goals. Straight-line trajectories between consecutive goals are used to simplify the description, but the trajectories need not necessarily be straight-line trajectories.
[0045] Input 109 may include one or more static environment models representing or characterizing the operating environment or workspace 104, for example, representing floors, walls, ceilings, columns, other obstacles, etc. The operating environment or workspace 104 may be represented by one or more models, for example, a geometric model (e.g., a point cloud) representing the floor, walls, ceilings, obstacles, and other objects in the operating environment. For example, the model may be represented by Cartesian coordinates.
[0046] The input 109 may include one or more robot models representing or characterizing each of the robots 102, e.g., specifying geometry and kinematics, e.g., size or length, number of links, number of joints, range of motion of joint types, 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 robot 102a-102c, e.g., in terms of joints, degrees of freedom, size (e.g., link lengths), and / or respective C-spaces of the robots 102a-102c.
[0047] The input 109 may include one or more groups of tasks to be performed, for example, represented as target objectives (e.g., positions or configurations). For example, the task may be represented by an end pose, end configuration, or end state and / or an intermediate pose, intermediate configuration, or intermediate state of the corresponding robot 102a to 102c. For example, the pose, configuration, or state may be defined based on the joint positions and joint angles / rotations (e.g., joint poses, joint coordinates) of the corresponding robot 102a to 102c. Optionally, the input 109 may include one or more dwell durations that specify the amount of time that the robot or part thereof should stay at a given target in order to complete the task (e.g., tightening a screw or nut, picking and placing objects (the purpose is to sort a pile of objects into two or more object piles of different types of objects by two or more robots operating in a common workspace)).
[0048] The input 109 may optionally include a limit on the number of robots that can be configured in the workspace 104. The input 109 may optionally include a limit on the number of tasks or goals that can be assigned to a given robot 102a to 102c, referred to herein as task capacity, that can be configured in the workspace 104, for example, to limit the complexity of the configuration problem to ensure that the configuration problem is solvable or is solvable within some acceptable time period using available computing resources, or to pre-emptively eliminate certain solutions that are considered too slow because the tasks or goals are significantly over-allocated to a given robot 102a to 102c. The input 109 may optionally include one or more bounds 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 is solvable within some acceptable time period using available computing resources.
[0049] The robotic system 100 may optionally include one or more robotic control systems 118 ( Figure 1The robot 102 may include a plurality of control systems 118 (only one of which is shown) that are communicatively coupled to control the robot 102. For example, one or more robot control systems 118 may provide control signals (e.g., drive signals) to various actuators to move the robot 102 between various configurations to various designated targets to perform designated tasks.
[0050] The robotic system 100 may optionally include one or more motion planners 120 ( Figure 1 The motion planner 120 may be a plurality of motion planners 120, each of which is communicatively coupled to control the robot 102. As described elsewhere herein, one or more motion planners 120 generate or refine motion plans for the robot 102, for example, to account for small deviations in time relative to the motion plan provided by the multi-robot optimization engine 114, or to account for the unexpected appearance of obstacles (e.g., a human entering the operating environment or workspace 104). The optional motion planner 120 is operable to dynamically generate motion plans to enable the robot 102 to perform tasks in the operating environment. The motion planner 120 and other structure and / or operation may be as described in U.S. patent application Ser. No. 62 / 865,431 filed on Jun. 24, 2019.
[0051] Where a motion planner 120 is included, the motion planner 120 is optionally communicatively coupled to receive as input perception data, for example, provided by a perception subsystem (not shown). The perception data represents previously unknown static and / or dynamic objects in the workspace 104. The perception data may be raw data sensed via one or more sensors (e.g., a camera, a stereo camera, a time-of-flight camera, LIDAR) and / or raw data converted by a perception subsystem into digital representations of obstacles, which may generate a corresponding discretized representation of the environment in which the robot 102 will operate to perform tasks for a variety of different scenarios.
[0052] exist Figure 1 Various communication paths are shown as lines between various structures, with arrows indicating, in some cases, the direction of inputs 109 and outputs 111. For example, a communication path may take the form of one or more wired communication paths (e.g., electrical conductors, signal buses, or optical fibers) and / or one or more wireless communication paths (e.g., via RF or microwave radios and antennas, infrared transceivers). For example, a communication channel may include one or more transmitters, receivers, transceivers, radios, routers, wired ports (e.g., Ethernet ports), etc.
[0053] Figure 2 According to at least one illustrated embodiment, Figure 1 A functional block diagram of the robotic system 100 is shown.
[0054] The robotic system 100 may include a robotic configuration optimization system 108 and a robot 102. The optimization system 108 may be communicatively coupled to directly or indirectly intervene via a robotic control system 118 ( Figure 1 ) controls robot 102.
[0055] Each robot 102a to 102c may include a set of rods, joints, end-of-arm tools or end effectors, and / or actuators 201a, 201b, 201c (three shown, collectively referred to as 201) that are operable to move the rods around the joints. Each robot 102a to 102c may include one or more motion controllers (e.g., motor controllers) 202 (only one shown) that receive control signals, such as from the robot configuration optimization system 108, and provide drive signals to drive the actuators 201. The motion controller 202 may be dedicated to controlling a specific one of the actuators 201.
[0056] For purposes of illustration, the robot configuration optimization system 108 will be described in detail. Those skilled in the art will recognize that this description is exemplary and that variations may be made to the robot configuration optimization system 108 described and shown.
[0057] The robot configuration optimization system 108 may include one or more processors 222, and one or more associated non-transitory computer or processor-readable storage media, such as a system memory 224a, a disk drive 224b, and / or a memory or register (not shown) of the processor 222. The non-transitory computer or processor-readable storage media 224a, 224b are communicatively coupled to the one or more processors 222a via one or more communication channels (e.g., a system bus 229). The system bus 229 can employ any known bus structure or architecture, including a memory bus with a memory controller, a peripheral bus, and / or a local bus. One or more such components may also, or alternatively, communicate with each other via one or more other communication channels, such as one or more parallel cables, serial cables, or wireless network channels capable of high-speed communication, such as Universal Serial Bus ("USB") 3.0, Peripheral Component Interconnect Express (PCIe), or via
[0058] The robot configuration optimization system 108 may also be communicatively coupled to one or more remote computer systems 212, such as a server computer, a desktop computer, a laptop computer, an ultraportable computer, a tablet computer, a smartphone, a wearable computer, and / or a sensor ( Figure 22 ), these remote computer systems are directly or indirectly communicatively coupled to various components of the robot configuration optimization system 108, for example, via a network interface (not shown) coupled to the network 210. The remote computing system 212, (e.g., a server computer (e.g., an input source)), can be used to program, configure, control, or interact with the robot configuration optimization system 108 and various components within the robot system 100, or provide input data thereto (e.g., an environment model, a robot model, a task, a goal objective, a limit on the total number of robots, a limit on the task for each robot, bounds or constraints on variables or other parameters, limits on iterations). Such connection can be through one or more communication channels using an Internet protocol, for example, one or more wide area networks (WANs), such as Ethernet or the Internet. In some embodiments, pre-runtime calculations (e.g., generation of outputs) can be performed by a system separate from the robot 102, while run-time calculations can be performed by one or more optional intervention motion planners 120 ( Figure 1 ) is performed, and in some embodiments, the interventional motion planner can be loaded on the robots 102a to 102c.
[0059] As should be noted, the robot configuration optimization system 108 may include one or more processors 222 (i.e., circuits), non-transitory storage media 224a, 224b, and a system bus 229 that couples various system components. The processor 222 may be any logical processing unit, for example, one or more central processing units (CPUs), digital signal processors (DSPs), graphics processing units (GPUs), field programmable gate arrays (FPGAs), application specific integrated circuits (ASICs), programmable logic controllers (PLCs), etc. Non-limiting examples of commercially available computer systems include, but are not limited to, the U.S. The company provides Celeron, Core, Core 2, Itanium and Xeon series microprocessors; the Advanced Micro Devices Inc. provides K8, K10, Bulldozer and Bobcat series microprocessors; the Apple Computer Inc. provides A5, A6 and A7 series microprocessors; the Qualcomm Incorporated provides Snapdragon series microprocessors; and the Oracle Corporation provides SPARC series microprocessors. Figure 2The construction and operation of the various structures shown may implement or employ structures, techniques, and algorithms described in or similar to the following: International Patent Application No. PCT / US2017 / 036880, entitled “MOTION PLANNING FOR AUTONOMOUS VEHICLES AND RECONFIGURABLE MOTION PLANNING PROCESSORS,” filed on June 9, 2017; International Patent Application Publication No. WO 2016 / 122840, entitled “SPECIALIZED ROBOT MOTION PLANNING HARDWARE AND METHODS OF MAKING AND USING SAME,” filed on January 5, 2016; and International Patent Application Publication No. WO 2016 / 122840, entitled “APPARATUS, METHOD AND ARTICLE TO FACILITATE MOTION PLANNING OF ANAUTONOMOUS VEHICLE IN AN ENVIRONMENT HAVING DYNAMIC” filed on January 12, 2018. and / or U.S. patent application serial number 62 / 865,431, filed on June 24, 2019, entitled “MOTION PLANNING FOR MULTIPLE ROBOTS IN SHARED WORKSPACE.”
[0060] The system memory 224a may include a read-only memory ("ROM") 226, a random access memory ("RAM") 228, a flash memory 230, and an EEPROM (not shown). A basic input / output system ("BIOS") 232, which may form part of the ROM 226, contains basic routines that help transfer information between elements within the robotic system 100 (e.g., during startup).
[0061] For example, the drive 224b can be a hard disk drive for reading from and writing to a disk, a solid-state (e.g., flash) drive for reading from and writing to a solid-state memory, and / or an optical drive for reading from and writing to a removable optical disk. In various different embodiments, the robot configuration optimization system 108 may also include any combination of such drives. The drive 224b can communicate with one or more processors 222 via a system bus 229. As known to those skilled in the relevant art, one or more drives 224b may include an interface or controller (not shown) coupled between such drives and the system bus 229. The drive 224b and its associated computer-readable medium provide the robot system 100 with non-volatile storage of computer or processor-readable and / or executable instructions, data structures, program modules, and other data. Those skilled in the relevant art will understand that other types of computer-readable media capable of storing computer-accessible data may be used, such as WORM drives, RAID drives, cassette tapes, digital video disks ("DVDs"), Bernoulli boxes, RAM, ROM, smart cards, etc.
[0062] Executable instructions and data can be stored in system memory 224 a , such as an operating system 236 , one or more application programs 238 , other programs or modules 240 , and program data 242 . The application 238 may include processor-executable instructions that cause one or more processors 222 to perform one or more of the following: generate a group of candidate solutions; model the candidate solutions; generate or determine, based at least in part on the modeling, a cost associated with each candidate solution; optimize the group of C candidate solutions at least with respect to the amount of wear and tear that the robot will experience while performing the task sequence and with respect to collision assessments (e.g., the probability or likelihood of a collision and / or the severity of a collision), and optionally, perform additional optimizations with respect to other parameters, such as: the other parameters are zero, one, or more of the following: energy loss, energy consumption, or energy efficiency; performance or latency (also known as time efficiency, e.g., time to complete a task sequence); efficient use of floor space; number of actions to accomplish a purpose; the ability to operate robots in parallel; minimization of robot waiting time; availability, state conditions of robots; and / or availability of robots suitable for performing particular types of tasks (e.g., the availability of robots with a certain type of end-of-arm tool or end effector), etc. The optimization can be performed by an optimization engine that co-optimizes two or more parameters across a set of two or more non-homogeneous parameters: respective base positions and orientations of the robots, assignment of tasks to respective ones of the robots, and respective goal sequences of the robots; and / or provides output that can be used to position and orient the robots in a multi-robot operating environment and cause the robots to perform tasks. Such operations can be as described herein (e.g., with reference to Figure 3 and Fig.10 ) and described in the references incorporated herein by reference. In at least some embodiments, the processor executable instructions cause one or more processors 222 to build a motion plan (e.g., collision detection or evaluation, updating the cost of edges in the motion plan graph based on collision detection or evaluation, and performing a path search or evaluation). Additionally, the application 238 may include one or more machine-readable and machine-executable instructions that cause one or more processors 222 to perform other operations, such as optionally processing sensory data (captured via sensors). Additionally, the application 238 may include one or more machine-executable instructions that cause one or more processors 222 to perform various other methods described herein and in the references incorporated herein by reference.
[0063] Although in Figure 2224a, but operating system 236, application programs 238, other applications, programs / modules 240, and program data 242 can be stored on other non-transitory computer or processor readable media, such as one or more drives 224b.
[0064] Although not required, many of the embodiments will be described in the general context of computer-executable instructions, such as program application modules, objects, or macros stored on a computer-readable medium or processor-readable medium and executed by one or more computers or processors, that are capable of performing generation of candidate solutions, modeling of candidate solutions, such as via forward kinematics, detection of collisions in the model, determination of execution time and other costs, generation of costs via cost functions, collaborative optimization across a set of non-homogeneous parameters, generation of trajectories or paths (e.g., collision-free paths), and / or other motion planning operations.
[0065] In various embodiments, operations may be performed entirely in hardware circuitry or as software stored in a memory such as system memory 224a and 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 memory.
[0066] The robot configuration optimization system 108 may optionally include one or more input / output components, such as a monitor or touch screen display 244 , a keypad or keyboard 246 , and / or a pointing device such as a computer mouse 248 .
[0067] Those skilled in the relevant art will appreciate that the illustrated embodiments and other embodiments can be practiced with other system structures and arrangements and / or other computing system structures and arrangements, including robots, handheld devices, multiprocessor systems, microprocessor-based or programmable consumer electronics, personal computers ("PCs"), networked PCs, minicomputers, mainframe computers, etc. These embodiments or examples or portions thereof (e.g., at configuration time and run time) can be practiced in a distributed computing environment where tasks or modules are performed by remote processing devices connected through a communication network. In a distributed computing environment, program modules can be located in both local and remote storage devices or media. However, the location and manner of storage of certain types of information is very important to help improve robot configuration.
[0068] Figure 3A high-level robot configuration method 300 is shown of the operation of a processor-based system according to one illustrated embodiment 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 may include 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, enable the at least one processor to perform various operations or actions of the robot configuration method 300.
[0069] Multiple robots can be configured to perform a set of tasks. Tasks can be specified as task planning. Task planning can specify T tasks that need to be performed by R robots. Task planning can be modeled as a vector for each robot, where the vector is an ordered list of tasks to be performed by the corresponding robot (e.g., {task 7, task 2, task 9}). The task vector can also optionally include a dwell duration that specifies the duration that the robot or its part should stay at a given configuration or target. The task vector can also specify a home pose and / or other "functional poses" that are not directly related to solving the task (e.g., "get out of the way" or storage pose). The pose can be specified in the robot's C-space.
[0070] The robot configuration method 300 may begin at 302, for example, in response to startup or power-up of the system or its components, receipt of information or data, or invocation or initiation by calling a routine or program. The robot configuration method 300 may be performed at configuration time or before run time, which can occur before run time. This advantageously allows some of the most computationally intensive work to be performed before run time, when responsiveness is not a particular concern.
[0071] At 304, at least one component of the processor-based system receives input characterizing a multi-robot environment, a set of tasks to be performed, and providing various constraints or bounds for the problem.
[0072] For example, the processor-based system may receive one of the models of the multi-robot operating environment. The one or more models may represent the physical environment in which the multiple robots will operate, such as representing the ground, walls, and various objects in the environment.
[0073] For another example, the processor-based system can receive a corresponding model of each of a plurality of robots to be operated in a multi-robot operating environment. The robot model can represent the physical properties of the robot, such as physical size, range of motion, number of joints, number of links, link length, end effector type, speed limits, acceleration limits, etc.
[0074] For another example, a processor-based system may receive a set of tasks or targets. The targets may represent various positions to which each robot or part thereof must move in sequence or at a specific time in order to complete a set of tasks. For example, the targets may be represented in the configuration space (C-space) of the corresponding robot. For another example, when at least one of the robots performs at least one task, the processor-based system may optionally receive one or more dwell durations to stay at one or more targets. The dwell duration may advantageously reflect the expected amount of time that the end effector of the robot needs to remain at a given target to complete the corresponding task (e.g., screwing a fastener into a threaded opening, inserting a component into a container).
[0075] As another example, the processor-based system may optionally receive a set of bounds or constraints on the variables. Various bounds and constraints may apply to optimizations in a multi-robot environment. For example, the processor-based system may optionally receive a set of time intervals that specify time limits for modeling motion or simulating collisions. For example, the processor-based system may optionally receive a limit on the total number of robots allowed to operate in the multi-robot operating environment. For example, the processor-based system may optionally receive a maximum number of tasks or goals allowed for each robot, which in turn may prevent submission of problems that are too complex to be solved given the available computing resources or time.
[0076] In 306, a swarm generator generates a swarm of C candidate solutions. The swarm can include one or more candidate solutions. Each of the candidate solutions in the swarm of C candidate solutions specifies for each of the robots: a corresponding base position and orientation, at least one corresponding group of defined poses, and a corresponding target sequence. The corresponding base position and orientation specifies a corresponding position and orientation of a base of the corresponding robot in a multi-robot operating environment. The at least one corresponding group of defined poses specifies at least a corresponding home pose and / or other functional pose (e.g., a get out of the way or store pose) of the corresponding robot in the multi-robot operating environment. The corresponding target sequence includes a corresponding ordered list of targets for the corresponding robot to move through to complete a corresponding sequence of tasks. The swarm generator can be implemented as one or more processors that execute processor executable instructions.
[0077] The swarm generator may take the form of a pseudo-random swarm generator that may pseudo-randomly generate a group of C candidate solutions based on one or more input parameters. The pseudo-random swarm generator generates candidate solutions that may or may not actually be feasible solutions. The swarm generator may alternatively generate a group of C candidate solutions, each of which has a lower probability of being an invalid candidate solution than a group of C candidate solutions generated purely pseudo-randomly. This may produce a group of candidate solutions that enables faster optimization without losing configuration space coverage. For example, the swarm generator may take into account the operating environment to avoid candidate solutions that position the robot's base in an impossible position (e.g., a position occupied by a wall or other object), will result in an infeasible mission planning with one or more targets that the robot cannot reach, or will result in a collision. In the case of using a pseudo-random swarm generator, a variety of techniques may be employed to improve the candidate solutions, such as those described below with reference to Figure 6 Describe the technology.
[0078] In 308, the optimization engine performs optimization on the population of C candidate solutions, optimizing at least for the amount of wear and tear that the robot will experience while performing the task sequence, and optimizing for collision assessment (e.g., probability or likelihood of collision and / or severity of collision), and optionally additionally optimizing for zero, one, or more other parameters, such as: energy loss, energy consumption, or energy efficiency; performance or latency (also referred to as time efficiency, such as time to complete the task sequence); efficient use of floor space; number of movements to accomplish a goal; ability to operate robots in parallel; minimization of robot waiting time; availability of robots; state conditions; and / or availability of robots suitable for performing a particular type of task (e.g., availability of robots with a certain type of end-of-arm tool or end effector), etc. In particular, the optimization engine co-optimizes two or more of the following across a set of two or more non-homogeneous parameters: respective base positions and orientations of the robots, assignment of tasks to respective ones of the robots, and respective goal sequences of the robots. For example, the optimization engine can select an optimization candidate solution having the following synergistic optimization combination: corresponding optimized base position and orientation of the corresponding base of each of the robots, optimized task allocation, and optimized motion planning. The optimization is for the amount of wear and tear that the robot will suffer when performing a sequence of tasks. The optimization can also be related to collision assessment (e.g., the probability or possibility of a collision and / or the severity of the collision). The optimization can also optionally be related to one or more other parameters, such as: zero, one, or more of the following: energy loss, energy consumption, or energy efficiency; performance or latency (also known as time efficiency, e.g., the time to complete a sequence of tasks); efficient use of floor space; the number of actions to accomplish a purpose; the ability to operate robots in parallel; minimization of robot waiting time; availability of robots; state conditions; and / or the availability of robots suitable for performing specific types of tasks (e.g., the availability of robots with a certain type of end-of-arm tool or end effector), etc. The optimization engine can be implemented as one or more processors that execute processor executable instructions. As described below with reference to Figure 4As described, the optimization engine can interact with the multi-robot environment simulator when performing the optimization, for example, providing candidate solutions to be simulated, and receiving costs generated or determined by the multi-robot environment simulator, which costs characterize the wear and collision probability or rate of the corresponding candidate solutions, and optionally characterize the collision severity of the corresponding candidate solutions, and optionally additional parameters, such as: zero, one, or more of the following: energy loss, energy consumption, or energy efficiency; performance or latency (also known as time efficiency, such as the time to complete a task sequence); effective use of floor space; the number of actions to complete a purpose; the ability to operate robots in parallel; minimization of robot waiting time; robot availability; state conditions; and / or the availability of robots suitable for performing a particular type of task (e.g., the availability of a robot with a certain type of end-of-arm tool or end effector), etc. The optimization engine can select one of the candidate solutions based at least in part on the corresponding costs associated with the candidate solutions, and the corresponding costs are selected based at least in part on the amount of wear that the robot will suffer when completing the task sequence and the collision value determined for the corresponding candidate solution.
[0079] In 310, the optimization engine provides an optimized output. In particular, the optimization engine can provide one or more of the following as output: the corresponding base position and orientation of each of the robots, the corresponding task assignment of each of the robots, the corresponding motion planning of each of the robots, and / or a set of collision-free paths of each of the robots with or without dwell duration at the corresponding target in the C-space of the robot. The output can include an optimized task assignment, which specifies for each robot a corresponding sequence of tasks to be performed in the form of an optimized ordered list of targets in the C-space of the corresponding robot and one or more dwell durations at one or more of the targets. The output can additionally or alternatively include an optimized motion planning that specifies a set of collision-free paths, which specifies the corresponding collision-free paths between each pair of consecutive targets in the ordered list of targets. In at least some embodiments, the output is sufficient to drive the robot to perform a set of tasks. In at least some embodiments, a motion planner can be used to refine the motion planning.
[0080] The high-level robot configuration method 300 may terminate at 312, for example, until called again. Although the high-level robot configuration method 300 is described as a sequential process, in many embodiments, various actions or operations will be performed simultaneously or in parallel.
[0081] Figure 4A high-level multi-robot environment simulation method 400 is shown for configuring a plurality of robots for a multi-robot operating environment in which the plurality of robots are to operate, according to an illustrated embodiment of a processor-based system. The processor-based system may include at least one processor and at least one non-transitory processor-readable medium storing at least one of data and processor-executable instructions. When executed by at least one processor, the processor-executable instructions cause the at least one processor to perform various operations or actions of the multi-robot environment simulation method 400. The multi-robot environment simulation method 400 may be performed by a multi-robot environment simulator, which may be implemented by one or more different processors dedicated to simulating motion in a multi-robot environment. Alternatively, the multi-robot environment simulator may be implemented by one or more processors that perform other operations (e.g., perform optimization).
[0082] The multi-robot environment simulation method 400 may begin at 402 , for example, in response to startup or powering of the system, receipt of information or data, or invocation or invocation of a calling routine or program (e.g., initiated by the high-level robot configuration method 300 ).
[0083] At 404 , the multi-robot environment simulator receives candidate solutions, such as from an optimization engine or a swarm generator.
[0084] At 406, the multi-robot environment simulator models the robots in the multi-robot environment based on the particular candidate solution. The candidate solution may be submitted or provided to the multi-robot environment simulator, for example, by the optimization engine. A conventional modeling package, for example, a modeling package using forward kinematics, can be used to model the movement of the robots based on the candidate solution.
[0085] In 408, the multi-robot environment simulator determines the amount of wear that the robots will experience or suffer to complete the task sequence via modeling performed by the multi-robot environment simulator. The determination may include determining the amount of wear that each robot will experience to complete the task sequence. The determination may additionally or alternatively include determining the cumulative amount of wear that the set of robots will experience to complete the task sequence of all robots. For example, this may employ a wear model that represents the corresponding amount of wear that at least one robot or part thereof will experience when performing a motion and / or performing a set of tasks, with respect to one or more of the position, motion, velocity, acceleration, jerk, or torque of at least one robot or part thereof. Such a wear model can be based on empirical data collected in the operation of a relatively large number of robots that are the same or at least similar to the type of robots used in the multi-robot environment.
[0086] Optionally, in 410, the multi-robot environment simulator determines the energy loss or energy consumption that the robot will experience to complete the task sequence via modeling performed by the multi-robot environment simulator. The determination may include determining the energy loss or energy consumption of each robot to complete the task sequence. The determination may additionally or alternatively include determining the cumulative amount of energy loss or energy consumption that the robot set will experience to complete the task sequence of all robots. For example, this can adopt a model of energy loss or a model of energy consumption, which represents the corresponding amount of energy loss or energy consumption that at least one robot will experience when performing a movement and / or performing a set of tasks relative to one or more of the position, movement, speed, acceleration, jerk or torque of a part of at least one robot or robot attachment. Such an energy loss model or energy consumption model can be based on empirical data collected in a relatively large number of robot operations, and these robots are the same or at least similar to the type of robots used in the multi-robot environment.
[0087] At 412, the multi-robot environment simulator determines the corresponding time to complete the task sequence via modeling performed by the multi-robot environment simulator. The determination may include determining the total time to complete the task sequence for all robots that may have to wait for each other. For example, this may include determining the corresponding time to complete the corresponding task for each of the robots.
[0088] At 414, the multi-robot environment simulator determines, via modeling performed by the multi-robot environment simulator, a collision value representing a rate or probability of collision occurring in completing the task sequence. The determination may include determining a total collision value for all robots completing the task sequence. For example, this may include determining a respective collision value for each of the robots.
[0089] At 416, the multi-robot environment simulator provides the determined values (e.g., determined wear values, determined collision values, determined energy loss or consumption, time to complete a task sequence) to, for example, an optimization engine. As described elsewhere herein, in some embodiments, the multi-robot environment simulator provides the determined wear and collision values and optionally other values as distinct values for processing by the optimization engine to form values that can be collaboratively optimized across two or more non-homogeneous parameters.
[0090] The multi-robot environment simulation method 400 may terminate at 418, for example, until called again. Although the multi-robot environment simulation method 400 is described as a sequential process, in many embodiments, various actions or operations will be performed simultaneously or in parallel.
[0091] Figure 5A low-level multi-robot environment simulation method 500 of the operation of a processor-based system according to one illustrated embodiment is shown for configuring a plurality of robots for a multi-robot operating environment in which the plurality of robots will operate. The processor-based system may include at least one processor and at least one non-transitory processor-readable medium storing at least one of data and processor-executable instructions. When executed by at least one processor, the processor-executable instructions enable the at least one processor to perform various operations or actions of the multi-robot environment simulation method 500. The multi-robot environment simulation method 500 may be performed by a multi-robot environment simulator, which may be implemented by one or more different processors dedicated to simulating movement in a multi-robot environment. Alternatively, the multi-robot environment simulator may be implemented by one or more processors performing other operations (e.g., performing optimization).
[0092] The multi-robot environment simulation method 500 may begin at 502 , for example, in response to startup or powering of the system, receipt of information or data, or invocation or invocation of a calling routine or program (e.g., initiated by the high-level robot configuration method 300 ).
[0093] In 504, the multi-robot environment simulator virtually executes each task in the task sequence of each robot, which is specified by the candidate solution as the subject of evaluation or consideration. The task sequence can be specified as an ordered list of corresponding tasks. Each ordered list of tasks is equivalent to an ordered list of tracks in the C-space of the robot. The ordered list of tasks can include multiple tracks between continuous postures or configurations (e.g., joint configurations) and one or more residence durations of one or more postures, original position postures, and one or more other defined functional postures (e.g., folded or "make way" postures) in the robot C-space. In order to virtually execute each task, when the processor executable instructions are executed by at least one processor, the processor is made to virtually simulate multiple tracks and one or more of the following: one or more residence durations at one or more postures, original position postures, or one or more other defined functional postures.
[0094] At 506, the multi-robot environment simulator samples the C-space position of the part of at least one of the robots for each time step of a plurality of time steps (epochs) (e.g., 0.1 s or some selected input value). The multi-robot environment simulator uses forward kinematics to identify potential collisions between one or more parts of the corresponding one of the robots and another part of the corresponding one of the robots, potential collisions between the corresponding one of the robots in the environment and another robot in the environment, and potential collisions between the corresponding one of the robots and another object in the multi-robot operating environment that is not another robot.
[0095] The multi-robot environment simulation method 500 may terminate at 508, for example, until called again. Although the low-level multi-robot environment simulation method 500 is described as a sequential process, in many implementations, various actions or operations will be performed simultaneously or in parallel.
[0096] The described systems and methods may employ various methods to refine or improve candidate solutions. For example, some methods may start with a basic solution and improve upon the basic solution. For another example, some methods may employ genetic algorithms or methods, such as differential evolution (DE) algorithms or similar techniques. Figure 6 Describe a DE algorithm.
[0097] Figure 6 A low-level multi-robot optimization DE method 600 is shown for configuring multiple robots for a multi-robot operating environment in which the multiple robots are to operate, according to an illustrated embodiment of a processor-based system. The processor-based system may include at least one processor and at least one non-transitory processor-readable medium storing at least one of data and processor-executable instructions. When executed by the at least one processor, the processor-executable instructions enable the at least one processor to perform various operations or actions of the multi-robot optimization method 600. The multi-robot environment simulation method 600 may be performed by an optimization engine, which may be implemented by one or more different processors dedicated to the optimization engine of the multi-robot environment. Alternatively, the multi-robot environment simulator may be implemented by one or more processors performing other operations.
[0098] The multi-robot environment simulation method 600 may begin at 602 , for example, in response to startup or powering of the system, receipt of information or data, or invocation or invocation of a calling routine or program (e.g., initiated by the high-level robot configuration method 300 ).
[0099] At 604, a cluster generator generates a cluster of candidate solutions.
[0100] In 606, the outer loop counter I is initialized, for example, to zero. In 608, the outer loop counter I is incremented, for example, I is increased by one.
[0101] At 610, candidate solutions are represented in a format that allows perturbations. For example, the candidate solutions can be represented as a candidate solution vector. For example, the candidate solution vector can include multiple real vector elements, for example, one real vector element for each task. The real vector element can represent a corresponding combination of: a corresponding one of the tasks, a priority of the corresponding one of the tasks, and one of the robots identified as performing the corresponding one of the tasks.
[0102] At 612, the optimizer engine perturbs or causes the candidate solution I to be perturbed to produce a perturbed candidate solution I'. For example, the optimizer engine may modify the real vector elements (ie, real values) of the candidate solution vector.
[0103] At 614, the multi-robot environment simulator models the disturbed candidate solution I'. For example, the multi-robot environment simulator can determine the amount of wear that will be experienced to complete the task sequence of the disturbed candidate solution I', and a collision value representing the rate or probability of collisions occurring when completing the task sequence of the disturbed candidate solution I'. Optionally, the multi-robot environment simulator can additionally determine the values of zero, one, or more additional parameters (e.g., energy loss, energy consumption, or energy efficiency; performance or latency) of the disturbed candidate solution I'.
[0104] In 616, the optimization engine or multi-robot environment simulator determines a cost value for the perturbed candidate solution I'. The determined cost value can be a function of a determined amount of wear that will be experienced in completing the task sequence of the perturbed candidate solution I' and a determined collision value of the perturbed candidate solution I'. The determined cost value can also be a function of a determined energy loss, energy consumption, or energy efficiency to complete the task sequence of the perturbed candidate solution I and / or a determined performance or delay (time efficiency to complete the task sequence of the perturbed candidate solution I'). In DE, the cost function is a piecewise logarithmic function, but can be parameterized, for example by Figure 7 Parameterization 700 and Figure 8 The curve 800 in FIG. Figure 7 In the example, the parameter “task_reachability” is equal to (the number of reachable target destinations) / (the total number of target destinations). Therefore, if all destinations are reachable, the value of the parameter “task_reachability” is equal to 1.
[0105] At 618 , the optimization engine or multi-robot environment simulator determines whether the perturbed candidate solution I′ has a lower associated cost than candidate solution I.
[0106] In 620, in response to determining that the perturbed candidate solution I' has a lower associated cost than the candidate solution I, the optimization engine replaces the corresponding candidate solution I in the group of C candidate solutions with the perturbed candidate solution I'. In response to determining that the perturbed candidate solution I' does not have a lower associated cost than the candidate solution I, the optimization engine does not modify the group of C candidate solutions and directly transfers control to 622.
[0107] In 622, the optimization engine determines whether the inner loop iteration exit condition has occurred. For example, the optimization engine determines when convergence has occurred, whether the iteration count limit has been reached, and / or whether the iteration time limit has been reached. For example, when the cost standard deviation of the current group of candidate solutions is less than the ε value, convergence can be considered to have occurred.
[0108] If the exit condition has occurred, control is transferred to 626, where the multi-robot environment simulation method 600 can terminate, for example, until called again. If the exit condition has not occurred, control is transferred to 624, where the optimization engine or multi-robot environment simulator determines whether there are more candidate solutions to be perturbed in the group of candidate solutions. If there are more candidate solutions to be perturbed in the group of candidate solutions, control returns to 608, where the inner loop counter is incremented and the next candidate solution is perturbed and analyzed. If there are no more candidate solutions to be perturbed in the group of candidate solutions, control returns to 606, where the inner loop counter is reinitialized and a traversal of another group of possible updated candidate solutions can be performed.
[0109] The various actions of the multi-robot environment simulation method 600 may be repeated for multiple iterations, refining the population of candidate solutions until an exit condition (eg, convergence) is met.
[0110] Although the low-level multi-robot optimization DE method 600 is described as a sequential process, in many embodiments, various actions or operations will be performed simultaneously or in parallel.
[0111] Fig. 9 900 is shown, according to at least one illustrated embodiment, which data structure may be used by a processor-based system to represent candidate solutions in a format that allows perturbations, for example, when executing the low-level multi-robot optimization DE method 600 ( Figure 6 ) is used.
[0112] The candidate solution I can advantageously be represented by a vector of numbers so that the system can perform one or more functions on the numbers to "perturb" the numbers, thereby perturbing the candidate solution to generate a perturbed candidate solution I'. There are many ways to represent the candidate solution. Fig. 9 The data structure 900 shown describes one method. The system may use this method or other methods to represent candidate solutions.
[0113] The candidate solutions can initially be represented as a two-dimensional (2D) matrix, which will be straightened into a one-dimensional (1D) vector. In the 2D matrix, the rows correspond to the tasks. For a problem with T tasks, there are T rows. In the 2D matrix, the columns correspond to the robots and priorities. If there are P priorities and R robots, then there are P*R columns. Fig. 9 The example shown has 3 robots, 3 priorities, and 4 tasks. In use, a particular problem may have Fig. 9 Different numbers of robots, different numbers of priorities and different numbers of tasks are shown. The examples shown are simplified for ease of understanding.
[0114] Each task is assigned to a single robot. Fig. 9 This is shown in the input by having exactly one entry per row marked (i.e., marked with an asterisk *), which robot is performing the task at which priority. A given robot is capable of performing at most the maximum number of tasks specified in the input, as the task capacity of each robot. It should be noted that a given robot can only perform one task per priority. That is, there is only one asterisk (*) per column.
[0115] The system can straighten the 2D matrix into a 1D vector of length T, where each task has one vector element. The vector elements correspond to the "number of entries" of the 2D matrix starting from 1. Therefore, for Fig. 9 In the example shown, the value of task 1 is 2, the value of task 2 is 13 (the first row has 9 entries, and then the assignment of task 2 is in the 4th entry of the 2nd row (see the asterisk *)), the value of task 3 is 21, and the value of task 4 is 36. It should be noted that the vector elements are all integers.
[0116] The system can normalize the resulting integer vector <2, 13, 21, 36> so that all values are between 0 and 1. For example, the system can divide each value by the total number of entries in the matrix, for example, P*R*T=36. The resulting normalized real-valued vector is <2 / 36.13 / 36, 21 / 36, 36 / 36>, where the sum of each vector element is 1.
[0117] To perturb the candidate real-valued vector V, the system may first take multiple (e.g., three) other randomly selected candidate vectors (e.g., A, B, and C), perform corresponding normalization in the same manner as described above, and obtain a 1D vector, using the 1D vector to represent those randomly selected candidate vectors (e.g., A, B, and C). The system is now able to calculate the perturbed real-valued vector V'. For example, the system can calculate the perturbed vector V' to be equal to A+mut*(CB).
[0118] The system can then compute a perturbed candidate Vp, for example by randomly mixing vector elements of vector V and a perturbed vector V'. That is, for each element of the perturbed candidate Vp, say Vp[i], the system randomly selects either V[i] or V'[i]. The selection can be weighted by a parameter, for example, which can skew the selection so that the selection is not 50 / 50. The system can multiply the perturbed candidate Vp by P*R*T to scale it back to a 1D vector representing the perturbed candidate. In order to return from a 1D real-valued vector to a 2D matrix, the system first rounds the real values to integers. Accordingly, the system can use these integer values to label a blank 2D matrix.
[0119] Fig.10 A low-level multi-robot DE candidate solution method 1000 is shown for configuring a plurality of robots for a multi-robot operating environment in which the plurality of robots will operate, detailing the operation of a swarm generator, according to an illustrated embodiment of a processor-based system. The processor-based system may include at least one processor and at least one non-transitory processor-readable medium storing at least one of data and processor-executable instructions. When executed by the at least one processor, the processor-executable instructions enable the at least one processor to perform various operations or actions of the multi-robot DE candidate solution method 1000. The multi-robot DE candidate solution method 1000 may be performed by an optimization engine, which may be implemented by one or more different processors dedicated to the optimization engine for the multi-robot environment. Alternatively, the multi-robot environment simulator may be implemented by one or more processors performing other operations.
[0120] The global optimizer may be based on a multivariable mixed integer optimization algorithm, such as the algorithm known as differential evolution (DE).The claims are not limited to the algorithm unless the algorithm is explicitly recited in the claims.
[0121] The global optimizer optimizes the robot base layout (e.g., in Cartesian coordinates), the robot functional poses (e.g., in C-space), and the mission plan (ordered list or goal vector and dwell duration) for each robot. The primary optimization goal may be to minimize the amount of wear and tear that the robot will experience, but other optimization goals may include minimizing the risk or probability of collision; minimizing energy usage; optimizing the available floor space; minimizing overall time performance or latency, etc.
[0122] The optimizer system may include three components: an optimization engine, a multi-robot environment simulator, and a candidate solution generator (eg, a seed generator).
[0123] As described in further detail below, the candidate solution generator generates a population of C candidate solutions, where any given candidate solution may or may not be feasible.
[0124] As described in further detail below, the optimization engine attempts to find a better candidate solution, for example, by perturbing one of the candidate solutions (e.g., candidate P) and seeing whether the resulting perturbed candidate P' has a lower cost. If so, the perturbed candidate P' replaces the candidate P in the group. The total number of candidates C remains unchanged.
[0125] In order to find the cost of the candidate solution, the multi-robot environment simulator simulates the candidate solution. A given candidate solution includes an ordered list of tasks for each robot, which is equivalent to an ordered list of trajectories in C-space. For each time step (e.g., 0.1s or some selected input value), the multi-robot environment simulator samples the position in C-space of each robot and uses forward kinematics to check whether the virtual representation of the robot collides with itself, with another robot, or with certain obstacles or objects in the operating environment. The multi-robot environment simulator determines the amount of wear that the robot will experience if it is operated according to each candidate solution. The multi-robot environment simulator determines the collision probability or collision ratio (e.g., the fraction of time steps during which the robot collides with itself, with another robot, or with obstacles or objects in the operating environment at least once). It should be noted that the generation of a group of candidate solutions does not require the generation of collision-free motion plans, but simply tracks the collision rate. No collision-free path is required, which significantly speeds up the processing speed; however, some embodiments can instead generate collision-free paths at this stage. The cost of the candidate is at least a function of these two numbers (e.g., the amount of wear and the collision ratio or probability). In DE, the cost function is a piecewise logarithmic value that can be parameterized.
[0126] Optionally, the multi-robot environment simulator can determine values for other parameters, such as the amount of energy that the robots would inflate or consume if they followed each candidate solution, and / or determine how long a candidate solution would take to fully execute.
[0127] The overall workflow involves a loop where the optimizer generates candidates and the simulator evaluates their costs. This process is repeated until some convergence criterion, such as the standard deviation of the costs being less than some ε value.
[0128] The candidate solution generator 1002 generates candidate solutions by performing various operations or actions.
[0129] In 1004, the candidate solution generator 1002 receives various variable boundaries, fixed parameters, task or target objectives, and group size. In 1006, the candidate solution generator 1002 generates a base position and orientation for each robot's base. In 1008, the candidate solution generator 1002 virtually places or positions the robot base in the virtual multi-robot operating environment and provides it to the multi-robot simulator 1009, which models the candidate solution and provides feedback to the candidate solution generator 1002.
[0130] At 1010 , the candidate solution generator 1002 generates homogenous random home poses and / or other functional poses for each robot.
[0131] In 1012, for each task or target objective, the candidate solution generator 1002 finds a group of robots that can complete the task or achieve the target objective at 1012a, randomly selects one of these robots at 1012b, determines whether the group is empty (indicating an infeasible task planning) at 1012c, returns to 1006 if the group is empty, otherwise assigns the task or target objective to the selected robot at 1012d.
[0132] In 1014, for each target robot, the candidate solution generator 1002 determines at 1014a whether the total number of tasks or target objectives assigned to the robot exceeds the limit or task or target capacity specified for the robot, and returns to 1006 if it is over-allocated (indicating an infeasible task plan), otherwise generates a random sequence of assigned tasks or target objectives at 1014b.
[0133] At 1016, the candidate solution generator 1002 generates or defines candidate solutions, which may be vectors or other representations representing the base layout and orientation of each robot, the home pose and / or other functional poses of each robot, and the goal sequence of each robot. At 1018, the candidate solutions are included in a group of candidate solutions (CS).
[0134] At 1020, the candidate solution generator 1002 determines whether there are enough candidate solutions in the group of candidate solutions. If the number of candidate solutions in the group of candidate solutions is less than a specified number, control can return to 1006 to generate additional candidate solutions. Otherwise, control can pass to 1022, where the candidate solution generator 1002 returns the group of candidate solutions to the multi-robot optimization engine 1024 for further optimization.
[0135] Once an initial population of candidate solutions is generated, the population of candidate solutions may be refined by, for example, perturbing the candidate solutions.
[0136] Although the low-level multi-robot DE candidate solution method 1000 is described as a sequential process, in many embodiments, various actions or operations will be performed simultaneously or in parallel.
[0137] In at least some embodiments, the structures and algorithms described herein can operate without cameras or other perception sensors. In at least some embodiments, coordination between robots relies on a geometric model of the robots, the ability of the robots to communicate their respective motion plans, and a geometric model of the shared workspace. In other embodiments, vision or other perception can optionally be employed, for example, to avoid people or other dynamic obstacles that may enter or occupy parts of the shared workspace.
[0138] A variety of algorithms are used to solve motion planning problems. Each of these algorithms generally requires the ability to determine whether a given posture of the robot or the movement from one posture to another posture will result in a collision with the robot itself or an obstacle in the environment. Virtual collision assessments or checks can be performed "in software" using processors that execute processor executable instructions from a stored set of processor executable instructions to execute the algorithm. Virtual collision assessments or checks can be performed "in hardware" using a set of dedicated hardware circuits (e.g., collision check circuits implemented in field programmable gate arrays (FPGAs), application specific integrated circuits (ASICs)). For example, such a circuit can represent a volume swept by a robot / robot attachment or part thereof (i.e., a swept volume) during a corresponding motion or transition between two states. For example, a circuit can generate a Boolean evaluation indicating whether a motion will collide with any obstacle, wherein at least some of the obstacles represent volumes swept when other robots operating in a shared workspace perform motions or transitions.
[0139] Example
[0140] Example 1. A method in a processor-based system operating to configure a plurality of robots for a multi-robot operating environment in which the plurality of robots are to operate, the method comprising:
[0141] generating, via a swarm generator, a swarm of C candidate solutions, each of the candidate solutions in the swarm of C candidate solutions specifying, for each of the robots: a respective base position and orientation, a respective set of at least one defined pose, and a respective goal sequence, wherein the respective base position and orientation specify a respective position and orientation of a base of the respective robot in the multi-robot operating environment, the respective set of at least one defined pose specifies at least a respective home pose of the respective robot in the multi-robot operating environment, and the respective goal sequence comprises a respective ordered list of goals for the respective robot to move through to complete the respective task sequence;
[0142] performing an optimization of the population of C candidate solutions with respect to at least an amount of wear that the robots will experience by an optimization engine that collaboratively optimizes across a set of two or more non-homogeneous parameters two or more of: respective base positions and orientations of the robots, assignments of tasks to respective ones of the robots, and respective goal sequences of the robots; and
[0143] Provided as outputs: a respective base position and orientation for each of the robots, a respective task assignment for each of the robots, and a respective motion plan for each of the robots.
[0144] Example 2. A method according to claim 1, wherein providing as output: a corresponding base position and orientation of each of the robots, a corresponding task assignment for each of the robots, and a corresponding motion plan for each of the robots, includes: providing an optimized task assignment, wherein the optimized task assignment is a corresponding sequence of tasks to be performed in the form of an optimized ordered list of targets in the C-space of the corresponding robot and one or more dwell durations at one or more of the targets, and providing an optimized motion plan that specifies a set of collision-free paths, wherein the set of collision-free paths specifies a corresponding collision-free path between each pair of consecutive targets in the ordered list of targets.
[0145] Example 3. The method according to any one of Examples 1 or 2, further comprising:
[0146] For each of the candidate solutions of the group of C candidate solutions, a corresponding time to complete a task sequence and a corresponding collision value representing a rate or probability of a collision occurring in completing the task sequence are determined via modeling performed by the robotic environment simulator.
[0147] Example 4. The method of claim 3, wherein the optimization of the group of C candidate solutions with respect to at least the amount of wear that the robot will experience is performed by an optimization engine that performs collaborative optimization across a set of two or more non-homogeneous parameters, comprising:
[0148] One of the candidate solutions is selected via the optimization engine based at least in part on a respective cost associated with the candidate solution, the respective cost being based at least in part on an amount of wear and tear that the robot will sustain to complete the sequence of tasks and a collision value determined for the respective candidate solution.
[0149] Example 5. The method of claim 3, wherein the optimization of the group of C candidate solutions is performed at least with respect to the amount of wear that the robot will experience by an optimization engine, the optimization engine performing collaborative optimization across a set of two or more non-homogeneous parameters, comprising:
[0150] One of the candidate solutions is selected via the optimization engine based at least in part on a respective cost associated with the candidate solution, the respective cost being based at least in part on each of: i) an amount of wear and tear that the robot will sustain to complete the task sequence; ii) a time to complete the task sequence; and iii) a collision value determined for the respective candidate solution.
[0151] Example 6. The method of claim 3, wherein the optimization of the group of C candidate solutions with respect to at least the amount of wear that the robot will experience is performed by an optimization engine, the optimization engine performing collaborative optimization across a set of two or more non-homogeneous parameters, comprising:
[0152] One of the candidate solutions is selected via the optimization engine based at least in part on a respective cost associated with the candidate solution, the respective cost being based at least in part on each of: i) an amount of wear and tear that the robot will sustain to complete the task sequence; ii) an energy expended to complete the task sequence; and iii) a collision value determined for the respective candidate solution.
[0153] Example 7. A method according to claim 3, wherein an optimization is performed on a group of C candidate solutions at least with respect to the amount of wear that the robot will sustain through an optimization engine, and the optimization engine performs collaborative optimization across a set of two or more non-homogeneous parameters, including: selecting one of the candidate solutions via the optimization engine based at least in part on a corresponding cost associated with the candidate solution, the corresponding cost being based at least in part on each of the following: i) the amount of wear that the robot will sustain to complete a task sequence; ii) the time to complete the task sequence; iii) the energy consumed to complete the task sequence; and iv) a collision value determined for the corresponding candidate solution.
[0154] Example 8. The method according to any one of Examples 3 to 7, wherein determining, via modeling by the optimization engine, the corresponding time to complete the task sequence and the corresponding collision value representing the rate or probability of a collision comprising:
[0155] Virtually executing each task in the task sequence via a multi-robot environment simulator;
[0156] For each time step in a plurality of time steps, sampling, via the multi-robot environment simulator, a C-space position of a portion of at least one of the robots; and
[0157] Collisions are checked using forward kinematics to identify potential collisions between one or more parts of a corresponding one of the robots and another part of the corresponding one of the robots, potential collisions between the corresponding one of the robots and another one of the robots in the environment, and potential collisions between the corresponding one of the robots and another object in the multi-robot operating environment that is not another robot.
[0158] Example 9. A method according to Example 8, wherein the ordered list of tasks is equivalent to an ordered list of trajectories in the C-space of the robot and includes multiple trajectories, one or more dwell durations at one or more postures, a home posture, and one or more other defined functional postures in the C-space of the robot, and the virtual execution includes virtually executing: multiple trajectories and one or more of the following: one or more dwell durations at one or more postures, a home posture, or one or more other defined functional postures.
[0159] Example 10. The method according to example 1 or 2, further comprising:
[0160] For each of a plurality of candidate solutions in the group of C candidate solutions, for at least one iteration:
[0161] perturbing the corresponding candidate solutions to generate perturbed candidate solutions;
[0162] modeling candidate solutions to the perturbation;
[0163] determining whether the candidate solution to the perturbation has a lower associated cost than a corresponding candidate solution; and
[0164] In response to determining that the perturbed candidate solution has a lower associated cost than a corresponding candidate solution, replacing a corresponding candidate solution in the group of C candidate solutions with the perturbed candidate solution.
[0165] Example 11. The method according to claim 10, repeating the perturbation, modeling, determination and replacement in multiple iterations until convergence occurs, an iteration number limit is reached, or an iteration time limit is reached.
[0166] Example 12. A method according to claim 10, wherein perturbing the corresponding candidate solutions to generate a perturbed candidate solution includes a perturbed candidate solution vector, the candidate solution vector including multiple real vector elements, including one real vector element for each task, the real vector element representing a corresponding one of the tasks, a priority of the corresponding one of the tasks, and a corresponding combination of one of the robots identified as performing the corresponding one of the tasks.
[0167] Example 13. The method according to example 1 or 2, further comprising:
[0168] receiving inputs including at least one model of the multi-robot operating environment, a respective model of each of at least two of the robots to be operated in the multi-robot operating environment, at least one wear model for at least one of the robots, and a set of tasks, the wear model representing a respective amount of wear to be experienced by at least one of the robots with respect to one or more of: position, velocity, acceleration, jerk, or torque of the at least one robot while performing a motion.
[0169] Example 14. The method according to claim 1 or 2, further comprising:
[0170] Receive input, the input including at least one model of the multi-robot operating environment, a respective model of each of at least two of the robots to be operated in the multi-robot operating environment, at least one wear model for at least one of the robots, and a set of tasks, the wear model representing a respective amount of wear that at least one robot will experience with respect to one or more of: position, velocity, acceleration, jerk, or torque of the at least one robot while performing motion; and including at least one of: one or more dwell durations for dwelling at one or more targets, a set of bounds or constraints on variables, or a set of time intervals specifying simulated collision time limits when at least one of the robots performs at least one task.
[0171] Example 15. The method of claim 1 or 2, wherein the group generator is a pseudo-random group generator, and wherein generating a group of C candidate solutions via a group seed generator comprises pseudo-randomly generating a group of C candidate solutions via the pseudo-random group generator.
[0172] Example 16. A method according to claim 1 or 2, wherein generating a group of C candidate solutions via a group generator includes generating a group of C candidate solutions that has a lower probability of being an invalid candidate solution than a group of C candidate solutions generated purely pseudo-randomly.
[0173] Example 17. A method according to claim 1 or 2, wherein an optimization is performed on a group of C candidate solutions at least with respect to the amount of wear that the robot will withstand by an optimization engine, and the optimization engine performs collaborative optimization across a set of two or more non-homogeneous parameters, including selecting optimized candidate solutions having the following collaborative optimization combination: corresponding optimized base positions and orientations of the corresponding bases of each of the robots, optimized task allocation, and optimized motion planning.
[0174] Example 18. The method according to any one of Examples 1 to 17 further includes: configuring the robots based at least in part on one of: a corresponding base position and orientation of each of the robots specified by the output, a corresponding task assignment of each of the robots, and a corresponding motion plan of each of the robots.
[0175] Example 19. 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:
[0176] at least one processor; and
[0177] At least one non-transitory processor-readable medium storing at least one of data and processor-executable instructions that, when executed by the at least one processor, cause the processor to perform any one of the methods of Examples 1 to 18.
[0178] Example 20. 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:
[0179] at least one processor; and
[0180] at least one non-transitory processor-readable medium storing at least one of data and processor-executable instructions that, when executed by the at least one processor, cause the processor to:
[0181] generating, via a swarm generator, a swarm of C candidate solutions, each of the candidate solutions in the swarm of C candidate solutions specifying, for each of the robots: a respective base position and orientation, a respective set of at least one defined pose, and a respective goal sequence, wherein the respective base position and orientation specify a respective position and orientation of a base of the respective robot in the multi-robot operating environment, the respective set of at least one defined pose specifies at least a respective home pose of the respective robot in the multi-robot operating environment, and the respective goal sequence comprises a respective ordered list of goals for the respective robot to move through to complete the respective task sequence;
[0182] performing an optimization of the population of C candidate solutions with respect to at least an amount of wear that the robots will experience by an optimization engine that collaboratively optimizes across a set of two or more non-homogeneous parameters two or more of: respective base positions and orientations of the robots, assignments of tasks to respective ones of the robots, and respective goal sequences of the robots; and
[0183] Provided as outputs: a respective base position and orientation for each of the robots, a respective task assignment for each of the robots, and a respective motion plan for each of the robots.
[0184] Example 21. A processor-based system according to claim 20, wherein the processor executable instructions, when executed by the at least one processor, cause the processor to provide as output: an optimized task assignment, wherein the optimized task assignment is a corresponding sequence of tasks to be performed in the form of an optimized ordered list of targets in the C-space of the corresponding robot and one or more dwell durations at one or more of the targets, and an optimized motion plan that specifies a set of collision-free paths, wherein the set of collision-free paths specifies a corresponding collision-free path between each pair of consecutive targets in the ordered list of targets.
[0185] Example 22. The processor-based system of any one of claims 20 or 21, wherein the processor-executable instructions, when executed by the at least one processor, further cause the processor to:
[0186] For each of the candidate solutions of the group of C candidate solutions, a corresponding time to complete a task sequence and a corresponding collision value representing a rate or probability of a collision occurring in completing the task sequence are determined via modeling performed by the robotic environment simulator.
[0187] Example 23. The processor-based system of claim 22, wherein to perform, by an optimization engine, an optimization of a population of C candidate solutions with respect to at least an amount of wear that a robot will experience, the optimization engine performing collaborative optimization across a set of two or more non-homogeneous parameters, the processor-executable instructions, when executed by the at least one processor, cause the processor to:
[0188] One of the candidate solutions is selected via the optimization engine based at least in part on a respective cost associated with the candidate solution, the respective cost being based at least in part on an amount of wear and tear that the robot will sustain to complete the sequence of tasks and a collision value determined for the respective candidate solution.
[0189] Example 24. The processor-based system of claim 22, wherein to perform, via an optimization engine, an optimization of a population of C candidate solutions with respect to at least an amount of wear that a robot will experience, the optimization engine performing collaborative optimization across a set of two or more non-homogeneous parameters, the processor-executable instructions, when executed by the at least one processor, cause the processor to:
[0190] One of the candidate solutions is selected via the optimization engine based at least in part on a respective cost associated with the candidate solution, the respective cost being based at least in part on each of: i) an amount of wear and tear that the robot will sustain to complete the task sequence; ii) a time to complete the task sequence; and iii) a collision value determined for the respective candidate solution.
[0191] Example 25. The processor-based system of Example 22, wherein to perform, by an optimization engine, an optimization of a population of C candidate solutions with respect to at least an amount of wear that the robot will experience, the optimization engine performing collaborative optimization across a set of two or more non-homogeneous parameters, the processor-executable instructions, when executed by the at least one processor, cause the processor to:
[0192] One of the candidate solutions is selected via the optimization engine based at least in part on a respective cost associated with the candidate solution, the respective cost being based at least in part on each of: i) an amount of wear and tear that the robot will sustain to complete the task sequence; ii) an energy expended to complete the task sequence; and iii) a collision value determined for the respective candidate solution.
[0193] Example 26. The processor-based system of Example 22, wherein to perform optimization on a population of C candidate solutions with respect to at least an amount of wear that the robot will experience by an optimization engine that performs collaborative optimization across a set of two or more non-homogeneous parameters, the processor-executable instructions, when executed by the at least one processor, cause the processor to:
[0194] One of the candidate solutions is selected via the optimization engine based at least in part on a respective cost associated with the candidate solution, the respective cost being based at least in part on each of: i) an amount of wear and tear that the robot will sustain to complete the task sequence; ii) a time to complete the task sequence; iii) an energy expended to complete the task sequence; and iv) a collision value determined for the respective candidate solution.
[0195] Example 27. The processor-based system of any one of claims 22 to 26, wherein, to determine, via modeling by the optimization engine, corresponding times to complete a sequence of tasks and corresponding collision values representing a rate or probability of a collision occurring, the processor-executable instructions, when executed by the at least one processor, cause the processor to:
[0196] Virtually executing each task in the task sequence via a multi-robot environment simulator;
[0197] For each time step in a plurality of time steps, sampling, via the multi-robot environment simulator, a C-space position of a portion of at least one of the robots; and
[0198] Collisions are checked using forward kinematics to identify potential collisions between one or more parts of a corresponding one of the robots and another part of the corresponding one of the robots, potential collisions between the corresponding one of the robots and another one of the robots in the environment, and potential collisions between the corresponding one of the robots and another object in the multi-robot operating environment that is not another robot.
[0199] Example 28. A processor-based system according to claim 27, wherein the ordered list of tasks is equivalent to an ordered list of trajectories in the C-space of the robot and includes multiple trajectories, one or more dwell durations at one or more postures, home postures, and one or more other defined functional postures in the C-space of the robot, and in order to virtually perform each task, the processor executable instructions, when executed by the at least one processor, cause the processor to virtually execute multiple trajectories and one or more of the following: one or more dwell durations at one or more postures, home postures, or one or more other defined functional postures.
[0200] Example 29. The processor-based system of claim 20 or 21, wherein the processor-executable instructions, when executed by the at least one processor, further cause the processor to:
[0201] For each of a plurality of candidate solutions in the group of C candidate solutions, for at least one iteration:
[0202] perturbing the corresponding candidate solutions to generate perturbed candidate solutions;
[0203] modeling candidate solutions to the perturbation;
[0204] determining whether the candidate solution to the perturbation has a lower associated cost than a corresponding candidate solution; and
[0205] In response to determining that the perturbed candidate solution has a lower associated cost than a corresponding candidate solution, replacing a corresponding candidate solution in the group of C candidate solutions with the perturbed candidate solution.
[0206] Example 30. A processor-based system according to claim 29, wherein the processor executable instructions, when executed by the at least one processor, further cause the processor to repeat the perturbation, modeling, determination and replacement in multiple iterations until convergence occurs, an iteration number limit is reached, or an iteration time limit is reached.
[0207] Example 31. A processor-based system according to claim 29, wherein, in order to perturb corresponding candidate solutions to produce perturbed candidate solutions, the processor executable instructions, when executed by the at least one processor, cause the processor to perturb a candidate solution vector, the candidate solution vector comprising a plurality of real vector elements, including one real vector element for each task, the real vector element representing a corresponding one of the tasks, a priority of the corresponding one of the tasks, and a corresponding combination of one of the robots identified as performing the corresponding one of the tasks.
[0208] Example 32. The processor-based system of claim 20 or 21, wherein the processor-executable instructions, when executed by the at least one processor, further cause the processor to:
[0209] receiving inputs including at least one model of the multi-robot operating environment, a respective model of each of at least two of the robots to be operated in the multi-robot operating environment, at least one wear model for at least one of the robots, and a set of tasks, the wear model representing a respective amount of wear to be experienced by at least one of the robots with respect to one or more of: position, velocity, acceleration, jerk, or torque of the at least one robot while performing a motion.
[0210] Example 33. The processor-based system of claim 20 or 21, wherein the processor-executable instructions, when executed by the at least one processor, further cause the processor to:
[0211] Receive input, the input including at least one model of the multi-robot operating environment, a respective model of each of at least two of the robots to be operated in the multi-robot operating environment, at least one wear model for at least one of the robots, and a set of tasks, the wear model representing a respective amount of wear that at least one robot will experience with respect to one or more of: position, velocity, acceleration, jerk, or torque of the at least one robot while performing motion; and including at least one of: one or more dwell durations for dwelling at one or more targets, a set of bounds or constraints on variables, or a set of time intervals specifying simulated collision time limits when at least one of the robots performs at least one task.
[0212] Example 34. A processor-based system according to claim 20 or 21, wherein the group generator is a pseudo-random group generator, and wherein generating a group of C candidate solutions via a group seed generator includes pseudo-randomly generating a group of C candidate solutions via the pseudo-random group generator.
[0213] Example 35. A processor-based system according to claim 20 or 21, wherein generating a group of C candidate solutions via a group generator includes generating a group of C candidate solutions that has a lower probability of being an invalid candidate solution than a group of C candidate solutions generated purely pseudo-randomly.
[0214] Example 36. A processor-based system according to claim 20 or 21, wherein, in order to perform optimization on a group of C candidate solutions through an optimization engine, the optimization engine performs collaborative optimization across a set of two or more non-homogeneous parameters, and the processor executable instructions, when executed by at least one processor, cause the processor to select an optimized candidate solution having the following collaborative optimization combination: a corresponding optimized base position and orientation of a corresponding base of each of the robots, optimized task allocation, and optimized motion planning.
[0215] Example 37. A processor-based system according to any one of Examples 20 to 36, wherein the processor executable instructions, when executed by at least one of the processors, cause the processor to: configure the robots based on at least one of: a corresponding base position and orientation of each of the robots specified by the output, a corresponding task assignment for each of the robots, and a corresponding motion plan for each of the robots.
[0216] The above detailed description sets forth various embodiments of the device and / or process via the use of block diagrams, schematic diagrams and examples. Insofar as these block diagrams, schematic diagrams and examples include one or more functions and / or operations, it will be understood by those skilled in the art that each function and / or operation in these block diagrams, flow charts or examples can be implemented individually and / or collectively by a variety of hardware, software, firmware or any combination thereof. In one embodiment, the subject matter can be implemented via Boolean circuits, application specific integrated circuits (ASICs) and / or FPGAs. However, it will be appreciated by those skilled in the art that the embodiments disclosed herein can be implemented in a variety of different embodiments in standard integrated circuits in whole or in part, for example, 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 almost any combination thereof, and it will be appreciated by those skilled in the art, according to the present disclosure, that designing circuits and / or writing code for software and / or firmware will be completely within the skill range of those skilled in the art.
[0217] Those skilled in the art will recognize that many of the methods or algorithms set forth herein may employ additional acts, may omit certain acts, and / or may perform acts in an order different from that specified.
[0218] Furthermore, 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.
[0219] 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 referred to in this specification and / or listed in the Application Data Sheet, including but not limited to International Patent Application No. PCT / US2017 / 036880, entitled "MOTION PLANNING FOR AUTONOMOUS VEHICLES AND RECONFIGURABLE MOTION PLANNING PROCESSORS", filed on June 9, 2017; International Patent Application No. PCT / US2017 / 036880, entitled "SPECIALIZED ROBOT MOTION PLANNING HARDWARE AND METHODS OF MAKING AND USING SAME", filed on January 5, 2016, and its publication number is WO2016 / 122840; International Patent Application No. PCT / US2017 / 036880, entitled "SPECIALIZED ROBOT MOTION PLANNING HARDWARE AND METHODS OF MAKING AND USING SAME", filed on January 12, 2018 ...5, 2016, and its publication number is WO2016 / 122840; International Patent Application No. PCT / US2017 / 036880, entitled "SPECIALIZED R U.S. Patent Application No. 62 / 616,783, filed on February 6, 2018, entitled “MOTIONPLANNING OF A ROBOT STORING A DISCRETIZED ENVIRONMENT ON ONE OR MOREPROCESSORS AND IMPROVED OPERATION OF SAME”; U.S. Patent Application No. 62 / 856,548, filed on June 3, 2019, entitled “APPARATUS, METHODS AND ARTICLES TO FACILITATE MOTIONPLANNING IN ENVIRONMENTS HAVING DYNAMIC OBSTACLES”; ... U.S. Patent Application No. 62 / 865,431, entitled “SHAREDWORKSPACE”; U.S. Patent Application No. 62 / 964,405, filed on January 22, 2020, entitled “CONFIGURATION OFROBOTS IN MULTI-ROBOT OPERATIONAL ENVIRONMENT”;and International Patent Application PCT / US2021 / 013610 (published as WO 2021 / 150439 A1), all of which are incorporated herein by reference. These and other changes can be made to the embodiments in light of the above detailed description. Generally, in the appended claims, the terms used should not be interpreted as limiting the claims to the specific embodiments disclosed in the specification and claims, but should be understood to include all possible embodiments and the full scope of equivalents to which the appended claims are entitled. Therefore, the claims are not limited by the present disclosure. ;
Claims
1. A method in a processor-based system operating to configure a plurality of robots for a multi-robot operating environment in which the plurality of robots are to operate, the method comprising: generating, via a swarm generator, a swarm of C candidate solutions, each of the candidate solutions in the swarm of C candidate solutions specifying, for each of the robots: a respective base position and orientation, a respective set of at least one defined pose, and a respective goal sequence, wherein the respective base position and orientation specify a respective position and orientation of a base of the respective robot in the multi-robot operating environment, the respective set of at least one defined pose specifies at least a respective home pose of the respective robot in the multi-robot operating environment, and the respective goal sequence comprises a respective ordered list of goals for the respective robot to move through to complete the respective task sequence; performing an optimization of the population of C candidate solutions with respect to at least an amount of wear that the robots will experience by an optimization engine that collaboratively optimizes across a set of two or more non-homogeneous parameters two or more of: respective base positions and orientations of the robots, assignments of tasks to respective ones of the robots, and respective goal sequences of the robots; and Provided as outputs: a respective base position and orientation for each of the robots, a respective task assignment for each of the robots, and a respective motion plan for each of the robots.
2. The method according to claim 1, wherein: Providing as output: a corresponding base position and orientation of each of the robots, a corresponding task assignment for each of the robots, and a corresponding motion plan for each of the robots, including: providing an optimized task assignment, wherein the optimized task assignment specifies for each robot a corresponding sequence of tasks to be performed in the form of an optimized ordered list of targets in the C-space of the corresponding robot and one or more dwell durations at one or more of the targets, and providing an optimized motion plan specifying a set of collision-free paths, wherein the set of collision-free paths specifies a corresponding collision-free path between each pair of consecutive targets in the ordered list of targets.
3. The method according to claim 1, further comprising: For each of the candidate solutions of the group of C candidate solutions, a corresponding time to complete a task sequence and a corresponding collision value representing a rate or probability of a collision occurring in completing the task sequence are determined via modeling performed by the robotic environment simulator.
4. The method according to claim 3, wherein: Optimizing the population of C candidate solutions at least with respect to an amount of wear that the robot will experience is performed by an optimization engine that performs collaborative optimization across a set of two or more non-homogeneous parameters, including: One of the candidate solutions is selected via the optimization engine based at least in part on a respective cost associated with the candidate solution, the respective cost being based at least in part on an amount of wear and tear that the robot will sustain to complete the sequence of tasks and a collision value determined for the respective candidate solution.
5. The method according to claim 3, wherein: Optimizing the population of C candidate solutions at least with respect to the amount of wear that the robot will experience is performed by an optimization engine that performs collaborative optimization across a set of two or more non-homogeneous parameters, including: One of the candidate solutions is selected via the optimization engine based at least in part on a respective cost associated with the candidate solution, the respective cost being based at least in part on each of: i) an amount of wear and tear that the robot will sustain to complete the task sequence; ii) a time to complete the task sequence; and iii) a collision value determined for the respective candidate solution.
6. The method according to claim 3, wherein: Optimizing the population of C candidate solutions at least with respect to the amount of wear that the robot will experience is performed by an optimization engine that performs collaborative optimization across a set of two or more non-homogeneous parameters, including: One of the candidate solutions is selected via the optimization engine based at least in part on a respective cost associated with the candidate solution, the respective cost being based at least in part on each of: i) an amount of wear and tear that the robot will sustain to complete the task sequence; ii) an energy expended to complete the task sequence; and iii) a collision value determined for the respective candidate solution.
7. The method according to claim 3, wherein: Optimizing the population of C candidate solutions at least with respect to the amount of wear that the robot will experience is performed by an optimization engine that performs collaborative optimization across a set of two or more non-homogeneous parameters, including: One of the candidate solutions is selected via the optimization engine based at least in part on a respective cost associated with the candidate solution, the respective cost being based at least in part on each of: i) an amount of wear and tear that the robot will sustain to complete the task sequence; ii) a time to complete the task sequence; iii) an energy expended to complete the task sequence; and iv) a collision value determined for the respective candidate solution.
8. The method according to any one of claims 3 to 7, wherein: Through modeling by the optimization engine, the corresponding time to complete the task sequence and the corresponding collision value representing the rate or probability of collision occurrence are determined, including: Virtually executing each task in the task sequence via a multi-robot environment simulator; For each time step in a plurality of time steps, sampling, via the multi-robot environment simulator, a C-space position of a portion of at least one of the robots; and Collisions are checked using forward kinematics to identify potential collisions between one or more parts of a corresponding one of the robots and another part of the corresponding one of the robots, potential collisions between the corresponding one of the robots and another one of the robots in the environment, and potential collisions between the corresponding one of the robots and another object in the multi-robot operating environment that is not another robot.
9. The method according to claim 8, wherein: The ordered list of tasks is equivalent to an ordered list of trajectories in the C-space of the robot and includes multiple trajectories, one or more dwell durations at one or more postures, a home posture, and one or more other defined functional postures in the C-space of the robot, and the virtual execution includes virtually executing: multiple trajectories and one or more of the following: one or more dwell durations at one or more postures, a home posture, or one or more other defined functional postures.
10. The method according to claim 1 or 2, further comprising: For each of a plurality of candidate solutions in the group of C candidate solutions, for at least one iteration: perturbing the corresponding candidate solutions to generate perturbed candidate solutions; modeling candidate solutions to the perturbation; determining whether the candidate solution to the perturbation has a lower associated cost than a corresponding candidate solution; as well as In response to determining that the perturbed candidate solution has a lower associated cost than a corresponding candidate solution, replacing a corresponding candidate solution in the group of C candidate solutions with the perturbed candidate solution.
11. The method according to claim 10, wherein the perturbation, modeling, determination and replacement are repeated in multiple iterations until convergence occurs, an iteration number limit is reached or an iteration time limit is reached.
12. The method according to claim 10, wherein: Perturbing corresponding candidate solutions to generate perturbed candidate solutions includes a perturbed candidate solution vector, wherein the candidate solution vector includes multiple real vector elements, including one real vector element for each task, and the real vector element represents a corresponding one of the tasks, a priority of the corresponding one of the tasks, and a corresponding combination of one of the robots identified as performing the corresponding one of the tasks.
13. The method according to claim 1 or 2, further comprising: receiving inputs including at least one model of the multi-robot operating environment, a respective model of each of at least two of the robots to be operated in the multi-robot operating environment, at least one wear model for at least one of the robots, and a set of tasks, the wear model representing a respective amount of wear to be experienced by at least one of the robots with respect to one or more of: position, velocity, acceleration, jerk, or torque of the at least one robot while performing a motion.
14. The method according to claim 1 or 2, further comprising: Receive input, the input including at least one model of the multi-robot operating environment, a respective model of each of at least two of the robots to be operated in the multi-robot operating environment, at least one wear model for at least one of the robots, and a set of tasks, the wear model representing a respective amount of wear that at least one robot will experience with respect to one or more of: position, velocity, acceleration, jerk, or torque of the at least one robot while performing motion; and including at least one of: one or more dwell durations for dwelling at one or more targets, a set of bounds or constraints on variables, or a set of time intervals specifying simulated collision time limits when at least one of the robots performs at least one task.
15. The method according to claim 1 or 2, wherein: The group generator is a pseudo-random group generator, and wherein generating the group of C candidate solutions via a group seed generator includes pseudo-randomly generating the group of C candidate solutions via the pseudo-random group generator.
16. The method according to claim 1 or 2, wherein: Generating the group of C candidate solutions via the group generator includes generating the group of C candidate solutions having a lower probability of being an invalid candidate solution than a group of C candidate solutions generated purely pseudo-randomly.
17. The method according to claim 1 or 2, wherein: An optimization is performed on a group of C candidate solutions, at least with respect to the amount of wear that the robot will experience, by an optimization engine that performs collaborative optimization across a set of two or more non-homogeneous parameters, including selecting optimized candidate solutions having the following collaborative optimization combination: a corresponding optimized base position and orientation of a corresponding base of each of the robots, an optimized task allocation, and an optimized motion planning.
18. The method according to any one of claims 1 to 7, further comprising: The robots are configured based at least in part on one of: a respective base position and orientation of each of the robots specified by the output, a respective task assignment of each of the robots, and a respective motion plan of each of the robots.
19. 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; as well as At least one non-transitory processor-readable medium storing at least one of data and processor-executable instructions which, when executed by the at least one processor, cause the processor to perform any one of the methods of claims 1 to 18.
20. 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; as well as at least one non-transitory processor-readable medium storing at least one of data and processor-executable instructions that, when executed by the at least one processor, cause the processor to: generating, via a swarm generator, a swarm of C candidate solutions, each of the candidate solutions in the swarm of C candidate solutions specifying, for each of the robots: a respective base position and orientation, a respective set of at least one defined pose, and a respective goal sequence, wherein the respective base position and orientation specify a respective position and orientation of a base of the respective robot in the multi-robot operating environment, the respective set of at least one defined pose specifies at least a respective home pose of the respective robot in the multi-robot operating environment, and the respective goal sequence comprises a respective ordered list of goals for the respective robot to move through to complete the respective task sequence; performing an optimization of the population of C candidate solutions with respect to at least an amount of wear that the robots will experience by an optimization engine that collaboratively optimizes across a set of two or more non-homogeneous parameters two or more of: respective base positions and orientations of the robots, assignments of tasks to respective ones of the robots, and respective goal sequences of the robots; and Provided as outputs: a respective base position and orientation for each of the robots, a respective task assignment for each of the robots, and a respective motion plan for each of the robots.
21. The processor-based system of claim 20, wherein: The processor executable instructions, when executed by the at least one processor, cause the processor to provide as output: an optimized task assignment, the optimized task assignment being a corresponding sequence of tasks to be performed for each robot specified as a target in the C-space of the corresponding robot and one or more dwell durations at one or more of the targets, and an optimized motion plan specifying a set of collision-free paths, the set of collision-free paths specifying a corresponding collision-free path between each pair of consecutive targets in the ordered list of targets.
22. The processor-based system of claim 20, wherein the processor-executable instructions, when executed by the at least one processor, further cause the processor to: For each of the candidate solutions of the group of C candidate solutions, a corresponding time to complete a task sequence and a corresponding collision value representing a rate or probability of a collision occurring in completing the task sequence are determined via modeling performed by the robotic environment simulator.
23. The processor-based system of claim 22, wherein: To perform, by an optimization engine, an optimization of a population of C candidate solutions with respect to at least an amount of wear that the robot will experience, the optimization engine performing collaborative optimization across a set of two or more non-homogeneous parameters, the processor-executable instructions, when executed by the at least one processor, cause the processor to: One of the candidate solutions is selected via the optimization engine based at least in part on a respective cost associated with the candidate solution, the respective cost being based at least in part on an amount of wear and tear that the robot will sustain to complete the sequence of tasks and a collision value determined for the respective candidate solution.
24. The processor-based system of claim 22, wherein: To perform, by an optimization engine, an optimization of a population of C candidate solutions with respect to at least an amount of wear that the robot will experience, the optimization engine performing collaborative optimization across a set of two or more non-homogeneous parameters, the processor-executable instructions, when executed by the at least one processor, cause the processor to: selecting, via the optimization engine, one of the candidate solutions based at least in part on respective costs associated with the candidate solutions, the respective costs being based at least in part on each of: i) an amount of wear and tear that the robot will sustain to complete the sequence of tasks; ii) the time to complete the task sequence; and iii) the collision value determined for the corresponding candidate solution.
25. The processor-based system of claim 22, wherein to perform an optimization on a population of C candidate solutions with respect to at least an amount of wear that a robot will experience via an optimization engine that performs collaborative optimization across a set of two or more non-homogeneous parameters, the processor-executable instructions, when executed by the at least one processor, cause the processor to: One of the candidate solutions is selected via the optimization engine based at least in part on a respective cost associated with the candidate solution, the respective cost being based at least in part on each of: i) an amount of wear and tear that the robot will sustain to complete the task sequence; ii) an energy expended to complete the task sequence; and iii) a collision value determined for the respective candidate solution.
26. The processor-based system of claim 22, wherein to perform an optimization on a population of C candidate solutions with respect to at least an amount of wear that a robot will experience via an optimization engine that performs collaborative optimization across a set of two or more non-homogeneous parameters, the processor-executable instructions, when executed by the at least one processor, cause the processor to: selecting, via the optimization engine, one of the candidate solutions based at least in part on respective costs associated with the candidate solutions, the respective costs being based at least in part on each of: i) an amount of wear and tear that the robot will sustain to complete the sequence of tasks; ii) the time to complete the task sequence; iii) the energy consumed to complete the task sequence; and iv) the collision value determined for the corresponding candidate solution.
27. A processor-based system according to any one of claims 22 to 26, wherein: To determine, via modeling by the optimization engine, corresponding times to complete a sequence of tasks and corresponding collision values representing a rate or probability of a collision occurring, the processor executable instructions, when executed by the at least one processor, cause the processor to: Virtually executing each task in the task sequence via a multi-robot environment simulator; for each time step in a plurality of time steps, sampling, via the multi-robot environment simulator, a C-space position of a portion of at least one of the robots; as well as Collisions are checked using forward kinematics to identify potential collisions between one or more parts of a corresponding one of the robots and another part of the corresponding one of the robots, potential collisions between the corresponding one of the robots and another one of the robots in the environment, and potential collisions between the corresponding one of the robots and another object in the multi-robot operating environment that is not another robot.
28. The processor-based system of claim 27, wherein: The ordered list of tasks is equivalent to an ordered list of trajectories in the C-space of the robot and includes multiple trajectories, one or more dwell durations at one or more postures, home postures, and one or more other defined functional postures in the C-space of the robot, and in order to virtually perform each task, the processor executable instructions, when executed by the at least one processor, cause the processor to virtually execute multiple trajectories and one or more of the following: one or more dwell durations at one or more postures, home postures, or one or more other defined functional postures.
29. A processor-based system according to claim 20 or 21, wherein: The processor-executable instructions, when executed by the at least one processor, further cause the processor to: For each of a plurality of candidate solutions in the group of C candidate solutions, for at least one iteration: perturbing the corresponding candidate solutions to generate perturbed candidate solutions; modeling candidate solutions to the perturbation; determining whether the candidate solution to the perturbation has a lower associated cost than a corresponding candidate solution; as well as In response to determining that the perturbed candidate solution has a lower associated cost than a corresponding candidate solution, replacing a corresponding candidate solution in the group of C candidate solutions with the perturbed candidate solution.
30. The processor-based system of claim 29, wherein: The processor executable instructions, when executed by the at least one processor, further cause the processor to repeat the perturbing, modeling, determining, and replacing in a plurality of iterations until convergence occurs, an iteration number limit is reached, or an iteration time limit is reached.
31. The processor-based system of claim 29, wherein: In order to perturb the corresponding candidate solutions to produce perturbed candidate solutions, the processor executable instructions, when executed by the at least one processor, cause the processor to perturb a candidate solution vector, the candidate solution vector comprising a plurality of real vector elements, including one real vector element for each task, the real vector element representing a corresponding one of the tasks, a priority of the corresponding one of the tasks, and a corresponding combination of one of the robots identified as performing the corresponding one of the tasks.
32. A processor-based system according to claim 20 or 21, wherein: The processor-executable instructions, when executed by the at least one processor, further cause the processor to: receiving inputs including at least one model of the multi-robot operating environment, a respective model of each of at least two of the robots to be operated in the multi-robot operating environment, at least one wear model for at least one of the robots, and a set of tasks, the wear model representing a respective amount of wear to be experienced by at least one of the robots with respect to one or more of: position, velocity, acceleration, jerk, or torque of the at least one robot while performing a motion.
33. A processor-based system according to claim 20 or 21, wherein: The processor-executable instructions, when executed by the at least one processor, further cause the processor to: Receive input, the input including at least one model of the multi-robot operating environment, a respective model of each of at least two of the robots to be operated in the multi-robot operating environment, at least one wear model for at least one of the robots, and a set of tasks, the wear model representing a respective amount of wear that at least one robot will experience with respect to one or more of: position, velocity, acceleration, jerk, or torque of the at least one robot while performing motion; and including at least one of: one or more dwell durations for dwelling at one or more targets, a set of bounds or constraints on variables, or a set of time intervals specifying simulated collision time limits when at least one of the robots performs at least one task.
34. A processor-based system according to claim 20 or 21, wherein: The group generator is a pseudo-random group generator, and wherein generating the group of C candidate solutions via a group seed generator includes pseudo-randomly generating the group of C candidate solutions via the pseudo-random group generator.
35. The processor-based system of claim 20 or 21, wherein: Generating the group of C candidate solutions via the group generator includes generating the group of C candidate solutions having a lower probability of being an invalid candidate solution than a group of C candidate solutions generated purely pseudo-randomly.
36. A processor-based system according to claim 20 or 21, wherein: To perform optimization on a group of C candidate solutions by an optimization engine that performs collaborative optimization across a set of two or more non-homogeneous parameters, the processor-executable instructions, when executed by the at least one processor, cause the processor to select an optimized candidate solution having the following collaborative optimization combination: a corresponding optimized base position and orientation of a corresponding base of each of the robots, an optimized task allocation, and an optimized motion plan.
37. A processor-based system according to any one of claims 20 to 26, wherein: The processor executable instructions, when executed by the at least one processor, cause the processor to: The robots are configured based on at least one of: a respective base position and orientation of each of the robots specified by the output, a respective task assignment of each of the robots, and a respective motion plan of each of the robots.
Citation Information
Patent Citations
Specialized robot motion planning hardware and methods of making and using same
WO2016122840A1
Configuration of robots in multi-robot operational environment
WO2021150439A1