Method and system for facilitating concurrent simulation of multiple robotic tasks

By pausing and restoring the execution of the robot logic program, combined with the inspection and recovery mechanism of the subset of operands, the problem of low simulation performance of industrial robots on public computers is solved, and high-performance and real-time concurrent simulation of multi-robot tasks is achieved.

CN115004189BActive Publication Date: 2024-12-31SIEMENS INDUSTRY SOFTWARE LTD
View PDF 8 Cites 0 Cited by

Patent Information

Application Number
CN202080093503.1
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Filing Date
2020-01-20
Publication Date
2024-12-31
Estimated Expiration
2040-01-20

AI Technical Summary

Technical Problem

Existing industrial robot simulation technologies are low-performance, cumbersome and cannot provide real-time high-performance simulation when executed on public computers, especially when multiple robot tasks are executed concurrently, making it difficult to achieve real-time performance and efficient simulation.

Method used

During the concurrent execution of multiple robot motion programs and logic programs of multiple robots, the execution of the logical program is suspended and resumed, and whether the operand subset is modified is collected and checked, and if not modified, the execution is suspended until one of the operand subset is Recover during modification to realize concurrent simulation of robot tasks.

Benefits of technology

Achieve acceptable performance and near real-time virtual simulation on public computers, saving CPU time, being able to truly simulate multiple tasks of multiple robots, avoiding the connection of external virtual robot controllers, providing packaging characteristics and high Performance simulation results.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN115004189B_ABST
    Figure CN115004189B_ABST
Patent Text Reader

Abstract

A system and method for facilitating concurrent simulation of multiple tasks for multiple robots in a virtual environment, wherein at least one virtual robot is expected to concurrently simulate a robot motion task and a set of robot logic tasks by concurrently executing a corresponding robot motion program and a set of corresponding robot logic programs on a set of operands. During the concurrent execution of multiple robot motion programs and multiple sets of robot logic programs for the multiple robots, execution of at least one given logic program is suspended and resumed by repeating the following: executing a run of the given logic program; collecting a subset of operands used in the executed run; pausing execution of the given logic program if none of the collected operands are modified in the execution of the run and resuming execution of the given logic program when one of the collected operands is modified.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present disclosure relates generally to computer-aided design, visualization, and manufacturing ("CAD") systems, product lifecycle management ("PLM") systems, product data management ("PDM") systems, and similar systems that manage data about products and other items (collectively, "product data management" systems or PDM systems). More particularly, the present disclosure relates to production environment simulation. Background Art

[0002] In a robotic cell of a manufacturing facility, it is often necessary for each physical industrial robot to perform multiple tasks in parallel. Such multiple parallel tasks of a single robot usually consist of a single primary robotic motion task and several secondary robotic logic tasks. As used herein, the term "motion task" means a primary robotic task that usually includes a set of kinematic operations and a set of logic operations. As used herein, the term "logic task" means a secondary robotic logic task that includes a set of logic operations without kinematic operations.

[0003] Physical robots perform a number of different robotic tasks by running corresponding robot programs on a set of operands on their own robot controller's threads or processes. The code of such robot programs is usually written in a robot programming language, which is usually native to the vendor and model of a specific robot. Examples of such native robot languages ​​include, but are not limited to, native robot languages ​​supported by robot vendors (such as Kuka, ABB, FANUC).

[0004] A simulation software application for an industrial robot should preferably meet the following requirements: it can simulate all the different multiple tasks performed by multiple physical industrial robots in a shop floor.

[0005] This requirement is particularly important for virtual commissioning systems that implement production optimization and equipment verification.

[0006] In order to simulate all multiple robot tasks concurrently, a simulation system is required to concurrently execute all robot programs of all multiple robot controllers of the production cell.

[0007] Since today’s production cells do include more and more robots, the ability to simulate complete robotic cells with real-time performance becomes critical.

[0008] Robotic simulations are expected to be as realistic as possible by mirroring the execution of all robotic tasks of the included physical robots and providing high performance in terms of execution time by achieving a virtual time as close to real time as possible.

[0009] In practice, having a high performance simulation execution time is important, for example, to achieve synchronization with the PLC running code and to prevent the PLC code from exiting due to a "timeout" error.

[0010] Therefore, there is a need for a robot simulation application to realistically simulate multiple robot tasks for multiple robots by executing multiple main robot motion programs and multiple sets of robot logic programs in a concurrent and high-performance manner.

[0011] For complex industrial cells with dozens of robots, each performing dozens of tasks, this requirement means running hundreds or more robot programs with high-performance robotic simulations.

[0012] Nowadays, high performance for simulating such complex robotic cells can be achieved by executing hundreds of parallel robotic programs on several CPUs, computer clusters or supercomputers.

[0013] However, it is common today that industrial robot simulations are mostly performed on computers with public resources rather than on supercomputers.

[0014] Therefore, for cells with multiple robots, robot simulations today on public computers are usually performed with the help of one or more of the following expedients:

[0015] -Only execute the robot motion program and ignore the robot logic program;

[0016] -Execute robot motion programs while manually modeling robot logic tasks by rewriting their logic program native code using logic blocks;

[0017] -Executes robot motion programs while connected to an external Virtual Robot Controller (“VRC”) capable of performing robot logic tasks.

[0018] Unfortunately, current robotics simulation techniques on public computers have drawbacks: they are cumbersome and require workarounds, introduce simulation errors, and / or fail to provide realistic and high-performance simulations.

[0019] Therefore, improved techniques are needed. Summary of the invention

[0020] Various disclosed embodiments include methods, systems, and computer-readable media for facilitating concurrent simulation of multiple tasks for multiple robots in a virtual environment, wherein at least one virtual robot is configured to concurrently simulate a robot motion task and a set of robot logic tasks by concurrently executing a corresponding robot motion program and a corresponding set of robot logic programs on a set of operands. A method includes: during concurrent execution of multiple robot motion programs and multiple sets of robot logic programs for multiple robots, pausing and resuming execution of at least one given logic program by repeatedly performing the following: executing a run of the given logic program; collecting a subset of operands used in the executed run; pausing execution of the given logic program if none of the collected operands were modified in the execution of the run and resuming execution of the given logic program when one of the collected operands is modified.

[0021] The features and technical advantages of the present disclosure have been summarized quite extensively above so that those skilled in the art can better understand the following detailed description. Hereinafter, the other features and advantages of the subject matter forming the claims of the present disclosure will be described. It will be appreciated by those skilled in the art that they can easily use the disclosed concepts and specific embodiments as the basis for modifying or designing other structures for achieving the same purpose of the present disclosure. It will also be appreciated by those skilled in the art that such equivalent constructions will not depart from the spirit and scope of the present disclosure in its broadest form.

[0022] Before proceeding to the following detailed description, it may be helpful to set forth definitions of certain words or phrases used throughout this patent document: the terms "include" and "comprising" and their derivatives mean including but not limited to; the term "or" is inclusive, meaning and / or; the phrases "associated with" and "associated with" and their derivatives may mean including, included within, interconnected with, containing, contained within, connected to or connected with, coupled to or coupled with, communicable with, cooperating with, interlaced, juxtaposed, proximate, bound to or bound with, having, having the characteristics of, and the like; and the term "controller" means any device, system, or portion thereof that controls at least one operation, whether such device is implemented in hardware, firmware, software, or some combination of at least two thereof. It should be noted that the functionality associated with any particular controller may be centralized or distributed, whether local or remote. Definitions of certain words and phrases are provided throughout this patent document, and those of ordinary skill in the art will understand that such definitions apply in many, if not most, instances to prior and future uses of such defined words and phrases. While some terms may include a wide variety of embodiments, the appended claims may expressly limit these terms to specific embodiments. BRIEF DESCRIPTION OF THE DRAWINGS

[0023] For a more complete understanding of the present disclosure and advantages thereof, reference is now made to the following description taken in conjunction with the accompanying drawings, wherein like reference numerals represent like objects, and wherein:

[0024] Figure 1 A block diagram of a data processing system is shown in which embodiments may be implemented;

[0025] Figure 2 A screenshot showing an example of a robot program viewer;

[0026] Figure 3 Screen shot of an exemplary viewer showing robot parameters and robot signals;

[0027] Figure 4 A sequence diagram illustrating an example of concurrent simulation of multiple robot tasks of a robot according to the disclosed embodiments;

[0028] Figure 5 A flow chart for facilitating concurrent simulation of multiple tasks for multiple robots in a virtual environment is shown in accordance with disclosed embodiments. DETAILED DESCRIPTION

[0029] Discussed below Figures 1 to 5 The various embodiments used to describe the principles of the present disclosure in this patent document are merely illustrative and should not be construed in any way to limit the scope of the present disclosure. It will be appreciated by those skilled in the art that the principles of the present disclosure can be implemented in any appropriately arranged device. The numerous innovative teachings of the present application will be described with reference to exemplary non-limiting embodiments.

[0030] Prior techniques for facilitating concurrent simulation of multiple robotic tasks have performance deficiencies on common computers.Implementations disclosed herein provide numerous technical benefits, including but not limited to the following examples.

[0031] By way of embodiments, a virtual simulation system running on a common computer is permitted to concurrently simulate multiple robotic tasks for multiple robots with acceptable performance.

[0032] By way of implementation, the virtual simulation system is capable of realistically simulating multiple robotic tasks for multiple robots in an industrial cell with near real-time performance.

[0033] By way of embodiments, a virtual simulation system is facilitated to concurrently execute multiple robot programs written in their own original native code with acceptable real-time performance.

[0034] Embodiments save CPU time in the case of robot simulations of multiple concurrent robot logic programs.

[0035] By way of embodiments, a true virtual commissioning simulation can be run on a robotic simulation platform, such as Siemens' Process Simulation, away from the robot program written in its original native coding language.

[0036] Embodiments provide packaging features by enabling the entire simulation to be run on a simulation platform such as a process simulation without the need for additional external VRC connections.

[0037] Figure 1 A block diagram of a data processing system 100 is shown in which embodiments may be implemented, for example, as a PDM system specifically configured by software or otherwise to perform the processes described herein, and in particular, as each of the multiple interconnect and communication systems described herein. The data processing system 100 shown may include a processor 102 connected to a secondary cache / bridge 104, which in turn is connected to a local system bus 106. The local system bus 106 may be, for example, a peripheral component interconnect (PCI) architecture bus. Also connected to the local system bus in the example shown is a main memory 108 and a graphics adapter 110. The graphics adapter 110 may be connected to a display 111.

[0038] Other peripheral devices such as a local area network (LAN) / wide area network / wireless (e.g., WiFi) adapter 112 may also be connected to the local system bus 106. An expansion bus interface 114 connects the local system bus 106 to an input / output (I / O) bus 116. The I / O bus 116 connects to a keyboard / mouse adapter 118, a disk controller 120, and an I / O adapter 122. The disk controller 120 may be connected to a memory 126, which may be any available suitable machine or machine-readable storage medium, including but not limited to non-volatile hard-coded type media such as read-only memory (ROM) or electrically erasable programmable read-only memory (EEPROM), magnetic tape storage, and user-recordable type media such as floppy disks, hard drives, and compact disk read-only memories (CD-ROMs) or digital versatile disks (DVDs), as well as other known optical, electrical, or magnetic storage devices.

[0039] Also connected to I / O bus 116 in the illustrated example is an audio adapter 124 to which speakers (not shown) may be connected for playing sounds. A keyboard / mouse adapter 118 provides a connection for a pointing device (not shown) such as a mouse, trackball, track pointer, touch screen, or the like.

[0040] It will be understood by those of ordinary skill in the art that Figure 1 The hardware shown may vary for a particular implementation. For example, other peripherals such as optical disk drives may be used in addition to or in place of the hardware shown. The examples shown are provided for illustration purposes only and are not meant to imply architectural limitations to the present disclosure.

[0041] The data processing system according to the embodiment of the present disclosure may include an operating system using a graphical user interface. The operating system allows multiple display windows to be presented simultaneously in the graphical user interface, wherein each display window provides an interface to different applications or provides an interface to different instances of the same application. The cursor in the graphical user interface can be manipulated by the user through a pointer device. The position of the cursor can be changed and / or an event such as clicking a mouse button can be generated to drive a desired response.

[0042] If appropriately modified, one of a variety of commercial operating systems may be used, such as Microsoft Windows TM ), a product of Microsoft Corporation located in Redmond, Washington. Modify or create an operating system based on the disclosure described herein.

[0043] LAN / WAN / wireless adapter 112 can be connected to network 130 (not part of data processing system 100), which can be any public or private data processing system network or combination of networks known to those skilled in the art, including the Internet. Data processing system 100 can communicate with server system 140 via network 130, which is also not part of data processing system 100, but server system 140 can be implemented as a separate data processing system 100, for example.

[0044] In an exemplary embodiment, the main algorithmic steps for facilitating concurrent simulation of multiple tasks for multiple robots in a virtual environment are shown below.

[0045] For the purpose of illustration, it is assumed that the exemplary embodiment involves a plurality of 30 industrial robots R i In a simulated scenario of an industrial cell (not shown), each robot is expected to concurrently execute a single motion task MT i and a set of 20 logical tasks LT i,j The different tasks are composed of, where i = 1, .., 30 and j = 1, .., 20. The concurrent simulation of multiple tasks of 30 robots is performed by concurrently executing the corresponding 30 robot motion programs and 600 logic programs of the robots on the set of operands.

[0046] By way of embodiment, a software tool is provided for automatically deciding during simulation when a robot logic program has no real impact on the overall simulation and can therefore be paused until a relevant impact condition occurs. The automatic software tool decision is based on analysis of the robot program and on predictions of robot simulation events, taking into account the used operands related to existing robot signals, parameters and / or variables.

[0047] During the concurrent and continuous execution of the plurality of 630 robotic programs, concurrent simulation of the corresponding 630 robotic tasks is facilitated by pausing and resuming execution of one or more given logic programs by performing the following sub-steps:

[0048] 1) Execute the given logic program;

[0049] 2) collect a subset of the operands used in the executed run;

[0050] 3) If none of the collected operands are modified during execution, pausing execution of the given logic program, and resuming program execution when one of the collected operands is modified, and entering sub-step 4);

[0051] 4) Return to sub-step 1).

[0052] Figure 2 A screenshot showing an example of a robot program viewer, and Figure 3 Screen shot showing an example of a viewer of robot parameters and robot signals. Figure 2 and Figure 3 The screenshots show examples of instructions for robot logic and motion programs and examples of operands that are commonly involved in robot programs. In fact, each robot logic program can be viewed as a container for logic instructions for operands. In computer programming, an operand is a term used to describe any object that can be manipulated. Examples of operands in a robot program include, but are not limited to, robot variables, robot parameters, and robot signals. Note that even though the robot R h Specific robot logic tasks LT h,k Excluding any kinematic operations, this particular logic task LT h,k The execution of the hkinematic operations. For example, the robot logic task execution may be a continuous check of a human motion tracking sensor which, after a certain sensor input, may lead to the activation of a safety stop of the robot due to the detection of the presence of a person. Such an interdependency between the robot logic tasks and the robot motion tasks may be obtained, for example, by having instructions within a specific robot logic program that modify operand values, which in turn cause the execution of robot kinematic instructions in the motion robot program.

[0053] Examples of such interdependent interactions are Figure 2 , where an example screenshot 200 of the program viewer is shown. On the left window 201, the logic instructions of a code example of the robot logic program "INIT_Markers" for marker initialization are shown. On the right window 202, the code part of an example of a robot motion program "Main Program" containing the logic instructions and the kinematic instruction "Call Production Start" at line 17 is shown. Figure 2 As shown, the logic task 201 has an effect 203 on the execution of the robot motion task 202, specifically, when operand RO[2] is set to "ON" during the execution of the logic program, then the execution of the robot motion program moves forward "wait for RO[2] = ON".

[0054] Note that several combinations of interdependent interactions can be conveniently anticipated between different multi-robot tasks. For example, during execution, robot R 3 Logical tasks LT 3,4 The robot R can be controlled by PLC 7 Logical tasks LT 7,2 Make an impact, while the robot R 7 Logical tasks LT 7,2 It is also possible that the same robot R 7 The movement task MT 7 In another example, during execution, the robot R 8 The movement task MT 8 The robot R can be controlled by PLC 20 The movement task MT 20 Make an impact, while the robot R 20 The movement task MT 20 The robot R can also be controlled by PLC 18 Logical tasks LT 18,2 have an impact.

[0055] During the concurrent execution of the corresponding multiple robot programs, the same robot R i Multiple robot tasks MT i ,LTi,j By Robot R i The values ​​of the operands interact with each other, as will be seen in the reference Figure 4 The exemplary embodiment of FIG.

[0056] Note that in the virtual commissioning, for a true simulation validation, the user connects the PLC to synchronize the robots so that the PLC affects the entire simulation result through their signal exchange. Each robot input signal of any robot is connected to the PLC, which sends output signals back to the robot according to its PLC code.

[0057] Figure 3 Screen shot 300 showing exemplary viewers 301 , 302 of robot parameters and robot signals.

[0058] In the robot parameter viewer 301 , the robot parameters shown may be local parameters, eg only within a single running program, or global parameters, eg across different robot programs for the same robot.

[0059] In the robot signal viewer 302 , signal data that can be exchanged externally between robots via the PLC and that can be used for internal use of the robots are shown.

[0060] Figure 4 A sequence diagram illustrating an example of concurrent simulation of multiple robotic tasks of a robot according to disclosed embodiments.

[0061] exist Figure 4 In the sequence diagram of , an implementation example of concurrent simulation of one robot motion task 411 and two robot logic tasks 412 , 413 over time—along the x-axis—is shown.

[0062] The dashed line segment 401 within the continuous line of the logical task 412 indicates that: at the corresponding time interval t 2 to 3 During this time, the execution of the corresponding logic program is suspended, for example, via a sleep mode, and then when a value change occurs with respect to a related operand, for example, via a wakeup event 429, the execution of the corresponding logic program is resumed. For other robot tasks 412, 413, the system does not invoke a sleep mode, so the corresponding lines are depicted as continuous.

[0063] In the originally depicted time interval, at time t 1 Previously, the system ran execution of all three programs concurrently without any pauses. Note that along all depicted time frames, the program of the robot motion task 411 has been executing, just as in a conventional simulation, without any pauses, while the program of the robot logic task 413 may be paused at a later time period (not shown) if certain conditions occur according to the embodiment.

[0064] During program execution of these three robot tasks 411 , 412 , 413 , there are communication exchanges 421 , .. , 428 with the operand container 402 , which comprises the set of all operands related to all robot programs for this particular robot.

[0065] Examples of communication exchanges include, but are not limited to: reading operand values, modifying operand values, registering and unregistering events occurring on operands, actions on operand value changes, and other exchanges with the set of all operands in the operand container 402. For both robot logic tasks 412, 413, during each program execution run, the operands used are collected and checked if they were modified during the execution run, where the operands may be modified by the logic program itself, by another program of the same specific robot, or by external influences (e.g. signals from a PLC).

[0066] At time interval t 1 to 2 In the example, it is found that: for task 411, there is no change to the subset of used operands during the program execution run, so the system puts the program into sleep mode 401, registers 428 the change to the subset of used operands, and wakes up the program 429 to run again from sleep mode upon event 430 of a change to at least one of the operands, and unregisters the subset of used operands.

[0067] The exemplary embodiments disclosed herein relate to one robot motion task and two robot logic tasks of the same robot. In other embodiments, more robot motion programs and more robot logic tasks can be envisioned for multiple robots.

[0068] In another exemplary embodiment, the algorithm includes the following exemplary main steps: In all motion programs and logic programs (where Figure 4 During the entire simulation (only three of them are shown in FIG), for each given logic program, the data processing system collects the simulation execution run S j The subset O of the operands used in j , when no change has occurred to any operand value, the system registers subset O j 401 until a change in one of the operands of the given logic program occurs. j The system then wakes up the given logic program and unregisters the subset O. jDuring the entire concurrent and continuous simulation, the system continuously repeats the steps for checking operand conditions regarding whether and when the logic program can be put to sleep and the subsequent actions to be taken. In this embodiment, the system executes a new simulation run S k The given logic program is executed again in the simulation, as previously outlined, and the system collects the data associated with this new simulation run S k The associated new subset of operands used O k , and then, when necessary, perform the sleep and logout / login actions again (not shown).

[0069] Note that for each identical logic program, in each different simulation execution run S j , S k In the above example, we can collect other operand subsets O used. j , O k , because in a particular simulation run S h “Which” subset of operands to use may also depend on other surrounding conditions of the entire simulation. Therefore, without executing the entire simulation, a priori analysis of the logic program code will not be sufficient to run S for each specific simulation execution. j , S k Provides information about the relevant operand subset O j , O k correct information.

[0070] Examples illustrating the determination of different used operand subsets are provided below in Table 1.

[0071]

[0072] Table 1 - Examples of logic programs and different collected operand subsets.

[0073] Table 1 includes an example of a logic program pseudocode LPP in which, during simulation, two different subsets of used operands are collected: in the first case, when the "ELSE" condition is met, the collected subset of used operands is {DI

[20] , DI

[21] , DI

[22] , RI[1], DO

[48] }, and in the second case, when the "IF" condition is met, the collected subset of used operands is {DI

[20] , DI

[21] , DI

[22] , RI[1], DO

[48] , DI[1], DI[2]}.

[0074] In fact, during the simulation execution run of the first case, the subset of operands used does not include operands DI[3], DI[4], DI[5] because the "END" operation (DI[1]AND DI[2]) returns a "TRUE" result, so there is no need to process the remaining operands DI[3], DI[4], DI[5] of the "OR operation", so DI[3], DI[4], DI[5] are unused operands.

[0075] In another exemplary embodiment, the main algorithmic steps for facilitating concurrent simulation of multiple tasks for multiple robots in a virtual environment are shown below: Assume that there are multiple robots, each of which is expected to run a robot motion program and a set of robot logic programs.

[0076] During the entire simulation, the system executes the program for each robot motion task as usual without any changes. For each robot logic task, the system will continuously run the following loop during the entire simulation:

[0077] L1) Execute the robot logic task once;

