WO2021205776A1 - シミュレーションのためのプログラムおよび装置 - Google Patents

シミュレーションのためのプログラムおよび装置 Download PDF

Info

Publication number
WO2021205776A1
WO2021205776A1 PCT/JP2021/007610 JP2021007610W WO2021205776A1 WO 2021205776 A1 WO2021205776 A1 WO 2021205776A1 JP 2021007610 W JP2021007610 W JP 2021007610W WO 2021205776 A1 WO2021205776 A1 WO 2021205776A1
Authority
WO
WIPO (PCT)
Prior art keywords
program
simulation
collision
group
robot
Prior art date
Application number
PCT/JP2021/007610
Other languages
English (en)
French (fr)
Inventor
はる奈 大貫
Original Assignee
オムロン株式会社
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by オムロン株式会社 filed Critical オムロン株式会社
Priority to US17/915,005 priority Critical patent/US20230153486A1/en
Priority to CN202180022935.8A priority patent/CN115335811A/zh
Priority to EP21785472.8A priority patent/EP4134918A4/en
Publication of WO2021205776A1 publication Critical patent/WO2021205776A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T19/00Manipulating 3D models or images for computer graphics
    • G06T19/20Editing of 3D images, e.g. changing shapes or colours, aligning objects or positioning parts
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/20Design optimisation, verification or simulation
    • 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/1671Programme controls characterised by programming, planning systems for manipulators characterised by simulation, either to verify existing program or to create and verify new program, CAD/CAM oriented, graphic oriented programming systems
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/18Numerical control [NC], i.e. automatically operating machines, in particular machine tools, e.g. in a manufacturing environment, so as to execute positioning, movement or co-ordinated operations by means of programme data in numerical form
    • G05B19/406Numerical control [NC], i.e. automatically operating machines, in particular machine tools, e.g. in a manufacturing environment, so as to execute positioning, movement or co-ordinated operations by means of programme data in numerical form characterised by monitoring or safety
    • G05B19/4069Simulating machining process on screen
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • 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
    • 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/40317For collision avoidance and detection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/21Collision detection, intersection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2219/00Indexing scheme for manipulating 3D models or images for computer graphics
    • G06T2219/20Indexing scheme for editing of 3D models
    • G06T2219/2008Assembling, disassembling

Definitions

  • the present disclosure relates generally to simulation programs, and more specifically to techniques for dynamically switching collision detection settings during simulation execution.
  • simulation has been applied to various technical fields.
  • the simulation is also used for checking the operation of machines designed by CAD (Computer Aided Design) software, or verifying the FA (Factory Automation) line including these machines.
  • CAD Computer Aided Design
  • FA Vectory Automation
  • Patent Document 1 states, "According to a control program, it is handled by a virtual machine corresponding to a machine in a virtual space and is based on model data of a virtual object corresponding to the object. Then, the command value for moving the virtual machine is calculated, the movement of the virtual machine according to the calculated command value is calculated, and the movement of the virtual object moved by the calculated movement of the virtual machine is calculated and calculated. A virtual space image obtained when the movement of a virtual machine or a virtual object is virtually photographed is generated, and a command value is calculated based on the generated virtual space image. ”Simulation device (See [Summary]).
  • the present disclosure has been made in view of the above background, and an object in a certain aspect is to provide a technique for dynamically changing the setting of collision detection between objects.
  • a program for causing one or more processors to execute an instruction includes a step of determining the group to which the first object and the second object belong, a step of performing a simulation involving the first object and the second object, and a first object during the execution of the simulation. , A step of determining a collision with a second object, and a step of changing the group to which the first object belongs based on a predetermined condition. The collision determination is executed only when the group to which the first object belongs and the group to which the second object belongs are different.
  • the program can suppress the execution of collision detection processing between unnecessary objects, and can suppress the consumption of computational resources of the device that executes the program.
  • the predetermined conditions are defined by the object to which the first object is dependent during the simulation.
  • the group to which the first object belongs can be changed based on the object to which the first object is in contact.
  • the instruction is based on the change from the state in which the first object is in contact with the second object to the state in which the first object is in contact with the second object. It further includes the step of changing the subordinate destination of the object to the second object.
  • the program can dynamically switch the group to which the first object belongs based on the contact state of the first object and the second object.
  • the instruction is based on the step of monitoring the change of the object that the first object touches and the object that the first object touches each time it detects a change of the object that the first object touches. , Further include a step of changing the group to which the first object belongs.
  • the program can dynamically switch the group to which the first object belongs based on any object that contacts the first object.
  • the instruction further includes a step of displaying the execution status of the simulation on the display.
  • the color of the first object is the same as the color of the second object if the first and second objects belong to the same group, and the first and second objects do not belong to the same group. If so, it is different from the color of the second object.
  • the program can present the objects belonging to the same group to the user in a visually easy-to-understand manner.
  • the instruction further includes a step of changing the color of the first object or the object with which the first object comes into contact, based on the detection of the collision of the first object.
  • the program can present the user in a way that makes it easy to visually understand the occurrence of collisions between objects.
  • the instruction is a step of generating a filter that excludes objects belonging to the same group as the first object from the target of collision detection with respect to the first object, and in the collision detection, the first object is an object included in the filter. It further includes a step to exclude from collision detection for the object.
  • the program can suppress the execution of collision detection processing between unnecessary objects by referring to the filter.
  • the instruction states that the step of setting a dependency between the first object and the second object and the dependency setting between the first object and the second object are set. Based on this, it further includes a step of setting the first object and the second object to belong to the same group.
  • the program can group objects based on the dependency of the objects.
  • the instruction further includes a step of providing a template for defining a predetermined condition and a step of accepting an input for adding a process related to the first object for each template.
  • the program can provide the user with a means to easily create a simulation script.
  • the process relating to the first object includes the process of changing the object to which the first object is subordinate.
  • the program can provide the user with a means of inputting settings for changing the group to which the first object belongs.
  • the process relating to the first object includes the process of switching on / off the visualization of the first object or the second object.
  • the program can provide the user with a means of inputting the object visualization switching setting.
  • the instruction further includes a step of saving a plurality of scripts created based on the template and a step of accepting an input for determining the execution sequence of each of the plurality of scripts.
  • the program can provide the user with a means of determining the execution order of a plurality of scripts.
  • the instruction further includes a step of switching whether the operation of one or more objects included in the simulation is realized by the simulation or by operating the emulator.
  • the program can incorporate the operation of the emulator into the simulation.
  • the instruction includes information about the first object, information about the second object, and collision time based on detecting a collision between the first object and the second object. It also includes a step to output log information.
  • the program can provide the user with log information.
  • a device comprising a memory containing the program described in any of the above and a processor executing the program.
  • the device can suppress the execution of collision detection processing between unnecessary objects and reduce the consumption of computing resources of the processor.
  • 1st UI User Interface
  • FIG. 1 is a diagram showing an example of an operation outline of the simulation program 100 according to the present embodiment. An application example of the simulation program 100 will be described with reference to FIG.
  • the simulation program 100 provides a simulation function of a production line or an inspection line including a robot or a machine installed in a factory or the like (these may be collectively referred to as a "line").
  • the line includes multiple objects such as robot arms, workpieces, worktables and trays.
  • the "work” here refers to an object of work in assembly work, inspection work, and the like.
  • the simulation program 100 can determine whether or not these objects do not interfere with each other (whether or not the objects collide with each other) when the production line is operated.
  • the simulation program 100 can be executed by an information processing device such as a PC (Personal Computer), a workstation, a server device, or a cloud environment. In the following description, it is assumed that all the operations executed by the simulation program 100 are executed by the information processing apparatus in which the simulation program 100 is installed.
  • the simulation program 100 is executing a simulation for a line.
  • the line includes a robot arm 140 and a pedestal 160. Further, the tray 170 is installed on the pedestal 160.
  • the robot arm 140 carries the work 150 on the tray 170 to a predetermined position on the pedestal 160.
  • the configuration shown in FIG. 1 is an example, and the line configuration is not limited to this.
  • the line may include any number of robotic arms, other machines, sensors, and the like. Also, in other aspects, the line may be designed so that the robot and the human collaborate.
  • the simulation program 100 mainly provides a simulation function using a 3D (Three-Dimensional) object. Simulation using 3D objects requires a large amount of computational resources and memory. If the information processing device in which the simulation program 100 is installed executes collision detection of all the objects included in the simulation, the amount of calculation becomes enormous.
  • the simulation program 100 efficiently uses the computational resources of the information processing device by performing only the collision determination of an important specific object. Further, the simulation program 100 provides a function of switching an object for collision determination for each scene described later.
  • the simulation program 100 divides the operating state of the line into specific scenes. Then, the simulation program 100 executes the collision determination process only for the objects that require the collision determination in each scene.
  • the "scene” here can be defined by whether or not specific objects are in contact with each other. For example, scenes 110, 120, 130 of FIG. 1 are defined by which other object the work 150 is in contact with.
  • Scene 110 is a scene in which the robot arm 140 tries to grip the work 150 installed on the tray 170. In the scene 110, it is assumed that the work 150 is in contact with the tray 170. Further, it is assumed that the work 150 is not in contact with the robot arm 140 and the pedestal 160.
  • the simulation program 100 does not execute the contact determination between the work 150 and the tray 170. This is because it is natural that the work 150 and the tray 170 are in contact with each other, and the contact should not be included in the error.
  • the simulation program 100 executes the contact determination between the work 150 and the robot arm 140 and the pedestal 160. This is because these objects should not be in contact with each other. For example, when the work 150 and the pedestal 160 are in contact with each other, it is suspected that the work 150 or the tray 170 is misaligned. Further, when the robot arm 140 comes into contact with the work 150 at an angle or orientation not originally expected, there is a high possibility that the control program of the robot arm 140 is incorrect. In this way, the simulation program 100 can detect only collisions between objects that are problematic in the scene 110.
  • the scene 120 is the next scene of the scene 110, and is a scene in which the robot arm 140 grips the work 150 and lifts the work 150 from the tray 170.
  • the work 150 held by the robot arm 140 is in contact with the robot arm 140. Further, it is assumed that the work 150 gripped by the robot arm 140 does not come into contact with either the pedestal 160 or the tray 170.
  • the simulation program 100 does not execute the collision determination between the work 150 held by the robot arm 140 and the robot arm 140, because the work 150 held by the robot arm 140 and the robot arm 140 Of course, the contact should not be included in the error.
  • the simulation program 100 executes a contact determination between the work 150 gripped by the robot arm 140 and the pedestal 160 and the tray 170.
  • the simulation program 100 also determines a collision between the work 150 gripped by the robot arm 140 and another work 150 installed on the pedestal 160. This is because these objects should not be in contact with each other. For example, when the work 150 gripped by the robot arm 140 and the tray 170 are in contact with each other, the robot arm 140 may not have normally lifted the work 150 and may be dragging the work 150 on the tray 170. There is. Further, when the work 150 gripped by the robot arm 140 and another work 150 installed on the tray 170 come into contact with each other, the robot arm 140 hits the works 150 against each other. When these collisions are detected, there is a high possibility that the control program of the robot arm 140 has an error.
  • the scene 130 is a scene following the scene 120, and is a scene in which the robot arm 140 installs the work 150 at a predetermined position on the pedestal 160.
  • the work 150 installed on the pedestal 160 is in contact with the pedestal 160. Further, it is assumed that the work 150 installed on the pedestal 160 is not in contact with either the robot arm 140 or the tray 170.
  • the simulation program 100 does not execute the contact determination between the work 150 installed on the pedestal 160 and the pedestal 160. This is because it is natural that the work 150 installed on the pedestal 160 and the pedestal 160 are in contact with each other, and the contact should not be included in the error.
  • the simulation program 100 executes the contact determination between the work 150 installed on the pedestal 160 and the robot arm 140 and the tray 170. This is because these objects should not be in contact with each other. For example, when the work 150 installed on the pedestal 160 and the tray 170 are in contact with each other, the work 150 may not be normally installed on the pedestal 160. Further, when the work 150 installed on the pedestal 160 and the robot arm 140 are in contact with each other, there is a high possibility that the control program of the robot arm 140 has an error.
  • the simulation program 100 groups and manages the objects in order to switch the objects for which the collision detection is performed for each scene.
  • the simulation program 100 groups objects that are supposed to be in contact with each other in a certain scene. For example, in the scene 110, it is assumed that the work 150 and the tray 170 are in contact with each other. Therefore, the simulation program 100 manages the work 150 and the tray 170 as objects belonging to the same group. On the contrary, it is expected that the work 150 is not in contact with the robot arm 140 and the pedestal 160. Therefore, the simulation program 100 manages the work 150 as an object belonging to a group different from the robot arm 140 and the pedestal 160. In the example of the scene 110, the simulation program 100 may group each object into a group A (work 150, tray 170), a group B (robot arm 140), a group C (pedestal 160), and the like.
  • the simulation program 100 does not execute collision determination between objects belonging to the same group, but executes collision determination between objects belonging to different groups. For example, the simulation program 100 does not execute the collision determination of the work 150 and the tray 170 belonging to the same group in the scene 110. On the contrary, the simulation program 100 executes a collision determination between the work 150, the robot arm 140, and the pedestal 160, which belong to different groups in the scene 110.
  • the simulation program 100 provides the user with an input function for defining the group to which each object belongs.
  • the simulation program 100 can classify the objects in contact into different groups based on the input from the user or the like. For example, the simulation program 100 may classify the pedestal 160 and the tray 170 installed on the pedestal 160 into different groups.
  • the simulation program 100 updates the grouping every time the scene changes (every time the contact relationship between specific objects changes). For example, when switching from the scene 110 to the scene 120 (when the work 150 is gripped and lifted by the robot arm 140), the simulation program 100 moves the work 150 from the group A to the group B to which the robot arm 140 belongs. By this process, the collision determination between the work 150 and the robot arm 140 is not executed in the scene 120.
  • the simulation program 100 defines a subordination relationship (parent-child relationship) between each object belonging to the same group.
  • the robot arm 140 may include a plurality of objects such as a robot body and a robot tool (a tool at the tip of the robot arm).
  • the robot body is the parent and the robot tool is the child.
  • the parent of work 150 in scene 110 is tray 170.
  • the simulation program 100 groups a plurality of objects by defining the dependency relations of each of these objects.
  • the simulation program 100 defines to the user an input function that defines the subordination relationships between objects for each scene.
  • the simulation program 100 can update the grouping based on the dependency relationships between the objects in each scene.
  • the simulation program 100 groups and manages objects, and suppresses execution of collision detection processing between objects belonging to the same group. By doing so, the simulation program 100 can suppress the calculation resources required for the simulation.
  • the simulation program 100 executes a process of updating the grouping every time the scene is changed. By doing so, the simulation program 100 can suppress the execution of collision detection processing between unnecessary objects for each scene.
  • FIG. 2 is a diagram showing an example of the configuration of the line 20 to which the simulation program 100 can be applied.
  • the line 20 includes an upper transmission line 220 and a lower transmission line 230.
  • the upper transmission line 220 includes an integrated controller 200, an IPC (Industrial Process Control) device 201, an operation panel 202, a management device 203, a transport robot 204, a sensor 205, and a LiDAR (Light Detection and Ranging) 206.
  • the cloud environment 207, the database 208, and the simulator 209 are connected.
  • the integrated controller 200 and the field devices 240A to 240J are connected to the lower transmission line 230.
  • the integrated controller 200 controls various actuators such as various sensors, robots and motors connected to the line 20.
  • the integrated controller 200 is a device having both a PLC (Programmable Logic Controller) function and a robot controller function.
  • the line 20 may include a separate PLC and a robot controller instead of the integrated controller 200.
  • the IPC device 201 manages the production control and process of the entire system in FA (Factory Automation) or the like.
  • the operation panel 202 is used by factory staff for inspection and operation of the line 20.
  • the management device 203 manages and controls, for example, the transfer robot 204 and the like.
  • the transport robot 204 transports workpieces and trays in the factory.
  • the sensor 205 can be used as a safety mechanism.
  • the sensor 205 can be used to detect whether or not there is a human in the vicinity of a robot, machine tool, or the like.
  • LiDAR206 is a device that detects peripheral obstacles using an optical sensor. The LiDAR 206 can be mounted and used on, for example, a transfer robot 204 or the like.
  • the cloud environment 207 is an information processing environment composed of a plurality of servers inside or outside the factory.
  • the database 208 stores log data and the like sent from the integrated controller 200, the IPC device 201, and the like.
  • the simulator 209 is an information processing device that executes the simulation program 100.
  • the simulator 209 may perform a simulation that includes some or all of the configurations of line 20. The administrator can actually operate the line 20 after confirming that there is no problem in the design of the line 20 by using the simulator 209.
  • the cloud environment 207, the database 208, and the simulator 209 may be provided in whole or in part outside the factory premises. In that case, all or part of the cloud environment 207, the database 208, and the simulator 209 may be connected to the upper transmission line 220 via an external network, a gateway device, or the like (not shown).
  • the field device 240 is a control device such as a robot arm, a scalar device, a linear motion mechanism, or a motor.
  • the field device 240 may be built in the robot arm or the like, or may be provided outside the robot arm or the like.
  • a plurality of field devices 240 may perform manufacturing or inspection of a product by performing collaborative work.
  • the simulation program 100 may, for example, perform collision detection between the field device 240 constituting the line 20 and the work, collision detection of the transfer robot 204, and the like in the simulation.
  • the simulation program 100 may be integrated with the program development environment of the field device 240. In that case, the simulator 209 may install the program in the field device 240 after the simulation of the program is completed.
  • FIG. 3 is a diagram showing an example of the configuration of the information processing device 300 for executing the simulation program 100.
  • the information processing device 300 includes a CPU (Central Processing Unit) 301, a primary storage device 302, a secondary storage device 303, an external device interface 304, an input interface 305, an output interface 306, and a communication interface 307. include.
  • CPU Central Processing Unit
  • the CPU 301 can execute a program for realizing various functions of the information processing device 300.
  • the CPU 301 is composed of, for example, at least one integrated circuit.
  • the integrated circuit may be composed of, for example, at least one CPU, at least one FPGA (Field-Programmable Gate Array), or a combination thereof.
  • the CPU 301 can execute the process described with reference to FIG. 1 by the simulation program 100 read from the secondary storage device 303 into the primary storage device 302.
  • the primary storage device 302 stores a program executed by the CPU 301 and data referenced by the CPU 301.
  • the primary storage device 302 may be realized by DRAM (Dynamic Random Access Memory), SRAM (Static Random Access Memory), or the like.
  • the secondary storage device 303 is a non-volatile memory, and may store a program executed by the CPU 301 and data referenced by the CPU 301. In that case, the CPU 301 executes the program read from the secondary storage device 303 to the primary storage device 302, and refers to the data read from the secondary storage device 303 to the primary storage device 302.
  • the secondary storage device 303 is realized by an HDD (Hard Disk Drive), an SSD (Solid State Drive), an EPROM (Erasable Programmable Read Only Memory), an EEPROM (Electrically Erasable Programmable Read Only Memory), a flash memory, or the like. You may.
  • the external device interface 304 can be connected to any external device such as a printer, scanner and external HDD.
  • the external device interface 304 may be realized by a USB (Universal Serial Bus) terminal or the like.
  • the input interface 305 can be connected to any input device such as a keyboard, mouse, touchpad or gamepad.
  • the input interface 305 may be implemented by a USB terminal, a PS / 2 terminal, a Bluetooth® module, and the like.
  • the output interface 306 can be connected to any output device such as a cathode ray tube display, a liquid crystal display or an organic EL (electro-luminescence) display.
  • the output interface 306 may be realized by a USB terminal, a D-sub terminal, a DVI (Digital Visual Interface) terminal, an HDMI (registered trademark) (High-Definition Multimedia Interface) terminal, or the like.
  • the communication interface 307 is connected to a wired or wireless network device.
  • the communication interface 307 may be realized by a wired LAN (Local Area Network) port, a Wi-Fi (registered trademark) module, or the like.
  • the communication interface 307 may transmit / receive data using TCP / IP (Transmission Control Protocol / Internet Protocol), UDP (User Datagram Protocol), or other communication protocols.
  • TCP / IP Transmission Control Protocol / Internet Protocol
  • UDP User Datagram Protocol
  • FIG. 4 is a diagram showing an outline of an outline of the emulation function of the simulation program 100.
  • the simulation program 100 provides a function of emulating some or all objects in the simulation.
  • the simulation program 100 generates a virtual PLC 410 and a virtual robot 420 as an example.
  • Each of the virtual PLC 410 and the virtual robot 420 can execute the program of the actual machine. Therefore, the user can verify the operation of each program without preparing an actual machine by causing each of the virtual PLC 410 and the virtual robot 420 to execute each of the created PLC program and the robot program.
  • the simulation program 100 provides the EtherCat shared memory 430, which is an area for passing data exchanged between the virtual PLC 410 and the virtual robot 420.
  • the simulation program 100 secures a part of the area of the primary storage device 302 as the EtherCat shared memory 430.
  • Each of the virtual PLC 410 and the virtual robot 420 operates as a virtually independent device. Therefore, each device realizes the transfer of the input data 431 and the output data 432 via the EtherCat shared memory 430.
  • the virtual PLC 410 includes a PLC main body 411 and a servomotor 412 and other actuators controlled by the PLC main body 411.
  • the virtual robot 420 includes a robot controller 421 that corresponds to a control device of the robot main body 422 and a robot main body 422.
  • C-2. User interface Next, an example of the user interface provided by the simulation program 100 will be described with reference to FIGS. 5 to 10. These user interfaces may be provided as part of the IDE (Integrated Development Environment) of the integrated controller 200.
  • FIG. 5 is a diagram showing a display example of the visualizer 530, which is a function of the simulation program 100.
  • the simulation program 100 is provided as part of the IDE 500 of the integrated controller 200.
  • IDE500 includes ladder software 510 and robot program software 520.
  • the ladder software 510 is used to program the PLC function of the integrated controller 200.
  • the program created by the ladder software 510 is installed in the integrated controller 200 and executed by the integrated controller 200, or executed by the virtual PLC 410.
  • the robot programming software 520 is used to program the robot controller function of the integrated controller 200.
  • the program created by the robot program software 520 is installed in the integrated controller 200 and executed by the integrated controller 200, or executed by the virtual robot 420.
  • the IDE500 further provides the function of visualizer 530.
  • the IDE 500 operates the simulation program 100 based on the input from the user.
  • the visualizer 530 visualizes the state of simulation of each object (robot arm, work, etc.) constituting the line 20 and displays it on the display.
  • FIG. 6 is a diagram showing an example of the first UI 600 of the simulation program 100.
  • the first UI 600 accepts input for defining the operation of each scene in the simulation and generates a script for each scene.
  • the first UI 600 includes an editor 610, a toolbox 620, and a template 630.
  • the editor 610 accepts the input of the source code description of the simulation program 100 from the user.
  • Toolbox 620 provides a template 630 of the source code of the simulation program 100.
  • Template 630 is a template for the source code of a scene typically used in a simulation. The user can easily create a script that defines the simulation contents of each scene by selecting the template 630 and adding the code to the selected template 630. In some aspects, the template 630 may be used to generate the script of FIG. 10, which will be described later.
  • the condition 640 indicating the scene of the template 630 is displayed as an example.
  • the user can define the simulation content of a specific scene by adding the processing code when the simulation meets the condition 640 to the template 630.
  • the user can add settings such as specification of the dependency relationship between objects (subordination destination of a certain object), on / off of display of the object, initial position of the object, and the like to the template 630.
  • the editor 610 may be in a flow format, a block format, or any other input format other than the text format.
  • the user can create, for example, a script that defines the contents of the simulations of the scenes 110, 120, and 130 of FIG.
  • FIG. 7 is a diagram showing an example of the second UI 700 of the simulation program 100.
  • the second UI 700 accepts an input for determining the execution order of the scene in which the processing content is defined.
  • the script list 710 is a list including scripts and the like created by the first UI600 and the like. The user may select a script from the script list 710 and add the selected script to the script execution settings 720.
  • the user can define the processing content for each scene in the simulation as a script, and can easily define the execution order of these scripts (scenes).
  • FIG. 8 is a diagram showing an example of the third UI 800 of the simulation program 100.
  • the third UI 800 accepts an operation for setting the grouping of objects in each scene.
  • the user can set the group of each scene by using the third UI 800.
  • Group 810 includes tray 170.
  • Group 820 includes a robot (the main body of the robot arm 140) and a robot tool (a tool at the tip of the robot arm 140).
  • Group 830 includes a pedestal 160.
  • the simulation program 100 uses the group information set in each object by the user using the third UI 800 as a "collision filter group" for creating a collision filter. That is, when the simulation program 100 executes collision detection in the scene (A), it refers to groups 810, 820 and 830, and detects collisions between objects belonging to the same group (objects that do not need to consider collisions). Do not execute. For example, the simulation program 100 does not execute the collision detection between the robot belonging to the group 820 and the robot tool in the scene (A).
  • the simulation program 100 suppresses the execution of collision detection between objects that do not need to consider collisions by referring to the group settings. As a result, the simulation program 100 can suppress the consumption of the calculation resources of the information processing apparatus 300 and execute the simulation at a higher speed.
  • FIG. 9 is a diagram showing an example of the fourth UI 900 of the simulation program 100.
  • the fourth UI 900 accepts the user's operation of selecting the automatic switching target of the collision detection of the object in each scene.
  • the virtual work (work 150) is selected as the target for automatic switching of collision detection.
  • the object selected as the automatic switching target for collision detection switches the group to which it belongs every time the scene is changed (for example, each time it collides with another object).
  • the virtual work here refers to a virtual work in the simulation.
  • the work 150 is installed on the tray 170.
  • the work 150 belongs to the group 810 as a child of the tray 170.
  • the robot arm 140 grips the work 150 and lifts it from the tray 170.
  • the work 150 belongs to the group 820 as a child of the robot tool.
  • the robot arm 140 installs the work 150 on the pedestal 160, and the robot arm 140 releases the work 150.
  • the work 150 belongs to the group 830 as a child of the pedestal 160.
  • the object selected as the target for automatic switching of collision detection becomes a child of the dynamically contacted object in the scenes set in FIGS. 6 and 7, and belongs to the same group as the contacted object.
  • FIG. 10 is a diagram showing an example of the fifth UI 1000 of the simulation program 100.
  • the fifth UI 1000 receives input for scene switching conditions and processing to be executed in each scene.
  • the simulation program 100 determines whether or not the conditions indicating each scene are satisfied during the simulation. Then, when the simulation program 100 determines that the condition is satisfied, it determines that the scene is defined by the condition. Then, the simulation program 100 executes a process to be executed when the condition is satisfied. For example, as a typical process, a process of changing the dependency of an object (a process of changing a parent object) may be set in each scene.
  • the simulation program 100 can execute the object group change process based on the group setting in the third UI 800 and the script created in the fifth UI 1000.
  • the simulation program 100 can once accept the input of the setting of the group to which all the objects belong in the third UI 800.
  • the simulation program 100 can accept the input of the scene switching condition and the object dependency change processing in each scene in the fifth UI 1000.
  • the simulation program 100 moves the object A to the group to which the parent object B belongs when the object A becomes a child of the object B during the simulation. That is, the group set in the third UI 800 is the initial group of each object, and each object moves between the groups based on the change processing of the dependency relation for each scene defined in the fifth UI 1000. do.
  • the simulation program 100 may accept the input of the initial dependency relation of each object in the fifth UI 1000. Further, in another aspect, the simulation program 100 may separately provide the user with a UI for setting the dependency relationship for each object and the offset between the parent object and the child object.
  • the user can input the setting for dynamically switching the target of collision detection for a specific object in the simulation program 100.
  • the simulation program 100 can further provide a UI for setting whether or not to visualize each object for each scene.
  • the UI allows the user to enter settings in the simulation program 100 to display only the objects that need to be visually presented to the user on the display.
  • Each module is a program component or data that constitutes the simulation program 100. In some aspects, some or all of these modules may be implemented in hardware.
  • FIG. 11 is a diagram showing an example of the first module configuration of the simulation program 100.
  • the simulation program 100 includes an integrated simulation execution unit 1101, a virtual work operation sequence setting unit 1103, a simulation setting 1106, a CAD database 1107, a 3D processing unit 1108, a collision filter group setting unit 1112, and a collision filter group database 1115. And the 3D shape collision detection unit 1116 and the collision detection result database 1117.
  • the integrated simulation execution unit 1101 includes the virtual time generation unit 1102.
  • the virtual work operation sequence setting unit 1103 includes a virtual work operation script creation unit 1104 and a virtual work operation script execution unit 1105.
  • the 3D processing unit 1108 includes a 3D shape display unit 1109, a 3D shape analysis unit 1110, and a 3D shape reading unit 1111.
  • the collision filter group setting unit 1112 includes a collision filter group setting screen 1113 and a collision filter group setting automatic change unit 1114.
  • the integrated simulation execution unit 1101 executes simulations based on various scripts and manages the entire simulation.
  • the virtual time generation unit 1102 generates a virtual time in the simulation.
  • the virtual work operation sequence setting unit 1103 accepts input from the user for setting (script) of the simulation execution procedure. Further, the virtual work operation sequence setting unit 1103 interprets and executes the setting of the simulation execution procedure.
  • the virtual work operation script 1140 accepts input of an operation script related to the virtual work from the user. In a certain aspect, the user can create an operation script related to the virtual work by using, for example, the first UI600, the second UI700, the fifth UI1000, and the like.
  • the virtual work operation script execution unit 1105 interprets and executes the operation script related to the virtual work created by the user.
  • Simulation setting 1106 stores the dependency relations between objects in each scene, display data, and the like.
  • the simulation setting 1106 may be represented as a table in a relational database, or may be represented in any other data format such as JSON (JavaScript (registered trademark) Object Notation).
  • the data stored in the simulation setting 1106 may be created using, for example, a third UI 800, a fourth UI 900, and the like.
  • the 3D processing unit 1108 displays the state of execution of the simulation on the display.
  • the 3D processing unit 1108 provides the functions of reading CAD data and the visualizer 530.
  • the 3D processing unit 1108 may display a plurality of objects belonging to the same group in the same color (group color). Further, when the object (virtual work or the like) moves the group when the scene is switched, the 3D processing unit 1108 may change the object to the group color of the movement destination and display it.
  • the 3D shape display unit 1109 displays the execution content of the simulation on the display at any time.
  • the 3D shape analysis unit 1110 analyzes the shape of the CAD file included in the CAD database 1107.
  • the 3D shape reading unit 1111 reads the CAD file included in the CAD database 1107.
  • the collision filter group setting unit 1112 accepts the input of the collision filter group setting and automatically updates the collision filter group during the execution of the simulation.
  • the individual collision filter group is a group to which the objects described in FIG. 8 and the like belong. These groups are used as filters to suppress the execution of collision detection between objects belonging to the same group.
  • the collision filter group setting screen 1113 accepts the input of the object group setting.
  • the collision filter group setting screen 1113 includes a third UI 800.
  • the collision filter group setting automatic change unit 1114 accepts the input of the setting for automatic update of the collision filter group.
  • the collision filter group setting automatic change unit 1114 includes a fourth UI900, a fifth UI1000, and the like.
  • the collision filter group database 1115 stores the data of the collision filter group created by the collision filter group setting unit 1112.
  • the collision filter group database 1115 may be represented as a table in a relational database or in any other data format such as JSON.
  • the 3D shape collision detection unit 1116 detects collisions between objects during execution of the simulation.
  • the 3D shape collision detection unit 1116 suppresses the execution of collision detection between objects belonging to the same group by referring to the data of the collision filter group.
  • the 3D shape collision detection unit 1116 stores the collision detection result 1118 (log information) including the identification information of each collided object and the collision detection time in the collision detection result database 1117.
  • the collision detection time is based on the virtual time generated by the virtual time generation unit 1102.
  • the collision detection result database 1117 may be represented as a table in a relational database or in any other data format such as JSON.
  • each of the first UI600 to the fifth UI1000 need not be clearly the data used in any of the modules. In some aspects, some or all of the data created by each of the first UI 600 to the fifth UI 1000 may be used in each module, appropriately decomposed or combined.
  • FIG. 12 is a diagram showing an example of a sequence according to the first module configuration.
  • the sequence of FIG. 12 is executed by the CPU 301.
  • the CPU 301 can realize the sequence by the first module configuration by executing the simulation program 100 read from the secondary storage device 303 into the primary storage device 302.
  • step S1205 the virtual time generation unit 1102 receives the simulation start command from the user and generates the virtual time.
  • step S1210 the virtual time generation unit 1102 transmits a start request together with the virtual time to the virtual work operation script execution unit 1105.
  • step S1215 the virtual time generation unit 1102 transmits an arithmetic instruction to the virtual work operation script execution unit 1105.
  • the integrated simulation execution unit 1101 may execute the processes of steps S1205 to S1215.
  • step S1220 the virtual work operation script execution unit 1105 executes the virtual work automatic execution script.
  • the virtual work automatic execution script includes, for example, a script created by the fifth UI 1000.
  • step S1225 the virtual work operation script execution unit 1105 transmits a calculation execution notification to the collision filter group setting unit 1112.
  • the calculation execution notification may include the current position of the object and the like. In other aspects, the calculation execution notification may include information indicating the current scene.
  • the collision filter group setting unit 1112 updates the collision filter group based on the receipt of the calculation execution notification. For example, the collision filter group setting unit 1112 changes the group to which the virtual work belongs based on the change of scenes. More specifically, the collision filter group setting unit 1112 changes the group to which each object belongs every time the scene is switched, based on the script set in the fifth UI 1000.
  • step S1235 the virtual work operation script execution unit 1105 transmits a collision detection request to the 3D shape collision detection unit 1116.
  • step S1240 the 3D shape collision detection unit 1116 transmits a request for acquiring the position of the virtual work to the virtual work operation script execution unit 1105 based on the reception of the collision detection request.
  • step S1245 the 3D shape collision detection unit 1116 transmits a collision filter group acquisition request to the collision filter group setting unit 1112.
  • step S1250 the collision filter group setting unit 1112 transmits the collision filter group to the 3D shape collision detection unit 1116.
  • step S1255 the virtual work operation script execution unit 1105 transmits the position of the virtual work to the 3D shape collision detection unit 1116.
  • the communications in steps S1240 and S1255 may be performed concurrently and in parallel with the communications in steps S1245 and S1250.
  • step S1260 the 3D shape collision detection unit 1116 executes the collision detection process based on the reception of the positions of the collision filter group and the virtual work.
  • step S1265 the 3D shape display unit 1109 transmits a request for acquiring the position of the virtual work to the virtual work operation script execution unit 1105.
  • step S1270 the virtual work operation script execution unit 1105 transmits the position of the virtual work to the 3D shape display unit 1109.
  • step S1275 the 3D shape display unit 1109 transmits a collision state information acquisition request to the 3D shape collision detection unit 1116.
  • step S1280 the 3D shape collision detection unit 1116 transmits collision state information to the 3D shape display unit 1109.
  • the collision state information includes, for example, identification information of each object, a collision occurrence time, and the like when a collision between objects occurs.
  • step S1285 the 3D shape collision detection unit 1116 updates the screen display. For example, the display of the visualizer 530 is updated every time the process of step S1285 occurs.
  • FIG. 13 is a diagram showing an example of the second module configuration of the simulation program 100.
  • the second module configuration is different from the first module configuration in that it includes a PLC emulation function and a robot controller emulation function.
  • the simulation program 100 may switch whether to reproduce each function by simulation or emulation based on the setting by the user.
  • the second module configuration includes a PLC emulation unit 1320, a robot controller emulation unit 1330, a PLC variable database 1340, and a robot controller variable database 1350, in addition to the configuration included in the first module configuration. include.
  • the PLC emulation unit 1320 includes a PLC program creation unit 1321 and a PLC program execution unit 1322.
  • the robot controller emulation unit 1330 includes a robot program creation unit 1331 and a robot program execution unit 1332.
  • the PLC emulation unit 1320 emulates the PLC function and stores the execution result in the PLC variable database 1340.
  • the PLC emulation unit 1320 interprets and executes a program that can be installed in the PLC of the actual machine.
  • the PLC program creation unit 1321 provides a program creation function that can be installed in the PLC of the actual machine.
  • the PLC program creation unit 1321 may include ladder software 510.
  • the user can create a program to be executed by the PLC program execution unit 1322 via the ladder software 510 or the like.
  • the PLC program execution unit 1322 interprets and executes the program created by the PLC program creation unit 1321.
  • the PLC program execution unit 1322 is a virtual PLC.
  • the operation result (output data, etc.) of the PLC program execution unit 1322 is stored in the PLC variable database 1340.
  • the robot controller emulation unit 1330 emulates the functions of the robot controller or the robot body and stores the execution result in the database of variables for the robot controller 1350.
  • the robot controller emulation unit 1330 interprets and executes a program that can be installed in the actual robot controller.
  • the robot program creation unit 1331 provides a program creation function that can be installed on the actual robot controller.
  • the robot program creation unit 1331 may include the robot program software 520.
  • the user can create a program to be executed by the robot program execution unit 1332 via the robot program software 520 or the like.
  • the robot program execution unit 1332 interprets and executes the program created by the robot program creation unit 1331.
  • the robot program execution unit 1332 is a virtual robot controller.
  • the operation result (output data, etc.) of the robot program execution unit 1332 is stored in the robot controller variable database 1350.
  • the PLC variable database 1340 stores the variables of the operation result of the PLC program execution unit 1322.
  • the variable can be used by the 3D processing unit 1108 and the 3D shape collision detection unit 1116 when incorporating the PLC emulation result into the simulation.
  • the robot controller variable database 1350 stores the variables of the operation result of the robot program execution unit 1332.
  • the variable can be used by the 3D processing unit 1108 and the 3D shape collision detecting unit 1116 when incorporating the emulation result of the robot controller into the simulation.
  • the PLC variable database 1340 and the robot controller variable database 1350 may be represented as a table of a relational database or in any other data format such as JSON.
  • FIG. 14 is a diagram showing an example of the first half of the sequence according to the second module configuration.
  • FIG. 15 is a diagram showing an example of the latter half of the sequence according to the second module configuration.
  • the sequences of FIGS. 14 and 15 are executed by the CPU 301.
  • the CPU 301 can realize the sequence by the second module configuration by executing the simulation program 100 read from the secondary storage device 303 into the primary storage device 302.
  • step S1402 the integrated simulation execution unit 1101 receives a simulation start command from the user.
  • step S1405 the integrated simulation execution unit 1101 transmits a virtual time generation request to the virtual time generation unit 1102.
  • step S1407 the virtual time generation unit 1102 transmits a start request to the virtual work operation script execution unit 1105.
  • the virtual work operation script execution unit 1105 is activated based on the reception of the activation request.
  • step S1410 the virtual time generation unit 1102 transmits a start request to the PLC program execution unit 1322.
  • step S1412 the virtual time generation unit 1102 transmits an activation request to the robot program execution unit 1332.
  • the robot program execution unit 1332 is activated based on the reception of the activation request.
  • the activation requests in steps S1407 to S1412 may include a virtual time.
  • step S1415 the virtual time generation unit 1102 transmits a calculation command to the PLC program execution unit 1322.
  • the PLC program execution unit 1322 executes a predetermined calculation based on the reception of the calculation command.
  • step S1417 the PLC program execution unit 1322 notifies the virtual time generation unit 1102 of the calculation result.
  • the calculation result may include a PLC variable as an example.
  • step S1420 the virtual time generation unit 1102 transmits a calculation command to the robot program execution unit 1332.
  • the PLC program execution unit 1322 executes a predetermined calculation based on the reception of the calculation command.
  • step S1422 the robot program execution unit 1332 notifies the virtual time generation unit 1102 of the calculation result.
  • the calculation result may include a variable for a robot controller as an example.
  • step S1425 the virtual time generation unit 1102 transmits a calculation command to the virtual work operation script execution unit 1105.
  • the calculation command may include the calculation result of step S1417 and the calculation result of step S1422.
  • step S1427 the virtual work operation script execution unit 1105 executes the virtual work automatic execution script based on the reception of the calculation command.
  • the virtual work automatic execution script includes, for example, a script created by the fifth UI 1000. Further, unlike the sequence of FIG. 12, the virtual work automatic execution script uses the PLC emulation result and the robot controller emulation result.
  • step S1430 the virtual work operation script execution unit 1105 transmits a calculation execution notification to the collision filter group setting unit 1112.
  • the calculation execution notification may include the current position of the object and the like. In other aspects, the calculation execution notification may include information indicating the current scene.
  • step S1432 the collision filter group setting unit 1112 updates the collision filter group based on the receipt of the calculation execution notification. For example, the collision filter group setting unit 1112 changes the group to which the virtual work belongs based on the change of scenes.
  • step S1435 the virtual work operation script execution unit 1105 transmits a collision detection request to the 3D shape collision detection unit 1116.
  • step S1437 the 3D shape collision detection unit 1116 transmits a request for acquiring a command value of each actuator (servo motor or the like) controlled by the PLC to the PLC program execution unit 1322.
  • the command value of each actuator controlled by the PLC here is a command value output by the emulated PLC to each actuator.
  • step S1440 the PLC program execution unit 1322 transmits a command value of each actuator controlled by the PLC to the 3D shape collision detection unit 1116.
  • step S1442 the 3D shape collision detection unit 1116 transmits a request for acquiring a command value for each axis of the robot to the robot program execution unit 1332.
  • the command value of each axis of the robot here is a command value output by the emulated robot controller to each motor (each axis) constituting the robot.
  • step S1445 the robot program execution unit 1332 transmits a command value for each axis of the robot to the 3D shape collision detection unit 1116 based on the reception of the acquisition request.
  • step S1447 the 3D shape collision detection unit 1116 transmits a request for acquiring the position of the virtual work to the virtual work operation script execution unit 1105 based on the reception of the collision detection request.
  • step S1450 the 3D shape collision detection unit 1116 transmits a collision filter group acquisition request to the collision filter group setting unit 1112.
  • step S1452 the collision filter group setting unit 1112 transmits the collision filter group to the 3D shape collision detection unit 1116 based on the reception of the acquisition request.
  • step S1455 the virtual work operation script execution unit 1105 transmits the position of the virtual work to the 3D shape collision detection unit 1116 based on the reception of the acquisition request (step S1447).
  • the communications of steps S1437 to S1455 may be executed independently and simultaneously in parallel.
  • step S1457 the 3D shape collision detection unit 1116 collides based on the command value of each actuator controlled by the PLC, the command value of each axis of the robot, and the position of the collision filter group and the virtual work. Execute the detection process.
  • step S1460 the 3D shape display unit 1109 transmits a request for acquiring a command value of each actuator controlled by the PLC to the PLC program execution unit 1322.
  • step S1462 the PLC program execution unit 1322 transmits a command value of each actuator controlled by the PLC to the 3D shape display unit 1109 based on the reception of the acquisition request.
  • step S1465 the 3D shape display unit 1109 transmits a request for acquiring a command value for each axis of the robot to the robot program execution unit 1332.
  • step S1467 the robot program execution unit 1332 transmits a command value for each axis of the robot to the 3D shape display unit 1109 based on the reception of the acquisition request.
  • step S1470 the 3D shape display unit 1109 transmits a request for acquiring the position of the virtual work to the virtual work operation script execution unit 1105.
  • step S1472 the virtual work operation script execution unit 1105 transmits the position of the virtual work to the 3D shape display unit 1109 based on the reception of the acquisition request.
  • step S1475 the 3D shape display unit 1109 transmits a collision state information acquisition request to the 3D shape collision detection unit 1116.
  • step S1477 the 3D shape collision detection unit 1116 transmits the collision state information to the 3D shape display unit 1109 based on the reception of the acquisition request.
  • the collision state information includes, for example, identification information of each object, a collision occurrence time, and the like when a collision between objects occurs.
  • step S1480 the 3D shape collision detection unit 1116 updates the screen display. For example, the display of the visualizer 530 is updated every time the process of step S1480 occurs.
  • FIG. 16 is a diagram showing an example of a third module configuration of the simulation program 100.
  • the third module configuration is different from each of the above-mentioned module configurations in that only the robot controller emulation function is provided as the emulation function.
  • the simulation program 100 emulates only the operation of the robot controller.
  • the simulation program 100 reflects the result of emulation of the operation of the robot controller in the simulation.
  • FIG. 17 is a diagram showing an example of the first half of the sequence according to the third module configuration.
  • FIG. 18 is a diagram showing an example of the latter half of the sequence according to the third module configuration.
  • the sequences of FIGS. 17 and 18 are executed by the CPU 301.
  • the CPU 301 can realize a sequence with a third module configuration by executing the simulation program 100 read from the secondary storage device 303 into the primary storage device 302.
  • the sequence according to the third module configuration is obtained by removing the communication processing related to the PLC program execution unit 1322 from the sequence according to the second module configuration. All the processes included in the sequence according to the third module configuration are included in the sequence according to the second module configuration. Therefore, the description of these processes will not be repeated.
  • FIG. 19 is a diagram showing an example of a fourth module configuration of the simulation program 100.
  • the fourth module configuration is different from each of the above-mentioned module configurations in that only the PLC emulation function is provided as the emulation function.
  • the simulation program 100 emulates only the operation of the PLC.
  • the simulation program 100 reflects the result of emulation of the operation of the PLC in the simulation.
  • FIG. 20 is a diagram showing an example of the first half of the sequence according to the fourth module configuration.
  • FIG. 21 is a diagram showing an example of the latter half of the sequence according to the fourth module configuration.
  • the sequence of FIGS. 20 and 21 is executed by the CPU 301.
  • the CPU 301 can realize the sequence by the fourth module configuration by executing the simulation program 100 read from the secondary storage device 303 into the primary storage device 302.
  • the sequence according to the fourth module configuration is obtained by removing the communication processing related to the robot program execution unit 1332 from the sequence according to the second module configuration. All the processes included in the sequence according to the fourth module configuration are included in the sequence according to the second module configuration. Therefore, the description of these processes will not be repeated.
  • FIG. 22 is an example of a flowchart of the simulation program 100.
  • the CPU 301 may read the program (simulation program 100) for performing the process of FIG. 22 from the secondary storage device 303 into the primary storage device 302 and execute the program.
  • some or all of the processing may also be realized as a combination of circuit elements configured to perform the processing.
  • step S2205 the CPU 301 starts the simulation program 100.
  • step S2210 the CPU 301 reads the collision filter group.
  • step S2215 the CPU 301 repeats the processes after step S2220.
  • step S2220 the CPU 301 starts cycle execution of the simulator. In this step, the CPU 301 sequentially executes the virtual work operation script.
  • step S2225 the CPU 301 updates the display state of the 3D shape.
  • step S2230 the CPU 301 updates the display coordinates of the virtual work.
  • steps S2225 and S2230 the display of the visualizer 530 is updated.
  • step S2235 the CPU 301 executes the update processing of the dependency relation of the virtual work. For example, when the scene is switched, the CPU 301 updates the subordination relationship and the group to which the virtual work belongs. Further, the CPU 301 can change the color of the objects belonging to the same group to the same color by referring to the updated collision filter group.
  • step S2240 the CPU 301 determines whether or not the dependency relation of the virtual work has been changed in step S2235.
  • the CPU 301 determines in step S2235 that the dependency relationship of the virtual work has changed (YES in step S2240)
  • the CPU 301 shifts control to step S2245. If not (NO in step S2240), the CPU 301 shifts control to step S2250.
  • step S2245 the CPU 301 updates the collision filter group. For example, the CPU 301 updates the dependency relation of the virtual work and the group to which the virtual work belongs.
  • step S2250 the CPU 301 makes a collision determination of each object with reference to the updated collision filter group.
  • step S2255 the CPU 301 determines whether or not a collision between objects has been detected.
  • the CPU 301 determines that a collision between objects has been detected (YES in step S2255)
  • the CPU 301 shifts control to step S2060. If not (NO in step S2255), the CPU 301 shifts control to the beginning of the cycle execution in step S2015.
  • step S2260 the CPU 301 outputs the collision detection result as a log.
  • the user can know the details of the collision by referring to the log.
  • step S2265 the CPU 301 changes the color of the colliding 3D shape (object). By this process, for example, the color of the collided object displayed on the visualizer 530 is changed, and the user can easily notice the occurrence of the collision.
  • the simulation program 100 according to the present embodiment and the information processing apparatus 300 in which the simulation program 100 is installed manage the objects by grouping them, and suppress the execution of the collision detection process between the objects belonging to the same group. do. By doing so, the simulation program 100 and the information processing apparatus 300 can suppress the calculation resources required for the simulation.
  • the simulation program 100 and the information processing apparatus 300 execute a process of updating the subordination relationships and groupings between the objects each time the scene is switched. By doing so, the simulation program 100 and the information processing apparatus 300 can dynamically suppress the execution of collision detection processing between unnecessary objects for each scene.
  • the present embodiment as described above includes the following technical ideas.
  • [Structure 1] A program (100) that causes one or more processors (301) to execute instructions.
  • the command is The step of determining the group to which the first object (150) and the second object (140) belong, and A step of executing a simulation including the first object and the second object, and During the execution of the simulation, a step of determining a collision between the first object and the second object, and Including a step of changing the group to which the first object belongs based on satisfying a predetermined condition.
  • the program that the collision determination is executed only when the group to which the first object belongs and the group to which the second object belongs are different.
  • Structure 2 The program according to configuration 1, wherein the predetermined conditions are defined by an object to which the first object depends during the simulation.
  • the command is based on the change from the state in which the first object is in contact with the second object to the state in which the first object is in contact with the second object.
  • the program according to configuration 2 further comprising a step of changing the subordination destination of an object to the second object.
  • the command is The step of monitoring the change of the object with which the first object comes into contact, and 2. Described in configuration 2, further including a step of changing the group to which the first object belongs based on the object touched by the first object each time the change of the object touched by the first object is detected.
  • Program. [Structure 5]
  • the instruction further includes a step of displaying the execution status of the simulation on the display.
  • the color of the first object is When the first object and the second object belong to the same group, the color is the same as that of the second object.
  • the command further comprises a step of changing the color of the object with which the first object or the first object comes into contact based on the detection of the collision of the first object.
  • the program described in Crab The program described in Crab.
  • the command is A step of generating a filter that excludes objects belonging to the same group as the first object from the target of collision detection with respect to the first object, and The program according to any one of configurations 1 to 6, further comprising a step of excluding an object included in the filter from the collision determination with respect to the first object in the collision determination.
  • the command is A step of setting a dependency between the first object and the second object, A step of setting the first object and the second object to belong to the same group based on the dependency relation set between the first object and the second object.
  • the program according to any one of configurations 1 to 7, further comprising.
  • the command is A step of providing a template for defining the predetermined conditions, and The program according to configuration 8, further comprising, for each template, a step of accepting input for adding processing related to the first object.
  • the program according to configuration 9 wherein the process relating to the first object includes a process of changing an object to which the first object is dependent.
  • the process relating to the first object includes an on / off switching process of visualization of the first object or the second object.
  • the command is Steps to save multiple scripts created based on the template, The program according to any one of configurations 9 to 11, further comprising a step of accepting input for determining the execution sequence of each of the plurality of scripts.
  • the command is The program according to any one of configurations 1 to 12, further comprising a step of switching whether the operation of one or a plurality of objects included in the simulation is realized by the simulation or by operating the emulator.
  • the instruction includes information about the first object, information about the second object, and a collision time based on detecting a collision between the first object and the second object.
  • a memory (303) in which the program described in any of the configurations 1 to 14 is stored, and An apparatus including a processor (301) that executes the program.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Architecture (AREA)
  • Automation & Control Theory (AREA)
  • Robotics (AREA)
  • Computer Graphics (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Manufacturing & Machinery (AREA)
  • Mechanical Engineering (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)
  • Manipulator (AREA)
  • Numerical Control (AREA)
  • Processing Or Creating Images (AREA)
  • Stored Programmes (AREA)

Abstract

1以上のプロセッサーに命令を実行させるためのプログラムは、当該1以上のプロセッサーに、第1のオブジェクト(150)および第2のオブジェクト(140)が属するグループを決定するステップと、第1のオブジェクト(150)および第2のオブジェクト(140)を含むシミュレーションを実行するステップと、シミュレーションの実行中に、第1のオブジェクト(150)と、第2のオブジェクト(140)との衝突判定を行なうステップと、予め定められた条件を満たすことに基づいて、第1のオブジェクト(150)の属するグループを変更するステップとを実行させる。衝突判定は、第1のオブジェクト(150)が属するグループと、第2のオブジェクト(140)が属するグループとが異なる場合にのみ実行される。

Description

シミュレーションのためのプログラムおよび装置
 本開示は、概してシミュレーションプログラムに関し、より特定的には、シミュレーションの実行中に衝突検知の設定を動的に切り替える技術に関する。
 近年、コンピュータを用いたシミュレーションは様々な技術分野に応用されている。例えば、シミュレーションは、CAD(Computer Aided Design)ソフトウェアで設計された機械の動作確認、または、これらの機械を含むFA(Factory Automation)のラインの検証作業等にも使用されている。
 シミュレーションに関し、例えば、特開2016-042378号公報(特許文献1)は、「制御プログラムにしたがって、仮想空間において機械に対応する仮想機械によって扱われ対象物に対応する仮想対象物のモデルデータに基づいて、仮想機械を動かせるための指令値が計算され、計算された指令値にしたがった仮想機械の動きが計算され、計算された仮想機械の動きによって動かされる仮想対象物の動きが計算され、計算された仮想機械の動きまたは仮想対象物の動きを、仮想的に撮影した場合に得られる仮想空間画像が生成され、生成された仮想空間画像にさらに基づいて、指令値が計算される」シミュレーション装置を開示している([要約]参照)。
特開2016-042378号公報
 特許文献1に開示された技術によると、オブジェクト間の衝突検知の設定を動的に変更することができない。したがって、オブジェクト間の衝突検知の設定を動的に変更する技術が必要とされている。
 本開示は、上記のような背景に鑑みてなされたものであって、ある局面における目的は、オブジェクト間の衝突検知の設定を動的に変更する技術を提供することにある。
 本開示の一例では、1以上のプロセッサーに命令を実行させるプログラムが提供される。命令は、第1のオブジェクトおよび第2のオブジェクトが属するグループを決定するステップと、第1のオブジェクトおよび第2のオブジェクトを含むシミュレーションを実行するステップと、シミュレーションの実行中に、第1のオブジェクトと、第2のオブジェクトとの衝突判定を行なうステップと、予め定められた条件を満たすことに基づいて、第1のオブジェクトの属するグループを変更するステップとを含む。衝突判定は、第1のオブジェクトが属するグループと、第2のオブジェクトが属するグループとが異なる場合にのみ実行される。
 上記の開示によれば、プログラムは、不要なオブジェクト同士の衝突検知処理の実行を抑制し、プログラムを実行する装置の計算リソースの消費を抑えることができる。
 上記の開示において、予め定められた条件は、シミュレーション中における第1のオブジェクトが従属する対象により定義される。
 上記の開示によれば、第1のオブジェクトが接触している対象に基づいて、第1のオブジェクトの所属グループを変更することができる。
 上記の開示において、命令は、第1のオブジェクトが第2のオブジェクトに接触していない状態から、第1のオブジェクトが第2のオブジェクトに接触した状態に変化したことに基づいて、第1のオブジェクトの従属先を第2のオブジェクトに変更するステップをさらに含む。
 上記の開示によれば、プログラムは、第1のオブジェクトおよび第2のオブジェクトの接触状態に基づいて、第1のオブジェクトの所属グループを動的に切り替えることができる。
 上記の開示において、命令は、第1のオブジェクトが接触する対象の変化を監視するステップと、第1のオブジェクトが接触する対象の変化を検出するごとに、第1のオブジェクトが触れる対象に基づいて、第1のオブジェクトの属するグループを変更するステップとをさらに含む。
 上記の開示によれば、プログラムは、第1のオブジェクトに接触する任意のオブジェクトに基づいて、第1のオブジェクトの所属グループを動的に切り替えることができる。
 上記の開示において、命令は、シミュレーションの実行状況をディスプレイに表示するステップをさらに含む。第1のオブジェクトの色は、第1のオブジェクトおよび第2のオブジェクトが同じグループに属する場合、第2のオブジェクトの色と同じであり、第1のオブジェクトおよび第2のオブジェクトが同じグループに属さない場合、第2のオブジェクトの色と異なる。
 上記の開示によれば、プログラムは、ユーザーに対して、同一グループに属するオブジェクトを視覚的に理解しやすいように提示できる。
 上記の開示において、命令は、第1のオブジェクトの衝突を検知したことに基づいて、第1のオブジェクトまたは第1のオブジェクトが接触する対象の色を変化させるステップをさらに含む。
 上記の開示によれば、プログラムは、ユーザーに、オブジェクト同士の衝突の発生を視覚的に理解しやすいように提示できる。
 上記の開示において、命令は、第1のオブジェクトと同じグループに属するオブジェクトを第1のオブジェクトに対する衝突判定の対象から外すフィルタを生成するステップと、衝突判定において、フィルタに含まれるオブジェクトを第1のオブジェクトに対する衝突判定から除外するステップとをさらに含む。
 上記の開示によれば、プログラムは、フィルタを参照することにより、不要なオブジェクト同士の衝突検知処理の実行を抑制することができる。
 上記の開示において、命令は、第1のオブジェクトと第2のオブジェクトとの間に従属関係を設定するステップと、第1のオブジェクトと第2のオブジェクトとの間に従属関係が設定されたことに基づいて、第1のオブジェクトと第2のオブジェクトとを同一のグループに属するように設定するステップとをさらに含む。
 上記の開示によれば、プログラムは、オブジェクトの従属関係に基づいて、オブジェクトをグルーピングすることができる。
 上記の開示において、命令は、予め定められた条件を定義するためのテンプレートを提供するステップと、テンプレートごとに、第1のオブジェクトに関する処理を追加する入力を受け付けるステップとをさらに含む。
 上記の開示によれば、プログラムは、ユーザーに、容易にシミュレーションのスクリプトを作成する手段を提供できる。
 上記の開示において、第1のオブジェクトに関する処理は、第1のオブジェクトの従属先のオブジェクトの変更処理を含む。
 上記の開示によれば、プログラムは、ユーザーに、第1のオブジェクトの所属グループを変更するための設定の入力手段を提供できる。
 上記の開示において、第1のオブジェクトに関する処理は、第1のオブジェクトまたは第2のオブジェクトの可視化のオン/オフの切り替え処理を含む。
 上記の開示によれば、プログラムは、ユーザーに、オブジェクトの可視化の切り替え設定の入力手段を提供できる。
 上記の開示において、命令は、テンプレートに基づいて作成された複数のスクリプトを保存するステップと、複数のスクリプトの各々の実行シーケンスを決定する入力を受け付けるステップとをさらに含む。
 上記の開示によれば、プログラムは、ユーザーに、複数のスクリプトの実行順序を決定する手段を提供できる。
 上記の開示において、命令は、シミュレーションに含まれる1または複数のオブジェクトの動作をシミュレーションによって実現するか、エミュレータを動作させることによって実現するかを切り替えるステップをさらに含む。
 上記の開示によれば、プログラムは、エミュレータの動作をシミュレーションに組み込むことができる。
 上記の開示において、命令は、第1のオブジェクトと、第2のオブジェクトとの衝突を検知したことに基づいて、第1のオブジェクトに関する情報と、第2のオブジェクトに関する情報と、衝突時刻とを含むログ情報を出力するステップをさらに含む。
 上記の開示によれば、プログラムは、ユーザーに、ログ情報を提供できる。
 本開示の他の例では、上記のいずれかに記載のプログラムを格納したメモリーと、プログラムを実行するプロセッサーとを含む装置が提供される。
 上記の開示によれば、装置は、不要なオブジェクト同士の衝突検知処理の実行を抑制し、プロセッサーの計算リソースの消費を抑えることができる。
 ある実施の形態に従うと、オブジェクト間の衝突検知の設定を動的に変更することが可能になる。
 この開示内容の上記および他の目的、特徴、局面および利点は、添付の図面と関連して理解されるこの本開示に関する次の詳細な説明から明らかとなるであろう。
ある実施の形態に従うシミュレーションプログラム100の動作概要の一例を示す図である。 シミュレーションプログラム100を適用可能なライン20の構成の一例を示す図である。 シミュレーションプログラム100を実行するための情報処理装置300の構成の一例を示す図である。 シミュレーションプログラム100のエミュレーション機能の概要の一例を示す図である。 シミュレーションプログラム100の一機能であるビジュアライザー530の表示例を示す図である。 シミュレーションプログラム100の第1のUI(User Interface)600の例を示す図である。 シミュレーションプログラム100の第2のUI700の一例を示す図である。 シミュレーションプログラム100の第3のUI800の一例を示す図である。 シミュレーションプログラム100の第4のUI900の一例を示す図である。 シミュレーションプログラム100の第5のUI1000の一例を示す図である。 シミュレーションプログラム100の第1のモジュール構成の一例を示す図である。 第1のモジュール構成によるシーケンスの一例を示す図である。 シミュレーションプログラム100の第2のモジュール構成の一例を示す図である。 第2のモジュール構成によるシーケンスの前半の一例を示す図である。 第2のモジュール構成によるシーケンスの後半の一例を示す図である。 シミュレーションプログラム100の第3のモジュール構成の一例を示す図である。 第3のモジュール構成によるシーケンスの前半の一例を示す図である。 第3のモジュール構成によるシーケンスの後半の一例を示す図である。 シミュレーションプログラム100の第4のモジュール構成の一例を示す図である。 第4のモジュール構成によるシーケンスの前半の一例を示す図である。 第4のモジュール構成によるシーケンスの後半の一例を示す図である。 シミュレーションプログラム100のフローチャートの一例である。
 以下、図面を参照しつつ、本開示に係る技術思想の実施の形態について説明する。以下の説明では、同一の部品には同一の符号を付してある。それらの名称および機能も同じである。したがって、それらについての詳細な説明は繰り返さない。
 <A.適用例>
 (A-1.シミュレーションの対象)
 図1は、本実施の形態に従うシミュレーションプログラム100の動作概要の一例を示す図である。図1を参照して、シミュレーションプログラム100の適用例について説明する。シミュレーションプログラム100は、工場等に設置されるロボットまたは機械等を含む製造ラインまたは検品ライン等(これらを総称するときは、「ライン」と表すこともある)のシミュレーション機能を提供する。
 ラインは、ロボットアーム、ワーク、作業台およびトレー等の複数のオブジェクトを含む。なお、ここでの「ワーク」とは、組み立て作業、検品作業等における作業の対象物を指す。シミュレーションプログラム100は、製造ラインを稼働させたときに、これらのオブジェクトが干渉しないか否か(オブジェクト同士が衝突するか否か)を判定し得る。シミュレーションプログラム100は、PC(Personal Computer)、ワークステーション、サーバー装置、クラウド環境等の情報処理装置によって実行され得る。これ以降の説明において、シミュレーションプログラム100が実行する全ての動作は、シミュレーションプログラム100をインストールされた情報処理装置が実行しているものとする。
 図1に示す例では、シミュレーションプログラム100は、ラインについてのシミュレーションを実行している。ラインは、ロボットアーム140と、台座160とを含む。また、トレー170は、台座160の上に設置されている。ロボットアーム140は、トレー170上のワーク150を台座160の所定の位置まで運搬する。なお、図1に示す構成は一例であり、ラインの構成はこれに限られない。ある局面において、ラインは、任意の数のロボットアーム、他の機械、センサー等を含んでいてもよい。また、他の局面において、ラインは、ロボットと人間とが協調作業を行うようにデザインされていてもよい。
 (A-2.シーンごとの衝突判定対象の切り替え)
 シミュレーションプログラム100は、主に3D(Three-Dimensional)オブジェクトを用いたシミュレーション機能を提供する。3Dオブジェクトを用いたシミュレーションは、多大な計算リソースおよびメモリーを必要とする。仮に、シミュレーションプログラム100をインストールされた情報処理装置が、シミュレーションに含まれる全てのオブジェクトの衝突検知を実行した場合、その計算量は膨大なものとなる。
 そこで、シミュレーションプログラム100は、重要な特定のオブジェクトの衝突判定のみを行うことで、情報処理装置の計算リソースを効率よく使用する。さらに、シミュレーションプログラム100は、後述するシーンごとに、衝突判定を行うオブジェクトを切り替える機能を提供する。
 シミュレーションプログラム100は、ラインの稼働状態を特定のシーンに分割する。そして、シミュレーションプログラム100は、各シーンでの衝突判定が必要なオブジェクトに対してのみ、衝突判定処理を実行する。ここでの「シーン」は、特定のオブジェクト同士が接触しているか否かによって定義され得る。例えば、図1のシーン110,120,130は、ワーク150が他のどのオブジェクトと接触しているかによって定義される。
 シーン110は、ロボットアーム140が、トレー170に設置されたワーク150を把持しようとするシーンである。当該シーン110では、ワーク150は、トレー170と接触していることが想定される。また、ワーク150は、ロボットアーム140および台座160には接触していないことが想定される。
 シーン110において、シミュレーションプログラム100は、ワーク150とトレー170との接触判定を実行しない。なぜならば、ワーク150とトレー170とが接触しているのは当然であり、当該接触はエラーに含めるべきではないためである。
 逆に、シミュレーションプログラム100は、ワーク150と、ロボットアーム140および台座160との接触判定を実行する。なぜならば、これらのオブジェクト同士は、本来接触していないはずだからである。例えば、ワーク150および台座160が接触している場合、ワーク150またはトレー170の配置ミスが疑われる。また、ロボットアーム140が、本来想定していない角度または向きでワーク150に接触した場合、ロボットアーム140の制御プログラムが誤っている可能性が高い。このように、シミュレーションプログラム100は、シーン110で問題となるオブジェクト同士の衝突のみを検出し得る。
 シーン120は、シーン110の次のシーンであり、ロボットアーム140が、ワーク150を把持し、ワーク150をトレー170から持ち上げているシーンである。当該シーン120では、ロボットアーム140に把持されているワーク150は、ロボットアーム140に接触していることが想定される。また、ロボットアーム140に把持されているワーク150は、台座160およびトレー170のいずれにも接触しないことが想定される。
 シーン120において、シミュレーションプログラム100は、ロボットアーム140に把持されたワーク150と、ロボットアーム140との衝突判定を実行しない、なぜならば、ロボットアーム140に把持されているワーク150と、ロボットアーム140とが接触しているのは当然であり、当該接触はエラーに含めるべきではないためである。
 逆に、シミュレーションプログラム100は、ロボットアーム140に把持されたワーク150と、台座160およびトレー170との接触判定を実行する。また、シミュレーションプログラム100は、ロボットアーム140に把持されたワーク150と、台座160に設置されている他のワーク150との衝突判定も実施する。なぜならば、これらのオブジェクト同士は、本来接触していないはずだからである。例えば、ロボットアーム140に把持されたワーク150と、トレー170とが接触している場合、ロボットアーム140は、正常にワーク150を持ち上げておらず、ワーク150をトレー170上で引きずっている可能性がある。また、ロボットアーム140に把持されたワーク150と、トレー170に設置されている他のワーク150とが接触した場合、ロボットアーム140は、ワーク150同士をぶつけていることになる。これらの衝突が検知された場合、ロボットアーム140の制御プログラムに誤りがある可能性が高い。
 シーン130は、シーン120の次のシーンであり、ロボットアーム140が、ワーク150を台座160の所定の位置に設置したシーンである。当該シーン130では、台座160に設置されたワーク150は、台座160に接触していることが想定される。また、台座160に設置されたワーク150は、ロボットアーム140およびトレー170のいずれにも接触していないことが想定される。
 シーン130において、シミュレーションプログラム100は、台座160に設置されたワーク150と、台座160との接触判定を実行しない。なぜならば、台座160に設置されたワーク150と、台座160とが接触しているのは当然であり、当該接触はエラーに含めるべきではないためである。
 逆に、シミュレーションプログラム100は、台座160に設置されたワーク150と、ロボットアーム140およびトレー170との接触判定を実行する。なぜならば、これらのオブジェクト同士は、本来接触していないはずだからである。例えば、台座160に設置されたワーク150と、トレー170とが接触している場合、ワーク150が正常に台座160の上に設置されていない可能性がある。また、台座160に設置されたワーク150と、ロボットアーム140とが接触している場合、ロボットアーム140の制御プログラムに誤りがある可能性が高い。
 (A-3.オブジェクトのグルーピング)
 シミュレーションプログラム100は、上記のように、シーンごとに衝突検知を行う対象となるオブジェクトを切り替えるために、オブジェクトをグルーピングして管理する。
 シミュレーションプログラム100は、あるシーンにおいて、お互いに接触していることが想定されるオブジェクト同士をグルーピングする。例えば、シーン110において、ワーク150とトレー170とは、接触していることが想定される。そのため、シミュレーションプログラム100は、ワーク150とトレー170とを同一のグループに属するオブジェクトとして管理する。逆に、ワーク150は、ロボットアーム140および台座160とは、接触していないことが予想される。そのため、シミュレーションプログラム100は、ワーク150をロボットアーム140および台座160とは別のグループに属するオブジェクトとして管理する。シーン110の例では、シミュレーションプログラム100は、各オブジェクトをグループA(ワーク150、トレー170)、グループB(ロボットアーム140)、グループC(台座160)のようにグルーピングし得る。
 シミュレーションプログラム100は、同一のグループに属するオブジェクト同士の衝突判定を実行せず、異なるグループに属するオブジェクト同士の衝突判定を実行する。例えば、シミュレーションプログラム100は、シーン110において同一グループに属するワーク150およびトレー170の衝突判定を実行しない。逆に、シミュレーションプログラム100は、シーン110において互いに異なるグループに属するワーク150と、ロボットアーム140と、台座160との衝突判定を実行する。
 シミュレーションプログラム100は、各オブジェクトが属するグループを定義するための入力機能をユーザーに提供する。なお、シミュレーションプログラム100は、ユーザーからの入力等に基づいて、接触しているオブジェクトでも異なるグループに分類することができる。例えば、シミュレーションプログラム100は、台座160と、台座160上に設置されているトレー170とを異なるグループに分類し得る。
 シミュレーションプログラム100は、シーンが切り替わるごとに(特定のオブジェクト同士の接触関係が変わるごとに)、グルーピングを更新する。例えば、シーン110からシーン120への切り替わり時に(ワーク150がロボットアーム140に把持されて持ち上げられた時に)、シミュレーションプログラム100は、ワーク150をグループAからロボットアーム140が属するグループBに移す。当該処理により、シーン120において、ワーク150とロボットアーム140とについての衝突判定は、実行されなくなる。
 さらに、シミュレーションプログラム100は、同一のグループに属する各オブジェクト間で従属関係(親子関係)を定義する。例えば、実際にはロボットアーム140は、ロボット本体、ロボットツール(ロボットアームの先端のツール)等の複数のオブジェクトを含み得る。この場合、ロボット本体は親であり、ロボットツールは子になる。他の例として、シーン110におけるワーク150の親は、トレー170である。シミュレーションプログラム100は、これらの各オブジェクトの従属関係を定義することで、複数のオブジェクトをグルーピングする。シミュレーションプログラム100は、シーンごとのオブジェクト同士の従属関係を定義する入力機能をユーザーに定義する。シミュレーションプログラム100は、シーンごとのオブジェクト同士の従属関係に基づいて、グルーピングを更新し得る。
 上記のように、シミュレーションプログラム100は、オブジェクトをグルーピングして管理し、同じグループに属するオブジェクト同士の衝突検知処理の実行を抑制する。こうすることで、シミュレーションプログラム100は、シミュレーションに必要な計算リソースを抑制することができる。
 さらに、シミュレーションプログラム100は、シーンの切り替わりごとに、グルーピングを更新する処理を実行する。こうすることで、シミュレーションプログラム100は、シーンごとに不要なオブジェクト同士の衝突検知処理の実行を抑制することができる。
 <B.ハードウェア構成>
 図2は、シミュレーションプログラム100を適用可能なライン20の構成の一例を示す図である。ライン20は、上位伝送路220と、下位伝送路230とを含む。上位伝送路220には、統合コントローラー200と、IPC(Industrial Process Control)装置201と、操作パネル202と、管理装置203と、搬送用ロボット204と、センサー205と、LiDAR(Light Detection and Ranging)206と、クラウド環境207と、データベース208と、シミュレーター209とが接続される。
 下位伝送路230には、統合コントローラー200と、フィールド装置240A~240J(総称する場合は、「フィールド装置240」と表すこともある)とが接続されている。
 統合コントローラー200は、ライン20に接続される各種センサー、ロボットおよびモーター等の各種アクチュエーターを制御する。言い換えれば、統合コントローラー200は、PLC(Programmable Logic Controller)の機能およびロボットコントローラーの機能の両方を備える装置である。ある局面において、ライン20は、統合コントローラー200の代わりに、個別のPLCと、ロボットコントローラーとを備えていてもよい。
 IPC装置201は、FA(Factory Automation)等において、システム全体の生産管理や、プロセスを管理する。操作パネル202は、工場のスタッフにより、ライン20の検査や操作に使用される。
 管理装置203は、例えば、搬送用ロボット204等を管理および制御する。搬送用ロボット204は、工場内でワークやトレーを搬送する。センサー205は、安全機構として使用され得る。例えば、センサー205は、ロボットまたは工作機械等の付近に人間がいるか否かなどを検出するために使用され得る。LiDAR206は、光センサーを用いて周辺障害物を検出する装置である。LiDAR206は、例えば、搬送用ロボット204等に搭載されて使用され得る。
 クラウド環境207は、工場の内部または外部にある複数のサーバーからなる情報処理環境である。データベース208は、統合コントローラー200またはIPC装置201等から送られてくるログデータ等を蓄積する。シミュレーター209は、シミュレーションプログラム100を実行する情報処理装置である。シミュレーター209は、ライン20の一部または全ての構成を含むシミュレーションを実行し得る。管理者は、シミュレーター209を用いてライン20の設計に問題がないことを確認してから、実際にライン20を稼働させることができる。
 ある局面において、クラウド環境207、データベース208およびシミュレーター209の全てまたは一部は、工場の敷地外に設けられていてもよい。その場合、クラウド環境207、データベース208およびシミュレーター209の全てまたは一部は、外部ネットワーク、ゲートウェイ装置等(図示せず)を介して、上位伝送路220に接続され得る。
 フィールド装置240は、ロボットアーム、スカラー装置、直動機構、またはモーター等の制御装置である。ある局面において、フィールド装置240は、ロボットアーム等に内蔵されていてもよいし、ロボットアーム等の外部に設けられていてもよい。ライン20では、複数のフィールド装置240が協調作業を行なうことにより、製品の製造または検査等を実行し得る。
 シミュレーションプログラム100は、例えば、シミュレーションの中で、ライン20を構成するフィールド装置240とワークとの衝突検知、搬送用ロボット204の衝突検知等を行ない得る。シミュレーションプログラム100は、フィールド装置240のプログラムの開発環境と一体型であってもよい。その場合、シミュレーター209は、プログラムのシミュレーション完了後に、当該プログラムをフィールド装置240にインストールし得る。
 図3は、シミュレーションプログラム100を実行するための情報処理装置300の構成の一例を示す図である。情報処理装置300は、CPU(Central Processing Unit)301と、1次記憶装置302と、2次記憶装置303と、外部機器インターフェイス304と、入力インターフェイス305と、出力インターフェイス306と、通信インターフェイス307とを含む。
 CPU301は、情報処理装置300の各種機能を実現するためのプログラムを実行し得る。CPU301は、例えば、少なくとも1つの集積回路によって構成される。集積回路は、例えば、少なくとも1つのCPU、少なくとも1つのFPGA(Field-Programmable Gate Array)、またはこれらの組み合わせなどによって構成されてもよい。CPU301は、2次記憶装置303から1次記憶装置302に読み込まれたシミュレーションプログラム100により、図1を参照して説明した処理を実行し得る。
 1次記憶装置302は、CPU301によって実行されるプログラムと、CPU301によって参照されるデータとを格納する。ある局面において、1次記憶装置302は、DRAM(Dynamic Random Access Memory)またはSRAM(Static Random Access Memory)等によって実現されてもよい。
 2次記憶装置303は、不揮発性メモリーであり、CPU301によって実行されるプログラムおよびCPU301によって参照されるデータを格納してもよい。その場合、CPU301は、2次記憶装置303から1次記憶装置302に読み出されたプログラムを実行し、2次記憶装置303から1次記憶装置302に読み出されたデータを参照する。ある局面において、2次記憶装置303は、HDD(Hard Disk Drive)、SSD(Solid State Drive)、EPROM(Erasable Programmable Read Only Memory)、EEPROM(Electrically Erasable Programmable Read Only Memory)またはフラッシュメモリー等によって実現されてもよい。
 外部機器インターフェイス304は、プリンター、スキャナーおよび外付けHDDなどの任意の外部機器に接続され得る。ある局面において、外部機器インターフェイス304は、USB(Universal Serial Bus)端子等によって実現されてもよい。
 入力インターフェイス305は、キーボード、マウス、タッチパッドまたはゲームパッドなどの任意の入力装置に接続され得る。ある局面において、入力インターフェイス305は、USB端子、PS/2端子およびBluetooth(登録商標)モジュール等によって実現されてもよい。
 出力インターフェイス306は、ブラウン管ディスプレイ、液晶ディスプレイまたは有機EL(electro-luminescence)ディスプレイなどの任意の出力装置に接続され得る。ある局面において、出力インターフェイス306は、USB端子、D-sub端子、DVI(Digital Visual Interface)端子およびHDMI(登録商標)(High-Definition Multimedia Interface)端子等によって実現されてもよい。
 通信インターフェイス307は、有線または無線のネットワーク機器と接続される。ある局面において、通信インターフェイス307は、有線LAN(Local Area Network)ポートおよびWi-Fi(登録商標)モジュール等によって実現されてもよい。他の局面において、通信インターフェイス307は、TCP/IP(Transmission Control Protocol/Internet Protocol)、UDP(User Datagram Protocol)その他の通信プロトコルを用いてデータを送受信してもよい。
 <C.シミュレーションプログラムの詳細>
 (C-1.エミュレーション機能)
 図4は、シミュレーションプログラム100のエミュレーション機能の概要の一例を示す図である。シミュレーションプログラム100は、シミュレーションの中で一部または全てのオブジェクトをエミュレートする機能を提供する。
 シミュレーションプログラム100は、一例として、仮想PLC410と、仮想ロボット420とを生成する。仮想PLC410および仮想ロボット420の各々は、実機のプログラムを実行することができる。そのため、ユーザーは、作成したPLC用プログラムおよびロボット用プログラムの各々を仮想PLC410および仮想ロボット420の各々に実行させることで、実機を用意することなく、各プログラムの動作を検証することができる。
 また、シミュレーションプログラム100は、仮想PLC410と、仮想ロボット420との間でやりとりされるデータの受け渡しのための領域であるEtherCat共有メモリー430を提供する。シミュレーションプログラム100は、1次記憶装置302の一部の領域をEtherCat共有メモリー430として確保する。仮想PLC410および仮想ロボット420の各々は、仮想的に独立した装置として動作する。そのため、各装置は、EtherCat共有メモリー430を介して入力データ431および出力データ432の受け渡しを実現する。
 一例として、仮想PLC410は、PLC本体411と、PLC本体411に制御されるサーボモーター412その他のアクチュエーターとを含む。また、一例として、仮想ロボット420は、ロボット本体422の制御装置に当たるロボットコントローラー421と、ロボット本体422とを含む。
 (C-2.ユーザーインターフェイス)
 次に、図5~図10を参照して、シミュレーションプログラム100が提供するユーザーインターフェイスの例について説明する。これらのユーザーインターフェイスは、統合コントローラー200のIDE(Integrated Development Environment)の一部として提供され得る。
 図5は、シミュレーションプログラム100の一機能であるビジュアライザー530の表示例を示す図である。図5の例では、シミュレーションプログラム100は、統合コントローラー200のIDE500の一部として提供されている。
 IDE500は、ラダーソフトウェア510と、ロボットプログラムソフトウェア520とを含む。ラダーソフトウェア510は、統合コントローラー200のPLC機能のプログラムミングに使用される。ラダーソフトウェア510によって作成されたプログラムは、統合コントローラー200にインストールされて統合コントローラー200により実行されるか、仮想PLC410により実行される。ロボットプログラムソフトウェア520は、統合コントローラー200のロボットコントローラー機能のプログラミングに使用される。ロボットプログラムソフトウェア520によって作成されたプログラムは、統合コントローラー200にインストールされて統合コントローラー200により実行されるか、仮想ロボット420により実行される。
 IDE500は、さらにビジュアライザー530の機能を提供する。IDE500は、ユーザーからの入力に基づいて、シミュレーションプログラム100を動作させる。ビジュアライザー530は、ライン20を構成する各オブジェクト(ロボットアーム、ワーク等)のシミュレーションの様子を可視化してディスプレイに表示する。
 図6は、シミュレーションプログラム100の第1のUI600の一例を示す図である。第1のUI600は、シミュレーションにおける各シーンの動作を規定するための入力を受け付けて、シーンごとのスクリプトを生成する。
 第1のUI600は、エディタ610と、ツールボックス620と、テンプレート630と含む。エディタ610は、ユーザーからのシミュレーションプログラム100のソースコードの記述の入力を受け付ける。
 ツールボックス620は、シミュレーションプログラム100のソースコードのテンプレート630を提供する。テンプレート630は、シミュレーションの中で典型的に使用されるシーンのソースコードのひな形である。ユーザーは、テンプレート630を選択して、当該選択したテンプレート630にコードを追記することで、容易に各シーンのシミュレーション内容を定義したスクリプトを作成できる。ある局面において、テンプレート630は、後述する図10のスクリプトの生成に利用されてもよい。
 テンプレート630がエディタ610に表示されると、一例として、テンプレート630のシーンを示す条件640が表示される。ユーザーは、シミュレーションが当該条件640に該当したときの処理のコードをテンプレート630に追記することで、特定のシーンのシミュレーション内容を定義できる。一例として、ユーザーは、オブジェクト間の従属関係(あるオブジェクトの従属先)の指定、オブジェクトの表示のオン/オフ、オブジェクトの初期位置等の設定をテンプレート630に追記することができる。ある局面において、エディタ610は、テキスト形式以外にも、フロー形式、ブロック形式その他の任意の入力形式であってもよい。ユーザーは、第1のUI600を用いることで、例えば、図1のシーン110,120,130のそれぞれのシミュレーションの内容を定義したスクリプトを作成し得る。
 図7は、シミュレーションプログラム100の第2のUI700の一例を示す図である。第2のUI700は、処理内容が定義されたシーンの実行順書の決定するための入力を受け付ける。
 スクリプトリスト710は、第1のUI600等によって作成されたスクリプト等を含むリストである。ユーザーは、スクリプトリスト710からスクリプトを選択して、スクリプトの実行設定720に当該選択したスクリプトを追加し得る。
 ユーザーは、上記の第1のUI600および第2のUI700を用いることで、シミュレーションにおけるシーンごとの処理内容をスクリプトとして定義し、さらに、これらのスクリプト(シーン)の実行順序を容易に定義し得る。
 図8は、シミュレーションプログラム100の第3のUI800の一例を示す図である。第3のUI800は、各シーンにおける、オブジェクトのグルーピングを設定するための操作を受け付ける。ユーザーは、第3のUI800を用いて、各シーンのグループの設定を行い得る。
 図8に示す例では、あるシーン(A)におけるグループ810,820および830が設定されている。グループ810は、トレー170を含む。グループ820は、ロボット(ロボットアーム140の本体)と、ロボットツール(ロボットアーム140の先端のツール)とを含む。グループ830は、台座160を含む。
 シミュレーションプログラム100は、ユーザーが第3のUI800を用いて各オブジェクトに設定したグループの情報を衝突フィルタを作成するための「衝突フィルタグループ」として使用する。すなわち、シミュレーションプログラム100は、シーン(A)における衝突検知を実行する際、グループ810,820および830を参照し、同一グループに属するオブジェクト同士(衝突を考慮する必要のないオブジェクト同士)の衝突検知を実行しない。例えば、シミュレーションプログラム100は、シーン(A)において、グループ820に属するロボットと、ロボットツールとの衝突検知を実行しない。
 上記のように、シミュレーションプログラム100は、グループの設定を参照することで、衝突を考慮する必要のないオブジェクト同士の衝突検知の実行を抑制する。これにより、シミュレーションプログラム100は、情報処理装置300の計算リソースの消費を抑制し、より高速にシミュレーションを実行することができる。
 図9は、シミュレーションプログラム100の第4のUI900の一例を示す図である。第4のUI900は、各シーンにおける、オブジェクトの衝突検知の自動切り替え対象を選択するユーザーの操作を受け付ける。
 図9の例では、仮想ワーク(ワーク150)が衝突検知の自動切り替え対象として選択されている。衝突検知の自動切り替え対象として選択されたオブジェクトは、シーンの切り替わりごとに(例えば、他のオブジェクトと衝突するごとに)、所属するグループが切り替わる。ここでの仮想ワークとは、シミュレーション内における仮想的なワークを指す。ラインのシミュレーションを実行する際、ユーザーは、ワークの動作を中心にシミュレーションの設定を作成し得る。
 以下に、図1のシーン110~130と、図8のグループと、図9の設定とを参照して、シーンの切り替わりについて説明する。最初に、シーン110において、ワーク150は、トレー170に設置されている。この場合、ワーク150は、トレー170の子として、グループ810に属する。
 次に、シーン120において、ロボットアーム140(ロボットツール)がワーク150を把持してトレー170から持ち上げている。この場合、ワーク150は、ロボットツールの子として、グループ820に属する。
 最後に、シーン130において、ロボットアーム140がワーク150を台座160に設置し、ロボットアーム140がワーク150を離す。この場合、ワーク150は、台座160の子として、グループ830に属する。
 このように、衝突検知の自動切り替え対象として選択されたオブジェクトは、図6および図7で設定されたシーンにおいて、動的に接触したオブジェクトの子になり、当該接触したオブジェクトと同じグループに属する。
 図10は、シミュレーションプログラム100の第5のUI1000の一例を示す図である。第5のUI1000は、シーンの切り替え条件、および各シーンにおいて実行されるべき処理の入力を受け付ける。
 図10の例では、第1のシーンの条件として、開始時(isStart)が設定されている。また、第1のシーンにおいて実行されるべき処理として、ワーク150の親をトレー170に設定する処理(workpiece.Parent=Tray)が定義されている。
 次に、第2のシーンの条件として、ワーク150の親がトレー170であり、かつロボットツールのチャックがワーク150を正常に把持すること(workpiece.Parent==Tray && chuckClose)が設定されている。また、第2のシーンにおいて実行されるべき処理として、ワークピースの親をロボットツール(チャック)に設定する処理(workpiece.Parent=Chuck)が定義されている。
 次に、第3のシーンの条件として、ワーク150の親がロボットツール(チャック)であり、かつロボットツールのチャックがワーク150を離したこと(workpiece.Parent==Chuck && chuckOpen)が設定されている。また、第3のシーンにおいて実行されるべき処理として、ワークピースの親を台座160(xyTable)に設定する処理(workpiece.Parent=xyTable)が定義されている。
 シミュレーションプログラム100は、シミュレーション中に、各シーンを示す条件が満たされたか否かを判定する。そして、シミュレーションプログラム100は、条件が満たされたと判定した場合、その条件によって定義されるシーンになったと判定する。そし、シミュレーションプログラム100は、当該条件が満たされた場合に実行されるべき処理を実行する。例えば、典型的な処理として、各シーンで、オブジェクトの従属関係の変更処理(親となるオブジェクトの変更処理)が設定されていてもよい。
 シミュレーションプログラム100は、第3のUI800でのグループの設定と、第5のUI1000で作成されたスクリプトとに基づいて、オブジェクトのグループの変更処理を実行し得る。シミュレーションプログラム100は、第3のUI800にて、一旦全てのオブジェクトの所属するグループの設定の入力を受け付け得る。次に、シミュレーションプログラム100は、第5のUI1000にて、シーンの切り替わり条件と、各シーンにおけるオブジェクトの従属関係の変更処理の入力を受け付け得る。
 シミュレーションプログラム100は、シミュレーション中に、オブジェクトAがオブジェクトBの子になった場合、オブジェクトAを親であるオブジェクトBの属するグループに移動させる。すなわち、第3のUI800で設定されたグループは、各オブジェクトの初期のグループであり、各オブジェクトは、第5のUI1000にて定義されたシーンごとの従属関係の変更処理に基づいてグループ間を移動する。
 ある局面において、シミュレーションプログラム100は、第5のUI1000にて、各オブジェクトの初期の従属関係の入力を受け付けてもよい。また、他の局面において、シミュレーションプログラム100は、オブジェクトごとの従属関係と、親オブジェクトおよび子オブジェクト間のオフセットとを設定するためのUIをユーザーに別途提供してもよい。
 上記のように第4のUI900および第5のUI1000を用いることで、ユーザーは、シミュレーションプログラム100に、特定のオブジェクトに対する衝突検知の対象を動的に切り替えるための設定を入力し得る。
 ある局面において、シミュレーションプログラム100は、さらに、シーンごとに、各オブジェクトを可視化するか否かを設定するUIを提供し得る。当該UIにより、ユーザーは、シミュレーションプログラム100に、ユーザーに視覚的に提示する必要のあるオブジェクトのみをディスプレイに表示するための設定を入力し得る。
 次に、図11~図21を参照して、シミュレーションプログラム100のモジュール構成およびモジュール間の通信について説明する。各モジュールは、シミュレーションプログラム100を構成するプログラム部品またはデータである。ある局面において、これらのモジュールの一部または全てはハードウェアにより実現されてもよい。
 (C-3.第1のモジュール構成)
 図11は、シミュレーションプログラム100の第1のモジュール構成の一例を示す図である。シミュレーションプログラム100は、統合シミュレーション実行部1101と、仮想ワーク動作シーケンス設定部1103と、シミュレーション設定1106と、CADデータベース1107と、3D処理部1108と、衝突フィルタグループ設定部1112と、衝突フィルタグループデータベース1115と、3D形状衝突検知部1116と、衝突検知結果データベース1117とを含む。
 統合シミュレーション実行部1101は、仮想時刻生成部1102を含む。仮想ワーク動作シーケンス設定部1103は、仮想ワーク動作スクリプト作成部1104と、仮想ワーク動作スクリプト実行部1105とを含む。3D処理部1108は、3D形状表示部1109と、3D形状解析部1110と、3D形状読取部1111とを含む。衝突フィルタグループ設定部1112は、衝突フィルタグループ設定画面1113と、衝突フィルタグループ設定自動変更部1114とを含む。
 統合シミュレーション実行部1101は、各種スクリプトに基づくシミュレーションを実行すると共にシミュレーション全体を管理する。仮想時刻生成部1102は、シミュレーション内での仮想的な時刻を生成する。
 仮想ワーク動作シーケンス設定部1103は、ユーザーからのシミュレーションの実行手順の設定(スクリプト)の入力を受け付ける。さらに、仮想ワーク動作シーケンス設定部1103は、シミュレーションの実行手順の設定を解釈および実行する。仮想ワーク動作スクリプト1140は、ユーザーからの仮想ワークに関する動作スクリプトの入力を受け付ける。ある局面において、ユーザーは、例えば、第1のUI600、第2のUI700および第5のUI1000等を用いて、仮想ワークに関する動作スクリプトを作成し得る。仮想ワーク動作スクリプト実行部1105は、ユーザーによって作成された仮想ワークに関する動作スクリプトを解釈して実行する。
 シミュレーション設定1106は、各シーンにおけるオブジェクト間の従属関係および表示データ等を格納する。ある局面において、シミュレーション設定1106は、リレーショナルデータベースのテーブルとして表現されてもよいし、JSON(JavaScript(登録商標) Object Notation)等の他の任意のデータ形式で表現されてもよい。他の局面において、シミュレーション設定1106に格納されるデータは、例えば、第3のUI800および第4のUI900等を用いて作成され得る。
 3D処理部1108は、シミュレーションの実行中の様子をディスプレイに表示する。ある局面において、3D処理部1108は、CADデータの読込みおよびビジュアライザー530の機能を提供する。また、他の局面において、3D処理部1108は、同じグループに属する複数のオブジェクトを同色(グループカラー)にして表示してもよい。また、3D処理部1108は、シーンの切り替わりにおいて、オブジェクト(仮想ワーク等)がグループを移動した場合、当該オブジェクトを移動先のグループカラーに変更して表示してもよい。3D形状表示部1109は、シミュレーションの実行内容を随時ディスプレイに表示する。3D形状解析部1110は、CADデータベース1107に含まれるCADファイルの形状を解析する。3D形状読取部1111は、CADデータベース1107に含まれるCADファイルを読み込む。
 衝突フィルタグループ設定部1112は、衝突フィルタグループの設定の入力を受け付けると共に、シミュレーションの実行中に衝突フィルタグループを自動で更新する。個々での衝突フィルタグループとは、図8等において説明したオブジェクトの属するグループである。これらのグループは、同一のグループに属するオブジェクト同士の衝突検知の実行を抑制するためのフィルタとして使用される。
 衝突フィルタグループ設定画面1113は、オブジェクトのグループの設定の入力を受け付ける。例えば、衝突フィルタグループ設定画面1113は、第3のUI800を含む。衝突フィルタグループ設定自動変更部1114は、衝突フィルタグループの自動更新の設定の入力を受け付ける。例えば、衝突フィルタグループ設定自動変更部1114は、第4のUI900および第5のUI1000等を含む。
 衝突フィルタグループデータベース1115は、衝突フィルタグループ設定部1112にて作成された衝突フィルタグループのデータを格納する。ある局面において、衝突フィルタグループデータベース1115は、リレーショナルデータベースのテーブルとして表現されてもよいし、JSON等の他の任意のデータ形式で表現されてもよい。
 3D形状衝突検知部1116は、シミュレーションの実行中に、オブジェクト同士の衝突を検知する。3D形状衝突検知部1116は、衝突フィルタグループのデータを参照することで、同一のグループに属するオブジェクト同士の衝突検知の実行を抑制する。3D形状衝突検知部1116は、衝突を検知すると、衝突した各オブジェクトの識別情報と衝突検知時刻とを含む衝突検知結果1118(ログ情報)を、衝突検知結果データベース1117に保存する。衝突検知時刻は、仮想時刻生成部1102によって生成された仮想時刻に基づく。ある局面において、衝突検知結果データベース1117は、リレーショナルデータベースのテーブルとして表現されてもよいし、JSON等の他の任意のデータ形式で表現されてもよい。
 なお、第1のUI600~第5のUI1000の各々で作成されたデータは、明確にいずれかのモジュールで使用されるデータである必要はない。ある局面において、第1のUI600~第5のUI1000の各々で作成されたデータの一部または全ては、適宜分解または組み合わせて、各モジュールで使用され得る。
 図12は、第1のモジュール構成によるシーケンスの一例を示す図である。図12のシーケンスは、CPU301によって実行される。ある局面において、CPU301は、2次記憶装置303から1次記憶装置302に読み込まれたシミュレーションプログラム100を実行することで、第1のモジュール構成によるシーケンスを実現し得る。
 ステップS1205において、仮想時刻生成部1102は、ユーザーからのシミュレーションの開始命令を受け付けて、仮想時刻を生成する。ステップS1210において、仮想時刻生成部1102は、仮想ワーク動作スクリプト実行部1105に、仮想時刻と共に、起動要求を送信する。
 ステップS1215において、仮想時刻生成部1102は、仮想ワーク動作スクリプト実行部1105に、演算命令を送信する。ある局面において、統合シミュレーション実行部1101が、ステップS1205~S1215の処理を実行してもよい。
 ステップS1220において、仮想ワーク動作スクリプト実行部1105は、仮想ワーク自動実行スクリプトを実行する。仮想ワーク自動実行スクリプトは、例えば、第5のUI1000で作成されたスクリプトを含む。
 ステップS1225において、仮想ワーク動作スクリプト実行部1105は、衝突フィルタグループ設定部1112に、演算実行通知を送信する。ある局面において、演算実行通知は、オブジェクトの現在位置等を含み得る。他の局面において、演算実行通知は、現在のシーンを示す情報を含んでいてもよい。
 ステップS1230において、衝突フィルタグループ設定部1112は、演算実行通知を受信したことに基づいて、衝突フィルタグループを更新する。例えば、衝突フィルタグループ設定部1112は、シーンの切り替わりに基づいて、仮想ワークの所属するグループを変更する。より具体的には、衝突フィルタグループ設定部1112は、第5のUI1000で設定されたスクリプトに基づいて、シーンの切り替わりごとに、各オブジェクトの所属するグループを変更していく。
 ステップS1235において、仮想ワーク動作スクリプト実行部1105は、3D形状衝突検知部1116に、衝突検知依頼を送信する。ステップS1240において、3D形状衝突検知部1116は、衝突検知依頼を受信したことに基づいて、仮想ワーク動作スクリプト実行部1105に、仮想ワークの位置の取得要求を送信する。
 ステップS1245において、3D形状衝突検知部1116は、衝突フィルタグループ設定部1112に、衝突フィルタグループの取得要求を送信する。ステップS1250において、衝突フィルタグループ設定部1112は、3D形状衝突検知部1116に、衝突フィルタグループを送信する。
 ステップS1255において、仮想ワーク動作スクリプト実行部1105は、3D形状衝突検知部1116に、仮想ワークの位置を送信する。ある局面において、ステップS1240およびS1255の通信は、ステップS1245およびS1250の通信とは独立して同時並行的に実行されてもよい。ステップS1260において、3D形状衝突検知部1116は、衝突フィルタグループおよび仮想ワークの位置を受信したことに基づいて、衝突検知処理を実行する。
 ステップS1265において、3D形状表示部1109は、仮想ワーク動作スクリプト実行部1105に、仮想ワークの位置の取得要求を送信する。ステップS1270において、仮想ワーク動作スクリプト実行部1105は、3D形状表示部1109に、仮想ワークの位置を送信する。
 ステップS1275において、3D形状表示部1109は、3D形状衝突検知部1116に、衝突状態情報の取得要求を送信する。ステップS1280において、3D形状衝突検知部1116は、3D形状表示部1109に、衝突状態情報を送信する。衝突状態情報は、一例として、オブジェクト同士の衝突が発生した場合における、各オブジェクトの識別情報、衝突の発生時刻等を含む。ステップS1285において、3D形状衝突検知部1116は、画面の表示を更新する。例えば、ステップS1285の処理が発生するたびに、ビジュアライザー530の表示が更新される。
 (C-4.第2のモジュール構成)
 図13は、シミュレーションプログラム100の第2のモジュール構成の一例を示す図である。第2のモジュール構成は、PLCのエミュレーション機能と、ロボットコントローラーのエミュレーション機能とを備える点で、第1のモジュール構成と異なる。ある局面において、シミュレーションプログラム100は、ユーザーによる設定に基づいて、各機能をシミュレーションで再現するか、エミュレーションで再現するかを切り替えてもよい。
 第2のモジュール構成は、第1のモジュール構成に含まれる構成に加えて、PLCエミュレーション部1320と、ロボットコントローラーエミュレーション部1330と、PLC用変数のデータベース1340と、ロボットコントローラー用変数のデータベース1350とを含む。
 PLCエミュレーション部1320は、PLCプログラム作成部1321と、PLCプログラム実行部1322とを含む。ロボットコントローラーエミュレーション部1330は、ロボットプログラム作成部1331と、ロボットプログラム実行部1332とを含む。
 PLCエミュレーション部1320は、PLCの機能をエミュレートしてその実行結果をPLC用変数のデータベース1340に格納する。PLCエミュレーション部1320は、実機のPLCにインストール可能なプログラムを解釈および実行する。
 PLCプログラム作成部1321は、実機のPLCにインストール可能なプログラムの作成機能を提供する。ある局面において、PLCプログラム作成部1321は、ラダーソフトウェア510を含んでいてもよい。その場合、ユーザーは、ラダーソフトウェア510等を介して、PLCプログラム実行部1322に実行させるプログラムを作成し得る。
 PLCプログラム実行部1322は、PLCプログラム作成部1321により作成されたプログラムを解釈および実行する。言い換えれば、PLCプログラム実行部1322は、仮想的なPLCである。PLCプログラム実行部1322の動作結果(出力データ等)は、PLC用変数のデータベース1340に格納される。
 ロボットコントローラーエミュレーション部1330は、ロボットコントローラー又はロボット本体の機能をエミュレートしてその実行結果をロボットコントローラー用変数のデータベース1350に格納する。ロボットコントローラーエミュレーション部1330は、実機のロボットコントローラーにインストール可能なプログラムを解釈および実行する。
 ロボットプログラム作成部1331は、実機のロボットコントローラーにインストール可能なプログラムの作成機能を提供する。ある局面において、ロボットプログラム作成部1331は、ロボットプログラムソフトウェア520を含んでいてもよい。その場合、ユーザーは、ロボットプログラムソフトウェア520等を介して、ロボットプログラム実行部1332に実行させるプログラムを作成し得る。
 ロボットプログラム実行部1332は、ロボットプログラム作成部1331により作成されたプログラムを解釈および実行する。言い換えれば、ロボットプログラム実行部1332は、仮想的なロボットコントローラーである。ロボットプログラム実行部1332の動作結果(出力データ等)は、ロボットコントローラー用変数のデータベース1350に格納される。
 PLC用変数のデータベース1340は、PLCプログラム実行部1322の動作結果の変数を格納する。当該変数は、PLCのエミュレーション結果をシミュレーションに取り込む際に、3D処理部1108および3D形状衝突検知部1116によって使用され得る。
 ロボットコントローラー用変数のデータベース1350は、ロボットプログラム実行部1332の動作結果の変数を格納する。当該変数は、ロボットコントローラーのエミュレーション結果をシミュレーションに取り込む際に、3D処理部1108および3D形状衝突検知部1116によって使用され得る。
 ある局面において、PLC用変数のデータベース1340およびロボットコントローラー用変数のデータベース1350は、リレーショナルデータベースのテーブルとして表現されてもよいし、JSON等の他の任意のデータ形式で表現されてもよい。
 図14は、第2のモジュール構成によるシーケンスの前半の一例を示す図である。図15は、第2のモジュール構成によるシーケンスの後半の一例を示す図である。図14および図15のシーケンスは、CPU301によって実行される。ある局面において、CPU301は、2次記憶装置303から1次記憶装置302に読み込まれたシミュレーションプログラム100を実行することで、第2のモジュール構成によるシーケンスを実現し得る。
 ステップS1402において、統合シミュレーション実行部1101は、ユーザーからのシミュレーションの開始命令を受け付ける。ステップS1405において、統合シミュレーション実行部1101は、仮想時刻生成部1102に、仮想時刻の生成要求を送信する。ステップS1407において、仮想時刻生成部1102は、仮想ワーク動作スクリプト実行部1105に、起動要求を送信する。仮想ワーク動作スクリプト実行部1105は、起動要求を受信したことに基づいて起動する。
 ステップS1410において、仮想時刻生成部1102は、PLCプログラム実行部1322に、起動要求を送信する。ステップS1412において、仮想時刻生成部1102は、ロボットプログラム実行部1332に、起動要求を送信する。ロボットプログラム実行部1332は、当該起動要求を受信したことに基づいて起動する。ある局面において、ステップS1407~S1412までの起動要求は、仮想時刻を含んでいてもよい。
 ステップS1415において、仮想時刻生成部1102は、PLCプログラム実行部1322に、演算指令を送信する。PLCプログラム実行部1322は、当該演算指令を受信したことに基づいて予め定められた演算を実行する。ステップS1417において、PLCプログラム実行部1322は、仮想時刻生成部1102に、演算結果を通知する。当該演算結果は、一例として、PLC用変数を含み得る。
 ステップS1420において、仮想時刻生成部1102は、ロボットプログラム実行部1332に、演算指令を送信する。PLCプログラム実行部1322は、当該演算指令を受信したことに基づいて予め定められた演算を実行する。ステップS1422において、ロボットプログラム実行部1332は、仮想時刻生成部1102に、演算結果を通知する。当該演算結果は、一例として、ロボットコントローラー用変数を含み得る。
 ステップS1425において、仮想時刻生成部1102は、仮想ワーク動作スクリプト実行部1105に、演算指令を送信する。ある局面において、当該演算指令は、ステップS1417の演算結果と、ステップS1422の演算結果とを含んでいてもよい。ステップS1427において、仮想ワーク動作スクリプト実行部1105は、当該演算指令を受信したことに基づいて、仮想ワーク自動実行スクリプトを実行する。仮想ワーク自動実行スクリプトは、例えば、第5のUI1000で作成されたスクリプトを含む。また、図12のシーケンスと異なり、仮想ワーク自動実行スクリプトは、PLCのエミュレーション結果と、ロボットコントローラーのエミュレーション結果とを使用する。
 ステップS1430において、仮想ワーク動作スクリプト実行部1105は、衝突フィルタグループ設定部1112に、演算実行通知を送信する。ある局面において、演算実行通知は、オブジェクトの現在位置等を含み得る。他の局面において、演算実行通知は、現在のシーンを示す情報を含んでいてもよい。
 ステップS1432において、衝突フィルタグループ設定部1112は、演算実行通知を受信したことに基づいて、衝突フィルタグループを更新する。例えば、衝突フィルタグループ設定部1112は、シーンの切り替わりに基づいて、仮想ワークの所属するグループを変更する。ステップS1435において、仮想ワーク動作スクリプト実行部1105は、3D形状衝突検知部1116に、衝突検知依頼を送信する。
 ステップS1437において、3D形状衝突検知部1116は、PLCプログラム実行部1322に、PLCが制御する各アクチュエーター(サーボモーター等)の指令値の取得要求を送信する。ここでのPLCが制御する各アクチュエーターの指令値は、エミュレートされたPLCが各アクチュエーターに対して出力した指令値である。ステップS1440において、PLCプログラム実行部1322は、3D形状衝突検知部1116に、PLCが制御する各アクチュエーターの指令値を送信する。
 ステップS1442において、3D形状衝突検知部1116は、ロボットプログラム実行部1332に、ロボットの各軸の指令値の取得要求を送信する。ここでのロボットの各軸の指令値は、エミュレートされたロボットコントローラーがロボットを構成する各モーター(各軸)に対して出力した指令値である。ステップS1445において、ロボットプログラム実行部1332は、当該取得要求を受信したことに基づいて、3D形状衝突検知部1116に、ロボットの各軸の指令値を送信する。
 ステップS1447において、3D形状衝突検知部1116は、衝突検知依頼を受信したことに基づいて、仮想ワーク動作スクリプト実行部1105に、仮想ワークの位置の取得要求を送信する。
 ステップS1450において、3D形状衝突検知部1116は、衝突フィルタグループ設定部1112に、衝突フィルタグループの取得要求を送信する。ステップS1452において、衝突フィルタグループ設定部1112は、当該取得要求を受信したことに基づいて、3D形状衝突検知部1116に、衝突フィルタグループを送信する。
 ステップS1455において、仮想ワーク動作スクリプト実行部1105は、3D形状衝突検知部1116に、当該取得要求(ステップS1447)を受信したことに基づいて、仮想ワークの位置を送信する。ある局面において、ステップS1437~S1455の通信は、それぞれ独立して同時並行的に実行されてもよい。
 ステップS1457において、3D形状衝突検知部1116は、PLCが制御する各アクチュエーターの指令値と、ロボットの各軸の指令値と、衝突フィルタグループおよび仮想ワークの位置を受信したこととに基づいて、衝突検知処理を実行する。
 ステップS1460において、3D形状表示部1109は、PLCプログラム実行部1322に、PLCが制御する各アクチュエーターの指令値の取得要求を送信する。ステップS1462において、PLCプログラム実行部1322は、当該取得要求を受信したことに基づいて、3D形状表示部1109に、PLCが制御する各アクチュエーターの指令値を送信する。
 ステップS1465において、3D形状表示部1109は、ロボットプログラム実行部1332に、ロボットの各軸の指令値の取得要求を送信する。ステップS1467において、ロボットプログラム実行部1332は、当該取得要求を受信したことに基づいて、3D形状表示部1109に、ロボットの各軸の指令値を送信する。
 ステップS1470において、3D形状表示部1109は、仮想ワーク動作スクリプト実行部1105に、仮想ワークの位置の取得要求を送信する。ステップS1472において、仮想ワーク動作スクリプト実行部1105は、当該取得要求を受信したことに基づいて、3D形状表示部1109に、仮想ワークの位置を送信する。
 ステップS1475において、3D形状表示部1109は、3D形状衝突検知部1116に、衝突状態情報の取得要求を送信する。ステップS1477において、3D形状衝突検知部1116は、当該取得要求を受信したことに基づいて、3D形状表示部1109に、衝突状態情報を送信する。衝突状態情報は、一例として、オブジェクト同士の衝突が発生した場合における、各オブジェクトの識別情報、衝突の発生時刻等を含む。ステップS1480において、3D形状衝突検知部1116は、画面の表示を更新する。例えば、ステップS1480の処理が発生するたびに、ビジュアライザー530の表示が更新される。
 (C-5.第3のモジュール構成)
 図16は、シミュレーションプログラム100の第3のモジュール構成の一例を示す図である。第3のモジュール構成は、エミュレーション機能としてロボットコントローラーのエミュレーション機能のみを備える点で、上述の各モジュール構成と異なる。
 第3のモジュール構成において、シミュレーションプログラム100は、ロボットコントローラーの動作のみをエミュレートする。シミュレーションプログラム100は、ロボットコントローラーの動作のエミュレーションの結果を、シミュレーションに反映する。
 図17は、第3のモジュール構成によるシーケンスの前半の一例を示す図である。図18は、第3のモジュール構成によるシーケンスの後半の一例を示す図である。図17および図18のシーケンスは、CPU301によって実行される。ある局面において、CPU301は、2次記憶装置303から1次記憶装置302に読み込まれたシミュレーションプログラム100を実行することで、第3のモジュール構成によるシーケンスを実現し得る。第3のモジュール構成によるシーケンスは、第2のモジュール構成によるシーケンスから、PLCプログラム実行部1322に関する通信処理を除いたものである。なお、第3のモジュール構成によるシーケンスに含まれる全ての処理は、第2のモジュール構成によるシーケンスに含まれている。そのため、これらの処理の説明は繰り返さない。
 (C-6.第4のモジュール構成)
 図19は、シミュレーションプログラム100の第4のモジュール構成の一例を示す図である。第4のモジュール構成は、エミュレーション機能としてPLCのエミュレーション機能のみを備える点で、上述の各モジュール構成と異なる。
 第4のモジュール構成において、シミュレーションプログラム100は、PLCの動作のみをエミュレートする。シミュレーションプログラム100は、PLCの動作のエミュレーションの結果を、シミュレーションに反映する。
 図20は、第4のモジュール構成によるシーケンスの前半の一例を示す図である。図21は、第4のモジュール構成によるシーケンスの後半の一例を示す図である。図20および図21のシーケンスは、CPU301によって実行される。ある局面において、CPU301は、2次記憶装置303から1次記憶装置302に読み込まれたシミュレーションプログラム100を実行することで、第4のモジュール構成によるシーケンスを実現し得る。第4のモジュール構成によるシーケンスは、第2のモジュール構成によるシーケンスから、ロボットプログラム実行部1332に関する通信処理を除いたものである。なお、第4のモジュール構成によるシーケンスに含まれる全ての処理は、第2のモジュール構成によるシーケンスに含まれている。そのため、これらの処理の説明は繰り返さない。
 (C-7.フローチャート)
 図22は、シミュレーションプログラム100のフローチャートの一例である。ある局面において、CPU301は、図22の処理を行うためのプログラム(シミュレーションプログラム100)を2次記憶装置303から1次記憶装置302に読み込んで、当該プログラムを実行してもよい。他の局面において、当該処理の一部または全部は、当該処理を実行するように構成された回路素子の組み合わせとしても実現され得る。
 ステップS2205において、CPU301は、シミュレーションプログラム100を起動する。ステップS2210において、CPU301は、衝突フィルタグループを読み込む。ステップS2215において、CPU301は、ステップS2220以降の処理を繰り返す。ステップS2220において、CPU301は、シミュレーターのサイクル実行を開始する。本ステップにおいて、CPU301は、仮想ワーク動作スクリプトを順次実行する。
 ステップS2225において、CPU301は、3D形状の表示状態を更新する。ステップS2230において、CPU301は、仮想ワークの表示座標を更新する。ステップS2225およびS2230にて、ビジュアライザー530の表示が更新される。ステップS2235において、CPU301は、仮想ワークの従属関係の更新処理を実行する。例えば、シーンの切り替わり時において、CPU301は、仮想ワークの従属関係および所属グループを更新する。また、CPU301は、更新後の衝突フィルタグループを参照して、同一のグループに属するオブジェクトの色を同色に変更し得る。
 ステップS2240において、CPU301は、ステップS2235にて仮想ワークの従属関係に変更があったか否かを判定する。CPU301は、ステップS2235にて仮想ワークの従属関係に変更があったと判定した場合(ステップS2240にてYES)、制御をステップS2245に移す。そうでない場合(ステップS2240にてNO)、CPU301は、制御をステップS2250に移す。
 ステップS2245において、CPU301は、衝突フィルタグループを更新する。例えば、CPU301は、仮想ワークの従属関係と、仮想ワークの属するグループとを更新する。ステップS2250において、CPU301は、更新した衝突フィルタグループを参照して、各オブジェクトの衝突判定を行なう。
 ステップS2255において、CPU301は、オブジェクト同士の衝突を検知したか否かを判定する。CPU301は、オブジェクト同士の衝突を検知したと判定した場合(ステップS2255にてYES)、制御をステップS2060に移す。そうでない場合(ステップS2255にてNO)、CPU301は、制御をステップS2015のサイクル実行の先頭に移す。
 ステップS2260において、CPU301は、衝突検知の結果をログとして出力する。ユーザーは、当該ログを参照することで、衝突の詳細について知ることができる。ステップS2265において、CPU301は、衝突した3D形状(オブジェクト)の色を変更する。当該処理により、例えば、ビジュアライザー530に表示される衝突したオブジェクトの色が変化し、ユーザーが衝突の発生に気づきやすくなる。
 以上説明したように、本実施の形態に従うシミュレーションプログラム100およびシミュレーションプログラム100をインストールされた情報処理装置300は、オブジェクトをグルーピングして管理し、同じグループに属するオブジェクト同士の衝突検知処理の実行を抑制する。こうすることで、シミュレーションプログラム100および情報処理装置300は、シミュレーションに必要な計算リソースを抑制することができる。
 さらに、シミュレーションプログラム100および情報処理装置300は、シーンの切り替わりごとに、オブジェクト同士の従属関係およびグルーピングを更新する処理を実行する。こうすることで、シミュレーションプログラム100および情報処理装置300は、シーンごとに動的に不要なオブジェクト同士の衝突検知処理の実行を抑制することができる。
<D.付記>
 上述したような本実施の形態は、以下のような技術思想を含む。
[構成1]
 1以上のプロセッサー(301)に命令を実行させるプログラム(100)であって、
 前記命令は、
  第1のオブジェクト(150)および第2のオブジェクト(140)が属するグループを決定するステップと、
  前記第1のオブジェクトおよび前記第2のオブジェクトを含むシミュレーションを実行するステップと、
  前記シミュレーションの実行中に、前記第1のオブジェクトと、前記第2のオブジェクトとの衝突判定を行なうステップと、
  予め定められた条件を満たすことに基づいて、前記第1のオブジェクトの属するグループを変更するステップとを含み、
 前記衝突判定は、前記第1のオブジェクトが属するグループと、前記第2のオブジェクトが属するグループとが異なる場合にのみ実行される、プログラム。
[構成2]
 前記予め定められた条件は、前記シミュレーション中における前記第1のオブジェクトが従属する対象により定義される、構成1に記載のプログラム。
[構成3]
 前記命令は、前記第1のオブジェクトが前記第2のオブジェクトに接触していない状態から、前記第1のオブジェクトが前記第2のオブジェクトに接触した状態に変化したことに基づいて、前記第1のオブジェクトの従属先を前記第2のオブジェクトに変更するステップをさらに含む、構成2に記載のプログラム。
[構成4]
 前記命令は、
  前記第1のオブジェクトが接触する対象の変化を監視するステップと、
  前記第1のオブジェクトが接触する対象の変化を検出するごとに、前記第1のオブジェクトが触れる対象に基づいて、前記第1のオブジェクトの属するグループを変更するステップとをさらに含む、構成2に記載のプログラム。
[構成5]
 前記命令は、前記シミュレーションの実行状況をディスプレイに表示するステップをさらに含み、
 前記第1のオブジェクトの色は、
  前記第1のオブジェクトおよび前記第2のオブジェクトが同じグループに属する場合、前記第2のオブジェクトの色と同じであり、
  前記第1のオブジェクトおよび前記第2のオブジェクトが同じグループに属さない場合、前記第2のオブジェクトの色と異なる、構成1~4のいずれかに記載のプログラム。
[構成6]
 前記命令は、前記第1のオブジェクトの衝突を検知したことに基づいて、前記第1のオブジェクトまたは前記第1のオブジェクトが接触する対象の色を変化させるステップをさらに含む、構成1~5のいずれかに記載のプログラム。
[構成7]
 前記命令は、
  前記第1のオブジェクトと同じグループに属するオブジェクトを前記第1のオブジェクトに対する衝突判定の対象から外すフィルタを生成するステップと、
  前記衝突判定において、前記フィルタに含まれるオブジェクトを前記第1のオブジェクトに対する前記衝突判定から除外するステップとをさらに含む、構成1~6のいずれかに記載のプログラム。
[構成8]
 前記命令は、
  前記第1のオブジェクトと前記第2のオブジェクトとの間に従属関係を設定するステップと、
  前記第1のオブジェクトと前記第2のオブジェクトとの間に従属関係が設定されたことに基づいて、前記第1のオブジェクトと前記第2のオブジェクトとを同一のグループに属するように設定するステップとをさらに含む、構成1~7のいずれかに記載のプログラム。
[構成9]
 前記命令は、
  前記予め定められた条件を定義するためのテンプレートを提供するステップと、
  前記テンプレートごとに、前記第1のオブジェクトに関する処理を追加する入力を受け付けるステップとをさらに含む、構成8に記載のプログラム。
[構成10]
 前記第1のオブジェクトに関する処理は、前記第1のオブジェクトの従属先のオブジェクトの変更処理を含む、構成9に記載のプログラム。
[構成11]
 前記第1のオブジェクトに関する処理は、前記第1のオブジェクトまたは前記第2のオブジェクトの可視化のオン/オフの切り替え処理を含む、構成9または10に記載のプログラム。
[構成12]
 前記命令は、
  前記テンプレートに基づいて作成された複数のスクリプトを保存するステップと、
  前記複数のスクリプトの各々の実行シーケンスを決定する入力を受け付けるステップとをさらに含む、構成9~11のいずれかに記載のプログラム。
[構成13]
 前記命令は、
  前記シミュレーションに含まれる1または複数のオブジェクトの動作をシミュレーションによって実現するか、エミュレータを動作させることによって実現するかを切り替えるステップをさらに含む、構成1~12のいずれかに記載のプログラム。
[構成14]
 前記命令は、前記第1のオブジェクトと、前記第2のオブジェクトとの衝突を検知したことに基づいて、前記第1のオブジェクトに関する情報と、前記第2のオブジェクトに関する情報と、衝突時刻とを含むログ情報を出力するステップをさらに含む、構成1~13のいずれかに記載のプログラム。
[構成15]
 構成1~14のいずれかに記載のプログラムを格納したメモリー(303)と、
 前記プログラムを実行するプロセッサー(301)とを含む、装置。
 今回開示された実施の形態は全ての点で例示であって制限的なものではないと考えられるべきである。本開示の範囲は上記した説明ではなくて請求の範囲によって示され、請求の範囲と均等の意味及び範囲内で全ての変更が含まれることが意図される。また、実施の形態および各変形例において説明された開示内容は、可能な限り、単独でも、組合わせても、実施することが意図される。
 20 ライン、100 シミュレーションプログラム、110,120,130 シーン、140 ロボットアーム、150 ワーク、160 台座、170 トレー、200 統合コントローラー、201 IPC装置、202 操作パネル、203 管理装置、204 搬送用ロボット、205 センサー、206 LiDAR、207 クラウド環境、208 データベース、209 シミュレーター、220 上位伝送路、230 下位伝送路、240 フィールド装置、300 情報処理装置、301 CPU、302 1次記憶装置、303 2次記憶装置、304 外部機器インターフェイス、305 入力インターフェイス、306 出力インターフェイス、307 通信インターフェイス、410 仮想PLC、411 PLC本体、412 サーボモーター、420 仮想ロボット、421 ロボットコントローラー、422 ロボット本体、430 EtherCat共有メモリー、431 入力データ、432 出力データ、500 IDE、510 ラダーソフトウェア、520 ロボットプログラムソフトウェア、530 ビジュアライザー、610 エディタ、620 ツールボックス、630 テンプレート、640 条件、710 スクリプトリスト、720 スクリプトの実行設定、1101 統合シミュレーション実行部、1102 仮想時刻生成部、1103 仮想ワーク動作シーケンス設定部、1104 仮想ワーク動作スクリプト作成部、1105 仮想ワーク動作スクリプト実行部、1106 シミュレーション設定、1107 CADデータベース、1108 3D処理部、1109 3D形状表示部、1110 3D形状解析部、1111 3D形状読取部、1112 衝突フィルタグループ設定部、1113 衝突フィルタグループ設定画面、1114 衝突フィルタグループ設定自動変更部、1115 衝突フィルタグループデータベース、1116 3D形状衝突検知部、1117 衝突検知結果データベース、1118 衝突検知結果、1140 仮想ワーク動作スクリプト、1320 PLCエミュレーション部、1321 PLCプログラム作成部、1322 PLCプログラム実行部、1330 ロボットコントローラーエミュレーション部、1331 ロボットプログラム作成部、1332 ロボットプログラム実行部、1340 PLC用変数のデータベース、1350 ロボットコントローラー用変数のデータベース。

Claims (15)

  1.  1以上のプロセッサーに命令を実行させるプログラムであって、
     前記命令は、
      第1のオブジェクトおよび第2のオブジェクトが属するグループを決定するステップと、
      前記第1のオブジェクトおよび前記第2のオブジェクトを含むシミュレーションを実行するステップと、
      前記シミュレーションの実行中に、前記第1のオブジェクトと、前記第2のオブジェクトとの衝突判定を行なうステップと、
      予め定められた条件を満たすことに基づいて、前記第1のオブジェクトの属するグループを変更するステップとを含み、
     前記衝突判定は、前記第1のオブジェクトが属するグループと、前記第2のオブジェクトが属するグループとが異なる場合にのみ実行される、プログラム。
  2.  前記予め定められた条件は、前記シミュレーション中における前記第1のオブジェクトが従属する対象により定義される、請求項1に記載のプログラム。
  3.  前記命令は、前記第1のオブジェクトが前記第2のオブジェクトに接触していない状態から、前記第1のオブジェクトが前記第2のオブジェクトに接触した状態に変化したことに基づいて、前記第1のオブジェクトの従属先を前記第2のオブジェクトに変更するステップをさらに含む、請求項2に記載のプログラム。
  4.  前記命令は、
      前記第1のオブジェクトが接触する対象の変化を監視するステップと、
      前記第1のオブジェクトが接触する対象の変化を検出するごとに、前記第1のオブジェクトが触れる対象に基づいて、前記第1のオブジェクトの属するグループを変更するステップとをさらに含む、請求項2に記載のプログラム。
  5.  前記命令は、前記シミュレーションの実行状況をディスプレイに表示するステップをさらに含み、
     前記第1のオブジェクトの色は、
      前記第1のオブジェクトおよび前記第2のオブジェクトが同じグループに属する場合、前記第2のオブジェクトの色と同じであり、
      前記第1のオブジェクトおよび前記第2のオブジェクトが同じグループに属さない場合、前記第2のオブジェクトの色と異なる、請求項1~4のいずれかに記載のプログラム。
  6.  前記命令は、前記第1のオブジェクトの衝突を検知したことに基づいて、前記第1のオブジェクトまたは前記第1のオブジェクトが接触する対象の色を変化させるステップをさらに含む、請求項1~5のいずれかに記載のプログラム。
  7.  前記命令は、
      前記第1のオブジェクトと同じグループに属するオブジェクトを前記第1のオブジェクトに対する衝突判定の対象から外すフィルタを生成するステップと、
      前記衝突判定において、前記フィルタに含まれるオブジェクトを前記第1のオブジェクトに対する前記衝突判定から除外するステップとをさらに含む、請求項1~6のいずれかに記載のプログラム。
  8.  前記命令は、
      前記第1のオブジェクトと前記第2のオブジェクトとの間に従属関係を設定するステップと、
      前記第1のオブジェクトと前記第2のオブジェクトとの間に従属関係が設定されたことに基づいて、前記第1のオブジェクトと前記第2のオブジェクトとを同一のグループに属するように設定するステップとをさらに含む、請求項1~7のいずれかに記載のプログラム。
  9.  前記命令は、
      前記予め定められた条件を定義するためのテンプレートを提供するステップと、
      前記テンプレートごとに、前記第1のオブジェクトに関する処理を追加する入力を受け付けるステップとをさらに含む、請求項8に記載のプログラム。
  10.  前記第1のオブジェクトに関する処理は、前記第1のオブジェクトの従属先のオブジェクトの変更処理を含む、請求項9に記載のプログラム。
  11.  前記第1のオブジェクトに関する処理は、前記第1のオブジェクトまたは前記第2のオブジェクトの可視化のオン/オフの切り替え処理を含む、請求項9または10に記載のプログラム。
  12.  前記命令は、
      前記テンプレートに基づいて作成された複数のスクリプトを保存するステップと、
      前記複数のスクリプトの各々の実行シーケンスを決定する入力を受け付けるステップとをさらに含む、請求項9~11のいずれかに記載のプログラム。
  13.  前記命令は、
      前記シミュレーションに含まれる1または複数のオブジェクトの動作をシミュレーションによって実現するか、エミュレータを動作させることによって実現するかを切り替えるステップをさらに含む、請求項1~12のいずれかに記載のプログラム。
  14.  前記命令は、前記第1のオブジェクトと、前記第2のオブジェクトとの衝突を検知したことに基づいて、前記第1のオブジェクトに関する情報と、前記第2のオブジェクトに関する情報と、衝突時刻とを含むログ情報を出力するステップをさらに含む、請求項1~13のいずれかに記載のプログラム。
  15.  請求項1~14のいずれかに記載のプログラムを格納したメモリーと、
     前記プログラムを実行するプロセッサーとを含む、装置。
PCT/JP2021/007610 2020-04-10 2021-03-01 シミュレーションのためのプログラムおよび装置 WO2021205776A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US17/915,005 US20230153486A1 (en) 2020-04-10 2021-03-01 Method and device for simulation
CN202180022935.8A CN115335811A (zh) 2020-04-10 2021-03-01 用于仿真的程序和装置
EP21785472.8A EP4134918A4 (en) 2020-04-10 2021-03-01 PROGRAM AND DEVICE FOR SIMULATION

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2020-071089 2020-04-10
JP2020071089A JP7456249B2 (ja) 2020-04-10 2020-04-10 シミュレーションのためのプログラムおよび装置

Publications (1)

Publication Number Publication Date
WO2021205776A1 true WO2021205776A1 (ja) 2021-10-14

Family

ID=78023231

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2021/007610 WO2021205776A1 (ja) 2020-04-10 2021-03-01 シミュレーションのためのプログラムおよび装置

Country Status (5)

Country Link
US (1) US20230153486A1 (ja)
EP (1) EP4134918A4 (ja)
JP (1) JP7456249B2 (ja)
CN (1) CN115335811A (ja)
WO (1) WO2021205776A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220055216A1 (en) * 2020-08-20 2022-02-24 Smart Building Tech Co., Ltd. Cloud based computer-implemented system and method for grouping action items on visual programming panel in robot simulator
WO2023074249A1 (ja) * 2021-10-27 2023-05-04 オムロン株式会社 シミュレーションのためのプログラムおよびシステム

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11495003B1 (en) * 2020-11-30 2022-11-08 A9.Com, Inc. Placing and manipulating multiple three-dimensional (3D) models using mobile augmented reality
US20230125207A1 (en) * 2021-10-22 2023-04-27 EMC IP Holding Company, LLC System and Method for Fast Application Initialization with Deferred Injection

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09311883A (ja) * 1996-05-24 1997-12-02 Fujitsu Ltd 機械装置の設計/製造工程支援装置
JPH10221359A (ja) * 1997-01-31 1998-08-21 Nec Corp 衝突判定装置及び方法
JPH11296571A (ja) * 1998-04-13 1999-10-29 Fujitsu Ltd 干渉チェック装置およびそのプログラム記録媒体
JP2012247953A (ja) * 2011-05-26 2012-12-13 Sony Computer Entertainment Inc プログラム、情報記憶媒体、情報処理システム及び情報処理方法
JP2016042378A (ja) 2015-11-12 2016-03-31 オムロン株式会社 シミュレーション装置、シミュレーション方法、および、シミュレーションプログラム

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6036662B2 (ja) * 2013-11-22 2016-11-30 三菱電機株式会社 ロボットシミュレーション装置、プログラム、記録媒体及び方法
JP5877857B2 (ja) * 2014-03-10 2016-03-08 ファナック株式会社 ワークの取出工程をシミュレーションするロボットシミュレーション装置
JP6438509B2 (ja) * 2017-02-28 2018-12-12 ファナック株式会社 ロボットシステムのシミュレーション装置、シミュレーション方法、およびコンピュータプログラム
JP6846950B2 (ja) * 2017-03-03 2021-03-24 株式会社キーエンス ロボットシミュレーション装置、ロボットシミュレーション方法、ロボットシミュレーションプログラム及びコンピュータで読み取り可能な記録媒体並びに記録した機器

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09311883A (ja) * 1996-05-24 1997-12-02 Fujitsu Ltd 機械装置の設計/製造工程支援装置
JPH10221359A (ja) * 1997-01-31 1998-08-21 Nec Corp 衝突判定装置及び方法
JPH11296571A (ja) * 1998-04-13 1999-10-29 Fujitsu Ltd 干渉チェック装置およびそのプログラム記録媒体
JP2012247953A (ja) * 2011-05-26 2012-12-13 Sony Computer Entertainment Inc プログラム、情報記憶媒体、情報処理システム及び情報処理方法
JP2016042378A (ja) 2015-11-12 2016-03-31 オムロン株式会社 シミュレーション装置、シミュレーション方法、および、シミュレーションプログラム

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
See also references of EP4134918A4

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220055216A1 (en) * 2020-08-20 2022-02-24 Smart Building Tech Co., Ltd. Cloud based computer-implemented system and method for grouping action items on visual programming panel in robot simulator
WO2023074249A1 (ja) * 2021-10-27 2023-05-04 オムロン株式会社 シミュレーションのためのプログラムおよびシステム

Also Published As

Publication number Publication date
JP2021168041A (ja) 2021-10-21
JP7456249B2 (ja) 2024-03-27
EP4134918A4 (en) 2024-05-01
EP4134918A1 (en) 2023-02-15
US20230153486A1 (en) 2023-05-18
CN115335811A (zh) 2022-11-11

Similar Documents

Publication Publication Date Title
WO2021205776A1 (ja) シミュレーションのためのプログラムおよび装置
CN112783018B (zh) 工业环境模拟下的机器人数字孪生控制
Dianatfar et al. Review on existing VR/AR solutions in human–robot collaboration
US9671777B1 (en) Training robots to execute actions in physics-based virtual environment
CN105382836A (zh) 示教系统、机器人系统以及示教方法
EP3948782A1 (en) Robotic control based on 3d bounding shape, for an object, generated using edge-depth values for the object
EP3441831B1 (en) Information processing device, information processing method, and information processing program
JP6915441B2 (ja) 情報処理装置、情報処理方法、および情報処理プログラム
CN104321706A (zh) 模拟装置、模拟方法以及模拟程序
Holubek et al. An innovative approach of industrial robot programming using virtual reality for the design of production systems layout
JP2010218036A (ja) ロボットオフラインプログラミング装置
CN107295810B (zh) 工程设计工具
KR20100094009A (ko) 모듈화된 프레임워크를 이용한 통합 로봇 소프트웨어 플랫폼
KR101806356B1 (ko) 블록 다이어그램과 plc 시뮬레이터를 이용한 가상 플랜트 시뮬레이터 및 이를 이용한 시뮬레이터 실행 방법
Bergström et al. Model-and hardware-in-the-loop testing in a model-based design workflow
Connolly et al. Realistic simulation of robotic grasping tasks: review and application
JP7347169B2 (ja) 情報提示装置、情報提示方法、及び情報提示プログラム
Park et al. Development of Digital twin for Plug-and-Produce of a Machine tending system through ISO 21919 interface
JP2012226603A (ja) シミュレーションデータ生成装置およびシミュレーションデータ生成プログラム
TWM607486U (zh) 視覺化可堆疊控制之程式編譯系統
Salamon et al. Virtual commissioning of an existing manufacturing cell at Volvo Car Corporation using DELMIA V6
JP2023151726A (ja) 開発装置、開発プログラムおよび開発方法
JP7074057B2 (ja) 産業用ロボットの作業記述作成装置および産業用ロボットの作業記述作成方法
JP2022189270A (ja) シミュレーションシステム、シミュレーション方法およびシミュレーションプログラム
Nyman et al. Implementing multi-touch screen for real-time control of a robotic cell at Universidad Politécnica de Valencia

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: 21785472

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2021785472

Country of ref document: EP

Effective date: 20221110

NENP Non-entry into the national phase

Ref country code: DE