WO2021150439A1 - Configuration of robots in multi-robot operational environment - Google Patents

Configuration of robots in multi-robot operational environment Download PDF

Info

Publication number
WO2021150439A1
WO2021150439A1 PCT/US2021/013610 US2021013610W WO2021150439A1 WO 2021150439 A1 WO2021150439 A1 WO 2021150439A1 US 2021013610 W US2021013610 W US 2021013610W WO 2021150439 A1 WO2021150439 A1 WO 2021150439A1
Authority
WO
WIPO (PCT)
Prior art keywords
processor
robots
robot
population
tasks
Prior art date
Application number
PCT/US2021/013610
Other languages
French (fr)
Inventor
Luca COLASANTO
Sean Murray
Original Assignee
Realtime Robotics, Inc.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Realtime Robotics, Inc. filed Critical Realtime Robotics, Inc.
Priority to JP2022544106A priority Critical patent/JP7489727B2/en
Priority to EP21744840.6A priority patent/EP4045240A4/en
Priority to CN202180010425.9A priority patent/CN115003460A/en
Publication of WO2021150439A1 publication Critical patent/WO2021150439A1/en

Links

Classifications

    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1656Programme controls characterised by programming, planning systems for manipulators
    • B25J9/1664Programme controls characterised by programming, planning systems for manipulators characterised by motion, path, trajectory planning
    • B25J9/1666Avoiding collision or forbidden zones
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1656Programme controls characterised by programming, planning systems for manipulators
    • B25J9/1669Programme controls characterised by programming, planning systems for manipulators characterised by special application, e.g. multi-arm co-operation, assembly, grasping
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1679Programme controls characterised by the tasks executed
    • B25J9/1682Dual arm manipulator; Coordination of several manipulators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/12Computing arrangements based on biological models using genetic models
    • G06N3/126Evolutionary algorithms, e.g. genetic algorithms or genetic programming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/01Dynamic search techniques; Heuristics; Dynamic trees; Branch-and-bound
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/40Robotics, robotics mapping to robotics vision
    • G05B2219/40417For cooperating manipulators
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/40Robotics, robotics mapping to robotics vision
    • G05B2219/40476Collision, planning for collision free path
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/40Robotics, robotics mapping to robotics vision
    • G05B2219/40515Integration of simulation and planning
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/40Robotics, robotics mapping to robotics vision
    • G05B2219/40629Manipulation planning, consider manipulation task, path, grasping

