Program generation device and program generation method

The program generation device enhances robot operation program efficiency by generating skills, tasks, and masters that adapt to varying environments and tasks, facilitating flexible and efficient robot operation.

JP7797621B2Active Publication Date: 2026-01-13YASKAWA DENKI KK
View PDF 4 Cites 0 Cited by

Patent Information

Application Number
JP2024506379
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2022-03-08
Filing Date
2023-03-08
Publication Date
2026-01-13
Estimated Expiration
2043-03-08

AI Technical Summary

Technical Problem

Existing technologies lack efficiency in generating operation programs for robots, particularly in adapting to varying environments and tasks.

Method used

A program generation device that generates skills, tasks, and masters to represent relative operations, associating them with movement reference coordinates, allowing flexible configuration and reuse across different execution subjects.

Benefits of technology

Improves the efficiency of generating operation programs by enabling flexible task and master construction, adapting to varying environments and tasks, and ensuring seamless integration with existing robot controllers.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007797621000001
    Figure 0007797621000001
  • Figure 0007797621000002
    Figure 0007797621000002
  • Figure 0007797621000003
    Figure 0007797621000003
Patent Text Reader

Abstract

A program generation device 200 uses a user operation to generate an action program that actuates a robot 2, said device comprising: a skill generation unit 213 that generates skills respectively representing relative actions, and stores said skills in a skill database 222; a task generation unit 214 that generates tasks which include a plurality of skills and associate action reference coordinates, which serve as a basis for the relative actions, to each of the plurality of skills, and stores the the same in a task database 224; and a master generation unit 215 that generates a master, which includes a plurality of tasks and associates the robot 2 with the plurality of tasks, and stores the same in the master database 225.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] The present disclosure relates to a program generation device and a program generation method. [Background technology]

[0002] Patent Document 1 discloses a robot programming support device. The programming support device includes a work job storage unit that stores multiple work jobs, a first condition setting unit that sets environmental conditions that specify the operating environment of the robot for one of the multiple work jobs in accordance with input to a user interface, a second condition setting unit that sets multiple work jobs to be executed by the robot in accordance with input to the user interface, and a planning support unit that determines, based on the execution order, whether at least one work job satisfies the environmental conditions in an execution flow that defines the execution order of the multiple work jobs to be executed as set by the second condition setting unit. [Prior art documents] [Patent documents]

[0003] [Patent Document 1] Patent No. 6455646 Summary of the Invention [Problem to be solved by the invention]

[0004] The present disclosure provides a program generation device that is effective in improving the efficiency of generating operation programs. [Means for solving the problem]

[0005] A program generation device according to one aspect of the present disclosure is a program generation device that generates an operation program for operating a robot in response to user operation, and includes: a skill generation unit that generates skills that each represent a relative operation and stores them in a skill database; a task generation unit that generates tasks that include a plurality of skills and associates operation reference coordinates that serve as the basis for the relative operation with each of the plurality of skills and stores them in the task database; and a master generation unit that includes a plurality of tasks and generates a master that associates a robot with the plurality of tasks and stores them in a master database.

[0006] A program generation method according to another aspect of the present disclosure includes a skill generation unit generating skills that represent relative movements and storing the skills in a skill database; a task generation unit generating tasks that include a plurality of skills and associate movement reference coordinates that serve as a basis for the relative movements with each of the plurality of skills and storing the tasks in the task database; and a master generation unit generating a master that includes a plurality of tasks and associates robots with the plurality of tasks and storing the master database. [Effects of the Invention]

[0007] According to the present disclosure, it is possible to provide a program generation device that is effective in improving the efficiency of generating operation programs. [Brief explanation of the drawings]

[0008] [Figure 1] FIG. 1 is a schematic diagram illustrating a configuration of a robot system. [Figure 2] FIG. 2 is a block diagram illustrating an example of the functional configuration of a robot controller and a program generation device. [Figure 3] FIG. 2 is a block diagram illustrating an example of the hardware configuration of a robot controller and a program generation device. [Figure 4] 10 is a flowchart illustrating a program generation procedure. [Figure 5] FIG. 10 is a schematic diagram illustrating a main screen. [Figure 6]10 is a flowchart illustrating a skill generation procedure. [Figure 7] FIG. 10 is a schematic diagram illustrating a skill generation screen. [Figure 8] FIG. 10 is a schematic diagram illustrating a preview screen. [Figure 9] 10 is a flowchart illustrating a task generation procedure. [Figure 10] FIG. 10 is a schematic diagram illustrating a task generation screen. [Figure 11] FIG. 10 is a schematic diagram illustrating a skill selection screen. [Figure 12] 10 is a flowchart illustrating a master generation procedure. [Figure 13] FIG. 10 is a schematic diagram illustrating a master generation screen. [Figure 14] FIG. 10 is a schematic diagram illustrating a task selection screen. [Figure 15] FIG. 10 is a schematic diagram illustrating a condition setting screen. [Figure 16] 10 is a flowchart illustrating a program generation procedure. [Figure 17] 1 is a flowchart illustrating a simulation procedure. [Figure 18] 1 is a flowchart illustrating a calibration procedure. [Figure 19] 10 is a flowchart illustrating a program registration procedure. [Figure 20] 10 is a flowchart illustrating a control procedure. DETAILED DESCRIPTION OF THE INVENTION

[0009] Hereinafter, the embodiments will be described in detail with reference to the drawings. In the description, the same elements or elements having the same functions are denoted by the same reference numerals, and redundant description will be omitted.

[0010] [Robot System] The robot system 1 shown in Fig. 1 is a system that operates a robot 2 based on a predetermined operation program. For example, the robot system 1 is a system that causes the robot 2 to perform operations related to the production of a workpiece in the industrial field. The robot system 1 may also be a system that causes the robot 2 to perform operations in a field other than the industrial field. As shown in Fig. 1, the robot system 1 includes the robot 2, an environmental sensor 3, a robot controller 100, and a program generation device 200.

[0011] The robot 2 shown in FIG. 1 is a six-axis vertical articulated robot and includes a base 11, a swivel 12, a first arm 13, a second arm 14, a third arm 17, a tip 18, and actuators 41, 42, 43, 44, 45, and 46. The base 11 is installed on a floor, wall, or ceiling, or on an automated guided vehicle. The swivel 12 is provided on the base 11 so as to swivel about a vertical axis 21. The first arm 13 is connected to the swivel 12 so as to swing about an axis 22 that intersects (e.g., is perpendicular to) the axis 21, and extends in a direction away from the axis 22. The intersection includes a twisted relationship such as a so-called multi-level intersection. The same applies hereinafter.

[0012] Second arm 14 is connected to the tip of first arm 13 so as to swing about axis 23 that is substantially parallel to axis 22, and extends in a direction away from axis 23. Second arm 14 includes an arm base 15 and an arm end 16. Arm base 15 is connected to the tip of first arm 13. Arm end 16 is connected to the tip of arm base 15 so as to pivot about axis 24 that intersects (e.g., is perpendicular to) axis 23, and extends along axis 24 in a direction away from arm base 15.

[0013] Third arm 17 is connected to the tip of arm end portion 16 so as to swing about axis 25 intersecting (e.g., perpendicular to) axis 24. Tip portion 18 is connected to the tip of third arm 17 so as to pivot about axis 26 intersecting (e.g., perpendicular to) axis 25.

[0014] Thus, the robot 2 has a joint 31 connecting the base 11 and the swivel 12, a joint 32 connecting the swivel 12 and the first arm 13, a joint 33 connecting the first arm 13 and the second arm 14, a joint 34 connecting the arm base 15 and the arm end 16 in the second arm 14, a joint 35 connecting the arm end 16 and the third arm 17, and a joint 36 connecting the third arm 17 and the tip 18.

[0015] The actuators 41, 42, 43, 44, 45, and 46 include, for example, electric motors and reducers, and drive the joints 31, 32, 33, 34, 35, and 36, respectively. For example, the actuator 41 rotates the rotating part 12 around the axis 21, the actuator 42 swings the first arm 13 around the axis 22, the actuator 43 swings the second arm 14 around the axis 23, the actuator 44 rotates the arm end 16 around the axis 24, the actuator 45 swings the third arm 17 around the axis 25, and the actuator 46 rotates the tip end 18 around the axis 26.

[0016] The specific configuration of the robot 2 can be changed as appropriate. For example, the robot 2 may be a seven-axis redundant robot in which an additional robot system axis joint is added to the six-axis vertical articulated robot, or may be a so-called SCARA type articulated robot.

[0017] The environmental sensor 3 generates actual measurement data of the positions of the robot 2 and objects 4 surrounding the robot 2 based on camera images, etc. The surrounding objects 4 include stationary objects that are fixed to the work area and non-stationary objects that move within the work area. Specific examples of stationary objects include processing equipment and workbenches. Specific examples of non-stationary objects include other robots, automated guided vehicles, and workpieces.

[0018] The robot controller 100 operates the robot 2 based on a predetermined operation program. The program generation device 200 generates the above-mentioned operation program in response to a user operation. When generating the operation program, the program generation device 200 is configured to generate skills that represent relative operations and store them in a skill database, generate tasks that include multiple skills and associate operation reference coordinates that serve as a reference for the relative operations with each of the multiple skills and store them in a task database, and generate a master that includes multiple tasks and associates the robot 2 with the multiple tasks and store them in a master database.

[0019] Since the skills that define the movements are expressed as relative movements, the skills can be reused for any movement reference coordinates. Therefore, tasks can be flexibly configured by combining skills and movement reference coordinates. Tasks associate the relative movements of skills with movement reference coordinates, but do not limit the execution subject, so tasks can be reused for any execution subject. Therefore, masters can be flexibly constructed by combining tasks and execution subjects. Therefore, it is effective in improving the efficiency of generating movement programs.

[0020] FIG. 2 is a block diagram illustrating the functional configuration of the robot controller 100 and the program generation device 200. As shown in FIG. 2, the robot controller 100 has a program storage unit 111 and a control unit 112 as functional components (hereinafter referred to as "functional blocks"). The program storage unit 111 stores an operation program. The operation program includes a plurality of operation commands in a time series. Each of the plurality of operation commands defines at least a target position of the tip end portion 18 and an operation speed of the tip end portion 18 to the target position.

[0021] The target position is information that determines the coordinates of the tip portion 18 in the robot coordinate system and the orientation of the tip portion 18 around each coordinate axis. The robot coordinate system is a three-dimensional coordinate system fixed to the base portion 11. The target position of the tip portion 18 may be information that directly determines the coordinates and orientation of the tip portion 18, or may be information that indirectly determines the coordinates and orientation of the tip portion 18. A specific example of information that indirectly determines the coordinates and orientation of the tip portion 18 is the rotation angles of the joints 31, 32, 33, 34, 35, and 36.

[0022] The control unit 112 sequentially calls up the multiple operation commands stored in the program storage unit 111 and operates the robot 2 based on the operation commands. For example, the control unit 112 repeats the control process in a fixed control cycle. The control process includes calculating the target angles of the joints 31, 32, 33, 34, 35, and 36 so as to move the tip end 18 along a movement path represented by the target positions of the multiple operation commands, and adjusting the angles of the joints 31, 32, 33, 34, 35, and 36 to the target angles.

[0023] The program generation device 200 has, as functional blocks, a simulation unit 212, a main screen generation unit 211, a skill generation unit 213, a task generation unit 214, a master generation unit 215, a program generation unit 216, and a program registration unit 217. The simulation unit 212 executes a simulation including a model of the robot 2 and a model of a peripheral object 4 of the robot 2. The simulation means simulating, by calculation, the state of the real space in which the robot 2 and the peripheral object 4 are placed.

[0024] For example, the simulation unit 212 executes a simulation based on three-dimensional model data stored in the model storage unit 221. The three-dimensional model data stored in the model storage unit 221 includes three-dimensional model data of the robot 2 and three-dimensional model data of peripheral objects 4 of the robot 2. The model storage unit 221 may be provided in a storage device of the program generation device 200, or may be provided in an external storage device that can communicate with the program generation device 200.

[0025] The main screen generation unit 211 generates a main screen for acquiring user operations. For example, the main screen generation unit 211 displays the main screen on a user interface 295, which will be described later. The skill generation unit 213 generates skills that respectively represent relative actions and stores them in the skill database 222. For example, when skill generation is requested by an input on the main screen, the skill generation unit 213 generates a skill generation screen for generating a skill, generates a skill based on the input on the skill generation screen, and stores the skill in the skill database 222. The skill database 222 may be provided in a storage device of the program generation device 200, or may be provided in an external storage device that can communicate with the program generation device 200.

[0026] Relative movement means a relative change in the position and posture of the tip end 18 with respect to the movement reference coordinates. Even if the relative movement is determined, the movement of the tip end 18 in three-dimensional space cannot be determined unless the movement reference coordinates are determined.

[0027] The skill generation unit 213 may generate a skill that includes at least the start position and end position of a relative movement. Since the start position and end position are defined as a relative movement, it becomes possible to move the robot 2 relative to a master that arranges tasks that connect skills. Each of the start position and end position is a relative position with respect to the movement reference coordinates, and the start position and end position cannot be determined unless the movement reference coordinates are determined.

[0028] The skill generation unit 213 may generate a skill including an approach motion from the start position to the work start position and a department motion from the work end position to the end position. By including the approach motion and the department motion in the skill, it is possible to improve the usability of the skill in generating a task.

[0029] For example, the skill generation unit 213 generates a skill including one or more approach movement commands representing approach movements and one or more department store movement commands representing department store movements. Each of the one or more approach movement commands includes at least a target position of the tip end portion 18 expressed as a relative value with respect to the movement reference coordinates, and a target speed of the tip end portion 18 to the target position.

[0030] The skill generation unit 213 may further include a main operation from the work start position to the work end position. For example, the skill generation unit 213 generates a skill including one or more main operation commands representing the main operation. Each of the one or more main operation commands includes a target position of the tip end portion 18 expressed as a relative value with respect to the operation reference coordinate, and a target speed of the tip end portion 18 to the target position. A program module including one or more main operation commands may be generated separately from the skill. In this case, the skill may include a module call command that calls the program module instead of the one or more main operation commands. When the skill includes the module call command, the program module is referenced when generating an operation program based on the skill or when operating the robot 2 based on the skill.

[0031] The skill generation unit 213 may generate a skill generation screen that allows the main action, approach action, and department store action to be input individually (see FIG. 7).

[0032] The skill generation unit 213 may extract at least a part of a generated operation program and convert it into a relative operation to generate a skill. The operation program may be an operation program previously generated by the program generation device 200, or may be an operation program generated by manual teaching of the robot controller 100.

[0033] For example, the skill generation unit 213 acquires a section specification that specifies a target section of a part of a movement program and a coordinate specification that specifies the movement reference coordinates for that section. The skill generation unit 213 converts the target positions of one or more movement commands in the target section into relative positions with respect to the movement reference coordinates specified by the coordinate specification, thereby generating a skill. In this way, the generated movement program can be effectively used as a skill that can be applied to any movement reference coordinates.

[0034] The skill generation unit 213 may generate a type input interface on the skill generation screen that allows input of a skill type, generate a skill input interface on the skill generation screen that corresponds to the skill type based on the input to the type input interface, and generate a skill based on the input to the skill input interface. This allows the user to be prompted to make appropriate input.

[0035] For example, the skill generation unit 213 generates a skill input interface according to the type of skill by referring to the form storage unit 223. The form storage unit 223 stores a plurality of types of input forms in association with a plurality of types of skills. The form storage unit 223 may be provided in a storage device of the program generation device 200, or may be provided in an external storage device capable of communicating with the program generation device 200.

[0036] Note that the operation program may include, in addition to one or more operation commands, calculation commands such as parameter settings. Correspondingly, the skill generation unit 213 may generate a skill including one or more calculation commands. The skill generation unit 213 may generate a skill including only one or more calculation commands. Relative movement of the robot 2 does not occur with only one or more calculation commands. For this reason, a skill including only one or more calculation commands corresponds to a skill indicating that the relative position with respect to the movement reference coordinates does not change, as an example of relative movement of the robot 2.

[0037] The task generation unit 214 generates a task and stores it in the task database 224. A task includes a plurality of skills, and each of the plurality of skills is associated with a motion reference coordinate that serves as a reference for relative motion. For example, when task generation is requested by input on the main screen, the task generation unit 214 generates a task generation screen for generating a task, generates a task based on the input on the task generation screen, and stores the task in the task database 224. The task database 224 may be provided in a storage device of the program generation device 200, or may be provided in an external storage device that can communicate with the program generation device 200.

[0038] On the task generation screen, a task flow in which any skills are arranged in the order of execution can be input, and any action reference coordinates can be associated with each of the multiple skills included in the task flow. The task generation unit 214 generates a task that includes the multiple skills included in the task flow, the action reference coordinates of each of the multiple skills, and the execution order of the multiple skills.

[0039] Examples of multiple skills that can be included in a task flow include a pick skill that grasps a workpiece before transport and a place skill that places the workpiece at the destination and then releases it. The pick skill is associated with a motion reference coordinate that is fixed to the position of the workpiece before transport. The place skill is associated with a motion reference coordinate that is fixed to the position of the workpiece after transport.

[0040] The multiple skills included in a task are multiple skills stored in the skill database 222 by the skill generation unit 213, but the generation of a task by the task generation unit 214 and the generation of multiple skills by the skill generation unit 213 may occur in any order. For example, the task generation unit 214 may generate a task after the skill generation unit 213 generates multiple skills. The skill generation unit 213 may generate a task after the task generation unit 214 generates a task.

[0041] The motion reference coordinates include the position of the origin. The position of the origin is expressed, for example, by coordinates in a common coordinate system of the robot system 1 fixed to the workspace of the robot 2. The position of the origin may be a variable at the time of task generation. In this case, by inputting the position of the origin into a variable at the time of task execution (at the time of execution of an operation program generated based on the task) based on the position of the workpiece detected by the environmental sensor 3, it becomes possible to adapt the task to the position of the workpiece in real time. The position of the origin does not necessarily have to be obtained from the environmental sensor 3, but may be obtained from a higher-level controller that communicates with multiple local controllers including the robot controller 100.

[0042] The task generation unit 214 may generate a task that associates one or more parameters that define variable actions in relative actions with one or more skills. For example, the task generation unit 214 generates a parameter input unit for inputting one or more parameters on the task generation screen or a screen separate from the task generation screen, and associates one or more parameters with each of the one or more skills based on the input to the parameter input unit.

[0043] The variable behavior in the relative behavior can change depending on the positioning of the skill within the task. By allowing one or more parameters to be associated with the skill during the task creation stage, the variable behavior can be easily adapted to the task.

[0044] A variable action is an action that changes depending on the value of one or more parameters. An example of a variable action is a bolt tightening action, and the one or more parameters for the bolt tightening action include the bolt diameter and tightening torque. The bolt diameter and tightening torque can change depending on the work target area of ​​the bolt tightening action. The work target area (action reference coordinates) of the bolt tightening action is determined by the task. Since it is possible to associate the bolt diameter and tightening torque with skills during the task generation stage, the bolt tightening action can be easily adapted to the work target area.

[0045] The task generation unit 214 may associate each of the plurality of skills with a motion reference coordinate based on an input specifying a coordinate in a simulation. For example, the task generation unit 214 may display a simulation image of the robot 2 and the peripheral object 4 generated by the simulation unit 212, and associate each of the plurality of skills with a motion reference coordinate selected by the user in the simulation image. The motion reference coordinate to be associated with a skill can be easily specified.

[0046] The master generation unit 215 generates a master and stores it in the master database 225. The master includes multiple tasks and associates the robot 2 with the multiple tasks. For example, when master generation is requested by input on the main screen, the master generation unit 215 generates a master generation screen for generating a master, generates a master based on the input on the master generation screen, and stores the master in the master database 225. The master database 225 may be provided in a storage device of the program generation device 200, or in an external storage device that can communicate with the program generation device 200.

[0047] On the master generation screen, it is possible to input a master flow in which any task is arranged in the execution order, and to associate the master flow with any robot 2. The master generation unit 215 generates a master that includes multiple tasks included in the master flow, identification information of the robot 2 associated with the master flow, and the execution order of the multiple tasks.

[0048] The master generation unit 215 may generate a master that associates a start condition with one or more tasks. In this case, on the master generation screen, it is possible to input a master flow in which any task and a standby process that waits for the start condition to be satisfied are arranged in the execution order. The master generation unit 215 generates a master that further includes a standby process based on the master flow. This makes it easy to generate a more advanced operation program that includes a start condition determination.

[0049] The master generation unit 215 may generate a master including a conditional branch between two or more tasks. A conditional branch means that the master flow branches into two or more branches depending on whether a branch condition is met. The master includes a branch determination process that determines whether the branch condition is met and two or more execution orders corresponding to the two or more branches.

[0050] When a master including a conditional branch can be generated, the master generation screen can input a master flow that further includes a branch judgment process and that branches into two or more branches in the branch judgment process. The master generation unit 215 generates a master that includes the branch judgment process and two or more execution orders corresponding to the two or more branches, based on the master flow.

[0051] Two or more skills with a fixed execution order can be grouped into a single task, and conditional branching between two or more tasks that depend on the executing entity can be set centrally at the master generation stage, making it even easier to generate operating programs.

[0052] The master generation unit 215 may generate a master that associates one or more tasks with a notification destination of the execution status by the robot 2. For example, the master generation unit 215 generates a notification destination input section for inputting a notification destination of the execution status on the master generation screen or on a screen separate from the master generation screen, and associates each of the one or more tasks with a notification destination of the execution status based on the input to the notification destination input section.

[0053] Examples of execution status notifications include a notification of the start of execution and a notification of the completion of execution. An example of a notification destination is an output port of a signal from the robot controller 100 to the host controller. Cooperation with the host controller is a consideration at the master generation stage when the execution entity is determined. At the master generation stage, by making it possible to associate the execution status notification destination with one or more tasks, it is possible to easily generate an operation program that includes cooperation with the host controller.

[0054] Based on the master, the multiple tasks included in the master, and the multiple skills included in each of the multiple tasks, the program generation unit 216 generates an operation program for the robot 2 in which relative movements are converted into movements of the robot 2. For example, the program generation unit 216 generates an operation program when program generation is requested by input on the master generation screen or another screen.

[0055] For example, the program generation unit 216 generates an operation program by converting the relative operations of each of the multiple skills into operations in a robot coordinate system fixed to the robot 2 based on the correspondence between the multiple tasks in the master and the robot 2 and the correspondence between the multiple skills in each of the multiple tasks and multiple operation reference coordinates. For example, the program generation unit 216 converts the target positions of one or more operation commands included in each of the multiple skills (e.g., the approach operation command, main operation command, and department store operation command) into target positions in the robot coordinate system, and generates an operation program in which the target positions of all operation commands are expressed in the robot coordinate system. The operation of the robot 2 specified by the skills, tasks, and master can be easily applied to an existing robot controller 100 that operates based on an operation program expressed in the robot coordinate system.

[0056] The program generation unit 216 stores the generated operation program in the program storage unit 226. The program storage unit 226 may be provided in a storage device of the program generation device 200, or may be provided in an external storage device that can communicate with the program generation device 200.

[0057] It should be noted that, based on the skills, tasks, and masters, it is also possible to sequentially convert the target positions of one or more operation commands included in each of a plurality of skills into target positions in the robot coordinate system and execute the operations. In this way, when the robot controller 100 executes sequential conversion of target positions based on the skills, tasks, and masters, it is not essential to generate an operation program by the program generation unit 216.

[0058] The master generation unit 215 may generate a master by associating multiple tasks to be executed on a workpiece of the robot system 1 with multiple execution entities including the robot 2. In this case, the program generation unit 216 may generate an operation program for each of the multiple execution entities based on the association in the master. If multiple tasks to be executed on a workpiece of the robot system 1 are aggregated in the master of the robot system 1, an operation program can be generated by allocating the multiple tasks to multiple execution entities. This makes it easier to generate an operation program with a work-centered approach.

[0059] The program generation unit 216 may generate an operation program including an air cut program for operating the robot 2 in successive skills from the end position of the operation of the robot 2 corresponding to the relative operation of a previous skill to the start position of the operation of the robot 2 corresponding to the relative operation of a subsequent skill. The program generation unit 216, which generates an operation program based on skills, tasks, and masters, can easily generate an air cut program with a defined execution subject from a skill with an undefined execution subject.

[0060] For example, the program generation unit 216 generates an air cut program so that the robot 2 does not interfere with the peripheral object 4 or the robot 2 itself. The program generation unit 216 linearly interpolates the end position and the start position to provisionally generate an air cut path, and causes the control unit 112 to simulate the operation of the robot 2 based on the provisionally generated air cut path. If the simulation determines that the robot 2 will interfere with the peripheral object 4 or the robot 2 itself, the program generation unit 216 randomly generates a waypoint that does not interfere with the peripheral object 4 or the robot 2 itself and adds it between the end position and the start position. Thereafter, the generation and addition of waypoints are repeated until the robot 2 no longer interferes with the peripheral object 4 or the robot 2 itself, using an air cut operation path connecting the end position, the one or more generated waypoints, and the start position. Thereafter, the program generation unit 216 generates an air cut program including two or more air cut operation commands that set the one or more added waypoints and the start position as target positions, respectively.

[0061] The master generation unit 215 may further generate a higher-level master including conditional branching between multiple masters and store it in the master database 225. Conditional branching here means branching into multiple master flows corresponding to the multiple masters, depending on whether a branching condition is met. The higher-level master includes a branching determination process that determines whether a branching condition is met, and multiple branches that lead to the multiple master flows. An example of conditional branching in a higher-level master is conditional branching based on workpiece type between multiple masters generated to respectively correspond to multiple workpiece types.

[0062] When the master generation unit 215 further generates a higher-level master, the program generation unit 216 generates an operation program for the robot 2 in which the relative operations are converted into the operations of the robot 2 based on the higher-level master, the multiple masters, the multiple tasks included in each of the multiple masters, and the multiple skills included in each of the multiple tasks.

[0063] When program registration is requested by input on the master generation screen or another screen, the program registration unit 217 transmits the operation program stored in the program memory unit 226 to the robot controller 100 and registers it in the program memory unit 111 of the robot controller 100.

[0064] The program generation device 200 may further include a calibration unit 218. The calibration unit 218 corrects the motion reference coordinates based on a difference between the actual measurement data of the peripheral object 4 and a model of the peripheral object 4. For example, when calibration is requested by input on the master generation screen or another screen, the calibration unit 218 acquires actual measurement data of the position of the peripheral object 4 from the environmental sensor 3. The calibration unit 218 calculates a difference between the acquired actual measurement data and the position of the model of the peripheral object 4 stored in the model storage unit 221, and corrects the model stored in the model storage unit 221 to eliminate the difference. After the model stored in the model storage unit 221 is corrected, the correction details are notified to the task generation unit 214, for example, by the simulation unit 212. The task generation unit 214 corrects the motion reference coordinates associated with each of the multiple skills in the task database 224 based on the notified correction details. In this way, by applying the difference between the actual measurement data and the model to the motion reference coordinates, the motion of the robot 2 can be easily adapted to the real environment.

[0065] The method for acquiring the measured data of the position of the peripheral object 4 is not limited to the method using the environmental sensor 3. For example, the calibration unit 218 may acquire the position of the tip end portion 18 in the robot coordinate system as the measured data of the position of the peripheral object 4 in a state where the tip end portion 18 is placed at the position of the peripheral object 4.

[0066] When the motion reference coordinates are corrected by the task generation unit 214, the program generation unit 216 may regenerate the motion program based on the corrected motion reference coordinates and store the regenerated motion program in the program storage unit 226. Regenerating the motion program includes correcting the generated motion program based on the correction content of the motion reference coordinates.

[0067] The program generation device 200 may further include a preview display unit 219. The preview display unit 219 associates a temporary robot 2 with temporary movement reference coordinates for the skill generated by the skill generation unit 213, and displays a simulation of the temporary robot 2 executing the skill at the temporary movement reference coordinates. For example, when a preview display of a skill is requested by input to the skill generation screen or another screen, the preview display unit 219 generates a preview interface for specifying the temporary robot 2 and the temporary movement reference coordinates on the skill generation screen or another screen. The preview display unit 219 associates the temporary robot 2 with the temporary movement reference coordinates with the skill based on the input to the preview interface, and causes the control unit 112 to simulate the movement of the temporary robot 2 executing the skill at the temporary movement reference coordinates. The control unit 112 generates a simulation video of the movement of the temporary robot 2 executing the skill at the temporary movement reference coordinates, and displays the video on the skill generation screen or another screen. It becomes possible to generate a skill while checking the movement of the skill successively.

[0068] [Hardware configuration] 3 is a block diagram illustrating the hardware configuration of the robot controller 100 and the program generation device 200. The robot controller 100 has a circuit 190. The circuit 190 has one or more processors 191, one or more memory devices 192, one or more storage devices 193, a communication port 194, and a driver circuit 195. The one or more storage devices 193 are non-volatile storage media that store programs for configuring the above-mentioned functional blocks in the robot controller 100. Each of the one or more storage devices 193 may be an internal storage medium such as a flash memory or a hard disk, or may be a portable storage medium such as a USB memory or an optical disk.

[0069] The one or more memory devices 192 temporarily store programs loaded from the one or more storage devices 193. Each of the one or more memory devices 192 may be a random access memory or the like. The one or more processors 191 configure the above-mentioned functional blocks by executing the programs loaded in the one or more memory devices 192. The one or more processors 191 store the results of calculations in the one or more memory devices 192 as appropriate.

[0070] The communication port 194 communicates with the program generating device 200 based on a request from one or more processors 191. The driver circuit 195 supplies drive power to the robot 2 (actuators 41, 42, 43, 44, 45, 46) based on a request from one or more processors 191.

[0071] The program generation device 200 includes a circuit 290. The circuit 290 includes one or more processors 291, one or more memory devices 292, one or more storage devices 293, a communication port 294, and a user interface 295. The one or more storage devices 293 are non-volatile storage media that store programs for causing the program generation device 200 to execute the following operations: generate skills representing relative movements and store them in a skill database; generate tasks including a plurality of skills and associating movement reference coordinates serving as a reference for the relative movements with each of the plurality of skills and store them in a task database; and generate masters including a plurality of tasks and associating the robot 2 with the plurality of tasks and store them in a master database. For example, the one or more storage devices 293 store programs for causing the program generation device 200 to configure each of the above-described functional blocks. For example, each of the one or more storage devices 293 may be an internal storage medium such as a flash memory or a hard disk, or a portable storage medium such as a USB memory or an optical disk.

[0072] The one or more memory devices 292 temporarily store programs loaded from the one or more storage devices 293. The one or more memory devices 292 may be random access memories or the like. The one or more processors 291 configure an operation interface by executing the programs loaded in the one or more memory devices 292. The one or more processors 291 store the results of calculations in the one or more memory devices 292 as appropriate.

[0073] The communication port 294 communicates with the robot controller 100 based on a request from one or more processors 291. The user interface 295 communicates with an operator (user) based on a request from one or more processors 291. For example, the user interface 295 includes a display device and an input device. Examples of the display device include a liquid crystal monitor or an organic EL (Electro-Luminescence) monitor. Examples of the input device include a keyboard, a mouse, or a keypad. The input device may be integrated with the display device as a touch panel.

[0074] The hardware configuration shown above is merely an example and can be modified as appropriate. For example, the program generation device 200 may be incorporated into the robot controller 100. Furthermore, the program generation device 200 may be configured by multiple devices that can communicate with each other.

[0075] [Program generation procedure] Next, as an example of a program generation method, a program generation procedure executed by the program generation device 200 will be illustrated. This procedure includes the steps of: a skill generation unit 213 generating skills that represent relative movements and storing them in a skill database 222; a task generation unit 214 generating tasks that include multiple skills and associate movement reference coordinates that serve as a reference for the relative movements with each of the multiple skills and storing them in a task database 224; and a master generation unit 215 generating masters that include multiple tasks and associate the robot 2 with the multiple tasks and storing them in a master database 225.

[0076] As shown in FIG. 4, the program generation device 200 first executes step S01. In step S01, the main screen generation unit 211 displays the above-mentioned main screen on the user interface 295. FIG. 5 is a schematic diagram illustrating an example of the main screen. The main screen 300 illustrated in FIG. 5 includes a skill generation button 311, a task generation button 312, and a master generation button 313. The skill generation button 311 is a button for requesting the generation of a skill. The task generation button 312 is a button for requesting the generation of a task. The master generation button 313 is a button for requesting the generation of a master.

[0077] Returning to FIG. 4, the program generation device 200 then executes step S02. In step S02, the skill generation unit 213 checks whether or not skill generation is requested. For example, the skill generation unit 213 checks whether or not an operation to press the skill generation button 311 has been performed. If it is determined in step S02 that skill generation is requested, the program generation device 200 executes step S03. In step S03, the skill generation unit 213 executes skill generation processing. The contents of step S03 will be described later.

[0078] Next, the program generation device 200 executes step S04. If it is determined in step S02 that skill generation is not requested, the program generation device 200 executes step S04 without executing step S03. In step S04, the task generation unit 214 checks whether task generation is requested. For example, the task generation unit 214 checks whether an operation to press the task generation button 312 has been performed. If it is determined in step S04 that task generation is requested, the program generation device 200 executes step S05. In step S05, the task generation unit 214 executes task generation processing. The contents of step S05 will be described later.

[0079] Next, the program generation device 200 executes step S06. If it is determined in step S04 that task generation has not been requested, the program generation device 200 executes step S06 without executing step S05. In step S06, the master generation unit 215 checks whether master generation has been requested. For example, the master generation unit 215 checks whether an operation to press the master generation button 313 has been performed. If it is determined in step S06 that master generation has been requested, the program generation device 200 executes step S07. In step S07, the master generation unit 215 executes a master generation process. The contents of step S07 will be described later.

[0080] Next, the program generation device 200 executes step S08. In step S08, the main screen generation unit 211 checks whether the generation of skills, tasks, and masters is complete. For example, the main screen generation unit 211 determines that the generation of skills, tasks, and masters is complete when the main screen 300 is closed. If it determines that the generation of skills, tasks, and masters is not complete, the program generation device 200 returns the process to step S02. Thereafter, the generation of skills, tasks, or masters is repeated in response to requests until the generation of skills, tasks, and masters is complete.

[0081] Below, the details of the skill generation process in step S03, the task generation process in step S05, and the master generation process in step S07 will be illustrated.

[0082] (Skill generation process) 6 is a flowchart illustrating a skill generation procedure. As shown in FIG. 6, the program generation device 200 first executes steps S11 and S12. In step S11, the skill generation unit 213 generates the above-described type input interface for inputting the type of skill, and causes the user interface 295 to display a skill generation screen including the type input interface. In step S12, the skill generation unit 213 waits for the type to be input into the type input interface.

[0083] Next, the program generation device 200 executes step S13. In step S13, the skill generation unit 213 generates a skill input interface corresponding to the type of skill on the skill generation screen.

[0084] 7 is a schematic diagram illustrating a skill generation screen including a type input interface and a skill input interface. The skill generation screen 400 shown in FIG. 7 includes a type input interface 410 and a skill input interface 420. The type input interface 410 includes a type list box 411. The type list box 411 is an interface for inputting the type of skill by selecting one from a type list displayed in a drop-down list.

[0085] The skill input interface 420 changes depending on the type of skill entered in the type list box 411. Fig. 7 shows an example of the skill input interface 420 when a type requiring input of the main action, the approach action, and the department store action is entered in the type list box 411. The skill input interface 420 includes a main action list box 421, an edit button 422, a waypoint input box 423, an add button 424, a waypoint input box 425, an add button 426, a preview button 427, and a skill registration button 428. The main action list box 421 is an interface for entering a main action to be included in a skill by selecting one of the main actions from a drop-down displayed list of main actions.

[0086] The main action list includes multiple main actions that have been generated in advance. Each of the multiple main actions may be generated based on a simulation or a previously generated action program. When a main action is input into the main action list box 421, the skill generation unit 213 reads one or more main action commands that represent the input main action.

[0087] The edit button 422 is a button for requesting the display of an edit screen for the main action. When the edit button 422 is pressed, the skill generation unit 213 displays an edit screen including one or more main action commands representing the main actions selected in the main action list box 421, and modifies the main actions based on input to the edit screen. When the edit button 422 is pressed while no main action is selected in the main action list box 421, the skill generation unit 213 may display a blank edit screen and generate a new main action based on input to the edit screen.

[0088] The via position input box 423 is an input box for inputting one or more via positions in an approach movement. The skill generation unit 213 interprets the via position input in the via position input box 423 as a relative position with respect to the movement reference coordinate. The via position input box 423 is configured to allow the X coordinate, Y coordinate, and Z coordinate of the via position in the movement reference coordinate to be individually input. The add button 424 is a button for requesting the addition of a via position input box 423. When the add button 424 is pressed, the skill generation unit 213 adds the via position input box 423 to the skill input interface 420. This makes it possible to express an approach movement with any number of via positions. The skill generation unit 213 may prohibit the user from inputting to the via position input box 423 corresponding to the end position of the approach movement, and may automatically input the work start position of the main movement into the via position input box 423.

[0089] The via position input box 425 is an input box for inputting one or more via positions in the department store action. The skill generation unit 213 interprets the via position input in the via position input box 425 as a relative position with respect to the action reference coordinate. The via position input box 425 is configured to allow the X coordinate, Y coordinate, and Z coordinate of the via position in the action reference coordinate to be individually input. The add button 426 is a button for requesting the addition of a via position input box 425. When the add button 426 is pressed, the skill generation unit 213 adds the via position input box 425 to the skill input interface 420. This makes it possible to represent the department store action with any number of via positions. The skill generation unit 213 may prohibit the user from inputting to the via position input box 425 corresponding to the start position of the department store action, and may automatically input the work end position of the main action into the via position input box 423.

[0090] The preview button 427 is a button for requesting a preview display of the skill being generated. The skill registration button 428 is a button for requesting the registration of skills including an approach action, a main action, and a department store action.

[0091] As described above, the skill input interface 420 changes depending on the type of skill entered in the type list box 411, so the skill input interface 420 shown in Fig. 7 is merely an example. For example, a skill may include only one or more of the above-mentioned calculation commands. In this case, the skill generation unit 213 displays the skill input interface 420 including an input interface for calculation content instead of inputs for representing the main action, approach action, and department action.

[0092] 6, the program generation device 200 then executes step S14. In step S14, the skill generation unit 213 checks whether there is a skill registration request based on an input to the skill input interface. For example, the skill generation unit 213 checks whether an operation to press the skill registration button 428 has been performed.

[0093] If it is determined in step S14 that there is no skill registration request, the program generation device 200 executes step S15. In step S15, the preview display unit 219 determines whether or not there is a request for preview display. For example, the preview display unit 219 checks whether or not an operation to press the preview button 427 has been performed. If it is determined in step S15 that there is no request for preview display, the program generation device 200 returns the process to step S14. Thereafter, input to the skill input interface is accepted until there is a request for skill registration or a request for preview display.

[0094] If it is determined in step S15 that a request for preview display has been made, the program generation device 200 executes step S16. In step S16, the preview display unit 219 generates a preview screen (preview interface) for displaying a preview of the skill. FIG. 8 is a schematic diagram illustrating an example of the preview screen. The preview screen 430 shown in FIG. 8 includes a robot list box 431, a coordinate list box 432, a play button 433, and a preview window 434.

[0095] The robot list box 431 is an interface for inputting a temporary robot 2 by selecting one of the robots in the drop-down list. The robot list includes multiple robots 2 that can be the subject of skill execution. The coordinate list box 432 is an interface for inputting temporary reference coordinates for movement by selecting one of the coordinates in the drop-down list. The coordinate list includes multiple reference coordinates for movement that can be associated with skills. The play button 433 is a button for requesting the execution of a preview display. The preview window 434 is a window for displaying a simulation of a temporary robot 2 executing a skill at temporary reference coordinates for movement.

[0096] Returning to FIG. 6, the program generation device 200 then executes step S17. In step S17, the preview display unit 219 waits for a request to execute a preview display. For example, the preview display unit 219 waits for an operation to press the play button 433. If it is determined in step S17 that a request to execute a preview display has been made, the program generation device 200 executes step S18.

[0097] In step S18, the preview display unit 219 associates the temporary robot 2 with the temporary movement reference coordinates as a skill based on the input to the preview interface, and causes the simulation unit 212 to simulate the movement of the temporary robot 2 executing the skill based on the temporary movement reference coordinates. The preview display unit 219 may associate the temporary movement reference coordinates with the skill based on an input specifying coordinates in the simulation, instead of an input to the coordinate list box 432. For example, the preview display unit 219 may associate the temporary movement reference coordinates with the skill based on an input specifying coordinates in the simulation image in the preview window 434. The simulation unit 212 generates a simulation video of the movement of the temporary robot 2 executing the skill based on the temporary movement reference coordinates, and displays it on the skill generation screen or another screen. For example, the simulation unit 212 displays the simulation video in the preview window 434. Thereafter, the program generation device 200 returns the process to step S14.

[0098] If it is determined in step S14 that there is a skill registration request, the program generation device 200 executes step S19. In step S19, the skill generation unit 213 stores the skill based on the input to the skill input interface in the skill database 222, and closes the skill generation screen.

[0099] (Task generation process) 9 is a flowchart illustrating a procedure for generating a task. As shown in FIG. 9, the program generation device 200 first executes step S21. In step S21, the task generation unit 214 causes the user interface 295 to display the above-described task generation screen.

[0100] FIG. 10 is a schematic diagram illustrating a task generation screen. The task generation screen 500 illustrated in FIG. 10 includes an item window 510, a flow window 520, and a simulation window 530. The item window 510 displays items for generating the above-described task flow. As an example, the item window 510 includes a skill box 511 representing the skills of the robot system 1. The flow window 520 is a window for inputting a task flow 521. As an example, by dragging a skill box 511 from the item window 510 to the flow window 520 and arranging multiple skill boxes 511 in the flow window 520 in the execution order, the task flow 521 can be drawn in the flow window 520. The flow window 520 includes a task registration button 522. The task registration button 522 is a button for requesting registration of a task represented by the task flow. The simulation window 530 is a window for displaying a simulation image showing the arrangement of the robot 2 and peripheral objects 4.

[0101] Returning to FIG. 9 , the program generation device 200 then executes step S22. In step S22, the task generation unit 214 checks whether there is an input to place the skill box 511 in the flow window 520. For example, the task generation unit 214 checks whether the skill box 511 has been dragged from the item window 510 to the flow window 520. If it is determined in step S22 that the skill box 511 has been placed in the flow window 520, the program generation device 200 executes step S23. In step S23, the task generation unit 214 updates the task flow 521 based on the position where the skill box 511 is placed in the flow window 520.

[0102] When the first skill box 511 is placed in the flow window 520 while no task flow 521 is drawn in the flow window 520, the task generation unit 214 generates a task flow 521 that includes the skill box 511 of the robot system 1. When a new skill box 511 is placed in the flow window 520 while a task flow 521 is drawn in the flow window 520, the task generation unit 214 adds the new skill box 511 to the task flow 521 based on the relationship between the position of the skill box 511 included in the task flow 521 and the position where the new skill box 511 is placed.

[0103] For example, when a new skill box 511 is added after all of the skill boxes 511 included in the task flow 521, the task generation unit 214 adds the new skill box 511 to the end of the task flow 521. When a new skill box 511 is added before all of the skill boxes 511 included in the task flow 521, the task generation unit 214 adds the new skill box 511 to the beginning of the task flow 521. When a new skill box 511 is added between two skill boxes 511 included in the task flow 521, the task generation unit 214 adds the new skill box 511 between the two skill boxes 511.

[0104] Next, the program generation device 200 executes step S24. In step S24, the task generation unit 214 checks whether any skill box 511 has been selected in the task flow 521. If it is determined in step S24 that no skill box 511 has been selected, the program generation device 200 returns the process to step S22.

[0105] If it is determined in step S24 that any of the skill boxes 511 has been selected, the program generation device 200 executes step S25. In step S25, the task generation unit 214 generates a skill selection screen. The skill selection screen is a screen for selecting a skill to be associated with the skill box 511 from a plurality of skills stored in the skill database 222, for example.

[0106] 11 is a schematic diagram illustrating a skill selection screen. The skill selection screen 540 shown in FIG. 11 includes a skill list box 541, a parameter input box 542, and a selection completion button 543. The skill list box 541 is an interface for inputting a skill to be associated with the skill box 511 by selecting one of the skills from a drop-down displayed skill list. The skill list includes multiple skills stored in the skill database 222.

[0107] Parameter input box 542 is an interface for inputting one or more parameters to be associated with a skill selected by inputting them into skill list box 541. When there are multiple parameters to be associated with a skill, skill selection screen 540 includes multiple parameter input boxes 542 corresponding to the multiple parameters, respectively. In Fig. 11, the bolt tightening skill is selected in skill list box 541, and skill selection screen 540 includes a parameter input box 542 for inputting a bolt diameter and a parameter input box 542 for inputting a tightening torque.

[0108] The selection completion button 543 is a button for requesting skill selection. The skill selection includes associating the skill input in the skill list box 541 with the parameter input box 542 in the skill box 511.

[0109] Returning to FIG. 9 , the program generation device 200 then executes step S26. In step S26, the task generation unit 214 waits for a request to select a skill. For example, the task generation unit 214 waits for an operation to press the selection completion button 543. Next, the program generation device 200 executes step S27. In step S27, the task generation unit 214 associates the skill input in the skill list box 541 with the parameter input box 542 in the skill box 511.

[0110] Next, the program generation device 200 executes steps S31 and S32. In step S31, the task generation unit 214 waits for the action reference coordinates to be selected by specifying coordinates in the simulation. For example, the task generation unit 214 waits for the action reference coordinates to be selected by input specifying coordinates in the simulation image in the simulation window 530. In step S32, the task generation unit 214 associates the action reference coordinates selected by specifying coordinates in the simulation with the skill box 511.

[0111] Next, the program generation device 200 executes step S33. In step S33, the task generation unit 214 checks whether or not a task registration request has been made. For example, the task generation unit 214 checks whether or not an operation to press the task registration button 522 has been performed. If it is determined in step S33 that there has been no task registration request, the program generation device 200 returns the process to step S22. Thereafter, the program generation device 200 continues to accept user operations on the task generation screen 500 until a task registration request is made.

[0112] If it is determined in step S33 that there is a task registration request, the program generation device 200 executes step S34. In step S34, the task generation unit 214 saves the task based on the task flow 521 and the skills and action reference coordinates associated with each of the multiple skill boxes 511 in the task database 224, and closes the task generation screen.

[0113] (Master generation process) The master generation process includes a master generation procedure, a program generation procedure, a simulation procedure, a calibration procedure, and a program registration procedure. Fig. 12 is a flowchart illustrating the master generation procedure. As shown in Fig. 12, the program generation device 200 first executes step S41. In step S41, the master generation unit 215 causes the user interface 295 to display the above-mentioned master generation screen.

[0114] FIG. 13 is a schematic diagram illustrating a master generation screen. The master generation screen 600 shown in FIG. 13 includes an item window 610, a flow window 620, a controller list box 631, a simulation window 640, a program generation button 651, a simulation button 652, a calibration button 653, and a program registration button 654. The item window 610 displays items for generating the master flow described above. As an example, the item window 610 includes a task box 611 representing a task of the robot system 1 and a branch box 612 representing a branch determination process of the robot system 1. An example of the branch determination process is a process for determining whether a conditional expression is true or false. For example, the branch box 612 branches the master flow 621 when the conditional expression is true and when the conditional expression is false.

[0115] As an example, the branch box 612 includes an input terminal 613, a true terminal 614, and a false terminal 615. In the master flow 621, the branch box 612 is executed after the item to which the input terminal 613 is connected. The item connected to the true terminal 614 is executed when the conditional expression of the branch box 612 is true. The item connected to the false terminal 615 is executed when the conditional expression of the branch box 612 is false. When arranging the branch box 612, it is also possible to connect the false terminal 615 to the input terminal 613. In this case, the branch determination process represented by the branch box 612 corresponds to a wait process that waits for the conditional expression to become true.

[0116] The flow window 620 is a window for inputting a master flow 621. As an example, it is possible to draw a master flow 621 in the flow window 620 by dragging an item (a task box 611 or a branch box 612) from the item window 610 to the flow window 620 and connecting the items with a link. The flow window 620 includes a master registration button 622. The master registration button 622 is a button for requesting registration of a master represented by a master flow.

[0117] 13 includes two branch boxes 612. Of the two branch boxes 612, the upstream branch box 612 represents a standby process. The downstream branch box 612 represents a conditional branch between a task box 611 connected to a true terminal 614 and a task box 611 connected to a false terminal 615.

[0118] The controller list box 631 is an interface for inputting a robot controller 100 to be associated with a master flow by selecting one of the controllers in a drop-down list. By associating a robot controller 100 with a master flow, the robot 2 controlled by the robot controller 100 is associated with the master flow 621. If the robot controller 100 can control multiple robots 2, associating the robot controller 100 with the master flow 621 associates multiple robots 2 with the master flow 621. In this case, the flow window 620 can include multiple sub-master flows corresponding to the multiple robots 2, respectively. The simulation window 640 is a window for displaying a simulation video of the robot 2 operating based on an operation program.

[0119] The program generation button 651 is a button for requesting the generation of an operation program. The simulation button 652 is a button for requesting the execution of a simulation. The calibration button 653 is a button for requesting the execution of a calibration. The program registration button 654 is a button for requesting the registration of an operation program.

[0120] Returning to FIG. 12 , the program generation device 200 then executes step S42. In step S42, the task generation unit 214 checks whether there is an input to place an item (task box 611 or branch box 612) in the flow window 620. Placing an item in the flow window 620 involves connecting the newly placed item in the flow window 620 to an item previously placed in the flow window 620 with a link. For example, the task generation unit 214 checks whether the task box 611 or branch box 612 has been dragged from the item window 610 to the flow window 620. If it is determined in step S42 that the task box 611 or branch box 612 has been placed in the flow window 620, the program generation device 200 executes step S43. In step S43, the task generation unit 214 updates the master flow 621 based on the position where the task box 611 is placed in the flow window 620.

[0121] When the first item is placed in the flow window 620 while the master flow 621 is not drawn in the flow window 620, the master generation unit 215 generates a master flow 621 including an item of the robot system 1. When a new item is placed in the flow window 620 while the master flow 621 is drawn in the flow window 620, the master generation unit 215 adds the new item to the master flow 621 based on the connection by the link. When a new item is added between two items included in the master flow 621, the master generation unit 215 may add the new item between the two items.

[0122] Next, the program generation device 200 executes step S44. In step S44, the master generation unit 215 checks whether any task box 611 has been selected in the master flow 621. If it is determined in step S44 that no task box 611 has been selected, the program generation device 200 executes step S45. In step S45, the master generation unit 215 checks whether any branch box 612 has been selected in the master flow 621. If it is determined in step S45 that no branch box 612 has been selected, the program generation device 200 returns the process to step S42.

[0123] If it is determined in step S44 that the task box 611 has been selected, the program generation device 200 executes step S46. In step S46, the master generation unit 215 generates a task selection screen. The task selection screen is a screen for selecting a task to be associated with the task box 611 from a plurality of tasks stored in the task database 224, for example.

[0124] 14 is a schematic diagram illustrating an example of a task selection screen. The task selection screen 660 shown in FIG. 14 includes a task list box 661, a notification destination input box 662, a notification destination input box 663, and a selection completion button 664. The task list box 661 is an interface for inputting a task to be associated with the task box 611 by selecting one of the tasks in a drop-down displayed task list. The task list includes multiple tasks stored in the task database 224.

[0125] The notification destination input box 662 is an interface for inputting a notification destination for when the execution of a task starts. The notification destination input box 663 is an interface for inputting a notification destination for when the execution of a task is completed. The notification destination input boxes 662 and 663 are examples of the notification destination input unit described above. The selection completion button 664 is a button for requesting the selection of a task. The selection of a task includes associating the task input in the task list box 661 with the notification destination input boxes 662 and 663 with the task box 611.

[0126] 12, the program generation device 200 next executes step S47. In step S47, the master generation unit 215 waits for a request to select a task. For example, the master generation unit 215 waits for an operation to press the selection completion button 664. Next, the program generation device 200 executes step S48. In step S48, the master generation unit 215 associates the task input in the task list box 661 with the notification destinations input in the notification destination input boxes 662 and 663 with the task box 611.

[0127] If it is determined in step S45 that the branch box 612 has been selected, the program generation device 200 executes step S51. In step S51, the master generation unit 215 generates a condition setting screen. The condition setting screen is a screen for setting a conditional expression to be determined in the branch box 612.

[0128] FIG. 15 is a schematic diagram illustrating an example of a condition setting screen. The condition setting screen 670 shown in FIG. 15 includes a conditional expression input box 671, an add conditional expression button 672, and a complete setting button 673. The conditional expression input box 671 is an interface for inputting a conditional expression by text or the like. The add conditional expression button 672 is a button for requesting the addition of a conditional expression. When the add conditional expression button 672 is pressed, a conditional expression input box 671 is added. FIG. 15 illustrates a state in which two conditional expression input boxes 671 are included in the condition setting screen 670 by pressing the add conditional expression button 672. The complete setting button 673 is a button for requesting the setting of a conditional expression. Setting a conditional expression includes associating a conditional expression obtained by combining the conditional expressions input in all of the conditional expression input boxes 671 with AND or OR, with the branch box 612.

[0129] 12, the program generation device 200 then executes step S52. In step S52, the master generation unit 215 waits for a request to set a conditional expression. For example, the master generation unit 215 waits for an operation to press the setting completion button 673. Next, the program generation device 200 executes step S53. In step S53, the master generation unit 215 associates, with the branch box 612, a conditional expression obtained by combining the conditional expressions entered in all of the conditional expression input boxes 671 using AND or OR.

[0130] After steps S48 and S53, the program generation device 200 executes step S54. In step S54, the master generation unit 215 checks whether or not there is a master registration request. For example, the master generation unit 215 checks whether or not an operation to press the master registration button 622 has been performed. If it is determined in step S54 that there is no master registration request, the program generation device 200 returns the process to step S42. Thereafter, the program generation device 200 continues to accept user operations on the master generation screen 600 until there is a master registration request.

[0131] If it is determined in step S54 that there is a master registration request, the program generation device 200 executes step S55. In step S55, the master generation unit 215 saves a master based on the master flow 621, the tasks and notification destinations associated with each of the multiple task boxes 611, and the conditional expressions associated with each of the one or more branch boxes 612 in the master database 225, and closes the master generation screen.

[0132] 16 is a flowchart illustrating a program generation procedure. As shown in FIG. 16, the program generation device 200 executes steps S61, S62, S63, S64, and S65. In step S61, the program generation unit 216 waits for a request to generate a program. For example, the program generation unit 216 waits for an operation to press the program generation button 651.

[0133] In step S62, the program generation unit 216 generates an operation program for the robot 2 in which relative movements are converted into movements of the robot 2, based on the master registered in the master database 225, the multiple tasks included in the master, and the multiple skills included in each of the multiple tasks. The operation program generated here includes multiple work operation programs in which the relative movements of the multiple skills are converted into movements of the robot 2. There may be ungenerated sections between consecutive work operation programs in which no program has been generated.

[0134] In step S63, the program generation unit 216 selects an ungenerated section for the robot system 1 from all ungenerated sections included in the operation program. In step S64, the program generation unit 216 generates the above-mentioned air cut program for the selected ungenerated section. As a result, the selected ungenerated section becomes a section for which a program has been generated.

[0135] In step S65, the program generation unit 216 checks whether any ungenerated sections remain in the operation program. If it is determined in step S65 that any ungenerated sections remain, the program generation device 200 returns the process to step S63. Thereafter, the selection of ungenerated sections and the generation of air cut programs for the selected ungenerated sections are repeated until there are no more ungenerated sections in the operation program. If it is determined in step S65 that no ungenerated sections remain, the program generation device 200 executes step S66. In step S66, the program generation unit 216 saves the generated operation program in the program storage unit 226. This completes the program generation procedure.

[0136] 17 is a flowchart illustrating a simulation procedure. As shown in FIG. 17, the program generation device 200 first executes steps S71 and S72. In step S71, the simulation unit 212 waits for a request to execute a simulation. For example, the simulation unit 212 waits for an operation to press the simulation button 652. In step S72, the simulation unit 212 checks whether or not a generated operation program has been saved in the program storage unit 226.

[0137] If it is determined in step S72 that a generated operation program is stored in the program storage unit 226, the program generation device 200 executes step S73. In step S73, the simulation unit 212 generates a simulation video of the operation of the robot 2 based on the operation program stored in the program storage unit 226, and displays it in the simulation window 640. This completes the simulation procedure. If it is determined in step S72 that a generated operation program is not stored in the program storage unit 226, the program generation device 200 completes the simulation procedure without executing step S73.

[0138] FIG. 18 is a flowchart illustrating the calibration procedure. As shown in FIG. 18, the program generation device 200 executes steps S81, S82, and S83. In step S81, the calibration unit 218 waits for a request to execute calibration. For example, the calibration unit 218 waits for an operation to press the calibration button 653. In step S82, the calibration unit 218 acquires actual measurement data of at least the peripheral object 4 from the environment sensor 3. The calibration unit 218 may further acquire actual measurement data of the robot 2 from the environment sensor 3. In step S83, the calibration unit 218 calculates a difference between the acquired actual measurement data and the position of the model of the peripheral object 4 in the model storage unit 221, and corrects the model in the model storage unit 221 to eliminate the difference. When the model in the model storage unit 221 is corrected, the simulation unit 212 notifies the task generation unit 214 of the correction content. Based on the notified correction content, the task generation unit 214 corrects the action reference coordinates associated with each of the multiple skills in the task database 224. This completes the calibration procedure.

[0139] 19 is a flowchart illustrating a program registration procedure. As shown in FIG. 19, the program generation device 200 executes steps S91 and S92. In step S91, the program registration unit 217 waits for a request to register a program. For example, the program registration unit 217 waits for an operation to press the program registration button 654. In step S92, the program registration unit 217 checks whether the generated operation program is stored in the program storage unit 226.

[0140] If it is determined in step S92 that the generated operation program is stored in the program storage unit 226, the program generation device 200 executes step S93. In step S93, the operation program stored in the program storage unit 226 is transmitted to the robot controller 100, and registered in the program storage unit 111 of the robot controller 100. This completes the program registration procedure. If it is determined in step S92 that the generated operation program is not stored in the program storage unit 226, the program generation device 200 completes the program registration procedure without executing step S93.

[0141] [Control procedure] Next, an example of a control procedure executed by the robot controller 100 based on the operation program registered in the program storage unit 111 will be described. As shown in Fig. 20, the robot controller 100 first executes steps S101, S102, and S103. In step S101, the control unit 112 reads the first operation command of the operation program from the program storage unit 111. In step S102, the control unit 112 executes the above-described control process based on the operation command that has been read. In step S103, the control unit 112 checks whether the operation corresponding to the operation command that has been read has been completed.

[0142] If it is determined in step S103 that the operation corresponding to the loaded operation command has been completed, the robot controller 100 executes step S104. In step S104, the control unit 112 checks whether the operations corresponding to all operation commands in the operation program have been completed. If it is determined in step S104 that an operation command remains that has not been completed, the robot controller 100 executes step S105. In step S105, the control unit 112 reads the next operation command from the program storage unit 111.

[0143] Next, the robot controller 100 executes step S106. If it is determined in step S103 that the operations corresponding to the loaded operation commands have not been completed, the robot controller 100 executes step S106 without executing steps S104 and S105. In step S106, the control unit 112 waits for the control cycle to elapse. Thereafter, the robot controller 100 returns the process to step S102. Thereafter, the reading of operation commands and the control process are repeated until the operations corresponding to all operation commands in the operation program have been completed.

[0144] If it is determined in step S104 that the operations corresponding to all the operation commands in the operation program have been completed, the robot controller 100 completes the control procedure.

[0145] [Effects of the embodiment] As described above, the program generation device 200 is a program generation device 200 that generates an operation program for operating the robot 2 in response to user operation, and includes: a skill generation unit 213 that generates skills that respectively represent relative operations and stores them in the skill database 222; a task generation unit 214 that generates tasks that include a plurality of skills and associates operation reference coordinates that serve as the basis for the relative operations with each of the plurality of skills and stores them in the task database 224; and a master generation unit 215 that includes a plurality of tasks and generates a master that associates the robot 2 with the plurality of tasks and stores them in the master database 225.

[0146] Since the skills that define the movements are expressed as relative movements, the skills can be reused for any movement reference coordinates. Therefore, tasks can be flexibly configured by combining skills and movement reference coordinates. Tasks associate the relative movements of skills with movement reference coordinates, but do not limit the execution subject, so tasks can be reused for any execution subject. Therefore, masters can be flexibly constructed by combining tasks and execution subjects. Therefore, it is effective in improving the efficiency of generating movement programs.

[0147] The master generator 215 may generate a master that associates a start condition with one or more tasks, making it possible to easily generate a more advanced operation program that includes a start condition check.

[0148] The master generation unit 215 may generate a master that associates one or more tasks with a notification destination of the execution status by the robot 2. An operation program including cooperation with a host controller can be easily generated.

[0149] The task generation unit 214 may generate a task including the execution order of multiple skills, and the master generation unit 215 may generate a master including conditional branching between two or more tasks. Two or more skills with a fixed execution order can be grouped into a single task, and the conditional branching between two or more tasks that depend on the executing entity, etc., can be concentrated in the master. This makes it even easier to generate an operating program.

[0150] The task generation unit 214 may generate a task that associates one or more skills with one or more parameters that define variable actions in a relative action. The variable actions in the relative action may vary depending on the position of the skill within the task. By making it possible to associate one or more parameters with skills during the task generation stage, variable actions can be easily adapted to the task.

[0151] The skill generation unit 213 may generate a skill that includes at least the start position and end position of a relative movement. Since the start position and end position are defined as a relative movement, it becomes possible to move the robot 2 relative to a master that arranges tasks that link skills.

[0152] The skill generation unit 213 may generate a skill including an approach motion from the start position to the work start position and a department motion from the work end position to the end position. By including the approach motion and the department motion in the skill, it is possible to improve the usability of the skill in generating a task.

[0153] The skill generation unit 213 may extract at least a part of the generated operation program and convert it into a relative operation to generate a skill, thereby making it possible to effectively utilize the generated operation program.

[0154] The system may further include a program generation unit 216 that generates an operation program for the robot 2 in which relative operations are converted into operations of the robot 2 based on the master, the multiple tasks included in the master, and the multiple skills included in each of the multiple tasks. The operation of the robot 2 specified by the skills, tasks, and master can be easily applied to an existing robot 2 controller that operates based on an operation program.

[0155] The master generation unit 215 may generate a master by associating multiple tasks to be executed for one workpiece with multiple execution entities including the robot 2, and the program generation unit 216 may generate an operation program for each of the multiple execution entities. By aggregating multiple tasks to be executed for one workpiece into one master, it is possible to generate an operation program by allocating multiple tasks to multiple execution entities. This makes it easy to generate an operation program with work-centered thinking.

[0156] The program generation unit 216 may generate a movement program including an air cut program for moving the robot 2 from the end position of the movement of the robot 2 corresponding to the relative movement of the earlier skill to the start position of the movement of the robot 2 corresponding to the relative movement of the later skill in successive skills. An air cut program with a determined execution subject can be easily generated from a skill in which the execution subject is not determined.

[0157] The program generation device 200 further includes a simulation unit 212 that executes a simulation including a model of the robot 2 and a model of a peripheral object 4 of the robot 2, and the task generation unit 214 may associate a motion reference coordinate with each of a plurality of skills based on an input that specifies coordinates in the simulation. The motion reference coordinate to be associated with a skill can be easily specified.

[0158] The program generation device 200 may further include a calibration unit 218 that corrects the motion reference coordinates based on the difference between the actual measurement data of the peripheral object 4 and the model of the peripheral object 4. By applying the difference between the actual measurement data and the model to the motion reference coordinates, the motion of the robot 2 can be easily adapted to the actual environment.

[0159] The program generation device 200 may further include a preview display unit 219 that associates a virtual robot 2 with virtual movement reference coordinates for the skill generated by the skill generation unit 213 and displays a simulation of the virtual robot 2 executing the skill at the virtual movement reference coordinates. The skill movements can be checked sequentially.

[0160] The skill generation unit 213 may generate a type input interface that allows a user to input a skill type, generate a skill input interface according to the skill type based on the input to the type input interface, and generate a skill based on the input to the skill input interface. This allows the user to be prompted to make an appropriate input.

[0161] Although the embodiments have been described above, the present invention is not necessarily limited to the above-described embodiments, and various modifications are possible without departing from the spirit of the present invention. [Explanation of symbols]

[0162] 2...Robot, 4...Peripheral objects, 200...Program generation device, 212...Simulation unit, 213...Skill generation unit, 222...Skill database, 214...Task generation unit, 224...Task database, 215...Master generation unit, 225...Master database, 216...Program generation unit, 218...Calibration unit, 219...Preview display unit.

Claims

1. A program generation device that generates an operation program for operating a robot in response to a user's operation, a skill generation unit that generates skills representing respective relative actions whose references are not yet determined and stores the skills in a skill database; a task generation unit that generates a task including a plurality of skills, the task corresponding to each of the plurality of skills being a motion reference coordinate expressed in coordinates in a common coordinate system fixed to a workspace of the robot as the reference for the relative motion, and stores the generated task in a task database; a master generation unit that generates a master including a plurality of tasks and that associates the robot with the plurality of tasks, and stores the master in a master database; a program generation unit that generates the operation program of the robot in which the relative operation represented by the skill is converted into an operation of the robot based on the relative operation represented by the skill, the operation reference coordinates associated with each of the plurality of skills by the task, the robot associated with the plurality of tasks by the master, and a relationship between a robot coordinate system fixed to the robot and the common coordinate system; A program generating device comprising:

2. the master generation unit generates the master that associates a start condition with one or more tasks.

2. The program generating device according to claim 1.

3. the master generation unit generates the master that associates a notification destination of an execution status by the robot with one or more tasks; 3. The program generating device according to claim 1.

4. the task generation unit generates the task including an execution order of the plurality of skills; the master generation unit generates the master including a conditional branch between two or more tasks.

3. The program generating device according to claim 1.

5. the task generation unit generates the task by associating one or more parameters that define variable actions in the relative actions with one or more of the skills; 5. The program generating device according to claim 4.

6. the skill generation unit generates the skill including at least a start position and an end position of the relative motion.

3. The program generating device according to claim 1.

7. The skill generation unit an approach operation from the start position to a work start position; a departmental movement from a work end position to the end position; generating the skill, 7. The program generating device according to claim 6.

8. the skill generation unit extracts at least a part of the generated operation program and converts it into the relative operation to generate the skill; 7. The program generating device according to claim 6.

9. the master generation unit generates the master by associating the plurality of tasks to be executed for one workpiece with a plurality of execution entities including the robot; the program generation unit generates the operation program for each of a plurality of execution entities.

3. The program generating device according to claim 1.

10. the program generation unit generates the movement program including an air cut program for moving the robot from an end position of a movement of the robot corresponding to the relative movement of the earlier skill to a start position of a movement of the robot corresponding to the relative movement of the later skill in successive skills; 3. The program generating device according to claim 1.

11. a simulation unit that executes a simulation including a model of the robot and a model of an object surrounding the robot; The task generation unit, based on an input specifying coordinates on the simulation, Associating the action reference coordinates with each of the plurality of skills; 3. The program generating device according to claim 1.

12. further comprising a calibration unit that corrects the operation reference coordinates based on a difference between actual measurement data of the peripheral object and a model of the peripheral object; 12. The program generating device according to claim 11.

13. a preview display unit that associates a virtual robot with virtual movement reference coordinates for the skill generated by the skill generation unit and displays a simulation of the virtual robot executing the skill at the virtual movement reference coordinates; 3. The program generating device according to claim 1.

14. the skill generation unit generates a type input interface into which a type of the skill can be input, generates a skill input interface according to the type of the skill based on the input to the type input interface, and generates the skill based on the input to the skill input interface; 3. The program generating device according to claim 1.

15. 3. The program generating device according to claim 1, wherein the master generating unit further generates a higher-level master including a conditional branch between a plurality of masters and stores the higher-level master in the master database.

16. 16. The program generation device according to claim 15, further comprising a program generation unit that generates the operation program for the robot in which the relative movement is converted into a movement of the robot, based on the higher-level master, the plurality of masters, the plurality of tasks included in each of the plurality of masters, and the plurality of skills included in each of the plurality of tasks.

17. a skill generation unit generates a skill representing a relative action whose reference is not yet determined, and stores the skill in a skill database; a task generation unit generates a task including a plurality of skills, the task generating unit associating, with each of the plurality of skills, a motion reference coordinate expressed in coordinates in a common coordinate system fixed to a workspace of the robot as the reference for the relative motion, and stores the task in a task database; a master generation unit generates a master including a plurality of tasks and associating the robot with the plurality of tasks, and stores the master in a master database; generating an operation program for the robot in which the relative operation represented by the skill is converted into an operation of the robot based on the relative operation represented by the skill, the operation reference coordinates associated with each of the plurality of skills by the task, the robot associated with the plurality of tasks by the master, and the relationship between a robot coordinate system fixed to the robot and the common coordinate system; A program generation method including:

Citation Information

Patent Citations

  • Microprogram controller

    JP1989055646A

  • Position instructing method for robot and robot control unit

    JP1995078021A

  • Robot program execution device, robot program execution method and program

    JP2019171498A

  • Programming assistance apparatus, robot system, programming assistance method and program-generating method

    WO2018194094A1