[0078] L2) collects all operands used during its simulation;

[0079] L3) during its simulation, checks whether any of the used operands have been changed;

[0080] L4) If the operand used is not changed:

[0081] L4.1) Each operand used in register L2)

[0082] L4.2) Put the logic program into sleep mode;

[0083] L4.3) wake up the logic program when any event occurs due to a change in the value of one of the registered operands;

[0084] L4.4) Cancel each operand in item L2

[0085] L4.5) go to L1).

[0086] In an embodiment, for a logic program including a large number of instructions to be executed, the number of instructions executed in each simulation execution interval may be advantageously reduced by applying one or any combination of the following constraints:

[0087] - execute a predefined maximum number of instructions;

[0088] - assign a predefined maximum CPU time interval;

[0089] - Dynamically balance the load based on other logic programs being executed.

[0090] An example of a pseudo code for implementing the main steps of the embodiment algorithm is shown below in Table 2.

[0091]

[0092] Table 2: Pseudocode of the main steps of the implementation algorithm.

[0093] The pseudo code in Table 2 relates to the following main steps of the algorithm of the exemplary embodiment: collecting the used operands of the logic task, checking whether the collected used operands are modified, and if not modified, setting the logic task to sleep by registering a subset of the used operands, and calling a wake-up event.

[0094] Therefore, an embodiment advantageously provides an automatic tool that is able to decide during simulation when / which robot logic programs have no actual impact in the entire robot simulation based on both the analysis of the robot programs and their operands and based on robot simulation events, so that such robot logic programs can be put to sleep and awakened only when a modification of the used operand values ​​occurs.

[0095] Execution of a suspended logic program is resumed when the value of one of the operands it uses changes.

[0096] In an embodiment, execution of the suspended logic program may be triggered by using several different implementation options for detecting a change in value of one of the used operands. Examples include, but are not limited to, one or more of the following implementation options:

[0097] - a single event for each single used operand of the subset;

[0098] - a single event for all used operands of a subset;

[0099] - Iterate over all operands of the subset and check if any of their values ​​have changed

[0100] -Having a changed bit (dirty bit) for indicating when the operand value is changed, turning on the changed bit is a gate control for deciding whether to resume execution of the suspended logic task.

[0101] In an embodiment, one or more logic programs are coded in the native language of the corresponding physical robot.

[0102] Embodiments may be advantageously applied to multi-core, multi-threaded and / or multi-process architectures.

[0103] Embodiments may be implemented by different types of system configurations. Examples of system configurations include, but are not limited to, system configurations based on a single simulation module that executes all robot programs to provide the entire simulation and system configurations that include two different simulation modules that interact with each other to provide the entire simulation. In the case of a configuration with two different simulation modules, the two different modules are a robot kinematics simulation module for executing all robot motion programs as is and a robot logic simulation module for executing all robot logic tasks with execution pauses as taught in the embodiments in an optimized manner. In other embodiments, hybrid configurations may be envisioned, such as where execution optimization is performed only on a selected subset of all logic programs.

[0104] Figure 5 A flowchart 500 is shown of a method for facilitating concurrent simulation of multiple tasks for multiple robots in a virtual environment according to the disclosed embodiments. Such a method may be performed, for example, by the above-described Figure 1 The present invention is performed by the system 100, but the "system" in the following process can be any device configured to perform the process.

[0105] In the virtual environment, at least one robot among the plurality of robots is expected to concurrently simulate a robot motion task and a set of robot logic tasks by concurrently executing a corresponding robot motion program and a set of corresponding robot logic programs on a set of operands.

[0106] At act 505 , during concurrent execution of multiple robot motion programs and multiple sets of robot logic programs for multiple robots, execution of at least one given logic program is paused and resumed by repeatedly performing the acts in acts 510 to 525 .

[0107] At act 510, execution of a given logic program is performed.

[0108] At act 515, a subset of operands used in the executed run is collected.

[0109] At act 520, it is checked whether one of the collected operands has been modified during the execution run.

[0110] At act 525, execution of the given logic program is suspended until one of the collected operands is modified.

[0111] In an embodiment, the trigger for resuming the suspended logic program execution may advantageously be selected from the group consisting of:

[0112] - a single event for each single use of the subset where the value of an operand changes;

[0113] - a single event for which the value of all used operands of a subset changes;

[0114] - a check for detecting a change of value of an operand for each use of the subset;

[0115] - changes in the modified bits that define the change in the operand value;

[0116] - Any other implementation for detecting modification of one of the operands of the used subset of operands.

[0117] In an embodiment, the suspension and resumption of execution of a given logic program may be conveniently performed by the following steps:

[0118] - register events about a subset of collected operands;

[0119] -Put a given logic program into sleep mode;

[0120] - wake up a given logic program from sleep mode if an event occurs with respect to a registered operand;

[0121] - Unregister a subset of registered operands.

[0122] An embodiment of a method for facilitating concurrent simulation of multiple tasks of multiple robots in a virtual environment by a data processing system, wherein at least one virtual robot is expected to concurrently simulate a robot motion task and a set of robot logic tasks by concurrently executing a corresponding robot motion program and a set of corresponding robot logic programs on a set of operands, the method comprising the steps of: pausing and resuming execution of at least one given logic program during concurrent execution of multiple robot motion programs and multiple sets of robot logic programs of the multiple robots by repeatedly performing the following sub-steps:

[0123] 1) Execute the given logic program;

[0124] 2) collect a subset of the operands used in the executed run;

[0125] 3) If none of the collected operands are modified during the execution run, pausing the execution of the given logic program and resuming the execution of the given logic program when one of the collected operands is modified.

[0126] Of course, those skilled in the art will recognize that certain steps in the above-described processes may be omitted, may be performed simultaneously or sequentially, or may be performed in a different order unless specifically indicated or required by the sequence of operations.

[0127] Those skilled in the art will recognize that, for simplicity and clarity, the entire structure and operation of all data processing systems suitable for use with the present disclosure are not shown or described herein. Instead, only as many data processing systems as are unique to the present disclosure or required for understanding the present disclosure are shown and described. The remaining structure and operation of the data processing system 100 may conform to any of a variety of current implementations and practices known in the art.

[0128] It is important to note that while the present disclosure includes a description in the context of a fully functional system, those skilled in the art will appreciate that at least portions of the present disclosure can be distributed in the form of instructions contained in any of a variety of forms of machine-usable, computer-usable or computer-readable media, and that the present disclosure applies equally regardless of the particular type of instruction or signal bearing medium or storage medium used to actually perform the distribution. Examples of machine-usable / readable or computer-usable / readable media include: non-volatile hard-coded type media such as read-only memory (ROM) or electrically erasable programmable read-only memory (EEPROM), and user-recordable type media such as floppy disks, hard drives, and compact disk read-only memory (CD-ROM) or digital versatile disks (DVD).

[0129] Although the exemplary embodiments of the present disclosure have been described in detail, those skilled in the art will understand that they may make various changes, substitutions, alterations and modifications as disclosed herein without departing from the spirit and scope of the disclosure in its broadest form.

[0130] Nothing in the description in this application should be construed as implying that any particular element, step, or function is an essential element that must be included in the claims scope: the scope of patented subject matter is limited only by the allowed claims.

Claims

1. A method for facilitating concurrent simulation of multiple tasks by multiple robots in a virtual environment by a data processing system, wherein: At least one virtual robot is configured to concurrently simulate a robot motion task and a set of robot logic tasks by concurrently executing a corresponding robot motion program and a set of corresponding robot logic programs on a set of operands; the method comprising the following steps: - during the concurrent execution of the plurality of robot motion programs and the plurality of sets of robot logic programs of the plurality of robots, pausing and resuming the execution of at least one given logic program by repeatedly executing the following sub-steps: 1) Execute the operation of the given logic program; 2) collect a subset of the operands used in the executed run; 3) pausing execution of the given logic program if none of the collected operands are modified during execution, and resuming execution of the given logic program when one of the collected operands is modified, Wherein, the trigger for resuming the execution of the suspended logic program is selected from the group consisting of: - a single event of a change in value of an operand for each single use of said subset; - a single event for which the value of all used operands of the subset changes; - a check for detecting a change of value of an operand for each use of said subset; - changes in the modified bits that define the change in the operand value; - Any other implementation for detecting a modification of one of the operands of a used subset of operands, wherein, during concurrent execution of said plurality of robot motion programs and said plurality of sets of robot logic programs of said plurality of robots, a plurality of tasks of the same robot interact with each other through correlated changes of the values ​​of the operands of the robot.

2. The method according to claim 1, wherein: The suspension and resumption of execution of the given logic program in sub-step 3) includes the following: - register events about a subset of collected operands; - putting the given logic program into sleep mode; - waking up said given logic program from said sleep mode if an event occurs with respect to said registered operand; - Unregister a subset of registered operands.

3. A data processing system comprising: processor; as well as The data processing system is specifically configured to: - During concurrent execution of multiple robot motion programs and multiple sets of robot logic programs for multiple robots, pausing and resuming execution of at least one given logic program by repeatedly performing: 1) Execute the operation of the given logic program; 2) collect a subset of the operands used in the executed run; 3) pausing execution of the given logic program if none of the collected operands are modified during execution, and resuming execution of the given logic program when one of the collected operands is modified, Wherein, the trigger for resuming the execution of the suspended logic program is selected from the group consisting of: - a single event of a change in value of an operand for each single use of said subset; - a single event for which the value of all used operands of the subset changes; - a check for detecting a change of value of an operand for each use of said subset; - changes in the modified bits that define the change in the operand value; - Any other implementation for detecting a modification of one of the operands of a used subset of operands, wherein, during concurrent execution of said plurality of robot motion programs and said plurality of sets of robot logic programs of said plurality of robots, a plurality of tasks of the same robot interact with each other through correlated changes of the values ​​of the operands of the robot.

4. The data processing system according to claim 3, specifically configured to suspend and resume the execution of the given logic program by: - register events about a subset of collected operands; - putting the given logic program into sleep mode; - waking up said given logic program from said sleep mode if an event occurs with respect to said registered operand; - Unregister a subset of registered operands.

5. A non-transitory computer readable medium encoded with executable instructions that, when executed, cause one or more data processing systems to: - During concurrent execution of multiple robot motion programs and multiple sets of robot logic programs for multiple robots, pausing and resuming execution of at least one given logic program by repeatedly performing: 1) Execute the operation of the given logic program; 2) collect a subset of the operands used in the executed run; 3) if none of the collected operands is modified during execution, pausing execution of the given logic program, and when one of the collected operands is modified, resuming execution of said given logic program, in, The trigger for resuming the suspended logic program execution is selected from the group consisting of: - a single event of a change in value of an operand for each single use of said subset; - a single event for which the value of all used operands of the subset changes; - a check for detecting a change of value of an operand for each use of said subset; - changes to the changed bits that define the change in the operand value, wherein, during concurrent execution of the plurality of robot motion programs and the plurality of sets of robot logic programs of the plurality of robots, a plurality of tasks of the same robot interact with each other through related changes in the values ​​of operands of the robot; - Any other implementation for detecting modification of one of the operands of the used subset of operands.

6. The non-transitory computer readable medium of claim 5, wherein: The execution of the given logic program is suspended and resumed by: - register events about a subset of collected operands; - putting the given logic program into sleep mode; - waking up said given logic program from said sleep mode if an event occurs with respect to said registered operand; - Unregister a subset of registered operands.

Citation Information

Patent Citations

  • Soft PLC module of open type soft numerical control system

    CN101226385A

  • Device for a networked control system

    CN101606129A

  • Robot training demonstrator based on VR

    CN107571271A

  • Virtual debugging system based on iOpenWorks

    CN109814478A

  • Method and system for simulating a robotic program of an industrial robot

    CN110235131A