Definitions

  • the present disclosure generally relates to robot configuration in a multi-robot operation environment or shared workspace, and to the optimization of robot configuration in such an environment or shared workspace.
  • Various applications employ or may wish to employ two or more robots in a multi-robot operational environment that is common to, or otherwise shared by, two or more robots.
  • the multi-robot operational environment may take the form of a shared workspace.
  • two or more robots may be employed in performing tasks on or with one or more objects or work pieces in a common operational environment, for instance threading bolts to a chassis where the robots may overlap in range of motion.
  • 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 goal state, typically to complete a task without colliding with any obstacles in an operational environment or with a reduced possibility of colliding with any obstacles in the operational environment.
  • Challenges to motion planning involve the ability to perform motion planning at fast speeds, while possibly accounting for environmental change (e.g., changing location or orientation of obstacles in the environment).
  • Challenges further include performing motion planning using relatively low cost equipment, at relative low energy consumption, and with limited amounts of storage (e.g., memory circuits, for instance on processor chip circuitry).
  • One approach to operating multiple robots in a common workspace can be called a task-level approach.
  • An engineer may manually ensure that the robots are collision-free by defining portions of the workspace in which robots may collide with one another, denominated herein as interference regions, and programming the individual robots such that only one robot is in an interference region of the workspace at any given point in time. For example, when a first robot begins to move into an interference region of the workspace, the first robot sets a flag.
  • a controller e.g., programmed logic controller (PLC)
  • PLC programmed logic controller
  • This approach is intuitive, simple to understand, but typically difficult and time consuming to implement, and may not produce an optimized result.
  • This approach necessarily has low work throughput since the use of task-level de-confliction usually leads to at least one of the robots being idle for significant portions of time, even if it would technically be possible for the idle robot to be performing useful work in the shared workspace.
  • a team of engineers typically divide the problem up, and optimize the smaller sub-problems (e.g., allocating tasks to robots, sequencing the tasks allocated to each robot, motion planning for each robot) independently of one another. This may employ iteratively simulating motion to ensure that the robots/robotic appendages do not collide with one another, which may take many hours of computation time, and may not result in an optimized solution. Additionally, if a modification to the workspace results in a change in a trajectory of one of the robots/robotic appendages, the entire workflow must be re-validated. Such approaches are of course not optimal, and typically require experts to go through the slow process of iteratively trying to find a combination of solutions that, when taken together produces a good result. BRIEF SUMMARY
  • Input may include a model of a multi-robot operational environment, models of the robots, a limit on a total number of robots that can be employed, a set of tasks for the robots to achieve, and a limit on a total number of tasks that can be allocated to each robot (i.e., target capacity of robots).
  • Inputs may also optionally include one or more dwell time durations for a robot or portion thereof to dwell at a target to, for example, complete a task (e.g., thread a bolt or a nut) or to avoid a collision.
  • Inputs may also optionally include one or more of: 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.
  • the output may include a complete solution to the problem, which solution may have advantageously been optimized.
  • the solution may have been optimized across a population of candidate solutions by an optimization engine that co-optimizes across a set of two or more non- homogenous parameters.
  • the non-homogenous parameters may, for example, include two or more of: the respective base position and orientation of the robots, an allocation of the tasks to respective ones of the robots, and the respective target sequences for the robots.
  • the output can be used to control the robots in the multi-robot environment without any modification.
  • one or more motion planners can be employed during runtime to, for example, avoid collisions that might result due to small variabilities in timing (e.g., sometimes it may take a little more or a little less time to tighten a screw than other times).
  • the output may, for example, include: workcell layout, and for each robot: an ordered list or vector of targets (e.g., Robot-i: ⁇ target 7, target 2, pause, target 9 ⁇ ), optionally dwell time durations at respective targets, and paths or trajectories (e.g., collision-free paths or trajectories) between each pair of consecutive targets.
  • targets e.g., Robot-i: ⁇ target 7, target 2, pause, target 9 ⁇
  • dwell time durations at respective targets e.g., ⁇ target 7, target 2, pause, target 9 ⁇
  • paths or trajectories e.g., collision-free paths or trajectories
  • the workcell layout may provide a base position and orientation of a base for each robot, for example in Cartesian coordinates.
  • the base position and orientation of each robot base specified with a respective 6-tuple ⁇ C,U,Z, r, p, y ⁇ , where X, Y and Z respectively indicate a position along with respective axes of an orthogonal coordinate frame, and r (i.e., roll) indicates an amount of rotation about a first one of the axes, p (e.g., pitch) indicates an amount of rotation about a second one of the axes, and y (e.g., yaw) indicates an amount of rotation about a third one of the axes.
  • a global optimizer may, for example, be based on a multi-variable, mixed integer optimization algorithm, for example an algorithm known as Differential Evolution (DE).
  • DE Differential Evolution
  • the claims are not limited to a DE algorithm unless the algorithm is expressly recited in the claims.
  • the global optimizer optimizes the robot base placement (in Cartesian coordinates), robot functional poses (i.e., in C-space) and per-robot task plans (ordered list of targets and pauses for the respective robot).
  • the primary optimization goal may be latency (e.g., time to complete goal), but other goals can include efficient use of floor space, energy consumption or expenditure, number of movements to complete goal, ability to operate robots in parallel, minimizing wait time of robots, availability of a robot, status condition, and/or the availability of a robot suitable to carry out a specific type of task (for instance availability of a robot with a certain type of end-of-arm tool or end effector), etc.
  • the structures and algorithms described herein facilitate the operation of two or more robots operating in a shared workspace or workcell, optimizing such placement and operation to at least some degree, and potentially preventing or at least reducing the risk that robots or robotic appendages of robots will collide with one another while operating to perform respective tasks in the shared workspace.
  • the structures and algorithms described herein may advantageously reduce programming effort for multi- robot workspaces, by performing autonomous planning that has been optimized to at least some degree. Input may be limited to a description of the operational environment, the task(s) to be performed and geometric models of the robots.
  • the structures and algorithms described herein may advantageously dynamically allocate tasks to be performed by the robots. BRIEF DESCRIPTION OF THE DRAWINGS
  • Figure 1 is a schematic diagram of a shared workspace or multi- robot operational environment in which a plurality of robots operate to carry out tasks, and a configuration system performs an optimization to configure the robots, according to one illustrated implementation.
  • Figure 2 is a functional block diagram of the configuration system of Figure 1 that include one or more processors and one or more non-transitory processor-readable media that stores processor-executable instructions, and that also shows a plurality of robots, according to one illustrated implementation.
  • Figure 3 shows a high-level robot configuration method of operation of a processor-based system to configure a plurality of robots for a multi-robot operational environment in which a plurality of robots will operate, according to at least one illustrated implementation.
  • Figure 4 shows a high-level multi-robot environment simulation method of operation of a processor-based system to configure a plurality of robots for a multi-robot operational environment in which a plurality of robots will operate, according to at least one illustrated implementation.
  • Figure 5 shows a low-level multi-robot environment simulation method of operation of a processor-based system to configure a plurality of robots for a multi-robot operational environment in which a plurality of robots will operate, according to at least one illustrated implementation.
  • Figure 6 shows a low-level multi-robot optimization DE method of operation of a processor-based system to configure a plurality of robots for a multi-robot operational environment in which a plurality of robots will operate, according to at least one illustrated implementation.
  • Figure 7 shows a parameterized cost function which can be employed with an implementation that employs a Differential Evolution (DE) algorithm, according to at least one illustrated implementation.
  • DE Differential Evolution
  • Figure 8 is a graph further illustrating the cost function of Figure 7, according to at least one illustrated implementation.
  • Figure 9 shows a data structure that may be employed by a processor-based system in representing a candidate solution in a format that allows perturbation, for example in executing the low level multi-robot optimization DE method of Figure 6, according to at least one illustrated implementation.
  • Figure 10 shows a low-level multi-robot DE candidate solution method of operation of a processor-based system to configure a plurality of robots for a multi-robot operational environment in which a plurality of robots will operate, illustrating in detail the operation of a population generator, according to at least one illustrated implementation.
  • optimizing, optimize, and optimized mean that an improved result is being prepared, generated or produced, or has been prepared generated or produced. Such terms are used in their relative sense, and do not mean that an absolutely optimum value has been prepared, generated or produced.
  • the terms “workspace” or “shared workspace” are used to refer to a current operational environment in which two or more robots operate, one or more portions of the shared workspace are volumes in which robots can potentially collide with one another, hence may be denominated as interference regions.
  • the operational environment may include obstacles and/or work pieces (i.e., items with which the robots are to interact or act on or act with).
  • the term “task” is used to refer to a robotic task in which a robot transitions from a pose A to a pose B without colliding with obstacles in its environment.
  • the task may perhaps involve the grasping or un-grasping of an item, moving or dropping an item, rotating an item, or retrieving or placing an item.
  • the transition from pose A to pose B may optionally include transitioning between one or more intermediary poses.
  • Figure 1 shows a robotic system 100 which includes a plurality of robots 102a, 102b, 102c (collectively 102) that operate in a shared workspace 104 to carry out tasks, according to one illustrated implementation.
  • the robots 102 can take any of a large variety of forms. Typically, the robots 102 will take the form of, or have, one or more robotic appendages 103 (only one called out) and a base 105 (only one called out).
  • the robots 102 may include one or more linkages with one or more joints, and actuators (e.g., electric motors, stepper motors, solenoids, pneumatic actuators or hydraulic actuators) coupled and operable to move the linkages in response to control or drive signals.
  • actuators e.g., electric motors, stepper motors, solenoids, pneumatic actuators or hydraulic actuators
  • Pneumatic actuators may, for example, include one or more pistons, cylinders, valves, reservoirs of gas, and/or pressure sources (e.g., compressor, blower).
  • Hydraulic actuators may, for example, include one or more pistons, cylinders, valves, reservoirs of fluid (e.g., low compressibility hydraulic fluid), and/or pressure sources (e.g., compressor, blower).
  • the robotic system 100 may employ other forms of robots 102, for example autonomous vehicles.
  • the shared workspace 104 typically represents a three- dimensional space in which the robots 102 may operate and move, although in certain limited implementations the shared workspace 104 may represent a two-dimensional space.
  • the shared workspace 104 is a volume or area in which at least portions of the robots 102 may overlap in space and time or otherwise collide if motion is not controlled to avoid collision. It is noted that the workspace 104 is a physical space or volume, a position and orientation in which physical space or volume may be conveniently represented via, for example, Cartesian coordinates with respect to some reference frame, for instance a reference frame represented by the orthogonal axes X, Y and Z illustrated in Figure 1.
  • the reference frame of the workspace 104 is different than a respective “configuration space” or “C-space” of any of the robots 102 the C-space typically represented by a set of joint positions, orientations or configurations in a respective reference frame of any of the robots 102.
  • a robot 102a or portion thereof may constitute an obstacle when considered from a viewpoint of another robot 102b (i.e., when motion planning for another robot 102b).
  • the shared workspace 104 may additionally include other obstacles, for example pieces of machinery (e.g., conveyor 106), posts, pillars, walls, ceiling, floor, tables, humans, and/or animals.
  • the shared workspace 104 may additionally include one or more work items or work pieces which the robots 102 manipulate as part of performing tasks, for example one or more parcels, packaging, fasteners, tools, items or other objects.
  • the robotic system 100 includes one or more processor-based multi-robot configuration optimization systems 108 (one shown in Figure 1).
  • the multi-robot configuration optimization system(s) 108 receives a set of input 109 and generates as output 111 one or more solutions that specify a configuration of the robots 102, including a respective base position and orientation, a respective set of at least one defined pose, and a respective target sequence for each of the robots 102, which may be optimized to at least some degree.
  • the multi-robot configuration optimization system(s) 108 may include a population generator 110, a multi-robot environment simulator 112, and a multi-robot optimization engine 114.
  • the population generator 110 generates a set of candidate solutions 116 based on provided input 109.
  • the candidate solutions 116 represent possible solutions to a configuration problem, that is how to configure the robots 102 in the workspace 104 to accomplish a set of tasks. Any given candidate solution 116 may or may not actually be viable. That is, an initial candidate may be invalid (e.g., robot in impossible place, have an infeasible task plan where there is an unreachable target, or would result in collisions). In some implementations, the population generator may try to find better candidate solutions.
  • the multi-robot environment simulator 112 models the multi-robot environment based on each candidate solution, to determine certain attributes, for example an amount of time required to complete the tasks, a probability or rate of collision in completing the tasks, the feasibility or infeasibility of a particular configuration as specified by the candidate solution.
  • the multi-robot environment simulator 112 may reflect such in terms of cost, the cost generated via one or more cost functions.
  • the multi-robot optimization engine 114 evaluates candidate solutions based at least in part on associated costs 118, and advantageously co-optimizes across a set of two or more non-homogenous parameters, for example across two or more of: the respective base position and orientation of the robots, an allocation of the tasks to respective ones of the robots, the respective target sequences for the robots, and/or respective trajectories or paths (e.g., collision-free paths) between successive targets.
  • Straight-line trajectories between consecutive targets are used to ease explanation, but the trajectories do not need to be straight-line trajectories.
  • the input 109 may include one or more static environment models that represent or characterize the operational environment or workspace 104, for example representing a floor, walls, ceiling, pillars, other obstacles, etc.
  • the operational environment or workspace 104 may be represented by one or more models, for example a geometric model (e.g., point cloud) that represents a floor, walls, ceiling, obstacles and other objects in the operational environment. Such may, for example, be represent in Cartesian coordinates.
  • the input 109 may include one or more robot models that represent or characterize each of the robots 102, for example specifying geometry and kinematics, for instance sizes or lengths, number of links, number of joints, joint types ranges of motion, limits on speed, limits on acceleration or jerk.
  • the robots 102 may be represented by one or more robot geometric models that define a geometry of a given robot 102a-102c, for example in terms of joints, degrees of freedom, dimensions (e.g., length of linkages), and/or in terms of the respective C-space of the robot 102a-102c.
  • the input 109 may include one or more sets of tasks to be performed, for example represented as target goals (e.g., positions or configurations).
  • the task may, for example, be represented in terms of end poses, end configurations or end states, and/or intermediate poses, intermediate configurations or intermediate states of the respective robot 102a- 102c.
  • Poses, configurations or states may, for example, be defined in terms of joint positions and joint angles/rotations (e.g., joint poses, joint coordinates) of the respective robot 102a-102c.
  • the input 109 may optionally include one or more dwell time durations which specify an amount of time a robot or portion thereof should dwell at a given target in order to complete a task (e.g., tighten a screw or nut, picking and placing objects, with the goal of sorting a pile of objects into two or more distinct piles of objects of respective types of objects by two or more robots operating in a common workspace).
  • dwell time durations which specify an amount of time a robot or portion thereof should dwell at a given target in order to complete a task (e.g., tighten a screw or nut, picking and placing objects, with the goal of sorting a pile of objects into two or more distinct piles of objects of respective types of objects by two or more robots operating in a common workspace).
  • 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 targets that can be allocated to a given robot 102a-102c, denominated herein a task capacity, that can be configured in the workspace 104, for example limiting the complexity of the configuration problem to ensure that the configuration problem is solvable or solvable within some acceptable time period using available computational resources, or pre-eliminating certain solutions which are presumed to be too slow given an apparent over-allocation of tasks or targets to a given robot 102a- 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 time limit on iterations which may be used in refining candidate solutions, for example, to ensure that the configuration problem is solvable or solvable within some acceptable time period using available computational resources.
  • the robotic system 100 may optionally include one or more robot control systems 118 (only one shown in Figure 1) communicatively coupled to control the robots 102.
  • the robot control system(s) 118 may, for example, provide control signals (e.g., drive signals) to various actuators to cause the robots 102 to move between various configurations to various specified targets in order to perform specified tasks.
  • the robotic system 100 may optionally include one or more motion planners 120 (only one shown in Figure 1) communicatively coupled to control the robots 102.
  • the motion planner(s) 120 produce or refine motion plans for the robots 102, for instance to account for small deviations in time with respect to motion plans provided by the multi-robot optimization engine 114, or to account for the unexpected appearance of obstacles (e.g., human entering the operational environment or workspace 104), as described elsewhere herein.
  • the optional motion planners 120 are operable to dynamically produce motion plans to cause the robots 102 to carry out tasks in an operational environment.
  • the motion planners 120, as well as other structures and/or operations, may employ those described in U.S. patent application Serial No. 62/865,431 , filed June 24, 2019.
  • the motion planners 120 are optionally communicatively coupled to receive as input perception data, for example provided by a perception subsystem (not shown).
  • the perception data is representative of static and/or dynamic objects in the workspace 104 that are not known a priori.
  • the perception data may be raw data as sensed via one or more sensors (e.g ., cameras, stereo cameras, time-of-flight cameras, LIDAR) and/or as converted to digital representations of obstacles by the perception subsystem, which may generate a respective discretization of a representation of an environment in which the robots 102 will operate to execute tasks for various different scenarios.
  • the communicative paths are illustrated in Figure 1 as lines between various structures, in some cases arrows indicating the direction of input 109 and output 111.
  • the communicative paths may for example take the form of one or more wired communications paths (e.g., electrical conductors, signal buses, or optical fiber) and/or one or more wireless communications paths (e.g., via RF or microwave radios and antennas, infrared transceivers).
  • Communications channels may include, for example, one or more transmitters, receivers, transceivers, radios, routers, wired ports, for instance Ethernet ports, etc.
  • Figure 2 shows a functional block representation of the robotic system 100 of Figure 1 according to at least one illustrated implementation.
  • the robotic system 100 may include a robot configuration optimization system 108 and robots 102.
  • the optimization system 108 may be communicatively coupled to control the robots 102, either directly or indirectly via an intervening robot control system 118 ( Figure 1).
  • Each robot 102a-102c may include a set of links, joints, end-of- arm tools or end effectors, and/or actuators 201a, 201b, 201c (three, shown, collectively 201 ) operable to move the links about the joints.
  • Each robot 102a- 102c may include one or more motion controllers (e.g ., motor controllers) 202 (only one shown) that receive control signals, for instance from the robot configuration optimization system 108, and that provide drive signals to drive the actuators 201.
  • the motion controllers 202 may be dedicated to controlling specific ones of the actuators 201.
  • a robot configuration optimization system 108 will be described in detail for illustrative purposes. Those of skill in the art will recognize that the description is exemplary and variations may be made to the described and illustrated robot configuration optimization system 108.
  • the robot configuration optimization system 108 may comprise one or more processor(s) 222, and one or more associated non-transitory computer or processor-readable storage media, for example system memory 224a, disk drives 224b, and/or memory or registers (not shown) of the processors 222.
  • the non-transitory computer- or processor-readable storage media 224a, 224b are communicatively coupled to the processor(s) 222a via one or more communications channels, such as system bus 229.
  • the system bus 229 can employ any known bus structures or architectures, including a memory bus with memory controller, a peripheral bus, and/or a local bus.
  • One or more of such components may also, or instead, be in communication with each other via one or more other communications channels, for example, one or more parallel cables, serial cables, or wireless network channels capable of high speed communications, for instance, Universal Serial Bus (“USB”) 3.0, Peripheral Component Interconnect Express (PCIe) or via Thunderbolt ® .
  • USB Universal Serial Bus
  • PCIe Peripheral Component Interconnect Express
  • Thunderbolt ® Thunderbolt ®
  • the robot configuration optimization system 108 may also be communicably coupled to one or more remote computer systems 212, e.g., server computer, desktop computer, laptop computer, ultraportable computer, tablet computer, smartphone, wearable computer and/or sensors (not illustrated in Figure 2), that are directly communicably coupled or indirectly communicably coupled to the various components of the robot configuration optimization system 108, for example via a network interface (not shown).
  • remote computer systems 212 e.g., server computer, desktop computer, laptop computer, ultraportable computer, tablet computer, smartphone, wearable computer and/or sensors (not illustrated in Figure 2), that are directly communicably coupled or indirectly communicably coupled to the various components of the robot configuration optimization system 108, for example via a network interface (not shown).
  • Remote computing systems may be used to program, configure, control or otherwise interface with or provide input data (e.g., environment models, robot models, tasks, target goals, limits on total number of robots, limit on tasks per robot, bounds or constraints on variables or other parameters, limits on iterations) to the robot configuration optimization system 108 and various components within the robot system 100.
  • input data e.g., environment models, robot models, tasks, target goals, limits on total number of robots, limit on tasks per robot, bounds or constraints on variables or other parameters, limits on iterations
  • Such a connection may be through one or more communications channels, for example, one or more wide area networks (WANs), for instance, Ethernet, or the Internet, using Internet protocols.
  • WANs wide area networks
  • pre-runtime calculations may be performed by a system that is separate from the robots 102, while runtime calculations may be performed by one or more optional intervening motion planners 120 ( Figure 1), which in some implementation may be on-board the robots 102a-102c.
  • the robot configuration optimization system 108 may include one or more processor(s) 222, (i.e., circuitry), non-transitory storage media 224a, 224b, and system bus 229 that couples various system components.
  • the processors 222 may be any logic processing unit, such as one or more central processing units (CPUs), digital signal processors (DSPs), graphics processing units (GPUs), field programmable gate arrays (FPGAs), application-specific integrated circuits (ASICs), programmable logic controllers (PLCs), etc.
  • CPUs central processing units
  • DSPs digital signal processors
  • GPUs graphics processing units
  • FPGAs field programmable gate arrays
  • ASICs application-specific integrated circuits
  • PLCs programmable logic controllers
  • Non-limiting examples of commercially available computer systems include, but are not limited to, the Celeron, Core, Core 2, Itanium, and Xeon families of microprocessors offered by Intel ® Corporation, U.S.A.; the K8, K10, Bulldozer, and Bobcat series microprocessors offered by Advanced Micro Devices, U.S.A.; the A5, A6, and A7 series microprocessors offered by Apple Computer, U.S.A.; the Snapdragon series microprocessors offered by Qualcomm, Inc., U.S.A.; and the SPARC series microprocessors offered by Oracle Corp., U.S.A.
  • the construction and operation of the various structure shown in Figure 2 may implement or employ structures, techniques and algorithms described in or similar to those described in International Patent Application No.
  • the system memory 224a may include read-only memory (“ROM”) 226, random access memory (“RAM”) 228, FLASH memory 230, EEPROM (not shown).
  • ROM read-only memory
  • RAM random access memory
  • EEPROM EEPROM
  • a basic input/output system (“BIOS”) 232 which can form part of the ROM 226, contains basic routines that help transfer information between elements within the robotic system 100, such as during start-up.
  • the drive 224b may be, for example, a hard disk drive for reading from and writing to a magnetic disk, a solid state (e.g., flash memory) drive for reading from and writing to solid state memory, and/or an optical disk drive for reading from and writing to removable optical disks.
  • the robot configuration optimization system 108 may also include any combination of such drives in various different embodiments.
  • the drive 224b may communicate with the processor(s) 222 via the system bus 229.
  • the drive(s) 224b may include interfaces or controllers (not shown) coupled between such drives and the system bus 229, as is known by those skilled in the relevant art.
  • the drive 224b and its associated computer-readable media provide nonvolatile storage of computer- or processor readable and/or executable instructions, data structures, program modules and other data for the robotic system 100.
  • Those skilled in the relevant art will appreciate that other types of computer-readable media that can store data accessible by a computer may be employed, such as WORM drives, RAID drives, magnetic cassettes, digital video disks (“DVD”), Bernoulli cartridges, RAMs, ROMs, smart cards, etc.
  • Executable instructions and data can be stored in the system memory 224a, for example an operating system 236, one or more application programs 238, other programs or modules 240 and program data 242.
  • Application programs 238 may include processor-executable instructions that cause the processor(s) 222 to perform one or more of: generating populations of candidate solutions, modeling candidate solutions, producing or determining costs associated with respective candidate solutions based at least in part on the modeling, performing an optimization on the population of C candidate solutions by an optimization engine that co-optimizes across a set of two or more non-homogenous parameters for two or more of: the respective base position and orientation of the robots, an allocation of the tasks to respective ones of the robots, and the respective target sequences for the robots; and/or providing output that can be used to position and orient robots in a multi-robot operational environment and cause the robots to perform tasks.
  • Such operation can be executed as described herein (e.g., with reference to Figures 3 and 10) and in the references incorporated herein by reference.
  • the processor-executable instructions cause the processor(s) 222, in at least some implementations, to construct motion plans (e.g., collision detection or assessment, update costs of edges in motion planning graphs based on collision detection or assessment, and perform path search or evaluation).
  • Application programs 238 may additionally include one or more machine- readable and machine-executable instructions that cause the processor(s) 222 to perform other operations, for instance optionally handling perception data (captured via sensors).
  • Application programs 238 may additionally include one or more machine-executable instructions that cause the processor(s) 222 to perform various other methods described herein and in the references incorporated herein by reference.
  • the 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, for example drive(s) 224b.
  • operations may be performed entirely in hardware circuitry or as software stored in a memory storage, such as system memory 224a, and executed by one or more hardware processors 222a, such as one or more microprocessors, digital signal processors (DSPs), field programmable gate arrays (FPGAs), application specific integrated circuits (ASICs), graphics processing units (GPUs) processors, programmed logic controllers (PLCs), electrically programmable read only memories (EEPROMs), or as a combination of hardware circuitry and software stored in the memory storage.
  • DSPs digital signal processors
  • FPGAs field programmable gate arrays
  • ASICs application specific integrated circuits
  • GPUs graphics processing units
  • PLCs programmed logic controllers
  • EEPROMs electrically programmable read only memories
  • the robot configuration optimization system 108 may optional include one or more input/output components, for example a monitor or touchscreen display 244, a keypad or keyboard 246, and/or pointing device such as a computer mouse 248.
  • input/output components for example a monitor or touchscreen display 244, a keypad or keyboard 246, and/or pointing device such as a computer mouse 248.
  • implementations can be practiced with other system structures and arrangements and/or other computing system structures and arrangements, including those of robots, hand-held devices, multiprocessor systems, microprocessor-based or programmable consumer electronics, personal computers (“PCs”), networked PCs, mini computers, mainframe computers, and the like.
  • PCs personal computers
  • the implementations or embodiments or portions thereof can be practiced in distributed computing environments where tasks or modules are performed by remote processing devices, which are linked through a communications network.
  • program modules may be located in both local and remote memory storage devices or media. However, where and how certain types of information are stored is important to help improve robot configuration.
  • Figure 3 shows a high-level robot configuration method 300 of operation of a processor-based system to configure a plurality of robots for a multi-robot operational environment in which a plurality of robots will operate, according to at least one illustrated implementation.
  • the processor-based system may comprise at least one processor and at least one non-transitory processor-readable medium that stores at least one of data and processor- executable instructions. When executed by the at least one processor, the processor-executable instructions cause the at least one processor to execute the various operations or acts of the robot configuration method 300.
  • a number of robots may be configured to perform a set of tasks.
  • the tasks may be specified as a task plan.
  • the task plan may specify a number T tasks that need to be performed by a number R robots.
  • a task plan can be modeled as a vector per robot, where the vector is an ordered list of the tasks the respective robot is to perform, e.g., ⁇ task 7, task 2, task 9 ⁇ .
  • a task vector can also optionally include dwell time durations that specify a time duration that the robot or portion thereof should dwell at a given configuration or target.
  • the task vector may also specify a home pose and/or other “functional poses” that are not directly related to solving tasks (e.g., a “get out of the way” or storage pose). Poses may be specified in the C-space of the robot.
  • the robot configuration method 300 may start at 302, for example in response to a startup or powering of the system or component thereof, receipt of information or data, or a call or invocation by a calling routine or program.
  • the robot configuration method 300 may be performed at a configuration time or pre-runtime, which can occur before runtime. This advantageously permits some of the most computationally intensive work to be performed before runtime, when responsiveness is not a particular concern.
  • At 304 at least one component of the processor-based system receives input that characterizes a multi-robot environment, a set of tasks to be performed and provides various constraints or boundaries for the problem.
  • the processor-based system may receive one or models of the multi-robot operational environment.
  • the model(s) may represent the physical environment in which the plurality of robots will operate, for example representing a floor, walls, and various objects in the environment.
  • the processor-based system may receive a respective model of each of the plurality of robots that will operate in the multi robot operational environment.
  • the robot models may represent the physical attributes of the robot, for example physical dimensions, range of motion, number of joints, number of links, length of links, type of end effector, speed limits, acceleration limits, etc.
  • the processor-based system may receive a set of tasks or targets.
  • the targets may represent various positions to which each robot or portion thereof must move in sequence or at certain times in order to complete a set of tasks.
  • the targets may, for example, be represented in the configuration space (C-space) of the respective robots.
  • the processor-based system may optionally receive one or more dwell time durations to dwell at one or more targets while at least one of the robots performs at least one task.
  • the dwell time durations may advantageously reflect an expected amount of time that an end effector of a robot needs to remain at a given target in order to complete a respective task (e.g., thread a fastener into a threaded opening, insert a piece into a receptacle).
  • the processor-based system may optionally receive a set of bounds or constraints on variables. Various bounds and constraints may be applicable to optimization in the multi-robot environment, For example, the processor-based system may optionally receive a set of time intervals that specifies a time limit on modeling movements or simulating collisions. For example, the processor-based system may optionally receive a limit on a total number of robots allowed to operate in the multi-robot operational environment. For example, the processor-based system may optionally receive a maximum number of tasks or targets allowed per robot which again may prevent a problem from being submitted that is too complicated to solve given the available computational resources or time.
  • a population generator generates a population of C candidate solutions.
  • the population can include one or more candidate solutions.
  • Each of the candidate solutions in the population of C candidate solutions specifies, for each of the robots: a respective base position and orientation, a respective set of at least one defined pose, and a respective target sequence.
  • the respective base position and orientation specify a respective position and orientation for a base of the respective robot in the multi-robot operational 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 operational environment, and/or other functional poses (e.g., a get out of the way or storage pose).
  • the respective target sequence comprises a respective ordered list of targets for the respective robot to move through to complete a respective sequence of tasks.
  • the population generator may be implemented as one or more processors executing processor-executable instructions.
  • the population generator may take the form of a pseudo-random population generator which may pseudo-randomly generate the population of C candidate solutions based on one or more input parameters.
  • a pseudo-random population generator generates candidate solutions which may or may not be actually viable solutions.
  • the population generator alternatively generates the population of C candidate solutions each having a lower probability of being an invalid candidate solution than a purely pseudo-randomly generated population of C candidate solutions. Such may produce populations of candidate solutions that lead to faster optimization without loss of configuration space cover.
  • the population generator may take into account the operational environment to avoid candidate solutions that would locate a base of a robot at a position that is impossible (e.g., occupied by a wall or other object), would result in an infeasible task plan with one or more targets that are unreachable by the robot, or would result in collisions.
  • a pseudo-random population generator a number of techniques may be employed to improve the candidate solutions, for example techniques described below with reference to Figure 6.
  • an optimization engine performs an optimization on the population of C candidate solutions.
  • the optimization engine co optimizes across a set of two or more non-homogenous parameters for two or more of: the respective base position and orientation of the robots, an allocation of the tasks to respective ones of the robots, and the respective target sequences for the robots.
  • the optimization engine may, for example, select an optimized candidate solution with a co-optimized combination of: a respective optimized base position and orientation for the respective base of each of the robots, an optimized task allocation, and an optimized motion plan.
  • the optimization engine may be implemented as one or more processors executing processor-executable instructions.
  • the optimization engine may interact with a multi-robot environment simulator in preforming the optimization, for example providing candidate solutions to be simulated and receiving costs generated or determined by a multi-robot environment simulator which characterize the efficiency (e.g., time to completion) and the probability or rate of collision of the respective candidate solution.
  • the optimization engine may select one of the candidate solutions based at least in part on a respective cost associated with the candidate solution, the respective cost based at least in part on the time to complete the sequences of tasks and the collision value determined for the respective candidate solution.
  • the optimization engine provides output from the optimization.
  • the optimization engine may provide as output one or more of: the respective base position and orientation for each of the robots, a respective task allocation for each of the robots, a respective motion plan for each of the robots, and/or a set of collision-free paths for each of the robots with or without dwell durations at respective targets in the C-space of the robot.
  • the output may include an optimized task allocation that specifies, for each robot, a respective sequence of tasks to be performed in the form of an optimized ordered list of targets in C-space of the respective robot and one or more dwell time durations at one or more of the targets.
  • the output may additionally or alternatively include an optimized motion plan that specifies a set of collision-free paths, the set of collision-free paths specifying a respective collision-free path between each pair of consecutive targets in the ordered list of targets.
  • the output is sufficient to drive the robots to perform a set of tasks.
  • a motion planner may be employed to refine the motion plan.
  • the high level robot configuration method 300 may terminate at 312, for example until invoked again. While the high level robot configuration method 300 is described in terms of an ordered flow, the various acts or operations will in many implementations be performed concurrently or in parallel.
  • Figure 4 shows a high level multi-robot environment simulation method 400 of operation of a processor-based system to configure a plurality of robots for a multi-robot operational environment in which a plurality of robots will operate, according to at least one illustrated implementation.
  • the processor-based system may comprise at least one processor and at least one non-transitory processor-readable medium that stores at least one of data and processor-executable instructions. When executed by the at least one processor, the processor-executable instructions cause the at least one processor to execute the various operations or acts of the multi-robot environment simulation method 400.
  • the multi-robot environment simulation method 400 may be executed by a multi-robot environment simulator, which may be implemented by a distinct processor or processors, which is or are dedicated to the simulation of movements in a multi-robot environment.
  • the multi-robot environment simulator may be implemented by one or more processors which perform other operations, for example which perform optimization.
  • the multi-robot environment simulation method 400 may start at 402, for example in response to a startup or powering of the system, receipt of information or data, or a call or invocation by a calling routine or program (e.g., invocation by high level robot configuration method 300).
  • a multi-robot environment simulator receives a candidate solution, for example from an optimization engine or a population generator.
  • a multi-robot environment simulator models the robots in the multi-robot environment based on a particular candidate solution.
  • the candidate solution may, for example, be submitted or provided to the multi robot environment simulator by the optimization engine.
  • Conventional modeling packages can be employed, for example modeling packages that employ forward kinematics to model the movements of the robots based on the candidate solution.
  • the multi-robot environment simulator determines a respective time to complete the sequence of tasks via modeling performed by the multi-robot environment simulator.
  • the determination may include determining the overall time to complete the sequence of tasks by all of the robots, which may have to wait for one another. Such may, for example, include determining the respective times to complete the respective tasks for each of the robots.
  • the multi-robot environment simulator determines a collision value that represents a rate or a probability of a collision occurring in completing the sequence of tasks via modeling performed by the multi-robot environment simulator.
  • the determination may include determining the overall collision value for a completion of the sequence of tasks by all of the robots. Such may, for example, include determining the respective collision value for each of the robots.
  • the multi-robot environment simulator provides the determined time to complete the sequence of tasks and the determined collision value to, for example, the optimization engine. In some implementations, the multi-robot environment simulator provides the determined time and collision values as distinct values, for processing by the optimization engine to form a value that can be co-optimized across two or more non-homogenous parameters, as described elsewhere herein.
  • the multi-robot environment simulation method 400 may terminate at 414, for example until invoked again. While the multi-robot environment simulation method 400 is described in terms of an ordered flow, the various acts or operations will in many implementations be performed concurrently or in parallel.
  • Figure 5 shows a low-level multi-robot environment simulation method 500 of operation of a processor-based system to configure a plurality of robots for a multi-robot operational environment in which a plurality of robots will operate, according to at least one illustrated implementation.
  • the processor-based system may comprise at least one processor and at least one non-transitory processor-readable medium that stores at least one of data and processor-executable instructions. When executed by the at least one processor, the processor-executable instructions cause the at least one processor to execute the various operations or acts of the multi-robot environment simulation method 500.
  • the multi-robot environment simulation method 500 may be executed by a multi-robot environment simulator, which may be implemented by a distinct processor or processors, which is or are dedicated to the simulation of movements in a multi-robot environment.
  • the multi-robot environment simulator may be implemented by one or more processors which perform other operations, for example which perform optimization.
  • the multi-robot environment simulation method 500 may start at 502, for example in response to a startup or powering of the system, receipt of information or data, or a call or invocation by a calling routine or program (e.g., invocation by high level robot configuration method 300).
  • a multi-robot environment simulator virtually performs each task in each robot’s sequence of tasks as specified by a candidate solution that is a subject of evaluation or consideration.
  • the sequences of tasks may be specified as respective ordered lists of tasks.
  • the ordered lists of tasks are each equivalent to an ordered list of trajectories in the C-space of the robot.
  • the ordered lists of tasks may include a plurality of trajectories between successive poses or configurations (e.g., joint configurations), one or more dwell time durations at one or more poses, a home pose, and one or more other defined functional poses in the C-space of the robot, for example a stowed or “get out of the way” pose.
  • the processor-executable instructions when executed by the at least one processor, cause the processor to virtually simulate the plurality of trajectories and one or more of: one or more dwell time durations at one or more poses, the home pose, or the one or more other defined functional poses.
  • the multi-robot environment simulator samples a C-space position of a portion of at least one of the robots.
  • the multi-robot environment simulator uses forward kinematics to identify potential collisions between one or more portions of a respective one of the robots and another portion of the respective one of the robots, between the respective one of the robots and another one of the robots in the environment, and between the respective one of the robots and another object in the multi-robot operational environment that is not another robot.
  • the multi-robot environment simulation method 500 may terminate at 508, for example until invoked again. While the low-level multi robot environment simulation method 500 is described in terms of an ordered flow, the various acts or operations will in many implementations be performed concurrently or in parallel.
  • the described systems and methods may employ various approaches to refine or improve the candidate solutions. For example, some approaches may start with a base solution, and improve on the base solution. Also for example some approaches may employ a genetic algorithm or approach, for example a Differential Evolution (DE) algorithm or similar techniques. A version of a DE algorithm is described with reference to Figure 6 below.
  • DE Differential Evolution
  • Figure 6 shows a low-level multi-robot optimization DE method 600 of operation of a processor-based system to configure a plurality of robots for a multi-robot operational environment in which a plurality of robots will operate, according to at least one illustrated implementation.
  • the processor- based system may comprise at least one processor and at least one non- transitory processor-readable medium that stores at least one of data and processor-executable instructions.
  • the processor-executable instructions cause the at least one processor to execute the various operations or acts of the multi-robot optimization method 600.
  • the multi-robot optimization method 600 may be executed by an optimization engine, which may be implemented by a distinct processor or processors, which is or are dedicated to the optimization engine of the multi-robot environment.
  • the multi-robot environment simulator may be implemented by one or more processors, which perform other operations.
  • the multi-robot environment simulation method 600 may start at 602, for example in response to a startup or powering of the system, receipt of information or data, or a call or invocation by a calling routine or program (e.g., invocation by high level robot configuration method 300).
  • the population generator generates a population of candidate solutions.
  • an outer loop counter I is initialized, for example to zero.
  • the outer loop counter I is incremented, for example as I plus one.
  • the candidate solution may be represented as a candidate solution vector.
  • the candidate solution vector may, for example, include a plurality of real number vector elements, for instance one real number vector element for each task.
  • the real number vector elements may represent a respective combination of a respective one of the tasks, a priority for the respective one of the tasks, and one of the robots identified to perform the respective one of the tasks.
  • the optimizer engine perturbs a candidate solution I or causes the candidate solution I to be perturbed, to produce a perturbed candidate solution G.
  • the optimizer engine may modify the real number vector elements (i.e., real number values) of the candidate solution vector.
  • a multi-robot environment simulator models the perturbed candidate solution I’, for example determining a time to complete the sequence of tasks for the perturbed candidate solution I’ and a collision value that represents a rate or a probability of a collision occurring in completing the sequence of tasks for the perturbed candidate solution I’.
  • the optimization engine or the multi-robot environment simulator determines a cost value for the perturbed candidate solution I’.
  • the determine cost value may be a function of the determined time to complete the sequence of tasks for the perturbed candidate solution I’ and the determined collision value for the perturbed candidate solution I’.
  • the cost function is a piece-wise logarithmic function, but can be parameterized, for example as represented by the parameterization 700 in Figure 7 and the graph 800 in Figure 8.
  • the parameter “task_reachability” is equal to (number of reachable target goals)/(total number of target goals). Hence, if all targets are reachable, then the value of the parameter “task_reachability” is equal to 1.
  • the optimization engine or the multi-robot environment simulator determines whether the perturbed candidate solution I’ has a lower associated cost than the candidate solution I.
  • the optimization engine replaces the respective candidate solution I in the population of C candidate solutions with the perturbed candidate solution G.
  • the optimization engine leaves the population of C candidate solutions unmodified, passing control directly to 622.
  • the optimization engine determines whether an inner loop iteration exit condition has occurred. For example, the optimization engine determines when a convergence has occurred, whether a limit on the number of iterations has been reached, and/or whether a limit on iteration time has been reached. Convergence may be deemed to have occurred where, for example, a standard deviation in cost across the current population of candidate solutions is less than an epsilon value.
  • the various acts of the multi-robot environment simulation method 600 may repeat for multiple iterations, refining the population of candidate solutions until the exit condition (e.g., convergence) is satisfied.
  • the exit condition e.g., convergence
  • the low-level multi-robot optimization DE method 600 is described in terms of an ordered flow, the various acts or operations will in many implementations be performed concurrently or in parallel.
  • Figure 9 shows a data structure 900 that may be employed by a processor-based system in representing a candidate solution in a format that allows perturbation, for example in executing the low level multi-robot optimization DE method 600 ( Figure 6), according to at least one illustrated implementation.
  • a candidate solution I may be advantageously represented with a vector of numbers, so that the system may perform one or more functions on the numbers to “perturb” the numbers and hence the candidate solution to generate a perturbed candidate solution G.
  • a candidate solution may be represented initially as a two- dimensional (2D) matrix, which will be flattened into a one-dimensional (1D) vector.
  • the rows correspond to tasks.
  • T tasks there are thus T rows.
  • columns correspond to robots and priorities. If there are P priority levels and R robots, there are thus P*R columns.
  • the example illustrated in Figure 9 has 3 robots, 3 priority levels, and 4 tasks. In use, a particular problem may have a different number of robots, different number of priority levels, and a different number of tasks than that illustrated in Figure 9. The illustrated example is simplified for ease of understanding.
  • Each task is allocated to a single robot, which is illustrated in Figure 9 by each row having exactly one entry that is marked (i.e., marked with an asterisk *), denoting which robot performs that task at which priority.
  • a given robot can perform up to a maximum number of tasks that is specified in the input as a per-robot capacity of tasks. Notably, a given robot but can only perfrom one task per priority level. That is, there is only one asterisk (*) per column.
  • the system can flatten the 2D matrix into a 1 D vector of length T, with one vector element per task.
  • the vector elements correspond to the “entry number” of the 2D matrix, starting at 1. So for the example illustrated in Figure 9, taskl has a value of 2, task2 has a value of 13 (the first row has 9 entries, then the allocation for task2 (see asterisk *) is in the 4 th entry of row 2), task3 has a value of 21 , and task4 has a value of 36.
  • the vector elements are all integers.
  • the resulting normalized real-valued vector is ⁇ 2/36, 13/36, 21/36, 36/36>, where the individual vector elements sum to 1.
  • the system may first take a number (e.g., three) other randomly chosen candidates (e.g., A, B, and C), and represent those randomly chosen candidates (e.g., A, B, and C) with respectuve normalized 1D vectors, normalized in the same fashion as described immediately above.
  • the system can now compute a perturbed real valued vector V’.
  • the system may compute the perturbed vector V’ as being equal to A + mut*(C-B).
  • the system may then compute the perturbed candidate Vp, for example by randomly mixing the vector elements of the vector V and the perturbed vector V’. That is, for each element of the perturbed candidate Vp, say Vp[i], the system randomly chooses either V[i] or V’[i] The choice can be weighted by a parameter that, for example, can skew the choice so that the choice is not 50/50.
  • the system may multiple the perturbed candidate Vp by P*R*T to scale back up to the 1 D vector that represents the perturbed candidate. To get from the 1 D real-valuved vector back to the 2D matrix, the system first rounds the real values to integers. From there, the system can use those integer values to mark up a blank 2D matrix.
  • Figure 10 shows a low-level multi-robot DE candidate solution method 1000 of operation of a processor-based system to configure a plurality of robots for a multi-robot operational environment in which a plurality of robots will operate illustrating in detail the operation of a population generator, according to at least one illustrated implementation.
  • the processor-based system may comprise at least one processor and at least one non-transitory processor-readable medium that stores at least one of data and processor- executable instructions. When executed by the at least one processor, the processor-executable instructions cause the at least one processor to execute the various operations or acts of the multi-robot DE candidate solution method 1000.
  • the multi-robot DE candidate solution method 1000 may be executed by an optimization engine, which may be implemented by a distinct processor or processors, which is or are dedicated to the optimization engine of a multi-robot environment.
  • the multi-robot environment simulator may be implemented by one or more processors, which perform other operations.
  • a global optimizer may be based on a multi-variable, mixed integer, optimization algorithm, for example an algorithm known as Differential Evolution (DE).
  • DE Differential Evolution
  • the global optimizer optimizes the robot base placement (e.g., in Cartesian coordinates), robot functional poses (e.g., in C-space) and per-robot task plans (ordered list or vector of targets and dwell duration time).
  • the primary optimization goal may be overall latency, but other goals can include optimized use of available floor space, minimum energy usage, etc.
  • the optimizer system may comprise three components: namely an optimization engine, a multi-robot environment simulator, and a candidate solution generator (e.g., a seed generator).
  • a candidate solution generator e.g., a seed generator
  • the candidate solution generator generates a population of C candidate solutions, where any given candidate may or may not be viable.
  • the optimization engine tries to find better candidate solutions, for example, by perturbing one of the population of candidate solutions, say candidate P, and seeing if the resulting perturbed candidate P’ has a lower cost. If so, the perturbed candidate P’ replaces the candidate P in the population. The total number of candidates C does not change.
  • 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. Every epoch of time (e.g., 0.1s or some chosen input value) the multi-robot environment simulator samples the position in C-space of each robot, and employs forward kinematics to check whether the virtual representation of the robot is in collision with itself, with another robot, or with some obstacle or object in the operational environment. The multi-robot environment simulator determines how long the candidate solution would take to be completely executed.
  • the multi-robot environment simulator determines a collision probability or rate (e.g., the fraction of epochs during which there is at least one collision of the robot with itself, with another robot or with an obstacle or object in the operational environment).
  • a collision probability or rate e.g., the fraction of epochs during which there is at least one collision of the robot with itself, with another robot or with an obstacle or object in the operational environment.
  • the cost of a candidate is a function of at least these two numbers (e.g., runtime and collision rate). In DE, this cost function is a piecewise-logarithmic value that can be parameterized.
  • the overall workflow involves a cycle in which the optimizer generates candidates and the simulator evaluates their cost. The process repeats until some convergence criterion, such as the standard deviation in cost being less than some epsilon value.
  • a candidate solution generator 1002 generates candidate solutions by executing various operations or acts.
  • the candidate solution generator 1002 receives various variable bounds, fixed parameters, tasks or target goals and population sizes.
  • the candidate solution generator 1002 generates base positions and orientations for the base of each robot.
  • the candidate solution generator 1002 virtually locates or positions the robot bases in the virtual multi robot operational environment, providing such to a multi-robot simulator 1009, which models the candidate solutions, providing feedback to the candidate solution generator 1002.
  • the candidate solution generator 1002 generates uniformly random home poses and/or other functional poses for each robot.
  • the candidate solution generator 1002 finds a set of robots capable of completing the task or reaching the target goal at 1012a, randomly selects one of those robots at 1012b, determines whether the set is empty (indicating an infeasible task plan) at 1012c, returning to 1006 if the set is empty, and otherwise allocating the task or target goal to the selected robot at 1012d.
  • the candidate solution generator 1002 determines whether the total number of tasks or target goals allocated to the robot exceeds a limit or task or target capacity specified for the robot at 1014a, returning to 1006 if over-allocated (indicating an infeasible task plan), and otherwise generating a random sequence of the allocated tasks or target goals at 1014b.
  • the candidate solution generator 1002 generates or defines the candidate solution, which may be a vector or other representation that represents base placement and orientation for each robot, home and/or other functional poses for each robot, and a target sequence for each robot.
  • the candidate solution generator 1002 determines whether there are sufficient candidate solutions in the population of candidate solutions. If the number of candidate solutions in the population of candidate solutions is less than a specified number, control may return to 1006 to generate an additional candidate solution. Otherwise, control may pass to 1022, where the candidate solution generator 1002 returns the population of candidate solutions to a multi-robot optimization engine 1024 for further optimization.
  • the population of candidate solutions may be refined by, for example, perturbing the candidate solutions.
  • low-level multi-robot DE candidate solution method 1000 is described in terms of an ordered flow, the various acts or operations will in many implementations be performed concurrently or in parallel.
  • the structures and algorithms described herein may, in at least some implementations, operate without cameras or other perception sensors.
  • coordination between the robots relies on the geometric models of the robots, the ability of the robots to communicate their respective motion plans, and geometric models of a shared workspace.
  • visual or other perception may optionally be employed, for example to avoid humans or other dynamic obstacles that might enter or occupy portions of the shared workspace.
  • Virtual collision assessment or checking can be performed “in software” using processors that execute processor-executable instructions from a stored set of processor-executable instructions, to perform an algorithm.
  • Virtual collision assessment or checking can be performed “in hardware” using a set of dedicated hardware circuits (e.g., collision checking circuits implemented in a field programmable gate array (FPGA), application specific integrated circuit (ASIC)).
  • FPGA field programmable gate array
  • ASIC application specific integrated circuit
  • Such circuits may, for example, represent volumes swept by a robot/robotic appendage or portion thereof (i.e., swept volumes) during a respective motion or transition between two states.
  • the circuits may, for example, produce a Boolean evaluation indicative of whether a motion will collide with any obstacles, where at least some of the obstacles represent volumes swept in executing a motion or transition by the other robots operating in the shared workspace.
  • Example 1 A method of operation in a processor-based system to configure a plurality of robots for a multi-robot operational environment in which a plurality of robots will operate, the method comprising: generating a population of C candidate solutions via a population generator, each of the candidate solutions in the population 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 task or target sequence, where the respective base position and orientation specify a respective position and orientation for a base of the respective robot in the multi-robot operational 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 operational environment, and the respective task or target sequence comprises a respective ordered list of targets for the respective robot to move through to complete a respective sequence of tasks; performing an optimization on the population of C candidate solutions by an optimization engine that co-optimizes across a set of two or more non-homogenous parameters for two or more of: the respective base position and orientation of the
  • Example 2 The method of example 1 wherein providing as output: the respective base position and orientation for each of the robots, a respective task allocation for each of the robots, and a respective motion plan for each of the robots includes providing an optimized task allocation that specifies, for each robot, a respective sequence of tasks to be performed in the form of an optimized ordered list of targets in C-space of the respective robot and one or more dwell time durations at one or more of the targets, and providing an optimized motion plan that specifies a set of collision-free paths, the set of collision-free paths specifying a respective collision-free path between each pair of consecutive targets in the ordered list of targets.
  • Example 3 The method of any of examples 1 or 2, further comprising: for each of the candidate solutions of the population C of candidate solutions, determining a respective time to complete the sequences of tasks and a respective collision value that represents a rate or a probability of a collision occurring in completing the sequences of tasks via modeling performed by a robot environment simulator.
  • Example 4 The method of example 3 wherein performing an optimization on the population of C candidate solutions by an optimization engine that co-optimizes across a set of two or more non-homogenous parameters includes: selecting one of the candidate solutions via the optimization engine based at least in part on a respective cost associated with the candidate solution, the respective cost based at least in part on the time to complete the sequences of tasks and the collision value determined for the respective candidate solution.
  • Example 5 The method of example 3 wherein determining a respective time to complete the sequences of tasks and a respective collision value that represents a rate or a probability of a collision occurring via modeling by an optimization engine includes: virtually performing each task of the sequences of tasks via the multi-robot environment simulator; for each epoch of a plurality of epochs, sampling a C-space position of a portion of at least one of the robots via the multi-robot environment simulator; and checking for collisions using forward kinematics to identify potential collisions between one or more portions of a respective one of the robots and another portion of the respective one of the robots, between the respective one of the robots and another one of the robots in the environment, and between the respective one of the robots and another object in the multi robot operational environment that is not another robot.
  • Example 6 The method of example 5 wherein the ordered list of tasks is equivalent to an ordered list of trajectories in the C-space of the robot and includes a plurality of trajectories, one or more dwell time durations at one or more poses, a home pose, and one or more other defined functional poses in the C-space of the robot, and virtually performing includes virtually executing: the plurality of trajectories and one or more of: one or more dwell time durations at one or more poses, the home pose, or the one or more other defined functional poses.
  • Example 7 The method of examples 1 or 2, further comprising: for each of a number of candidate solutions in the population of C candidate solutions, for at least one iteration: perturbing the respective candidate solution to produce a perturbed candidate solution; modeling the perturbed candidate solution; determining whether the perturbed candidate solution has a lower associated cost than the respective candidate solution; and in response to a determination that the perturbed candidate solution has a lower associated cost than the respective candidate solution, replacing the respective candidate solution in the population of C candidate solutions with the perturbed candidate solution.
  • Example 8 The method of example 7 repeating the perturbing, the modeling, the determining and the replacing for multiple iterations until an occurrence of a convergence, a limit on the number of iterations or a limit on iteration time is reached.
  • Example 9 The method of example 7 wherein perturbing the respective candidate solution to produce a perturbed candidate solution includes perturbing a candidate solution vector, the candidate solution vector including a plurality of real number vector elements, one real number vector element for each task, the real number vector elements representing a respective combination of a respective one of the tasks, a priority for the respective one of the tasks and one of the robots identified to perform the respective one of the tasks.
  • Example 10 The method of examples 1 or 2, further comprising: receiving input that includes at least one model of the multi-robot operational environment, a respective model of each of at least two of the robots that will operate in the multi-robot operational environment, and a set of tasks or targets.
  • Example 11 The method of examples 1 or 2, further comprising: receiving input that includes at least one model of the multi-robot operational environment, a respective model of each of at least two of the robots that will operate in the multi-robot operational environment, a set of tasks or targets, and at least one of: one or more dwell time durations to dwell at one or more targets while at least one of the robots performs at least one task, a set of bounds or constraints on variables, or a set of time intervals that specifies a time limit on simulating collisions.
  • Example 12 The method of example 11 wherein receiving input includes receiving input that further includes at least one of: a limit on a total number of robots allowed to operate in the multi-robot operational environment and a maximum number of tasks or targets allowed per robot.
  • Example 13 The method of examples 1 or 2 wherein the population generator is a pseudo-random population generator and wherein generating a population of C candidate solutions via a population seed generator includes pseudo-randomly generating the population of C candidate solutions via the pseudo-random population generator.
  • Example 14 The method of examples 1 or 2 wherein generating a population of C candidate solutions via a population generator includes generating the population of C candidate solutions with a lower probability of being an invalid candidate solution than a purely pseudo-randomly generated population of C candidate solutions.
  • Example 15 The method of examples 1 or 2 wherein performing an optimization on the population of C candidate solutions by an optimization engine that co-optimizes across a set of two or more non-homogenous parameters includes selecting an optimized candidate solution with a co optimized combination of: a respective optimized base position and orientation for the respective base of each of the robots, an optimized task allocation, and an optimized motion plan.
  • Example 16 A processor-based system to configure a plurality of robots for a multi-robot operational environment in which a plurality of robots will operate, the processor-based system comprising: at least one processor; and at least one non-transitory processor-readable medium that stores at least one of data and processor-executable instructions, the processor- executable instructions which, when executed by the at least one processor, cause the processor to execute any of the methods of examples 1 through 15.
  • Example 17 A processor-based system to configure a plurality of robots for a multi-robot operational environment in which a plurality of robots will operate, the processor-based system comprising: at least one processor; and at least one non-transitory processor-readable medium that stores at least one of data and processor-executable instructions, the processor- executable instructions which, when executed by the at least one processor, cause the processor to: generate a population of C candidate solutions via a population generator, each of the candidate solutions in the population 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 task or target sequence, where the respective base position and orientation specify a respective position and orientation for a base of the respective robot in the multi-robot operational 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 operational environment, and the respective task or target sequence comprises a respective ordered list of targets for the respective robot to move through to complete a respective sequence of
  • Example 18 The processor-based system of example 17 wherein the processor-executable instructions, when executed by the at least one processor, cause the processor to provide as output an optimized task allocation that specifies, for each robot, a respective sequence of tasks to be performed in the form of an optimized ordered list of targets in C-space of the respective robot and one or more dwell time durations at one or more of the targets, and an optimized motion plan that specifies a set of collision-free paths, the set of collision-free paths specifying a respective collision-free path between each pair of consecutive targets in the ordered list of targets.
  • Example 19 the processor-executable instructions, when executed by the at least one processor, cause the processor to provide as output an optimized task allocation that specifies, for each robot, a respective sequence of tasks to be performed in the form of an optimized ordered list of targets in C-space of the respective robot and one or more dwell time durations at one or more of the targets, and an optimized motion plan that specifies a set of collision-free paths, the set of collision-free paths specifying a respective collision-free path between
  • processor-based system of any of examples 17 or 18 wherein the processor-executable instructions, when executed by the at least one processor, cause the processor further to: for each of the candidate solutions of the population C of candidate solutions, determine a respective time to complete the sequences of tasks and a respective collision value that represents a rate or a probability of a collision occurring in completing the sequences of tasks via modeling performed by a robot environment simulator.
  • Example 20 The processor-based system of example 19 wherein to perform an optimization on the population of C candidate solutions by an optimization engine that co-optimizes across a set of two or more non- homogenous parameters, the processor-executable instructions, when executed by the at least one processor, cause the processor to: select one of the candidate solutions via the optimization engine based at least in part on a respective cost associated with the candidate solution, the respective cost based at least in part on the time to complete the sequences of tasks and the collision value determined for the respective candidate solution.
  • Example 21 The processor-based system of example 19 wherein to determine a respective time to complete the sequences of tasks and a respective collision value that represents a rate or a probability of a collision occurring via modeling by an optimization engine, the processor-executable instructions, when executed by the at least one processor, cause the processor to: virtually perform each task of the sequences of tasks via the multi robot environment simulator; for each epoch of a plurality of epochs, sample a C-space position of a portion of at least one of the robots via the multi-robot environment simulator; and check for collisions using forward kinematics to identify potential collisions between one or more portions of a respective one of the robots and another portion of the respective one of the robots, between the respective one of the robots and another one of the robots in the environment, and between the respective one of the robots and another object in the multi-robot operational environment that is not another robot.
  • Example 22 The processor-based system of example 21 wherein the ordered list of tasks is equivalent to an ordered list of trajectories in the C- space of the robot and includes a plurality of trajectories, one or more dwell time durations at one or more poses, a home pose, and one or more other defined functional poses in the C-space of the robot, and to virtually perform each task, the processor-executable instructions, when executed by the at least one processor, cause the processor to virtually execute the plurality of trajectories and one or more of: one or more dwell time durations at one or more poses, the home pose, or the one or more other defined functional poses.
  • Example 23 The processor-based system of examples 17 or 18 wherein the processor-executable instructions, when executed by the at least one processor, cause the processor further to: for each of a number of candidate solutions in the population of C candidate solutions, for at least one iteration: perturb the respective candidate solution to produce a perturbed candidate solution; model the perturbed candidate solution; determine whether the perturbed candidate solution has a lower associated cost than the respective candidate solution; and in response to a determination that the perturbed candidate solution has a lower associated cost than the respective candidate solution, replace the respective candidate solution in the population of C candidate solutions with the perturbed candidate solution.
  • Example 24 The processor-based system of example 23 wherein the processor-executable instructions, when executed by the at least one processor, cause the processor further to repeat the perturbation, the modeling, the determination and the replacement for multiple iterations until an occurrence of a convergence, a limit on the number of iterations or a limit on iteration time is reached.
  • Example 25 The processor-based system of example 23 wherein to perturb the respective candidate solution to produce a perturbed candidate solution 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 including a plurality of real number vector elements, one real number vector element for each task, the real number vector elements representing a respective combination of a respective one of the tasks, a priority for the respective one of the tasks and one of the robots identified to perform the respective one of the tasks.
  • Example 26 The processor-based system of examples 17 or 18 wherein the processor-executable instructions, when executed by the at least one processor, cause the processor further to: receive input that includes at least one model of the multi-robot operational environment, a respective model of each of at least two of the robots that will operate in the multi-robot operational environment, and a set of tasks or targets.
  • Example 27 The processor-based system of examples 17 or 18 wherein the processor-executable instructions, when executed by the at least one processor, cause the processor further to: receive input that includes at least one model of the multi-robot operational environment, a respective model of each of at least two of the robots that will operate in the multi-robot operational environment, a set of tasks or targets, and at least one of: one or more dwell time durations to dwell at one or more targets while at least one of the robots performs at least one task, a set of bounds or constraints on variables, or a set of time intervals that specifies a time limit on simulating collisions.
  • Example 28 The processor-based system of example 27 wherein the processor-executable instructions, when executed by the at least one processor, cause the processor further to receive as input at least one of: a limit on a total number of robots allowed to operate in the multi-robot operational environment and a maximum number of tasks or targets allowed per robot.
  • Example 29 The processor-based system of examples 17 or 18 wherein the population generator is a pseudo-random population generator and wherein generation of a population of C candidate solutions via a population seed generator includes pseudo-randomly generation of the population of C candidate solutions via the pseudo-random population generator.
  • the population generator is a pseudo-random population generator and wherein generation of a population of C candidate solutions via a population seed generator includes pseudo-randomly generation of the population of C candidate solutions via the pseudo-random population generator.
  • Example 30 The processor-based system of examples 17 or 18 wherein generation of a population of C candidate solutions via a population generator includes generation of the population of C candidate solutions with a lower probability of being an invalid candidate solution than a purely pseudo- randomly generated population of C candidate solutions.
  • Example 31 The processor-based system of examples 17 or 18 wherein to perform an optimization on the population of C candidate solutions by an optimization engine that co-optimizes across a set of two or more non- homogenous parameters the processor-executable instructions, when executed by the at least one processor, cause the processor to select an optimized candidate solution with a co-optimized combination of: a respective optimized base position and orientation for the respective base of each of the robots, an optimized task allocation, and an optimized motion plan.

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Biophysics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Theoretical Computer Science (AREA)
  • Robotics (AREA)
  • Mechanical Engineering (AREA)
  • Evolutionary Biology (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Computing Systems (AREA)
  • Artificial Intelligence (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Evolutionary Computation (AREA)
  • General Physics & Mathematics (AREA)
  • Physiology (AREA)
  • Genetics & Genomics (AREA)
  • Biomedical Technology (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Manipulator (AREA)

Abstract

Solutions for multi-robot configurations are co-optimized, to at least some degree, across a set of non-homogenous parameters based on a given set of tasks to be performed by robots in a multi-robot operational environment. Non-homogenous parameters may include two or more of: the respective base position and orientation of the robots, an allocation of tasks to respective robots, respective target sequences and/or trajectories for the robots. Such may be executed pre-runtime. Output may include for each robot: workcell layout, an ordered list or vector of targets, optionally dwell time durations at respective targets, and paths or trajectories between each pair of consecutive targets. Output may provide a complete, executable, solution to the problem, which in the absence of variability in timing, can be used to control the robots without any modification. A genetic algorithm, e.g., Differential Evolution, may optionally be used in generating a population of candidate solutions.

Description

CONFIGURATION OF ROBOTS IN MULTI-ROBOT OPERATIONAL
ENVIRONMENT
Technical Field
The present disclosure generally relates to robot configuration in a multi-robot operation environment or shared workspace, and to the optimization of robot configuration in such an environment or shared workspace.
BACKGROUND
Description of the Related Art
Various applications employ or may wish to employ two or more robots in a multi-robot operational environment that is common to, or otherwise shared by, two or more robots. The multi-robot operational environment may take the form of a shared workspace. For example, two or more robots may be employed in performing tasks on or with one or more objects or work pieces in a common operational environment, for instance threading bolts to a chassis where the robots may overlap in range of motion.
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 goal state, typically to complete a task without colliding with any obstacles in an operational environment or with a reduced possibility of colliding with any obstacles in the operational environment. Challenges to motion planning involve the ability to perform motion planning at fast speeds, while possibly accounting for environmental change (e.g., changing location or orientation of obstacles in the environment). Challenges further include performing motion planning using relatively low cost equipment, at relative low energy consumption, and with limited amounts of storage (e.g., memory circuits, for instance on processor chip circuitry).
The operation of two or more robots in a multi-robot operation environment or shared workspace (workspaces are commonly referred to as workcells), present a particular class of problems. For example, motion plans should account for and avoid situations where the robots or robotic appendages of the robots may interfere with one another during the performance of tasks.
One approach to operating multiple robots in a common workspace can be called a task-level approach. An engineer may manually ensure that the robots are collision-free by defining portions of the workspace in which robots may collide with one another, denominated herein as interference regions, and programming the individual robots such that only one robot is in an interference region of the workspace at any given point in time. For example, when a first robot begins to move into an interference region of the workspace, the first robot sets a flag. A controller (e.g., programmed logic controller (PLC)) reads the flag and prevents other robots from moving into the interference region of the workspace until the first robot de-asserts the flag on exiting the interference region. This approach is intuitive, simple to understand, but typically difficult and time consuming to implement, and may not produce an optimized result. This approach necessarily has low work throughput since the use of task-level de-confliction usually leads to at least one of the robots being idle for significant portions of time, even if it would technically be possible for the idle robot to be performing useful work in the shared workspace.
In conventional approaches, a team of engineers typically divide the problem up, and optimize the smaller sub-problems (e.g., allocating tasks to robots, sequencing the tasks allocated to each robot, motion planning for each robot) independently of one another. This may employ iteratively simulating motion to ensure that the robots/robotic appendages do not collide with one another, which may take many hours of computation time, and may not result in an optimized solution. Additionally, if a modification to the workspace results in a change in a trajectory of one of the robots/robotic appendages, the entire workflow must be re-validated. Such approaches are of course not optimal, and typically require experts to go through the slow process of iteratively trying to find a combination of solutions that, when taken together produces a good result. BRIEF SUMMARY
Various methods and apparatus are described herein that produce solutions for multi-robot configurations that are co-optimized across a set of non-homogenous parameters, for example co-optimized combinations of workcell layout and task plan, based on a given set of tasks to be performed by robots in a multi-robot operational environment. Such may be executed in an off-line or pre-runtime environment, providing a global optimizer for these types of problems. The inventors are not aware of any existing global optimizer solutions for such problems.
Input may include a model of a multi-robot operational environment, models of the robots, a limit on a total number of robots that can be employed, a set of tasks for the robots to achieve, and a limit on a total number of tasks that can be allocated to each robot (i.e., target capacity of robots). Inputs may also optionally include one or more dwell time durations for a robot or portion thereof to dwell at a target to, for example, complete a task (e.g., thread a bolt or a nut) or to avoid a collision. Inputs may also optionally include one or more of: 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.
The output may include a complete solution to the problem, which solution may have advantageously been optimized. In particular, the solution may have been optimized across a population of candidate solutions by an optimization engine that co-optimizes across a set of two or more non- homogenous parameters. The non-homogenous parameters may, for example, include two or more of: the respective base position and orientation of the robots, an allocation of the tasks to respective ones of the robots, and the respective target sequences for the robots. In the absence of any variability in timing, the output can be used to control the robots in the multi-robot environment without any modification. Alternatively, one or more motion planners can be employed during runtime to, for example, avoid collisions that might result due to small variabilities in timing (e.g., sometimes it may take a little more or a little less time to tighten a screw than other times).
The output may, for example, include: workcell layout, and for each robot: an ordered list or vector of targets (e.g., Robot-i: {target 7, target 2, pause, target 9}), optionally dwell time durations at respective targets, and paths or trajectories (e.g., collision-free paths or trajectories) between each pair of consecutive targets.
The workcell layout may provide a base position and orientation of a base for each robot, for example in Cartesian coordinates. The base position and orientation of each robot base specified with a respective 6-tuple {C,U,Z, r, p, y}, where X, Y and Z respectively indicate a position along with respective axes of an orthogonal coordinate frame, and r (i.e., roll) indicates an amount of rotation about a first one of the axes, p (e.g., pitch) indicates an amount of rotation about a second one of the axes, and y (e.g., yaw) indicates an amount of rotation about a third one of the axes.
A global optimizer may, for example, be based on a multi-variable, mixed integer optimization algorithm, for example an algorithm known as Differential Evolution (DE). The claims are not limited to a DE algorithm unless the algorithm is expressly recited in the claims.
The global optimizer optimizes the robot base placement (in Cartesian coordinates), robot functional poses (i.e., in C-space) and per-robot task plans (ordered list of targets and pauses for the respective robot). The primary optimization goal may be latency (e.g., time to complete goal), but other goals can include efficient use of floor space, energy consumption or expenditure, number of movements to complete goal, ability to operate robots in parallel, minimizing wait time of robots, availability of a robot, status condition, and/or the availability of a robot suitable to carry out a specific type of task (for instance availability of a robot 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, optimizing such placement and operation to at least some degree, and potentially preventing or at least reducing the risk that robots or robotic appendages of robots will collide with one another while operating to perform respective tasks in the shared workspace. The structures and algorithms described herein may advantageously reduce programming effort for multi- robot workspaces, by performing autonomous planning that has been optimized to at least some degree. Input may be limited to a description of the operational environment, the task(s) to be performed and geometric models of the robots. The structures and algorithms described herein may advantageously dynamically allocate tasks to be performed by the robots. BRIEF DESCRIPTION OF THE DRAWINGS
In the drawings, identical reference numbers identify similar elements or acts. The sizes and relative positions of elements in the drawings are not necessarily drawn to scale. For example, the shapes of various elements and angles are not drawn to scale, and some of these elements are arbitrarily enlarged and positioned to improve drawing legibility. Further, the particular shapes of the elements as drawn are not intended to convey any information regarding the actual shape of the particular elements, and have been solely selected for ease of recognition in the drawings.
Figure 1 is a schematic diagram of a shared workspace or multi- robot operational environment in which a plurality of robots operate to carry out tasks, and a configuration system performs an optimization to configure the robots, according to one illustrated implementation.
Figure 2 is a functional block diagram of the configuration system of Figure 1 that include one or more processors and one or more non-transitory processor-readable media that stores processor-executable instructions, and that also shows a plurality of robots, according to one illustrated implementation.
Figure 3 shows a high-level robot configuration method of operation of a processor-based system to configure a plurality of robots for a multi-robot operational environment in which a plurality of robots will operate, according to at least one illustrated implementation.
Figure 4 shows a high-level multi-robot environment simulation method of operation of a processor-based system to configure a plurality of robots for a multi-robot operational environment in which a plurality of robots will operate, according to at least one illustrated implementation.
Figure 5 shows a low-level multi-robot environment simulation method of operation of a processor-based system to configure a plurality of robots for a multi-robot operational environment in which a plurality of robots will operate, according to at least one illustrated implementation.
Figure 6 shows a low-level multi-robot optimization DE method of operation of a processor-based system to configure a plurality of robots for a multi-robot operational environment in which a plurality of robots will operate, according to at least one illustrated implementation. Figure 7 shows a parameterized cost function which can be employed with an implementation that employs a Differential Evolution (DE) algorithm, according to at least one illustrated implementation.
Figure 8 is a graph further illustrating the cost function of Figure 7, according to at least one illustrated implementation. Figure 9 shows a data structure that may be employed by a processor-based system in representing a candidate solution in a format that allows perturbation, for example in executing the low level multi-robot optimization DE method of Figure 6, according to at least one illustrated implementation. Figure 10 shows a low-level multi-robot DE candidate solution method of operation of a processor-based system to configure a plurality of robots for a multi-robot operational environment in which a plurality of robots will operate, illustrating in detail the operation of a population generator, according to at least one illustrated implementation. DETAILED DESCRIPTION
In the following description, certain specific details are set forth in order to provide a thorough understanding of various disclosed embodiments. However, one skilled in the relevant art will recognize that embodiments may be practiced without one or more of these specific details, or with other methods, components, materials, etc. In other instances, well-known structures associated with computer systems, actuator systems, and/or communications networks have not been shown or described in detail to avoid unnecessarily obscuring descriptions of the embodiments. In other instances, well-known computer vision methods and techniques for generating perception data and volumetric representations of one or more objects and the like have not been described in detail to avoid unnecessarily obscuring descriptions of the embodiments.
Unless the context requires otherwise, throughout the specification and claims, which follow, the word “comprise” and variations thereof, such as, “comprises” and “comprising” are to be construed in an open, inclusive sense that is as “including, but not limited to.”
Reference throughout this specification to “one implementation” or “an implementation” or to “one embodiment” or “an embodiment” means that a particular feature, structure or characteristic described in connection with the embodiment is included in at least one implementation or in at least one implementation embodiment. Thus, the appearances of the phrases “one implementation” or “an implementation” or “in one embodiment” or “in an embodiment” in various places throughout this specification are not necessarily all referring to the same implementation or embodiment. Furthermore, the particular features, structures, or characteristics may be combined in any suitable manner in one or more implementations or embodiments.
As used in this specification and the appended claims, the singular forms “a,” “an,” and “the” include plural referents unless the content clearly dictates otherwise. It should also be noted that the term “or” is generally employed in its sense including “and/or” unless the content clearly dictates otherwise.
As used in this specification and the appended claims, the terms optimizing, optimize, and optimized mean that an improved result is being prepared, generated or produced, or has been prepared generated or produced. Such terms are used in their relative sense, and do not mean that an absolutely optimum value has been prepared, generated or produced.
As used in this specification and the appended claims, the terms “workspace” or “shared workspace” are used to refer to a current operational environment in which two or more robots operate, one or more portions of the shared workspace are volumes in which robots can potentially collide with one another, hence may be denominated as interference regions. The operational environment may include obstacles and/or work pieces (i.e., items with which the robots are to interact or act on or act with).
As used in this specification and the appended claims, the term “task” is used to refer to a robotic task in which a robot transitions from a pose A to a pose B without colliding with obstacles in its environment. The task may perhaps involve the grasping or un-grasping of an item, moving or dropping an item, rotating an item, or retrieving or placing an item. The transition from pose A to pose B may optionally include transitioning between one or more intermediary poses.
The headings and Abstract of the Disclosure provided herein are for convenience only and do not interpret the scope or meaning of the embodiments.
Figure 1 shows a robotic system 100 which includes a plurality of robots 102a, 102b, 102c (collectively 102) that operate in a shared workspace 104 to carry out tasks, according to one illustrated implementation.
The robots 102 can take any of a large variety of forms. Typically, the robots 102 will take the form of, or have, one or more robotic appendages 103 (only one called out) and a base 105 (only one called out). The robots 102 may include one or more linkages with one or more joints, and actuators (e.g., electric motors, stepper motors, solenoids, pneumatic actuators or hydraulic actuators) coupled and operable to move the linkages in response to control or drive signals. Pneumatic actuators may, for example, include one or more pistons, cylinders, valves, reservoirs of gas, and/or pressure sources (e.g., compressor, blower). Hydraulic actuators may, for example, include one or more pistons, cylinders, valves, reservoirs of fluid (e.g., low compressibility hydraulic fluid), and/or pressure sources (e.g., compressor, blower). The robotic system 100 may employ other forms of robots 102, for example autonomous vehicles.
The shared workspace 104 typically represents a three- dimensional space in which the robots 102 may operate and move, although in certain limited implementations the shared workspace 104 may represent a two-dimensional space. The shared workspace 104 is a volume or area in which at least portions of the robots 102 may overlap in space and time or otherwise collide if motion is not controlled to avoid collision. It is noted that the workspace 104 is a physical space or volume, a position and orientation in which physical space or volume may be conveniently represented via, for example, Cartesian coordinates with respect to some reference frame, for instance a reference frame represented by the orthogonal axes X, Y and Z illustrated in Figure 1. It is also noted that the reference frame of the workspace 104 is different than a respective “configuration space” or “C-space” of any of the robots 102 the C-space typically represented by a set of joint positions, orientations or configurations in a respective reference frame of any of the robots 102.
As explained herein, a robot 102a or portion thereof may constitute an obstacle when considered from a viewpoint of another robot 102b (i.e., when motion planning for another robot 102b). The shared workspace 104 may additionally include other obstacles, for example pieces of machinery (e.g., conveyor 106), posts, pillars, walls, ceiling, floor, tables, humans, and/or animals. The shared workspace 104 may additionally include one or more work items or work pieces which the robots 102 manipulate as part of performing tasks, for example one or more parcels, packaging, fasteners, tools, items or other objects.
The robotic system 100 includes one or more processor-based multi-robot configuration optimization systems 108 (one shown in Figure 1).
The multi-robot configuration optimization system(s) 108 receives a set of input 109 and generates as output 111 one or more solutions that specify a configuration of the robots 102, including a respective base position and orientation, a respective set of at least one defined pose, and a respective target sequence for each of the robots 102, which may be optimized to at least some degree.
The multi-robot configuration optimization system(s) 108 may include a population generator 110, a multi-robot environment simulator 112, and a multi-robot optimization engine 114.
The population generator 110 generates a set of candidate solutions 116 based on provided input 109. The candidate solutions 116 represent possible solutions to a configuration problem, that is how to configure the robots 102 in the workspace 104 to accomplish a set of tasks. Any given candidate solution 116 may or may not actually be viable. That is, an initial candidate may be invalid (e.g., robot in impossible place, have an infeasible task plan where there is an unreachable target, or would result in collisions). In some implementations, the population generator may try to find better candidate solutions.
The multi-robot environment simulator 112 models the multi-robot environment based on each candidate solution, to determine certain attributes, for example an amount of time required to complete the tasks, a probability or rate of collision in completing the tasks, the feasibility or infeasibility of a particular configuration as specified by the candidate solution. The multi-robot environment simulator 112 may reflect such in terms of cost, the cost generated via one or more cost functions.
The multi-robot optimization engine 114 evaluates candidate solutions based at least in part on associated costs 118, and advantageously co-optimizes across a set of two or more non-homogenous parameters, for example across two or more of: the respective base position and orientation of the robots, an allocation of the tasks to respective ones of the robots, the respective target sequences for the robots, and/or respective trajectories or paths (e.g., collision-free paths) between successive targets. Straight-line trajectories between consecutive targets are used to ease explanation, but the trajectories do not need to be straight-line trajectories.
The input 109 may include one or more static environment models that represent or characterize the operational environment or workspace 104, for example representing a floor, walls, ceiling, pillars, other obstacles, etc. The operational environment or workspace 104 may be represented by one or more models, for example a geometric model (e.g., point cloud) that represents a floor, walls, ceiling, obstacles and other objects in the operational environment. Such may, for example, be represent in Cartesian coordinates.
The input 109 may include one or more robot models that represent or characterize each of the robots 102, for example specifying geometry and kinematics, for instance sizes or lengths, number of links, number of joints, joint types ranges of motion, limits on speed, limits on acceleration or jerk. The robots 102 may be represented by one or more robot geometric models that define a geometry of a given robot 102a-102c, for example in terms of joints, degrees of freedom, dimensions (e.g., length of linkages), and/or in terms of the respective C-space of the robot 102a-102c.
The input 109 may include one or more sets of tasks to be performed, for example represented as target goals (e.g., positions or configurations). The task may, for example, be represented in terms of end poses, end configurations or end states, and/or intermediate poses, intermediate configurations or intermediate states of the respective robot 102a- 102c. Poses, configurations or states may, for example, be defined in terms of joint positions and joint angles/rotations (e.g., joint poses, joint coordinates) of the respective robot 102a-102c. The input 109 may optionally include one or more dwell time durations which specify an amount of time a robot or portion thereof should dwell at a given target in order to complete a task (e.g., tighten a screw or nut, picking and placing objects, with the goal of sorting a pile of objects into two or more distinct piles of objects of respective types of objects by two or more robots operating in a common workspace).
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 targets that can be allocated to a given robot 102a-102c, denominated herein a task capacity, that can be configured in the workspace 104, for example limiting the complexity of the configuration problem to ensure that the configuration problem is solvable or solvable within some acceptable time period using available computational resources, or pre-eliminating certain solutions which are presumed to be too slow given an apparent over-allocation of tasks or targets to a given robot 102a- 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 time limit on iterations which may be used in refining candidate solutions, for example, to ensure that the configuration problem is solvable or solvable within some acceptable time period using available computational resources.
The robotic system 100 may optionally include one or more robot control systems 118 (only one shown in Figure 1) communicatively coupled to control the robots 102. The robot control system(s) 118 may, for example, provide control signals (e.g., drive signals) to various actuators to cause the robots 102 to move between various configurations to various specified targets in order to perform specified tasks.
The robotic system 100 may optionally include one or more motion planners 120 (only one shown in Figure 1) communicatively coupled to control the robots 102. The motion planner(s) 120 produce or refine motion plans for the robots 102, for instance to account for small deviations in time with respect to motion plans provided by the multi-robot optimization engine 114, or to account for the unexpected appearance of obstacles (e.g., human entering the operational environment or workspace 104), as described elsewhere herein. The optional motion planners 120 are operable to dynamically produce motion plans to cause the robots 102 to carry out tasks in an operational environment. The motion planners 120, as well as other structures and/or operations, may employ those described in U.S. patent application Serial No. 62/865,431 , filed June 24, 2019.
Where included, the motion planners 120 are optionally communicatively coupled to receive as input perception data, for example provided by a perception subsystem (not shown). The perception data is representative of static and/or dynamic objects in the workspace 104 that are not known a priori. The perception data may be raw data as sensed via one or more sensors ( e.g ., cameras, stereo cameras, time-of-flight cameras, LIDAR) and/or as converted to digital representations of obstacles by the perception subsystem, which may generate a respective discretization of a representation of an environment in which the robots 102 will operate to execute tasks for various different scenarios.
Various communicative paths are illustrated in Figure 1 as lines between various structures, in some cases arrows indicating the direction of input 109 and output 111. The communicative paths may for example take the form of one or more wired communications paths (e.g., electrical conductors, signal buses, or optical fiber) and/or one or more wireless communications paths (e.g., via RF or microwave radios and antennas, infrared transceivers). Communications channels may include, for example, one or more transmitters, receivers, transceivers, radios, routers, wired ports, for instance Ethernet ports, etc.
Figure 2 shows a functional block representation of the robotic system 100 of Figure 1 according to at least one illustrated implementation.
The robotic system 100 may include a robot configuration optimization system 108 and robots 102. The optimization system 108 may be communicatively coupled to control the robots 102, either directly or indirectly via an intervening robot control system 118 (Figure 1). Each robot 102a-102c may include a set of links, joints, end-of- arm tools or end effectors, and/or actuators 201a, 201b, 201c (three, shown, collectively 201 ) operable to move the links about the joints. Each robot 102a- 102c may include one or more motion controllers ( e.g ., motor controllers) 202 (only one shown) that receive control signals, for instance from the robot configuration optimization system 108, and that provide drive signals to drive the actuators 201. The motion controllers 202 may be dedicated to controlling specific ones of the actuators 201.
A robot configuration optimization system 108 will be described in detail for illustrative purposes. Those of skill in the art will recognize that the description is exemplary and variations may be made to the described and illustrated robot configuration optimization system 108.
The robot configuration optimization system 108 may comprise one or more processor(s) 222, and one or more associated non-transitory computer or processor-readable storage media, for example system memory 224a, disk drives 224b, and/or memory or registers (not shown) of the processors 222. The non-transitory computer- or processor-readable storage media 224a, 224b are communicatively coupled to the processor(s) 222a via one or more communications channels, such as system bus 229. The system bus 229 can employ any known bus structures or architectures, including a memory bus with memory controller, a peripheral bus, and/or a local bus. One or more of such components may also, or instead, be in communication with each other via one or more other communications channels, for example, one or more parallel cables, serial cables, or wireless network channels capable of high speed communications, for instance, Universal Serial Bus (“USB”) 3.0, Peripheral Component Interconnect Express (PCIe) or via Thunderbolt®.
The robot configuration optimization system 108 may also be communicably coupled to one or more remote computer systems 212, e.g., server computer, desktop computer, laptop computer, ultraportable computer, tablet computer, smartphone, wearable computer and/or sensors (not illustrated in Figure 2), that are directly communicably coupled or indirectly communicably coupled to the various components of the robot configuration optimization system 108, for example via a network interface (not shown). Remote computing systems (e.g., server computer (e.g., source of input 212)) may be used to program, configure, control or otherwise interface with or provide input data (e.g., environment models, robot models, tasks, target goals, limits on total number of robots, limit on tasks per robot, bounds or constraints on variables or other parameters, limits on iterations) to the robot configuration optimization system 108 and various components within the robot system 100. Such a connection may be through one or more communications channels, for example, one or more wide area networks (WANs), for instance, Ethernet, or the Internet, using Internet protocols. In some implementations, pre-runtime calculations (e.g., generation of the output) may be performed by a system that is separate from the robots 102, while runtime calculations may be performed by one or more optional intervening motion planners 120 (Figure 1), which in some implementation may be on-board the robots 102a-102c.
As noted, the robot configuration optimization system 108 may include one or more processor(s) 222, (i.e., circuitry), non-transitory storage media 224a, 224b, and system bus 229 that couples various system components. The processors 222 may be any logic processing unit, such as one or more central processing units (CPUs), digital signal processors (DSPs), graphics processing units (GPUs), field programmable gate arrays (FPGAs), application-specific integrated circuits (ASICs), programmable logic controllers (PLCs), etc. Non-limiting examples of commercially available computer systems include, but are not limited to, the Celeron, Core, Core 2, Itanium, and Xeon families of microprocessors offered by Intel® Corporation, U.S.A.; the K8, K10, Bulldozer, and Bobcat series microprocessors offered by Advanced Micro Devices, U.S.A.; the A5, A6, and A7 series microprocessors offered by Apple Computer, U.S.A.; the Snapdragon series microprocessors offered by Qualcomm, Inc., U.S.A.; and the SPARC series microprocessors offered by Oracle Corp., U.S.A. The construction and operation of the various structure shown in Figure 2 may implement or employ structures, techniques and algorithms described in or similar to those described in International Patent Application No. PCT/US2017/036880, filed June 9, 2017 entitled “MOTION PLANNING FOR AUTONOMOUS VEHICLES AND RECONFIGURABLE MOTION PLANNING PROCESSORS”; International Patent Application Publication No. WO 2016/122840, filed January 5, 2016, entitled “SPECIALIZED ROBOT MOTION PLANNING HARDWARE AND METHODS OF MAKING AND USING SAME”; U.S. Patent Application No. 62/616,783, filed January 12, 2018, entitled, “APPARATUS, METHOD AND ARTICLE TO FACILITATE MOTION PLANNING OF AN AUTONOMOUS VEHICLE IN AN ENVIRONMENT HAVING DYNAMIC OBJECTS”; and/or U.S. patent application Serial No. 62/865,431 , filed June 24, 2019, entitled “MOTION PLANNING FOR MULTIPLE ROBOTS IN SHARED WORKSPACE”.
The system memory 224a may include read-only memory (“ROM”) 226, random access memory (“RAM”) 228, FLASH memory 230, EEPROM (not shown). A basic input/output system (“BIOS”) 232, which can form part of the ROM 226, contains basic routines that help transfer information between elements within the robotic system 100, such as during start-up.
The drive 224b may be, for example, a hard disk drive for reading from and writing to a magnetic disk, a solid state (e.g., flash memory) drive for reading from and writing to solid state memory, and/or an optical disk drive for reading from and writing to removable optical disks. The robot configuration optimization system 108 may also include any combination of such drives in various different embodiments. The drive 224b may communicate with the processor(s) 222 via the system bus 229. The drive(s) 224b may include interfaces or controllers (not shown) coupled between such drives and the system bus 229, as is known by those skilled in the relevant art. The drive 224b and its associated computer-readable media provide nonvolatile storage of computer- or processor readable and/or executable instructions, data structures, program modules and other data for the robotic system 100. Those skilled in the relevant art will appreciate that other types of computer-readable media that can store data accessible by a computer may be employed, such as WORM drives, RAID drives, magnetic cassettes, digital video disks (“DVD”), Bernoulli cartridges, RAMs, ROMs, smart cards, etc.
Executable instructions and data can be stored in the system memory 224a, for example an operating system 236, one or more application programs 238, other programs or modules 240 and program data 242. Application programs 238 may include processor-executable instructions that cause the processor(s) 222 to perform one or more of: generating populations of candidate solutions, modeling candidate solutions, producing or determining costs associated with respective candidate solutions based at least in part on the modeling, performing an optimization on the population of C candidate solutions by an optimization engine that co-optimizes across a set of two or more non-homogenous parameters for two or more of: the respective base position and orientation of the robots, an allocation of the tasks to respective ones of the robots, and the respective target sequences for the robots; and/or providing output that can be used to position and orient robots in a multi-robot operational environment and cause the robots to perform tasks. Such operation can be executed as described herein (e.g., with reference to Figures 3 and 10) and in the references incorporated herein by reference. The processor-executable instructions cause the processor(s) 222, in at least some implementations, to construct motion plans (e.g., collision detection or assessment, update costs of edges in motion planning graphs based on collision detection or assessment, and perform path search or evaluation). Application programs 238 may additionally include one or more machine- readable and machine-executable instructions that cause the processor(s) 222 to perform other operations, for instance optionally handling perception data (captured via sensors). Application programs 238 may additionally include one or more machine-executable instructions that cause the processor(s) 222 to perform various other methods described herein and in the references incorporated herein by reference.
While shown in Figure 2 as being stored in the system memory 224a, the 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, for example drive(s) 224b.
Although not required, many of the implementations will be described in the general context of computer-executable instructions, such as program application modules, objects, or macros stored on computer- or processor-readable media and executed by one or more computer or processors that can perform candidate solution generation, modeling of candidate solutions for instance via forward kinematics, detection of collisions in the models, determination of time to perform and other costs, cost generation via a costing function, co-optimization across a set of non-homogeneous parameters, generation of trajectories or paths (e.g., collision-free paths), and/or other motion planning operations.
In various implementations, operations may be performed entirely in hardware circuitry or as software stored in a memory storage, such as system memory 224a, and executed by one or more hardware processors 222a, such as one or more microprocessors, digital signal processors (DSPs), field programmable gate arrays (FPGAs), application specific integrated circuits (ASICs), graphics processing units (GPUs) processors, programmed logic controllers (PLCs), electrically programmable read only memories (EEPROMs), or as a combination of hardware circuitry and software stored in the memory storage.
The robot configuration optimization system 108 may optional include one or more input/output components, for example a monitor or touchscreen display 244, a keypad or keyboard 246, and/or pointing device such as a computer mouse 248.
Those skilled in the relevant art will appreciate that the illustrated implementations, as well as other implementations, can be practiced with other system structures and arrangements and/or other computing system structures and arrangements, including those of robots, hand-held devices, multiprocessor systems, microprocessor-based or programmable consumer electronics, personal computers (“PCs”), networked PCs, mini computers, mainframe computers, and the like. The implementations or embodiments or portions thereof ( e.g at configuration time and runtime) can be practiced in distributed computing environments where tasks or modules are performed by remote processing devices, which are linked through a communications network. In a distributed computing environment, program modules may be located in both local and remote memory storage devices or media. However, where and how certain types of information are stored is important to help improve robot configuration.
Figure 3 shows a high-level robot configuration method 300 of operation of a processor-based system to configure a plurality of robots for a multi-robot operational environment in which a plurality of robots will operate, according to at least one illustrated implementation. The processor-based system may comprise at least one processor and at least one non-transitory processor-readable medium that stores at least one of data and processor- executable instructions. When executed by the at least one processor, the processor-executable instructions cause the at least one processor to execute the various operations or acts of the robot configuration method 300.
A number of robots may be configured to perform a set of tasks. The tasks may be specified as a task plan. The task plan may specify a number T tasks that need to be performed by a number R robots. A task plan can be modeled as a vector per robot, where the vector is an ordered list of the tasks the respective robot is to perform, e.g., {task 7, task 2, task 9}. A task vector can also optionally include dwell time durations that specify a time duration that the robot or portion thereof should dwell at a given configuration or target. The task vector may also specify a home pose and/or other “functional poses” that are not directly related to solving tasks (e.g., a “get out of the way” or storage pose). Poses may be specified in the C-space of the robot.
The robot configuration method 300 may start at 302, for example in response to a startup or powering of the system or component thereof, receipt of information or data, or a call or invocation by a calling routine or program. The robot configuration method 300 may be performed at a configuration time or pre-runtime, which can occur before runtime. This advantageously permits some of the most computationally intensive work to be performed before runtime, when responsiveness is not a particular concern.
At 304, at least one component of the processor-based system receives input that characterizes a multi-robot environment, a set of tasks to be performed and provides various constraints or boundaries for the problem.
For example, the processor-based system may receive one or models of the multi-robot operational environment. The model(s) may represent the physical environment in which the plurality of robots will operate, for example representing a floor, walls, and various objects in the environment.
Also for example, the processor-based system may receive a respective model of each of the plurality of robots that will operate in the multi robot operational environment. The robot models may represent the physical attributes of the robot, for example physical dimensions, range of motion, number of joints, number of links, length of links, type of end effector, speed limits, acceleration limits, etc.
Also for example, the processor-based system may receive a set of tasks or targets. The targets may represent various positions to which each robot or portion thereof must move in sequence or at certain times in order to complete a set of tasks. The targets may, for example, be represented in the configuration space (C-space) of the respective robots. Also for example, the processor-based system may optionally receive one or more dwell time durations to dwell at one or more targets while at least one of the robots performs at least one task. The dwell time durations may advantageously reflect an expected amount of time that an end effector of a robot needs to remain at a given target in order to complete a respective task (e.g., thread a fastener into a threaded opening, insert a piece into a receptacle).
Also for example, the processor-based system may optionally receive a set of bounds or constraints on variables. Various bounds and constraints may be applicable to optimization in the multi-robot environment, For example, the processor-based system may optionally receive a set of time intervals that specifies a time limit on modeling movements or simulating collisions. For example, the processor-based system may optionally receive a limit on a total number of robots allowed to operate in the multi-robot operational environment. For example, the processor-based system may optionally receive a maximum number of tasks or targets allowed per robot which again may prevent a problem from being submitted that is too complicated to solve given the available computational resources or time.
At 306, a population generator generates a population of C candidate solutions. The population can include one or more candidate solutions. Each of the candidate solutions in the population of C candidate solutions specifies, for each of the robots: a respective base position and orientation, a respective set of at least one defined pose, and a respective target sequence. The respective base position and orientation specify a respective position and orientation for a base of the respective robot in the multi-robot operational 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 operational environment, and/or other functional poses (e.g., a get out of the way or storage pose). The respective target sequence comprises a respective ordered list of targets for the respective robot to move through to complete a respective sequence of tasks. The population generator may be implemented as one or more processors executing processor-executable instructions.
The population generator may take the form of a pseudo-random population generator which may pseudo-randomly generate the population of C candidate solutions based on one or more input parameters. A pseudo-random population generator generates candidate solutions which may or may not be actually viable solutions. The population generator alternatively generates the population of C candidate solutions each having a lower probability of being an invalid candidate solution than a purely pseudo-randomly generated population of C candidate solutions. Such may produce populations of candidate solutions that lead to faster optimization without loss of configuration space cover. For example, the population generator may take into account the operational environment to avoid candidate solutions that would locate a base of a robot at a position that is impossible (e.g., occupied by a wall or other object), would result in an infeasible task plan with one or more targets that are unreachable by the robot, or would result in collisions. Where a pseudo-random population generator is used, a number of techniques may be employed to improve the candidate solutions, for example techniques described below with reference to Figure 6.
At 308, an optimization engine performs an optimization on the population of C candidate solutions. In particular, the optimization engine co optimizes across a set of two or more non-homogenous parameters for two or more of: the respective base position and orientation of the robots, an allocation of the tasks to respective ones of the robots, and the respective target sequences for the robots. The optimization engine may, for example, select an optimized candidate solution with a co-optimized combination of: a respective optimized base position and orientation for the respective base of each of the robots, an optimized task allocation, and an optimized motion plan. The optimization engine may be implemented as one or more processors executing processor-executable instructions. As described below with reference to Figure 4, the optimization engine may interact with a multi-robot environment simulator in preforming the optimization, for example providing candidate solutions to be simulated and receiving costs generated or determined by a multi-robot environment simulator which characterize the efficiency (e.g., time to completion) and the probability or rate of collision of the respective candidate solution. The optimization engine may select one of the candidate solutions based at least in part on a respective cost associated with the candidate solution, the respective cost based at least in part on the time to complete the sequences of tasks and the collision value determined for the respective candidate solution.
At 310, the optimization engine provides output from the optimization. In particular, the optimization engine may provide as output one or more of: the respective base position and orientation for each of the robots, a respective task allocation for each of the robots, a respective motion plan for each of the robots, and/or a set of collision-free paths for each of the robots with or without dwell durations at respective targets in the C-space of the robot. The output may include an optimized task allocation that specifies, for each robot, a respective sequence of tasks to be performed in the form of an optimized ordered list of targets in C-space of the respective robot and one or more dwell time durations at one or more of the targets. The output may additionally or alternatively include an optimized motion plan that specifies a set of collision-free paths, the set of collision-free paths specifying a respective collision-free path between each pair of consecutive targets in the ordered list of targets. In at least some implementations, the output is sufficient to drive the robots to perform a set of tasks. In at least some implementations, a motion planner may be employed to refine the motion plan.
The high level robot configuration method 300 may terminate at 312, for example until invoked again. While the high level robot configuration method 300 is described in terms of an ordered flow, the various acts or operations will in many implementations be performed concurrently or in parallel.
Figure 4 shows a high level multi-robot environment simulation method 400 of operation of a processor-based system to configure a plurality of robots for a multi-robot operational environment in which a plurality of robots will operate, according to at least one illustrated implementation. The processor-based system may comprise at least one processor and at least one non-transitory processor-readable medium that stores at least one of data and processor-executable instructions. When executed by the at least one processor, the processor-executable instructions cause the at least one processor to execute the various operations or acts of the multi-robot environment simulation method 400. The multi-robot environment simulation method 400 may be executed by a multi-robot environment simulator, which may be implemented by a distinct processor or processors, which is or are dedicated to the simulation of movements in a multi-robot environment. Alternatively, the multi-robot environment simulator may be implemented by one or more processors which perform other operations, for example which perform optimization.
The multi-robot environment simulation method 400 may start at 402, for example in response to a startup or powering of the system, receipt of information or data, or a call or invocation by a calling routine or program (e.g., invocation by high level robot configuration method 300).
At 404, a multi-robot environment simulator receives a candidate solution, for example from an optimization engine or a population generator.
At 406, a multi-robot environment simulator models the robots in the multi-robot environment based on a particular candidate solution. The candidate solution may, for example, be submitted or provided to the multi robot environment simulator by the optimization engine. Conventional modeling packages can be employed, for example modeling packages that employ forward kinematics to model the movements of the robots based on the candidate solution.
At 408, the multi-robot environment simulator determines a respective time to complete the sequence of tasks via modeling performed by the multi-robot environment simulator. The determination may include determining the overall time to complete the sequence of tasks by all of the robots, which may have to wait for one another. Such may, for example, include determining the respective times to complete the respective tasks for each of the robots.
At 410, the multi-robot environment simulator determines a collision value that represents a rate or a probability of a collision occurring in completing the sequence of tasks via modeling performed by the multi-robot environment simulator. The determination may include determining the overall collision value for a completion of the sequence of tasks by all of the robots. Such may, for example, include determining the respective collision value for each of the robots. At 412, the multi-robot environment simulator provides the determined time to complete the sequence of tasks and the determined collision value to, for example, the optimization engine. In some implementations, the multi-robot environment simulator provides the determined time and collision values as distinct values, for processing by the optimization engine to form a value that can be co-optimized across two or more non-homogenous parameters, as described elsewhere herein.
The multi-robot environment simulation method 400 may terminate at 414, for example until invoked again. While the multi-robot environment simulation method 400 is described in terms of an ordered flow, the various acts or operations will in many implementations be performed concurrently or in parallel.
Figure 5 shows a low-level multi-robot environment simulation method 500 of operation of a processor-based system to configure a plurality of robots for a multi-robot operational environment in which a plurality of robots will operate, according to at least one illustrated implementation. The processor-based system may comprise at least one processor and at least one non-transitory processor-readable medium that stores at least one of data and processor-executable instructions. When executed by the at least one processor, the processor-executable instructions cause the at least one processor to execute the various operations or acts of the multi-robot environment simulation method 500. The multi-robot environment simulation method 500 may be executed by a multi-robot environment simulator, which may be implemented by a distinct processor or processors, which is or are dedicated to the simulation of movements in a multi-robot environment. Alternatively, the multi-robot environment simulator may be implemented by one or more processors which perform other operations, for example which perform optimization.
The multi-robot environment simulation method 500 may start at 502, for example in response to a startup or powering of the system, receipt of information or data, or a call or invocation by a calling routine or program (e.g., invocation by high level robot configuration method 300).
At 504, a multi-robot environment simulator virtually performs each task in each robot’s sequence of tasks as specified by a candidate solution that is a subject of evaluation or consideration. The sequences of tasks may be specified as respective ordered lists of tasks. The ordered lists of tasks are each equivalent to an ordered list of trajectories in the C-space of the robot. The ordered lists of tasks may include a plurality of trajectories between successive poses or configurations (e.g., joint configurations), one or more dwell time durations at one or more poses, a home pose, and one or more other defined functional poses in the C-space of the robot, for example a stowed or “get out of the way” pose. To virtually perform each task, the processor-executable instructions, when executed by the at least one processor, cause the processor to virtually simulate the plurality of trajectories and one or more of: one or more dwell time durations at one or more poses, the home pose, or the one or more other defined functional poses.
At 506, for each epoch (e.g., 0.1s or some chosen input value) of a plurality of epochs, the multi-robot environment simulator samples a C-space position of a portion of at least one of the robots. The multi-robot environment simulator uses forward kinematics to identify potential collisions between one or more portions of a respective one of the robots and another portion of the respective one of the robots, between the respective one of the robots and another one of the robots in the environment, and between the respective one of the robots and another object in the multi-robot operational environment that is not another robot.
The multi-robot environment simulation method 500 may terminate at 508, for example until invoked again. While the low-level multi robot environment simulation method 500 is described in terms of an ordered flow, the various acts or operations will in many implementations be performed concurrently or in parallel. The described systems and methods may employ various approaches to refine or improve the candidate solutions. For example, some approaches may start with a base solution, and improve on the base solution. Also for example some approaches may employ a genetic algorithm or approach, for example a Differential Evolution (DE) algorithm or similar techniques. A version of a DE algorithm is described with reference to Figure 6 below.
Figure 6 shows a low-level multi-robot optimization DE method 600 of operation of a processor-based system to configure a plurality of robots for a multi-robot operational environment in which a plurality of robots will operate, according to at least one illustrated implementation. The processor- based system may comprise at least one processor and at least one non- transitory processor-readable medium that stores at least one of data and processor-executable instructions. When executed by the at least one processor, the processor-executable instructions cause the at least one processor to execute the various operations or acts of the multi-robot optimization method 600. The multi-robot optimization method 600 may be executed by an optimization engine, which may be implemented by a distinct processor or processors, which is or are dedicated to the optimization engine of the multi-robot environment. Alternatively, the multi-robot environment simulator may be implemented by one or more processors, which perform other operations.
The multi-robot environment simulation method 600 may start at 602, for example in response to a startup or powering of the system, receipt of information or data, or a call or invocation by a calling routine or program (e.g., invocation by high level robot configuration method 300).
At 604, the population generator generates a population of candidate solutions.
At 606, an outer loop counter I is initialized, for example to zero.
At 608, the outer loop counter I is incremented, for example as I plus one. At 610, represent the candidate solution in a format that allows perturbation. For example, the candidate solution may be represented as a candidate solution vector. The candidate solution vector may, for example, include a plurality of real number vector elements, for instance one real number vector element for each task. The real number vector elements may represent a respective combination of a respective one of the tasks, a priority for the respective one of the tasks, and one of the robots identified to perform the respective one of the tasks.
At 612, the optimizer engine perturbs a candidate solution I or causes the candidate solution I to be perturbed, to produce a perturbed candidate solution G. For example, the optimizer engine may modify the real number vector elements (i.e., real number values) of the candidate solution vector.
At 614, a multi-robot environment simulator models the perturbed candidate solution I’, for example determining a time to complete the sequence of tasks for the perturbed candidate solution I’ and a collision value that represents a rate or a probability of a collision occurring in completing the sequence of tasks for the perturbed candidate solution I’.
At 616, the optimization engine or the multi-robot environment simulator determines a cost value for the perturbed candidate solution I’. The determine cost value may be a function of the determined time to complete the sequence of tasks for the perturbed candidate solution I’ and the determined collision value for the perturbed candidate solution I’. In DE, the cost function is a piece-wise logarithmic function, but can be parameterized, for example as represented by the parameterization 700 in Figure 7 and the graph 800 in Figure 8. In Figure 7, the parameter “task_reachability” is equal to (number of reachable target goals)/(total number of target goals). Hence, if all targets are reachable, then the value of the parameter “task_reachability” is equal to 1.
At 618, the optimization engine or the multi-robot environment simulator determines whether the perturbed candidate solution I’ has a lower associated cost than the candidate solution I. At 620, in response to a determination that the perturbed candidate solution G has a lower associated cost than the candidate solution I, the optimization engine replaces the respective candidate solution I in the population of C candidate solutions with the perturbed candidate solution G. In response to a determination that the perturbed candidate solution G does not have a lower associated cost than the candidate solution I, the optimization engine leaves the population of C candidate solutions unmodified, passing control directly to 622.
At 622, the optimization engine determines whether an inner loop iteration exit condition has occurred. For example, the optimization engine determines when a convergence has occurred, whether a limit on the number of iterations has been reached, and/or whether a limit on iteration time has been reached. Convergence may be deemed to have occurred where, for example, a standard deviation in cost across the current population of candidate solutions is less than an epsilon value.
If the exit condition has occurred, control passes to 626, where the multi-robot environment simulation method 600 may terminate, for example until invoked again. If the exit condition has not occurred, the control passes to 624 where the optimization engine or the multi-robot environment simulator determines whether there are more candidate solutions in the population of candidate solutions to be perturbed. If there are more candidate solutions in the population of candidate solutions to be perturbed, control returns to 608 where the inner loop counter is incremented and the next candidate solution perturbed and analyzed. If there are no more candidate solutions in the population of candidate solutions to be perturbed, control returns to 606 where the inner loop counter is re-initialized, and another pass through the possibly updated population of candidate solutions may be performed.
The various acts of the multi-robot environment simulation method 600 may repeat for multiple iterations, refining the population of candidate solutions until the exit condition (e.g., convergence) is satisfied. The While the low-level multi-robot optimization DE method 600 is described in terms of an ordered flow, the various acts or operations will in many implementations be performed concurrently or in parallel.
Figure 9 shows a data structure 900 that may be employed by a processor-based system in representing a candidate solution in a format that allows perturbation, for example in executing the low level multi-robot optimization DE method 600 (Figure 6), according to at least one illustrated implementation.
A candidate solution I may be advantageously represented with a vector of numbers, so that the system may perform one or more functions on the numbers to “perturb” the numbers and hence the candidate solution to generate a perturbed candidate solution G. There are various ways to represent the candidate solutions. One approach is described herein with reference to the data structure 900 illustrated in Figure 9. A system may employ this approach or other approaches to represent the candidate solutions.
A candidate solution may be represented initially as a two- dimensional (2D) matrix, which will be flattened into a one-dimensional (1D) vector. In the 2D matrix, the rows correspond to tasks. For a problem with T tasks, there are thus T rows. In the 2D matrix, columns correspond to robots and priorities. If there are P priority levels and R robots, there are thus P*R columns. The example illustrated in Figure 9 has 3 robots, 3 priority levels, and 4 tasks. In use, a particular problem may have a different number of robots, different number of priority levels, and a different number of tasks than that illustrated in Figure 9. The illustrated example is simplified for ease of understanding.
Each task is allocated to a single robot, which is illustrated in Figure 9 by each row having exactly one entry that is marked (i.e., marked with an asterisk *), denoting which robot performs that task at which priority. A given robot can perform up to a maximum number of tasks that is specified in the input as a per-robot capacity of tasks. Notably, a given robot but can only perfrom one task per priority level. That is, there is only one asterisk (*) per column.
The system can flatten the 2D matrix into a 1 D vector of length T, with one vector element per task. The vector elements correspond to the “entry number” of the 2D matrix, starting at 1. So for the example illustrated in Figure 9, taskl has a value of 2, task2 has a value of 13 (the first row has 9 entries, then the allocation for task2 (see asterisk *) is in the 4th entry of row 2), task3 has a value of 21 , and task4 has a value of 36. Notably, the vector elements are all integers.
The system may normalize the resulting integer vector <2,13,21 ,36> so that all values are between 0 and 1. For example, the system may divide each value by the total number of entries in the matrix, e.g., P*R*T=36. The resulting normalized real-valued vector is <2/36, 13/36, 21/36, 36/36>, where the individual vector elements sum to 1.
To perturb the candidate real-valued vector V, the system may first take a number (e.g., three) other randomly chosen candidates (e.g., A, B, and C), and represent those randomly chosen candidates (e.g., A, B, and C) with respectuve normalized 1D vectors, normalized in the same fashion as described immediately above. The system can now compute a perturbed real valued vector V’. For example, the system may compute the perturbed vector V’ as being equal to A + mut*(C-B).
The system may then compute the perturbed candidate Vp, for example by randomly mixing the vector elements of the vector V and the perturbed vector V’. That is, for each element of the perturbed candidate Vp, say Vp[i], the system randomly chooses either V[i] or V’[i] The choice can be weighted by a parameter that, for example, can skew the choice so that the choice is not 50/50. The system may multiple the perturbed candidate Vp by P*R*T to scale back up to the 1 D vector that represents the perturbed candidate. To get from the 1 D real-valuved vector back to the 2D matrix, the system first rounds the real values to integers. From there, the system can use those integer values to mark up a blank 2D matrix. Figure 10 shows a low-level multi-robot DE candidate solution method 1000 of operation of a processor-based system to configure a plurality of robots for a multi-robot operational environment in which a plurality of robots will operate illustrating in detail the operation of a population generator, according to at least one illustrated implementation. The processor-based system may comprise at least one processor and at least one non-transitory processor-readable medium that stores at least one of data and processor- executable instructions. When executed by the at least one processor, the processor-executable instructions cause the at least one processor to execute the various operations or acts of the multi-robot DE candidate solution method 1000. The multi-robot DE candidate solution method 1000 may be executed by an optimization engine, which may be implemented by a distinct processor or processors, which is or are dedicated to the optimization engine of a multi-robot environment. Alternatively, the multi-robot environment simulator may be implemented by one or more processors, which perform other operations.
A global optimizer may be based on a multi-variable, mixed integer, optimization algorithm, for example an algorithm known as Differential Evolution (DE). The claims are not limited to such algorithm unless the algorithm is expressly recited in the claims.
The global optimizer optimizes the robot base placement (e.g., in Cartesian coordinates), robot functional poses (e.g., in C-space) and per-robot task plans (ordered list or vector of targets and dwell duration time). The primary optimization goal may be overall latency, but other goals can include optimized use of available floor space, minimum energy usage, etc.
The optimizer system may comprise three components: namely an optimization engine, a multi-robot environment simulator, and a candidate solution generator (e.g., a seed generator).
As described in further detail below, the candidate solution generator generates a population of C candidate solutions, where any given candidate may or may not be viable. As described in further detail below, the optimization engine tries to find better candidate solutions, for example, by perturbing one of the population of candidate solutions, say candidate P, and seeing if the resulting perturbed candidate P’ has a lower cost. If so, the perturbed candidate P’ replaces the candidate P in the population. The total number of candidates C does not change.
To find the cost of a 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. Every epoch of time (e.g., 0.1s or some chosen input value) the multi-robot environment simulator samples the position in C-space of each robot, and employs forward kinematics to check whether the virtual representation of the robot is in collision with itself, with another robot, or with some obstacle or object in the operational environment. The multi-robot environment simulator determines how long the candidate solution would take to be completely executed. The multi-robot environment simulator determines a collision probability or rate (e.g., the fraction of epochs during which there is at least one collision of the robot with itself, with another robot or with an obstacle or object in the operational environment). Note that the generation of the population of candidate solutions does not need to produce collision-free motion plans, but rather simply tracks collision rate. Not requiring collision-free paths greatly speed up processing; however, some implementations can instead produce collision-free paths at this stage. The cost of a candidate is a function of at least these two numbers (e.g., runtime and collision rate). In DE, this cost function is a piecewise-logarithmic value that can be parameterized.
The overall workflow involves a cycle in which the optimizer generates candidates and the simulator evaluates their cost. The process repeats until some convergence criterion, such as the standard deviation in cost being less than some epsilon value. A candidate solution generator 1002 generates candidate solutions by executing various operations or acts.
At 1004, the candidate solution generator 1002 receives various variable bounds, fixed parameters, tasks or target goals and population sizes. At 1006, the candidate solution generator 1002 generates base positions and orientations for the base of each robot. At 1008, the candidate solution generator 1002 virtually locates or positions the robot bases in the virtual multi robot operational environment, providing such to a multi-robot simulator 1009, which models the candidate solutions, providing feedback to the candidate solution generator 1002.
At 1010, the candidate solution generator 1002 generates uniformly random home poses and/or other functional poses for each robot.
At 1012, for each task or target goal the candidate solution generator 1002 finds a set of robots capable of completing the task or reaching the target goal at 1012a, randomly selects one of those robots at 1012b, determines whether the set is empty (indicating an infeasible task plan) at 1012c, returning to 1006 if the set is empty, and otherwise allocating the task or target goal to the selected robot at 1012d.
At 1014, for each target robot, the candidate solution generator 1002 determines whether the total number of tasks or target goals allocated to the robot exceeds a limit or task or target capacity specified for the robot at 1014a, returning to 1006 if over-allocated (indicating an infeasible task plan), and otherwise generating a random sequence of the allocated tasks or target goals at 1014b.
At 1016, the candidate solution generator 1002 generates or defines the candidate solution, which may be a vector or other representation that represents base placement and orientation for each robot, home and/or other functional poses for each robot, and a target sequence for each robot.
At 1018, the candidate solution generator 1002 determines whether there are sufficient candidate solutions in the population of candidate solutions. If the number of candidate solutions in the population of candidate solutions is less than a specified number, control may return to 1006 to generate an additional candidate solution. Otherwise, control may pass to 1022, where the candidate solution generator 1002 returns the population of candidate solutions to a multi-robot optimization engine 1024 for further optimization.
Once the initial population of candidate solutions has been generated, the population of candidate solutions may be refined by, for example, perturbing the candidate solutions.
While the low-level multi-robot DE candidate solution method 1000 is described in terms of an ordered flow, the various acts or operations will in many implementations be performed concurrently or in parallel.
The structures and algorithms described herein may, in at least some implementations, operate without cameras or other perception sensors.
In at least some implementations, coordination between the robots relies on the geometric models of the robots, the ability of the robots to communicate their respective motion plans, and geometric models of a shared workspace. In other implementations, visual or other perception may optionally be employed, for example to avoid humans or other dynamic obstacles that might enter or occupy portions of the shared workspace.
Wide varieties of algorithms are used to solve motion-planning problems. Each of these algorithms typically need to be able to determine whether a given pose of a robot or a motion from one pose to another pose results in a collision, either with the robot itself or with obstacles in the environment. Virtual collision assessment or checking can be performed “in software” using processors that execute processor-executable instructions from a stored set of processor-executable instructions, to perform an algorithm. Virtual collision assessment or checking can be performed “in hardware” using a set of dedicated hardware circuits (e.g., collision checking circuits implemented in a field programmable gate array (FPGA), application specific integrated circuit (ASIC)). Such circuits may, for example, represent volumes swept by a robot/robotic appendage or portion thereof (i.e., swept volumes) during a respective motion or transition between two states. The circuits may, for example, produce a Boolean evaluation indicative of whether a motion will collide with any obstacles, where at least some of the obstacles represent volumes swept in executing a motion or transition by the other robots operating in the shared workspace.
Examples
Example 1. A method of operation in a processor-based system to configure a plurality of robots for a multi-robot operational environment in which a plurality of robots will operate, the method comprising: generating a population of C candidate solutions via a population generator, each of the candidate solutions in the population 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 task or target sequence, where the respective base position and orientation specify a respective position and orientation for a base of the respective robot in the multi-robot operational 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 operational environment, and the respective task or target sequence comprises a respective ordered list of targets for the respective robot to move through to complete a respective sequence of tasks; performing an optimization on the population of C candidate solutions by an optimization engine that co-optimizes across a set of two or more non-homogenous parameters for two or more of: the respective base position and orientation of the robots, an allocation of the tasks to respective ones of the robots, and the respective task or target sequences for the robots; and providing as output: the respective base position and orientation for each of the robots, a respective task allocation for each of the robots, and a respective motion plan for each of the robots.
Example 2. The method of example 1 wherein providing as output: the respective base position and orientation for each of the robots, a respective task allocation for each of the robots, and a respective motion plan for each of the robots includes providing an optimized task allocation that specifies, for each robot, a respective sequence of tasks to be performed in the form of an optimized ordered list of targets in C-space of the respective robot and one or more dwell time durations at one or more of the targets, and providing an optimized motion plan that specifies a set of collision-free paths, the set of collision-free paths specifying a respective collision-free path between each pair of consecutive targets in the ordered list of targets.
Example 3. The method of any of examples 1 or 2, further comprising: for each of the candidate solutions of the population C of candidate solutions, determining a respective time to complete the sequences of tasks and a respective collision value that represents a rate or a probability of a collision occurring in completing the sequences of tasks via modeling performed by a robot environment simulator.
Example 4. The method of example 3 wherein performing an optimization on the population of C candidate solutions by an optimization engine that co-optimizes across a set of two or more non-homogenous parameters includes: selecting one of the candidate solutions via the optimization engine based at least in part on a respective cost associated with the candidate solution, the respective cost based at least in part on the time to complete the sequences of tasks and the collision value determined for the respective candidate solution.
Example 5. The method of example 3 wherein determining a respective time to complete the sequences of tasks and a respective collision value that represents a rate or a probability of a collision occurring via modeling by an optimization engine includes: virtually performing each task of the sequences of tasks via the multi-robot environment simulator; for each epoch of a plurality of epochs, sampling a C-space position of a portion of at least one of the robots via the multi-robot environment simulator; and checking for collisions using forward kinematics to identify potential collisions between one or more portions of a respective one of the robots and another portion of the respective one of the robots, between the respective one of the robots and another one of the robots in the environment, and between the respective one of the robots and another object in the multi robot operational environment that is not another robot.
Example 6. The method of example 5 wherein the ordered list of tasks is equivalent to an ordered list of trajectories in the C-space of the robot and includes a plurality of trajectories, one or more dwell time durations at one or more poses, a home pose, and one or more other defined functional poses in the C-space of the robot, and virtually performing includes virtually executing: the plurality of trajectories and one or more of: one or more dwell time durations at one or more poses, the home pose, or the one or more other defined functional poses.
Example 7. The method of examples 1 or 2, further comprising: for each of a number of candidate solutions in the population of C candidate solutions, for at least one iteration: perturbing the respective candidate solution to produce a perturbed candidate solution; modeling the perturbed candidate solution; determining whether the perturbed candidate solution has a lower associated cost than the respective candidate solution; and in response to a determination that the perturbed candidate solution has a lower associated cost than the respective candidate solution, replacing the respective candidate solution in the population of C candidate solutions with the perturbed candidate solution.
Example 8. The method of example 7 repeating the perturbing, the modeling, the determining and the replacing for multiple iterations until an occurrence of a convergence, a limit on the number of iterations or a limit on iteration time is reached.
Example 9. The method of example 7 wherein perturbing the respective candidate solution to produce a perturbed candidate solution includes perturbing a candidate solution vector, the candidate solution vector including a plurality of real number vector elements, one real number vector element for each task, the real number vector elements representing a respective combination of a respective one of the tasks, a priority for the respective one of the tasks and one of the robots identified to perform the respective one of the tasks.
Example 10. The method of examples 1 or 2, further comprising: receiving input that includes at least one model of the multi-robot operational environment, a respective model of each of at least two of the robots that will operate in the multi-robot operational environment, and a set of tasks or targets.
Example 11. The method of examples 1 or 2, further comprising: receiving input that includes at least one model of the multi-robot operational environment, a respective model of each of at least two of the robots that will operate in the multi-robot operational environment, a set of tasks or targets, and at least one of: one or more dwell time durations to dwell at one or more targets while at least one of the robots performs at least one task, a set of bounds or constraints on variables, or a set of time intervals that specifies a time limit on simulating collisions.
Example 12. The method of example 11 wherein receiving input includes receiving input that further includes at least one of: a limit on a total number of robots allowed to operate in the multi-robot operational environment and a maximum number of tasks or targets allowed per robot.
Example 13. The method of examples 1 or 2 wherein the population generator is a pseudo-random population generator and wherein generating a population of C candidate solutions via a population seed generator includes pseudo-randomly generating the population of C candidate solutions via the pseudo-random population generator.
Example 14. The method of examples 1 or 2 wherein generating a population of C candidate solutions via a population generator includes generating the population of C candidate solutions with a lower probability of being an invalid candidate solution than a purely pseudo-randomly generated population of C candidate solutions.
Example 15. The method of examples 1 or 2 wherein performing an optimization on the population of C candidate solutions by an optimization engine that co-optimizes across a set of two or more non-homogenous parameters includes selecting an optimized candidate solution with a co optimized combination of: a respective optimized base position and orientation for the respective base of each of the robots, an optimized task allocation, and an optimized motion plan.
Example 16. A processor-based system to configure a plurality of robots for a multi-robot operational environment in which a plurality of robots will operate, the processor-based system comprising: at least one processor; and at least one non-transitory processor-readable medium that stores at least one of data and processor-executable instructions, the processor- executable instructions which, when executed by the at least one processor, cause the processor to execute any of the methods of examples 1 through 15.
Example 17. A processor-based system to configure a plurality of robots for a multi-robot operational environment in which a plurality of robots will operate, the processor-based system comprising: at least one processor; and at least one non-transitory processor-readable medium that stores at least one of data and processor-executable instructions, the processor- executable instructions which, when executed by the at least one processor, cause the processor to: generate a population of C candidate solutions via a population generator, each of the candidate solutions in the population 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 task or target sequence, where the respective base position and orientation specify a respective position and orientation for a base of the respective robot in the multi-robot operational 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 operational environment, and the respective task or target sequence comprises a respective ordered list of targets for the respective robot to move through to complete a respective sequence of tasks; perform an optimization on the population of C candidate solutions by an optimization engine that co-optimizes across a set of two or more non-homogenous parameters for two or more of: the respective base position and orientation of the robots, an allocation of the tasks to respective ones of the robots, and the respective task or target sequences for the robots; and provide as output: the respective base position and orientation for each of the robots, a respective task allocation for each of the robots, and a respective motion plan for each of the robots.
Example 18. The processor-based system of example 17 wherein the processor-executable instructions, when executed by the at least one processor, cause the processor to provide as output an optimized task allocation that specifies, for each robot, a respective sequence of tasks to be performed in the form of an optimized ordered list of targets in C-space of the respective robot and one or more dwell time durations at one or more of the targets, and an optimized motion plan that specifies a set of collision-free paths, the set of collision-free paths specifying a respective collision-free path between each pair of consecutive targets in the ordered list of targets. Example 19. The processor-based system of any of examples 17 or 18 wherein the processor-executable instructions, when executed by the at least one processor, cause the processor further to: for each of the candidate solutions of the population C of candidate solutions, determine a respective time to complete the sequences of tasks and a respective collision value that represents a rate or a probability of a collision occurring in completing the sequences of tasks via modeling performed by a robot environment simulator.
Example 20. The processor-based system of example 19 wherein to perform an optimization on the population of C candidate solutions by an optimization engine that co-optimizes across a set of two or more non- homogenous parameters, the processor-executable instructions, when executed by the at least one processor, cause the processor to: select one of the candidate solutions via the optimization engine based at least in part on a respective cost associated with the candidate solution, the respective cost based at least in part on the time to complete the sequences of tasks and the collision value determined for the respective candidate solution.
Example 21. The processor-based system of example 19 wherein to determine a respective time to complete the sequences of tasks and a respective collision value that represents a rate or a probability of a collision occurring via modeling by an optimization engine, the processor-executable instructions, when executed by the at least one processor, cause the processor to: virtually perform each task of the sequences of tasks via the multi robot environment simulator; for each epoch of a plurality of epochs, sample a C-space position of a portion of at least one of the robots via the multi-robot environment simulator; and check for collisions using forward kinematics to identify potential collisions between one or more portions of a respective one of the robots and another portion of the respective one of the robots, between the respective one of the robots and another one of the robots in the environment, and between the respective one of the robots and another object in the multi-robot operational environment that is not another robot.
Example 22. The processor-based system of example 21 wherein the ordered list of tasks is equivalent to an ordered list of trajectories in the C- space of the robot and includes a plurality of trajectories, one or more dwell time durations at one or more poses, a home pose, and one or more other defined functional poses in the C-space of the robot, and to virtually perform each task, the processor-executable instructions, when executed by the at least one processor, cause the processor to virtually execute the plurality of trajectories and one or more of: one or more dwell time durations at one or more poses, the home pose, or the one or more other defined functional poses.
Example 23. The processor-based system of examples 17 or 18 wherein the processor-executable instructions, when executed by the at least one processor, cause the processor further to: for each of a number of candidate solutions in the population of C candidate solutions, for at least one iteration: perturb the respective candidate solution to produce a perturbed candidate solution; model the perturbed candidate solution; determine whether the perturbed candidate solution has a lower associated cost than the respective candidate solution; and in response to a determination that the perturbed candidate solution has a lower associated cost than the respective candidate solution, replace the respective candidate solution in the population of C candidate solutions with the perturbed candidate solution.
Example 24. The processor-based system of example 23 wherein the processor-executable instructions, when executed by the at least one processor, cause the processor further to repeat the perturbation, the modeling, the determination and the replacement for multiple iterations until an occurrence of a convergence, a limit on the number of iterations or a limit on iteration time is reached.
Example 25. The processor-based system of example 23 wherein to perturb the respective candidate solution to produce a perturbed candidate solution 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 including a plurality of real number vector elements, one real number vector element for each task, the real number vector elements representing a respective combination of a respective one of the tasks, a priority for the respective one of the tasks and one of the robots identified to perform the respective one of the tasks.
Example 26. The processor-based system of examples 17 or 18 wherein the processor-executable instructions, when executed by the at least one processor, cause the processor further to: receive input that includes at least one model of the multi-robot operational environment, a respective model of each of at least two of the robots that will operate in the multi-robot operational environment, and a set of tasks or targets.
Example 27. The processor-based system of examples 17 or 18 wherein the processor-executable instructions, when executed by the at least one processor, cause the processor further to: receive input that includes at least one model of the multi-robot operational environment, a respective model of each of at least two of the robots that will operate in the multi-robot operational environment, a set of tasks or targets, and at least one of: one or more dwell time durations to dwell at one or more targets while at least one of the robots performs at least one task, a set of bounds or constraints on variables, or a set of time intervals that specifies a time limit on simulating collisions.
Example 28. The processor-based system of example 27 wherein the processor-executable instructions, when executed by the at least one processor, cause the processor further to receive as input at least one of: a limit on a total number of robots allowed to operate in the multi-robot operational environment and a maximum number of tasks or targets allowed per robot.
Example 29. The processor-based system of examples 17 or 18 wherein the population generator is a pseudo-random population generator and wherein generation of a population of C candidate solutions via a population seed generator includes pseudo-randomly generation of the population of C candidate solutions via the pseudo-random population generator.
Example 30. The processor-based system of examples 17 or 18 wherein generation of a population of C candidate solutions via a population generator includes generation of the population of C candidate solutions with a lower probability of being an invalid candidate solution than a purely pseudo- randomly generated population of C candidate solutions.
Example 31. The processor-based system of examples 17 or 18 wherein to perform an optimization on the population of C candidate solutions by an optimization engine that co-optimizes across a set of two or more non- homogenous parameters the processor-executable instructions, when executed by the at least one processor, cause the processor to select an optimized candidate solution with a co-optimized combination of: a respective optimized base position and orientation for the respective base of each of the robots, an optimized task allocation, and an optimized motion plan.
The foregoing detailed description has set forth various embodiments of the devices and/or processes via the use of block diagrams, schematics, and examples. Insofar as such block diagrams, schematics, and examples contain one or more functions and/or operations, it will be understood by those skilled in the art that each function and/or operation within such block diagrams, flowcharts, or examples can be implemented, individually and/or collectively, by a wide range of hardware, software, firmware, or virtually any combination thereof. In one embodiment, the present subject matter may be implemented via Boolean circuits, Application Specific Integrated Circuits (ASICs) and/or FPGAs. However, those skilled in the art will recognize that the embodiments disclosed herein, in whole or in part, can be implemented in various different implementations in standard integrated circuits, as one or more computer programs running on one or more computers (e.g., as one or more programs running on one or more computer systems), as one or more programs running on one or more controllers (e.g., microcontrollers) as one or more programs running on one or more processors (e.g., microprocessors), as firmware, or as virtually any combination thereof, and that designing the circuitry and/or writing the code for the software and or firmware would be well within the skill of one of ordinary skill in the art in light of this disclosure.
Those of skill in the art will recognize that many of the methods or algorithms set out herein may employ additional acts, may omit some acts, and/or may execute acts in a different order than specified.
In addition, those skilled in the art will appreciate that the mechanisms taught herein are capable of being implemented in hardware, for example in one or more FPGAs or ASICs.
The various embodiments described above can be combined to provide further embodiments. All of the commonly assigned US patent application publications, US 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 International Patent Application No. PCT/US2017/036880, filed June 9, 2017, entitled “MOTION PLANNING FOR AUTONOMOUS VEHICLES AND RECONFIGURABLE MOTION PLANNING PROCESSORS”; International Patent Application Publication No. WO2016/122840, filed January 5, 2016, entitled “SPECIALIZED ROBOT MOTION PLANNING HARDWARE AND METHODS OF MAKING AND USING SAME”; U.S. Patent Application No. 62/616,783, filed January 12, 2018, entitled, “APPARATUS, METHOD AND ARTICLE TO FACILITATE MOTION PLANNING OF AN AUTONOMOUS VEHICLE IN AN ENVIRONMENT HAVING DYNAMIC OBJECTS”; U.S. Patent Application No. 62/626,939, filed February 6, 2018, entitled “MOTION PLANNING OF A ROBOT STORING A DISCRETIZED ENVIRONMENT ON ONE OR MORE PROCESSORS AND IMPROVED OPERATION OF SAME”; U.S. Patent Application No. 62/856,548, filed June 3, 2019, entitled “APPARATUS, METHODS AND ARTICLES TO FACILITATE MOTION PLANNING IN ENVIRONMENTS HAVING DYNAMIC OBSTACLES”; U.S. Patent Application No. 62/865,431, filed June 24, 2019, entitled “MOTION PLANNING FOR MULTIPLE ROBOTS IN SHARED
WORKSPACE”; and U.S. Patent Application No. 62/964,405, filed January 22, 2020, entitled “CONFIGURATION OF ROBOTS IN MULTI-ROBOT OPERATIONAL ENVIRONMENT” are incorporated herein by reference, in their entirety. These and other changes can be made to the embodiments in light of the above-detailed description. In general, in the following claims, the terms used should not be construed to limit the claims to the specific embodiments disclosed in the specification and the claims, but should be construed to include all possible embodiments along with the full scope of equivalents to which such claims are entitled. Accordingly, the claims are not limited by the disclosure.

Claims

1. A method of operation in a processor-based system to configure a plurality of robots for a multi-robot operational environment in which a plurality of robots will operate, the method comprising: generating a population of C candidate solutions via a population generator, each of the candidate solutions in the population 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 target sequence, where the respective base position and orientation specify a respective position and orientation for a base of the respective robot in the multi-robot operational 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 operational environment, and the respective target sequence comprises a respective ordered list of targets for the respective robot to move through to complete a respective sequence of tasks; performing an optimization on the population of C candidate solutions by an optimization engine that co-optimizes across a set of two or more non- homogenous parameters for two or more of: the respective base position and orientation of the robots, an allocation of the tasks to respective ones of the robots, and the respective target sequences for the robots; and providing as output: the respective base position and orientation for each of the robots, a respective task allocation for each of the robots, and a respective motion plan for each of the robots.
2. The method of claim 1 wherein providing as output: the respective base position and orientation for each of the robots, a respective task allocation for each of the robots, and a respective motion plan for each of the robots includes providing an optimized task allocation that specifies, for each robot, a respective sequence of tasks to be performed in the form of an optimized ordered list of targets in C-space of the respective robot and one or more dwell time durations at one or more of the targets, and providing an optimized motion plan that specifies a set of collision-free paths, the set of collision-free paths specifying a respective collision-free path between each pair of consecutive targets in the ordered list of targets.
3. The method of any of claims 1 or 2, further comprising: for each of the candidate solutions of the population C of candidate solutions, determining a respective time to complete the sequences of tasks and a respective collision value that represents a rate or a probability of a collision occurring in completing the sequences of tasks via modeling performed by a robot environment simulator.
4. The method of claim 3 wherein performing an optimization on the population of C candidate solutions by an optimization engine that co-optimizes across a set of two or more non-homogenous parameters includes: selecting one of the candidate solutions via the optimization engine based at least in part on a respective cost associated with the candidate solution, the respective cost based at least in part on the time to complete the sequences of tasks and the collision value determined for the respective candidate solution.
5. The method of claim 3 wherein determining a respective time to complete the sequences of tasks and a respective collision value that represents a rate or a probability of a collision occurring via modeling by an optimization engine includes: virtually performing each task of the sequences of tasks via the multi robot environment simulator; for each epoch of a plurality of epochs, sampling a C-space position of a portion of at least one of the robots via the multi-robot environment simulator; and checking for collisions using forward kinematics to identify potential collisions between one or more portions of a respective one of the robots and another portion of the respective one of the robots, between the respective one of the robots and another one of the robots in the environment, and between the respective one of the robots and another object in the multi-robot operational environment that is not another robot.
6. The method of claim 5 wherein the ordered list of tasks is equivalent to an ordered list of trajectories in the C-space of the robot and includes a plurality of trajectories, one or more dwell time durations at one or more poses, a home pose, and one or more other defined functional poses in the C-space of the robot, and virtually performing includes virtually executing: the plurality of trajectories and one or more of: the one or more dwell time durations at one or more poses, the home pose, or the one or more other defined functional poses.
7. The method of claims 1 or 2, further comprising: for each of a number of candidate solutions in the population of C candidate solutions, for at least one iteration: perturbing the respective candidate solution to produce a perturbed candidate solution; modeling the perturbed candidate solution; determining whether the perturbed candidate solution has a lower associated cost than the respective candidate solution; and in response to a determination that the perturbed candidate solution has a lower associated cost than the respective candidate solution, replacing the respective candidate solution in the population of C candidate solutions with the perturbed candidate solution.
8. The method of claim 7 repeating the perturbing, the modeling, the determining and the replacing for multiple iterations until an occurrence of a convergence, a limit on the number of iterations or a limit on iteration time is reached.
9. The method of claim 7 wherein perturbing the respective candidate solution to produce a perturbed candidate solution includes perturbing a candidate solution vector, the candidate solution vector including a plurality of real number vector elements, one real number vector element for each task, the real number vector elements representing a respective combination of a respective one of the tasks, a priority for the respective one of the tasks and one of the robots identified to perform the respective one of the tasks.
10. The method of claims 1 or 2, further comprising: receiving input that includes at least one model of the multi-robot operational environment, a respective model of each of at least two of the robots that will operate in the multi-robot operational environment, and a set of tasks.
11. The method of claims 1 or 2, further comprising: receiving input that includes at least one model of the multi-robot operational environment, a respective model of each of at least two of the robots that will operate in the multi-robot operational environment, a set of tasks, and at least one of: one or more dwell time durations to dwell at one or more targets while at least one of the robots performs at least one task, a set of bounds or constraints on variables, or a set of time intervals that specifies a time limit on simulating collisions.
12. The method of claim 11 wherein receiving input includes receiving input that further includes at least one of: a limit on a total number of robots allowed to operate in the multi-robot operational environment and a maximum number of tasks allowed per robot.
13. The method of claims 1 or 2 wherein the population generator is a pseudo-random population generator and wherein generating a population of C candidate solutions via a population seed generator includes pseudo-randomly generating the population of C candidate solutions via the pseudo-random population generator.
14. The method of claims 1 or 2 wherein generating a population of C candidate solutions via a population generator includes generating the population of C candidate solutions with a lower probability of being an invalid candidate solution than a purely pseudo-randomly generated population of C candidate solutions.
15. The method of claims 1 or 2 wherein performing an optimization on the population of C candidate solutions by an optimization engine that co optimizes across a set of two or more non-homogenous parameters includes selecting an optimized candidate solution with a co-optimized combination of: a respective optimized base position and orientation for the respective base of each of the robots, an optimized task allocation, and an optimized motion plan.
16. A processor-based system to configure a plurality of robots for a multi-robot operational environment in which a plurality of robots will operate, the processor-based system comprising: at least one processor; and at least one non-transitory processor-readable medium that stores at least one of data and processor-executable instructions, the processor-executable instructions which, when executed by the at least one processor, cause the processor to execute any of the methods of claims 1 through 15.
17. A processor-based system to configure a plurality of robots for a multi-robot operational environment in which a plurality of robots will operate, the processor-based system comprising: at least one processor; and at least one non-transitory processor-readable medium that stores at least one of data and processor-executable instructions, the processor-executable instructions which, when executed by the at least one processor, cause the processor to: generate a population of C candidate solutions via a population generator, each of the candidate solutions in the population 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 target sequence, where the respective base position and orientation specify a respective position and orientation for a base of the respective robot in the multi-robot operational 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 operational environment, and the respective target sequence comprises a respective ordered list of targets for the respective robot to move through to complete a respective sequence of tasks; perform an optimization on the population of C candidate solutions by an optimization engine that co-optimizes across a set of two or more non- homogenous parameters for two or more of: the respective base position and orientation of the robots, an allocation of the tasks to respective ones of the robots, and the respective target sequences for the robots; and provide as output: the respective base position and orientation for each of the robots, a respective task allocation for each of the robots, and a respective motion plan for each of the robots.
18. The processor-based system of claim 17 wherein the processor- executable instructions, when executed by the at least one processor, cause the processor to provide as output an optimized task allocation that specifies, for each robot, a respective sequence of tasks to be performed in the form of an optimized ordered list of targets in C-space of the respective robot and one or more dwell time durations at one or more of the targets, and an optimized motion plan that specifies a set of collision-free paths, the set of collision-free paths specifying a respective collision-free path between each pair of consecutive targets in the ordered list of targets.
19. The processor-based system of any of claims 17 or 18 wherein the processor-executable instructions, when executed by the at least one processor, cause the processor further to: for each of the candidate solutions of the population C of candidate solutions, determine a respective time to complete the sequences of tasks and a respective collision value that represents a rate or a probability of a collision occurring in completing the sequences of tasks via modeling performed by a robot environment simulator.
20. The processor-based system of claim 19 wherein to perform an optimization on the population of C candidate solutions by an optimization engine that co-optimizes across a set of two or more non-homogenous parameters, the processor-executable instructions, when executed by the at least one processor, cause the processor to: select one of the candidate solutions via the optimization engine based at least in part on a respective cost associated with the candidate solution, the respective cost based at least in part on the time to complete the sequences of tasks and the collision value determined for the respective candidate solution.
21. The processor-based system of claim 19 wherein to determine a respective time to complete the sequences of tasks and a respective collision value that represents a rate or a probability of a collision occurring via modeling by an optimization engine, the processor-executable instructions, when executed by the at least one processor, cause the processor to: virtually perform each task of the sequences of tasks via the multi-robot environment simulator; for each epoch of a plurality of epochs, sample a C-space position of a portion of at least one of the robots via the multi-robot environment simulator; and check for collisions using forward kinematics to identify potential collisions between one or more portions of a respective one of the robots and another portion of the respective one of the robots, between the respective one of the robots and another one of the robots in the environment, and between the respective one of the robots and another object in the multi-robot operational environment that is not another robot.
22. The processor-based system of claim 21 wherein the ordered list of tasks is equivalent to an ordered list of trajectories in the C-space of the robot and includes a plurality of trajectories, one or more dwell time durations at one or more poses, a home pose, and one or more other defined functional poses in the C- space of the robot, and to virtually perform each task, the processor-executable instructions, when executed by the at least one processor, cause the processor to virtually execute the plurality of trajectories and one or more of: one or more dwell time durations at one or more poses, the home pose, or the one or more other defined functional poses.
23. The processor-based system of claims 17 or 18 wherein the processor-executable instructions, when executed by the at least one processor, cause the processor further to: for each of a number of candidate solutions in the population of C candidate solutions, for at least one iteration: perturb the respective candidate solution to produce a perturbed candidate solution; model the perturbed candidate solution; determine whether the perturbed candidate solution has a lower associated cost than the respective candidate solution; and in response to a determination that the perturbed candidate solution has a lower associated cost than the respective candidate solution, replace the respective candidate solution in the population of C candidate solutions with the perturbed candidate solution.
24. The processor-based system of claim 23 wherein the processor- executable instructions, when executed by the at least one processor, cause the processor further to repeat the perturbation, the modeling, the determination and the replacement for multiple iterations until an occurrence of a convergence, a limit on the number of iterations or a limit on iteration time is reached.
25. The processor-based system of claim 23 wherein to perturb the respective candidate solution to produce a perturbed candidate solution 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 including a plurality of real number vector elements, one real number vector element for each task, the real number vector elements representing a respective combination of a respective one of the tasks, a priority for the respective one of the tasks and one of the robots identified to perform the respective one of the tasks.
26. The processor-based system of claims 17 or 18 wherein the processor-executable instructions, when executed by the at least one processor, cause the processor further to: receive input that includes at least one model of the multi-robot operational environment, a respective model of each of at least two of the robots that will operate in the multi-robot operational environment, and a set of tasks.
27. The processor-based system of claims 17 or 18 wherein the processor-executable instructions, when executed by the at least one processor, cause the processor further to: receive input that includes at least one model of the multi-robot operational environment, a respective model of each of at least two of the robots that will operate in the multi-robot operational environment, a set of tasks, and at least one of: one or more dwell time durations to dwell at one or more targets while at least one of the robots performs at least one task, a set of bounds or constraints on variables, or a set of time intervals that specifies a time limit on simulating collisions.
28. The processor-based system of claim 27 wherein the processor- executable instructions, when executed by the at least one processor, cause the processor further to receive as input at least one of: a limit on a total number of robots allowed to operate in the multi-robot operational environment and a maximum number of tasks allowed per robot.
29. The processor-based system of claims 17 or 18 wherein the population generator is a pseudo-random population generator and wherein generation of a population of C candidate solutions via a population seed generator includes pseudo-randomly generation of the population of C candidate solutions via the pseudo-random population generator.
30. The processor-based system of claims 17 or 18 wherein generation of a population of C candidate solutions via a population generator includes generation of the population of C candidate solutions with a lower probability of being an invalid candidate solution than a purely pseudo-randomly generated population of C candidate solutions.
31. The processor-based system of claims 17 or 18 wherein to perform an optimization on the population of C candidate solutions by an optimization engine that co-optimizes across a set of two or more non-homogenous parameters the processor-executable instructions, when executed by the at least one processor, cause the processor to select an optimized candidate solution with a co-optimized combination of: a respective optimized base position and orientation for the respective base of each of the robots, an optimized task allocation, and an optimized motion plan.
PCT/US2021/013610 2020-01-22 2021-01-15 Configuration of robots in multi-robot operational environment WO2021150439A1 (en)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2022544106A JP7489727B2 (en) 2020-01-22 2021-01-15 Configuring robots in a multi-robot environment
EP21744840.6A EP4045240A4 (en) 2020-01-22 2021-01-15 Configuration of robots in multi-robot operational environment
CN202180010425.9A CN115003460A (en) 2020-01-22 2021-01-15 Robot configuration in a multi-robot operating environment

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US202062964405P 2020-01-22 2020-01-22
US62/964,405 2020-01-22

Publications (1)

Publication Number Publication Date
WO2021150439A1 true WO2021150439A1 (en) 2021-07-29

Family

ID=76856677

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2021/013610 WO2021150439A1 (en) 2020-01-22 2021-01-15 Configuration of robots in multi-robot operational environment

Country Status (6)

Country Link
US (1) US11623346B2 (en)
EP (1) EP4045240A4 (en)
JP (1) JP7489727B2 (en)
CN (1) CN115003460A (en)
TW (1) TW202146189A (en)
WO (1) WO2021150439A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024011062A1 (en) * 2022-07-05 2024-01-11 Realtime Robotics, Inc. Robust motion planning and/or control for multi-robot environments

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102014118001A1 (en) * 2014-12-05 2016-06-09 Broetje-Automation Gmbh Method for simulating the motion of a manipulator
JP7178900B2 (en) * 2018-12-28 2022-11-28 川崎重工業株式会社 ROBOT WORK PLANNING METHOD AND WORK PLANNING DEVICE
JPWO2021149757A1 (en) * 2020-01-24 2021-07-29
US20230050387A1 (en) * 2020-02-11 2023-02-16 Siemens Aktiengesellschaft Method and system for imposing constraints in a skill-based autonomous system
JP2024528774A (en) 2021-05-17 2024-08-01 コビオニックス コーポレーション Proximity-sensing autonomous robotic system and device
CN114089755B (en) * 2021-11-16 2024-02-02 大连理工大学 Multi-robot task allocation method based on consistency packet algorithm
US20230182302A1 (en) * 2021-12-10 2023-06-15 Autodesk, Inc. Techniques for robotic workcell design
CN114167808B (en) * 2021-12-10 2022-07-01 南京航空航天大学 Operation method of multi-robot flexible production line for integral additive manufacturing
CN115179293B (en) * 2022-07-29 2024-10-25 北京控制工程研究所 Collaborative autonomous obstacle avoidance planning method and system for space manipulator and spacecraft base
DE102022124067A1 (en) * 2022-09-20 2024-03-21 Bayerische Motoren Werke Aktiengesellschaft Method for determining a work process to be carried out by a robot, method for determining and checking a work process to be carried out by a system, data processing device, computer program and computer-readable medium
TW202428406A (en) * 2022-09-27 2024-07-16 美商即時機器人股份有限公司 Automated configuration of robots in multi-robot operational environment optimizing for wear and other parameters
CN115847394B (en) * 2022-10-21 2023-10-10 圣名科技(广州)有限责任公司 Method and device for controlling mechanical arm to grasp object, electronic equipment and storage medium
CN116276978A (en) * 2023-02-17 2023-06-23 广州明珞装备股份有限公司 Track analysis method, system, medium and equipment based on waiting time of robot
CN117381805B (en) * 2023-12-13 2024-02-27 成都航空职业技术学院 Mechanical arm operation control method and system for conflict handling
CN118024262B (en) * 2024-04-11 2024-07-26 深圳市普渡科技有限公司 Running state detection method, running state detection device, running state detection equipment and storage medium

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6004016A (en) * 1996-08-06 1999-12-21 Trw Inc. Motion planning and control for systems with multiple mobile objects
US8315738B2 (en) * 2008-05-21 2012-11-20 Fanuc Robotics America, Inc. Multi-arm robot system interference check via three dimensional automatic zones
JP2015208811A (en) * 2014-04-25 2015-11-24 ファナック株式会社 Simulation device of a plurality of robots
WO2017168187A1 (en) * 2016-03-31 2017-10-05 Siemens Industry Software Ltd. Method and system for determining optimal positioning of a plurality of robots in a simulated production environment
US20190391597A1 (en) 2018-06-25 2019-12-26 X Development Llc Robot coordination in a shared workspace

Family Cites Families (131)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4862373A (en) 1987-05-13 1989-08-29 Texas Instruments Incorporated Method for providing a collision free path in a three-dimensional space
US4949277A (en) 1988-03-09 1990-08-14 North American Philips Corporation Differential budding: method and apparatus for path planning with moving obstacles and goals
US6089742A (en) 1989-11-01 2000-07-18 Warmerdam; Thomas P. H. Method and apparatus for controlling robots and the like using a bubble data hierarchy placed along a medial axis
US5544282A (en) 1991-04-05 1996-08-06 Chen; Pang C. Method and apparatus for planning motions of robot manipulators
US5347459A (en) 1993-03-17 1994-09-13 National Research Council Of Canada Real time collision detection
US5835684A (en) 1994-11-09 1998-11-10 Amada Company, Ltd. Method for planning/controlling robot motion
US5795297A (en) 1996-09-12 1998-08-18 Atlantis Diagnostics International, L.L.C. Ultrasonic diagnostic imaging system with personal computer architecture
US6049756A (en) 1997-11-12 2000-04-11 Lockheed Martin Corporation System and method for avoiding collision between vector and solid objects
JPH11296229A (en) 1998-02-13 1999-10-29 Komatsu Ltd Vehicle guide device
DE19831216A1 (en) 1998-07-03 2000-01-05 Amecon Gmbh Method and device for determining the dependence of a first measured variable on a second measured variable
US6259988B1 (en) 1998-07-20 2001-07-10 Lockheed Martin Corporation Real-time mission adaptable route planner
US6526373B1 (en) 1999-10-08 2003-02-25 Dassault Systemes Optimization tool for robot placement
JP2002073130A (en) 2000-06-13 2002-03-12 Yaskawa Electric Corp Planning method for gross motion path of robot and its controller
DE10063722C2 (en) 2000-12-20 2003-07-03 Siemens Ag Jerk limitation with adaptation of the path dynamics
JP2003127077A (en) 2001-10-19 2003-05-08 Komatsu Ltd Robot program modification device for working robot
DE10200680B4 (en) 2002-01-10 2004-03-25 Siemens Ag Minimal vibration excitation when moving with jerk limitation by adapting jerk profiles
US10065317B2 (en) 2016-06-30 2018-09-04 General Electric Company Control system for coordinating robotic machines to collaborate on tasks
WO2004095520A2 (en) 2003-04-22 2004-11-04 Berkeley Process Control, Inc. System of path planning for robotic manipulators based on maximum acceleration and finite jerk constraints
JP3797986B2 (en) 2003-07-03 2006-07-19 ファナック株式会社 Robot offline simulation equipment
JP3834307B2 (en) 2003-09-29 2006-10-18 ファナック株式会社 Robot system
US7447593B2 (en) 2004-03-26 2008-11-04 Raytheon Company System and method for adaptive path planning
EP1738232A4 (en) 2004-04-22 2009-10-21 Frontline Robotics Open control system architecture for mobile autonomous systems
ATE392656T1 (en) 2004-06-15 2008-05-15 Abb Ab METHOD AND SYSTEM FOR OFF-LINE PROGRAMMING OF SEVERAL INTERACTING ROBOTS
DE102004059966B3 (en) 2004-12-13 2006-06-22 Siemens Ag Method and device for motion control of a movable machine element of a numerically gesturten machine
JP2006224740A (en) 2005-02-16 2006-08-31 Advics:Kk Vehicle travel support device
US20060235610A1 (en) 2005-04-14 2006-10-19 Honeywell International Inc. Map-based trajectory generation
US20060247852A1 (en) 2005-04-29 2006-11-02 Kortge James M System and method for providing safety-optimized navigation route planning
JP5112666B2 (en) 2006-09-11 2013-01-09 株式会社日立製作所 Mobile device
ATE412929T1 (en) 2006-09-14 2008-11-15 Abb Research Ltd METHOD AND DEVICE FOR AVOIDING COLLISIONS BETWEEN AN INDUSTRIAL ROBOT AND AN OBJECT
US7974737B2 (en) 2006-10-31 2011-07-05 GM Global Technology Operations LLC Apparatus and method of automated manufacturing
EP1972415B1 (en) 2007-03-23 2019-01-02 Honda Research Institute Europe GmbH Robots with collision avoidance functionality
US7865277B1 (en) 2007-05-07 2011-01-04 The United States Of America As Represented By The Secretary Of The Navy Obstacle avoidance system and method
US8380424B2 (en) 2007-09-28 2013-02-19 The Boeing Company Vehicle-based automatic traffic conflict and collision avoidance
EP2085279B1 (en) 2008-01-29 2011-05-25 Ford Global Technologies, LLC A system for collision course prediction
EP2244866B1 (en) 2008-02-20 2015-09-16 ABB Research Ltd. Method and system for optimizing the layout of a robot work cell
US8571745B2 (en) 2008-04-10 2013-10-29 Robert Todd Pack Advanced behavior engine
US9144904B2 (en) 2008-05-21 2015-09-29 Fanuc Robotics America Corporation Method and system for automatically preventing deadlock in multi-robot systems
US8706452B2 (en) 2008-06-26 2014-04-22 Siemens Product Lifecycle Management Software Inc. System and method for collision-free CAD design of pipe and tube paths
JP5086942B2 (en) 2008-09-02 2012-11-28 トヨタ自動車株式会社 Route search device, route search method, and route search program
KR101554515B1 (en) 2009-01-07 2015-09-21 삼성전자 주식회사 path planning apparatus of robot and method thereof
KR101105325B1 (en) 2009-09-08 2012-01-16 부산대학교 산학협력단 Method for Path-planning for Actual Robots
US8386080B2 (en) 2009-09-15 2013-02-26 Harris Corporation Robotic apparatus implementing collision avoidance scheme and associated methods
JP4975075B2 (en) 2009-09-30 2012-07-11 クラリオン株式会社 Navigation device and route calculation method
WO2011056633A1 (en) 2009-10-27 2011-05-12 Battelle Memorial Institute Semi-autonomous multi-use robot system and method of operation
US20110153080A1 (en) 2009-12-22 2011-06-23 Siemens Product Lifecycle Management Software Inc. Method and apparatus for industrial robotic pathscycle time optimization using fly by
US20120061155A1 (en) 2010-04-09 2012-03-15 Willow Garage, Inc. Humanoid robotics system and methods
JP2011249711A (en) 2010-05-31 2011-12-08 Kyocera Corp Wiring board and mounting structure thereof
US8855812B2 (en) 2010-07-23 2014-10-07 Chetan Kapoor System and method for robot safety and collision avoidance
JP2012056023A (en) 2010-09-09 2012-03-22 Toyota Motor Corp Action generating system and method for robot
EP2619742B1 (en) 2010-09-24 2018-02-28 iRobot Corporation Systems and methods for vslam optimization
US8509982B2 (en) 2010-10-05 2013-08-13 Google Inc. Zone driving
JP2012190405A (en) 2011-03-14 2012-10-04 Toyota Motor Corp Route information correcting device, track planning device, and robot
JP5774361B2 (en) 2011-04-28 2015-09-09 本田技研工業株式会社 Trajectory planning method, trajectory planning system, and trajectory planning / control system
JP2012243029A (en) 2011-05-18 2012-12-10 Toyota Central R&D Labs Inc Traveling object with route search function
KR101634463B1 (en) 2011-06-29 2016-06-28 미쓰비시덴키 가부시키가이샤 Component supply apparatus
TW201318793A (en) 2011-11-08 2013-05-16 Univ Minghsin Sci & Tech Robot optical positioning system and positioning method thereof
DE112013001597T5 (en) 2012-03-22 2014-12-11 Israel Aerospace Industries Ltd. Planning and monitoring of autonomous mission
JP5724919B2 (en) 2012-03-22 2015-05-27 トヨタ自動車株式会社 Orbit generation device, moving body, orbit generation method and program
KR20130112507A (en) 2012-04-04 2013-10-14 인하대학교 산학협력단 Safe path planning method of a mobile robot using s× algorithm
JP6128767B2 (en) 2012-07-05 2017-05-17 キヤノン株式会社 Robot control apparatus and robot control method
KR101441187B1 (en) 2012-07-19 2014-09-18 고려대학교 산학협력단 Method for planning path for a humanoid robot
JP6069923B2 (en) 2012-07-20 2017-02-01 セイコーエプソン株式会社 Robot system, robot, robot controller
JP2015526309A (en) 2012-08-31 2015-09-10 リシンク ロボティクス インコーポレイテッド System and method for safe robot operation
WO2014056533A1 (en) 2012-10-11 2014-04-17 Abb Technology Ltd A method and an apparatus for automatically generating a collision free return program for returning a robot from a stop position to a predefined restart position
KR102009482B1 (en) 2012-10-30 2019-08-14 한화디펜스 주식회사 Apparatus and method for planning path of robot, and the recording media storing the program for performing the said method
US9405296B2 (en) 2012-12-19 2016-08-02 Elwah LLC Collision targeting for hazard handling
US8972057B1 (en) 2013-01-09 2015-03-03 The Boeing Company Systems and methods for generating a robotic path plan in a confined configuration space
US9102055B1 (en) 2013-03-15 2015-08-11 Industrial Perception, Inc. Detection and reconstruction of an environment to facilitate robotic interaction with the environment
JP5962560B2 (en) 2013-03-22 2016-08-03 トヨタ自動車株式会社 Route search apparatus, moving body, route search method and program
US9280899B2 (en) 2013-08-06 2016-03-08 GM Global Technology Operations LLC Dynamic safety shields for situation assessment and decision making in collision avoidance tasks
JP6057862B2 (en) 2013-08-29 2017-01-11 三菱電機株式会社 Component supply apparatus and program generation method for component supply apparatus
US9352465B2 (en) 2013-11-12 2016-05-31 Canon Kabushiki Kaisha Control method for robot apparatus and robot apparatus
EP3100124B1 (en) 2014-01-28 2023-03-01 ABB Schweiz AG Method and apparatus for optimizing performance of robotic cell
JP5897624B2 (en) 2014-03-12 2016-03-30 ファナック株式会社 Robot simulation device for simulating workpiece removal process
DE102014212898A1 (en) 2014-07-03 2016-01-07 Robert Bosch Gmbh Method for determining an emergency trajectory and method for partially automated or automated guidance of an ego vehicle
US11576543B2 (en) 2014-07-18 2023-02-14 Ali Ebrahimi Afrouzi Robotic vacuum with rotating cleaning apparatus
US9403275B2 (en) 2014-10-17 2016-08-02 GM Global Technology Operations LLC Dynamic obstacle avoidance in a robotic system
JP5980873B2 (en) 2014-10-17 2016-08-31 ファナック株式会社 Robot interference area setting device
US20160121487A1 (en) 2014-11-03 2016-05-05 Qualcomm Incorporated Communicating Configurable Instruction Sets to Robots for Controlling Robot Behavior
WO2016122840A1 (en) 2015-01-26 2016-08-04 Duke University Specialized robot motion planning hardware and methods of making and using same
EP3256292B1 (en) 2015-02-13 2022-05-11 ABB Schweiz AG A method for avoiding collisions between two robots
US10019006B2 (en) 2015-04-08 2018-07-10 University Of Maryland, College Park Surface vehicle trajectory planning systems, devices, and methods
US9687982B1 (en) 2015-05-27 2017-06-27 X Development Llc Adapting programming of a robot and/or control of the robot based on one or more parameters of an end effector of the robot
US20160357187A1 (en) 2015-06-05 2016-12-08 Arafat M.A. ANSARI Smart vehicle
US20170004406A1 (en) 2015-06-30 2017-01-05 Qualcomm Incorporated Parallel belief space motion planner
US9707681B2 (en) 2015-07-27 2017-07-18 Siemens Industry Software Ltd. Anti-collision management of overlapping robotic movements
KR101724887B1 (en) 2015-08-10 2017-04-07 현대자동차주식회사 Autonomous Driving Control Apparatus and Method for Determining Lane Change and Timing thereof Based on Analysis for Shapes and Links of Forward Road
JP6760297B2 (en) 2015-09-29 2020-09-23 ソニー株式会社 Signal processing equipment, signal processing methods and programs
KR20170044987A (en) 2015-10-16 2017-04-26 한국전기연구원 Trajectory generating method for jerk limited
KR101748632B1 (en) 2015-10-29 2017-06-20 한국과학기술연구원 Robot control system and method for planning driving path of robot
US9632502B1 (en) 2015-11-04 2017-04-25 Zoox, Inc. Machine-learning systems and techniques to optimize teleoperation and/or planner decisions
US10496766B2 (en) 2015-11-05 2019-12-03 Zoox, Inc. Simulation system and methods for autonomous vehicles
EP3171133B1 (en) 2015-11-19 2020-03-11 Sikorsky Aircraft Corporation Kinematic motion planning with regional planning constraints
US10093021B2 (en) 2015-12-02 2018-10-09 Qualcomm Incorporated Simultaneous mapping and planning by a robot
US10012984B2 (en) 2015-12-14 2018-07-03 Mitsubishi Electric Research Laboratories, Inc. System and method for controlling autonomous vehicles
US10705528B2 (en) 2015-12-15 2020-07-07 Qualcomm Incorporated Autonomous visual navigation
US10665115B2 (en) 2016-01-05 2020-05-26 California Institute Of Technology Controlling unmanned aerial vehicles to avoid obstacle collision
US10035266B1 (en) 2016-01-18 2018-07-31 X Development Llc Generating robot trajectories using a real time trajectory generator and a path optimizer
JP6576255B2 (en) 2016-01-25 2019-09-18 キヤノン株式会社 Robot trajectory generation method, robot trajectory generation apparatus, and manufacturing method
US9645577B1 (en) 2016-03-23 2017-05-09 nuTonomy Inc. Facilitating vehicle driving and self-driving
US10861338B2 (en) 2016-05-05 2020-12-08 Harman International Industries, Incorporated Systems and methods for driver assistance
US9687983B1 (en) 2016-05-11 2017-06-27 X Development Llc Generating a grasp pose for grasping of an object by a grasping end effector of a robot
US9880561B2 (en) 2016-06-09 2018-01-30 X Development Llc Sensor trajectory planning for a vehicle
US11429105B2 (en) 2016-06-10 2022-08-30 Duke University Motion planning for autonomous vehicles and reconfigurable motion planning processors
US9981383B1 (en) 2016-08-02 2018-05-29 X Development Llc Real-time trajectory generation for actuators of a robot to reduce chance of collision with obstacle(s)
US10131053B1 (en) 2016-09-14 2018-11-20 X Development Llc Real time robot collision avoidance
US10345815B2 (en) 2016-09-14 2019-07-09 Qualcomm Incorporated Motion planning and intention prediction for autonomous driving in highway scenarios via graphical model-based factorization
DE102016120763B4 (en) 2016-10-31 2019-03-14 Pilz Gmbh & Co. Kg Method for collision-free motion planning
EP3555569A1 (en) 2016-11-09 2019-10-23 Inventive Cogs (Campbell) Limited Vehicle route guidance
KR102518532B1 (en) 2016-11-11 2023-04-07 현대자동차주식회사 Apparatus for determining route of autonomous vehicle and method thereof
US10012988B2 (en) 2016-11-29 2018-07-03 Mitsubishi Electric Research Laboratories, Inc. Methods and systems for path planning using a network of safe-sets
US10296012B2 (en) 2016-12-21 2019-05-21 X Development Llc Pre-computation of kinematically feasible roadmaps
US10480947B2 (en) 2016-12-21 2019-11-19 X Development Llc Boolean satisfiability (SAT) reduction for geometry and kinematics agnostic multi-agent planning
ES2927177T3 (en) 2017-02-07 2022-11-03 Veo Robotics Inc Workspace safety monitoring and equipment control
US11541543B2 (en) 2017-02-07 2023-01-03 Veo Robotics, Inc. Dynamic, interactive signaling of safety-related conditions in a monitored environment
DE102017102749A1 (en) 2017-02-13 2018-08-16 Festo Ag Automatic trajectory generation for controlling a drive system
US10430641B2 (en) 2017-03-08 2019-10-01 GM Global Technology Operations LLC Methods and systems for object tracking using bounding boxes
KR101937269B1 (en) 2017-05-15 2019-01-14 한국생산기술연구원 Planning method for robot motion
US11014240B2 (en) 2017-09-05 2021-05-25 Abb Schweiz Ag Robot having dynamic safety zones
US10782694B2 (en) 2017-09-07 2020-09-22 Tusimple, Inc. Prediction-based system and method for trajectory planning of autonomous vehicles
EP3486612B1 (en) 2017-11-20 2020-07-01 Robert Bosch GmbH Method for generating a trajectory
US10466707B2 (en) 2017-12-22 2019-11-05 X Development Llc Planning robot stopping points to avoid collisions
ES2928250T3 (en) 2018-03-21 2022-11-16 Realtime Robotics Inc Planning the movement of a robot for various environments and tasks and improving its operation
WO2020040979A1 (en) 2018-08-23 2020-02-27 Realtime Robotics, Inc. Collision detection useful in motion planning for robotics
US10809732B2 (en) 2018-09-25 2020-10-20 Mitsubishi Electric Research Laboratories, Inc. Deterministic path planning for controlling vehicle movement
JP7394853B2 (en) 2018-12-04 2023-12-08 デューク・ユニバーシティ Devices, methods and articles that facilitate motor planning in environments with moving objects
EP3725472A1 (en) 2019-04-16 2020-10-21 Siemens Aktiengesellschaft Method for determining a trajectory of a robot
US11179850B2 (en) 2019-04-24 2021-11-23 Intrinsic Innovation Llc Robot motion planning
JP7222803B2 (en) 2019-04-25 2023-02-15 株式会社日立製作所 Trajectory planning device, trajectory planning method and program
GB2587836B (en) 2019-05-07 2021-11-10 Motional Ad Llc Systems and methods for planning and updating a vehicle's trajectory
TWI699636B (en) 2019-05-21 2020-07-21 華邦電子股份有限公司 Collaborative robot control system and method

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6004016A (en) * 1996-08-06 1999-12-21 Trw Inc. Motion planning and control for systems with multiple mobile objects
US8315738B2 (en) * 2008-05-21 2012-11-20 Fanuc Robotics America, Inc. Multi-arm robot system interference check via three dimensional automatic zones
JP2015208811A (en) * 2014-04-25 2015-11-24 ファナック株式会社 Simulation device of a plurality of robots
WO2017168187A1 (en) * 2016-03-31 2017-10-05 Siemens Industry Software Ltd. Method and system for determining optimal positioning of a plurality of robots in a simulated production environment
US20190391597A1 (en) 2018-06-25 2019-12-26 X Development Llc Robot coordination in a shared workspace

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
BARRAL D ET AL.: "The International Journal of Advanced Manufacturing Technology", vol. 17, 1 January 2001, SPRINGER, article "Simulated Annealing Combined with A Constructive Algorithm for Optimising Assembly Workcell Layout", pages: 593 - 602
LIM ZHEN YANG ET AL.: "Knowledge-based systems", vol. 120, 3 January 2017, ELSEVIER, article "Multi-objective hybrid algorithms for layout optimization in multi-robot cellular manufacturing systems", pages: 87 - 98
LONG TAO ET AL.: "IEEE International Conference on Information and Automation (ICIA", 6 June 2011, IEEE, article "Optimization on multi-robot workcell layout in vertical plane", pages: 744 - 749
See also references of EP4045240A4

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024011062A1 (en) * 2022-07-05 2024-01-11 Realtime Robotics, Inc. Robust motion planning and/or control for multi-robot environments

Also Published As

Publication number Publication date
EP4045240A4 (en) 2022-12-07
US20210220994A1 (en) 2021-07-22
TW202146189A (en) 2021-12-16
CN115003460A (en) 2022-09-02
EP4045240A1 (en) 2022-08-24
JP2023512954A (en) 2023-03-30
US11623346B2 (en) 2023-04-11
JP7489727B2 (en) 2024-05-24

Similar Documents

Publication Publication Date Title
US11623346B2 (en) Configuration of robots in multi-robot operational environment
US20200398428A1 (en) Motion planning for multiple robots in shared workspace
US11745346B2 (en) Motion planning of a robot storing a discretized environment on one or more processors and improved operation of same
Xidias et al. Time-optimal task scheduling for two robotic manipulators operating in a three-dimensional environment
US20240009845A1 (en) Systems, methods, and user interfaces employing clearance determinations in robot motion planning and control
Andreevich et al. Designing algorithms for service robots on the basis of mivar approach
TW202415506A (en) Robust motion planning and/or control for multi-robot environments
WO2024073245A1 (en) Automated configuration of robots in multi-robot operational environment optimizing for wear and other parameters
US20230342967A1 (en) Configuration of robot operational environment including layout of sensors
Agrawal et al. Automatic disassembly sequence planning and optimization
Vannoy et al. Real-time adaptive and trajectory-optimized manipulator motion planning
US20230286156A1 (en) Motion planning and control for robots in shared workspace employing staging poses
Zubizarreta et al. Real-time environment design for testing advanced control approaches in parallel robots: Application to the 5R parallel robot prototype
Yasuda Design and implementation of Petrinet based distributed control architecture for robotic manufacturing systems
De Winter et al. Proud: A hybrid model-based/learning approach for symbolic-level robot programming by user demonstration
WO2023196240A1 (en) Motion planning and control for robots in shared workspace employing look ahead planning
Kwon et al. Conformalized Reachable Sets for Obstacle Avoidance With Spheres
Yasuda Design and distributed control of robotic manufacturing systems based on concurrent process modeling
Zumpe et al. Semi-automated task-based synthesis and design of serial robotic systems
Yasuda Hierarchical and distributed control of robotic manufacturing processes based on Petri nets
Yasuda Implementation of distributed control architecture for robotic manufacturing systems using Petri nets
Jafarian et al. Artificial Neural Networks: A Learning Collision Detection Approach for Industrial Robot Manipulators
Jacak et al. Automatic programming in CIM based on intelligent tools

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 21744840

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2021744840

Country of ref document: EP

Effective date: 20220519

ENP Entry into the national phase

Ref document number: 2022544106

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE