Robot programming device

The robot programming device simplifies the teaching of robot motion programs by arranging a robot system model in a virtual space, defining surfaces, and using a three-dimensional grid to efficiently set positions and generate training points, addressing the inefficiencies of conventional methods.

DE112023006865T5Undetermined Publication Date: 2026-07-09FANUC LTD
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
DE112023006865
Authority / Receiving Office
DE · DE
Patent Type
Applications
Current Assignee / Owner
Filing Date
2023-11-10
Publication Date
2026-07-09

AI Technical Summary

Technical Problem

Conventional methods for teaching a robot motion programs require significant time and effort from operators due to the need for fine-tuning the position and orientation of the robot or robot model, increasing with the number of teaching points.

Method used

A robot programming device that arranges a robot system model in a virtual space, defines surfaces, sets positions using a three-dimensional grid, and generates training points to simplify the teaching process.

Benefits of technology

Simplifies the process of teaching a robot motion programs, making robot programming more efficient by allowing operators to easily set positions and generate programs using a virtual environment.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 00000000_0000_ABST
    Figure 00000000_0000_ABST
Patent Text Reader

Abstract

The present invention is a robot programming device comprising: a model placement part for placing a robot system model in a virtual space, which includes a robot model, a hand model attached to the robot model, and a workpiece model; a surface definition part for receiving a user command to define a surface associated with a prescribed task to be performed by the robot model on the workpiece model in the virtual space; a grid placement part for placing a three-dimensional grid in the virtual space with respect to the defined surface or a point on the defined surface; a position adjustment part for adjusting the position of the robot model, which, together with the hand model, holds the working model that has been placed at a grid point of the three-dimensional grid;and a teach-in point generation part for generating teach-in points that form an operating program of the prescribed work, based on the grid point at which the working model has been placed and the position of the robot model that has been set at the grid point.
Need to check novelty before this filing date? Find Prior Art

Description

field of technology The present disclosure relates to a robot programming device. State of the art Methods for teaching a robot a motion program to perform a predetermined task on a workpiece are known in one method in which an operator successively teaches positions such as a pick-up position, a placement position, an approach point and a departure point with respect to a workpiece, while adjusting the position and orientation of an actual robot by operating the robot by means of a tap using a programming handheld device, or in one method in which an operator successively teaches positions such as a pick-up position, a placement position, an approach point and a departure point with respect to a workpiece model, while adjusting the position and orientation of a robot model by operating the robot model by means of a tap on a robot programming device. In this regard, PTL 1 describes an example of a robot programming device that includes a function to support confirmation as to whether an approach to a workpiece can be achieved. PTL 2 describes an example of a simulation device that simulates the movement of a workpiece transfer system for transferring a workpiece by a robot. List of quotations Patent literature [PTL 1] Unexamined Japanese patent publication (Kokai) No. 2020-175471 A [PTL 2] Unexamined Japanese patent publication (Kokai) No. 2020-199625 A Overview Technical task A conventional method for teaching positions such as a pick-up position, placement position, approach point, and departure point relative to a workpiece sequentially to a robot or robot model using a tapping process requires a significant investment of time and effort from the operator. This is because the conventional method necessitates fine-tuning the position and orientation of the robot or robot model, and the number of operating hours required for teaching increases with the number of teaching points in a motion program. Therefore, a technique is desired that would allow an operator to more easily perform the process of teaching a motion program to a robot for working on a workpiece and to program the robot more efficiently. Technical solution One aspect of the present disclosure is a robot programming device comprising: a model arrangement unit configured to arrange a robot system model in a virtual space, comprising a robot model, a hand model attached to the robot model, and a workpiece model; a surface definition unit configured to receive a user operation for defining a surface with respect to a predetermined job performed by the robot model on the workpiece model in the virtual space; a grid arrangement unit configured to arrange a three-dimensional grid in the virtual space with respect to the defined surface or a point on the defined surface; a position setting unit configured to set a position of the robot model, which, via the hand model, grasps the workpiece model arranged at a grid point of the three-dimensional grid;and a training point generation unit designed to generate a training point, which forms a motion program of the specified work, based on the grid point at which the workpiece model is located and the position of the robot model set at the grid point. The tasks, features and advantages and other tasks, features and advantages will become more apparent from the detailed description of typical embodiments of the present invention, which are illustrated in the accompanying drawings. Brief description of the drawings Fig. 1 is a graphical representation depicting an external configuration of a robot programming device according to one embodiment. Fig. 2 is a graphical functional block representation of the robot programming device according to a first embodiment. Fig. 3 is a flowchart depicting program creation processing according to the first embodiment. Fig. 4 is a graphical representation depicting a situation in which a robot system model is arranged in a virtual space. Fig. 5 is a graphical representation depicting a situation in which a workpiece model is grasped by a hand model. Fig. 6 is a graphical representation depicting a situation in which a surface is defined by a cursor with respect to a work in the virtual space. Fig. 7 is a graphical representation depicting a situation in which a three-dimensional grid is arranged on the surface with respect to a work.Figure 8 is a graphical representation depicting a situation in which a grid point on a surface from which the workpiece model is picked up is selected by a user action. Figure 9 is a graphical representation depicting a situation in which the workpiece model is positioned at the selected grid point. Figure 10 is a graphical representation depicting a situation in which the direction of the positioned workpiece model is adjusted. Figure 11 is a graphical representation depicting a situation in which the position of the robot model is adjusted. Figure 12 is a graphical representation depicting a situation in which a teach-in point for picking up the workpiece model is set by the hand model. Figure 13 is a graphical representation depicting a situation in which an operator moves a cursor and selects grid points corresponding to an approach point and a departure point.Figure 14 is a graphical representation depicting a situation in which training points are created corresponding to the approach and departure points. Figure 15 is a graphical representation depicting a situation in which training points are created to form a motion program for picking up and positioning the workpiece model. Figure 16 is a graphical representation depicting a situation in which a motion program is generated to position each of the plurality of workpiece models arranged on the upper surface of another worktable model. Figure 17 is a graphical representation depicting a situation in which the operator selects a plurality of grid points as positions for the workpiece models on the surface from which the workpiece model is picked up.Figure 18 is a graphical representation depicting a situation in which the workpiece models are arranged at the plurality of grid points selected by the operator on the surface from which the workpiece model is picked up. Figure 19 is a graphical representation depicting a situation in which a workpiece model's position is changed to avoid interference. Figure 20 is a graphical representation depicting a situation in which a user operation defines a bottom surface of a container model as the surface from which the workpiece model is picked up or as the surface on which the workpiece model is to be arranged. Figure 21 is a graphical representation depicting a situation in which the plurality of workpiece models are positioned at positions defined by a user on the bottom surface of the container model.Figure 22 is a graphical representation depicting a situation in which the position of the workpiece model is changed, which interferes with the container model. Figure 23 is a graphical representation depicting a situation in which an upper surface of the workpiece model, which is positioned on the upper surface of the worktable model, is defined as the surface from which the workpiece model is picked up or as the surface on which the workpiece model is to be positioned. Figure 24 is a graphical representation depicting a situation in which a grid point on a lower surface of the three-dimensional grid is selected by the operator as the position of the workpiece model to be picked up. Figure 25 is a graphical representation depicting a situation in which a workpiece model is positioned at a grid point selected by the operator.Figure 26 is a graphical representation depicting a situation in which the workpiece model is positioned at a grid point selected by the operator. Figure 27 is a graphical representation depicting a situation in which the position of the workpiece model is changed so that a contact state between a lower surface of the workpiece model and the upper surface of the worktable model is good. Figure 28 is a graphical representation depicting a situation in which a workpiece model is positioned at a grid point selected by the operator. Figure 29 is a graphical representation depicting a situation in which the position of the workpiece model is changed so that a contact state between a lower surface of the workpiece model and an upper surface of the workpiece model is good. Figure 30 is a graphical function block representation of a robot programming device according to a second embodiment.Figure 31 is a flowchart representing a program creation process according to the second embodiment. Figure 32 is a graphical representation depicting a situation in which an operator moves a cursor and defines a point on an upper surface of a worktable model. Figure 33 is a graphical representation depicting a situation in which the workpiece model is positioned at a holding point defined on a surface from which the workpiece model is picked up. Figure 34 is a graphical representation depicting a situation in which a three-dimensional grid is positioned relative to the holding point. Figure 35 is a graphical representation depicting a situation in which the direction of the positioned workpiece model is adjusted. Figure 36 is a graphical representation depicting a situation in which the holding point is changed.Figure 37 is a graphical representation that provides an example of a user interface for setting a parameter of the three-dimensional grid. Description of the embodiments Next, embodiments of the present disclosure are described with reference to the drawings. A similar component area or functional area is identified in the aforementioned drawings by the same reference numeral. For clarity, the scale in the drawings has been appropriately adjusted. An aspect shown in the drawing is an example of an implementation of the present invention and is therefore not limited to the aspect shown. The following describes a robot programming device according to two embodiments of the present disclosure. The robot programming device according to the two embodiments comprises: a model arrangement unit configured to arrange a robot system model in a virtual space, comprising a robot model, a hand model attached to the robot model, and a workpiece model; a surface definition unit configured to receive a user operation for defining a surface with respect to a predefined operation performed by the robot model on the workpiece model in the virtual space; a grid arrangement unit configured to arrange a three-dimensional grid in the virtual space with respect to the defined surface or a point on the defined surface; and a position setting unit configured to set a position of the robot model.the robot model grasps the workpiece model located at a grid point of the three-dimensional grid; and a training point generation unit configured to generate a training point, which forms a motion program for the specified job, based on the grid point where the workpiece model is located and the position of the robot model set at that grid point. According to such a configuration, when an operator defines a surface with respect to a job in a virtual space, a three-dimensional grid is displayed with respect to the surface or a point on the surface (for example, a three-dimensional grid is displayed on the surface), and a training point can be generated that forms a motion program which includes a movement to grasp a workpiece model located at a grid point in the three-dimensional grid. As described in detail below,Such a configuration can simplify the process of teaching a robot a motion program to perform work on a workpiece and make robot programming more efficient. First embodiment Fig. 1 is a graphical representation depicting an external configuration of a robot programming device 10 according to one embodiment. Fig. 2 is a graphical functional block representation of the robot programming device 10. The robot programming device 10 can be comprised of various information processing devices, for example, a personal computer, a laptop computer, or a tablet computer. The robot programming device 10 has a function for simulating the movement of a robot by arranging a robot system model, which includes a robot model, in a virtual space and for performing programming. As shown in Fig. 1, the robot programming device 10 includes a display unit 12, which shows various images related to programming, and an operator unit 13 for performing various operator inputs. The display unit 12 includes, for example, a liquid crystal display. The operator unit 13 includes, for example, an input device such as a keyboard, a mouse, and a touchpad. A three-dimensional model of the robot and the like are stored in the memory unit 14 (Fig. 2). The robot programming device 10 can be configured as a general-purpose computer, in which memory (such as ROM, RAM, and non-volatile memory), a display unit 12, an operator unit 13, a memory unit 14, a network interface, various input / output interfaces, and the like are connected to a processor 11. As shown in Fig. 2, the robot programming device 10 includes a unit 111 for creating a virtual space, a model arrangement unit 112, a surface definition unit 113, a grid arrangement unit 114, a grid spacing adjustment unit 115, a grid area adjustment unit 116, a grid point selection unit 117, a workpiece model orientation adjustment unit 118, an interference detection unit 119, a subsurface contact detection unit 120, a workpiece model position change unit 121, a position adjustment unit 122, a teach-in point generation unit 123, a simulation execution unit 124, and a gripper position adjustment unit 125. The functional blocks can be achieved by the processor 11, which executes software. The robot programming device 10 includes a memory unit 14. The memory unit 14 can, for example, be a storage device such as non-volatile memory or a hard disk drive (HDD). The memory unit 14 stores a three-dimensional model and arrangement information about each object that forms the robot system model, various types of setting information used for performing simulation and programming, and the like. The unit 111 for creating a virtual space generates the virtual space for arranging a three-dimensional model of various objects that form the robot system model in a memory area of ​​the robot programming device 10. A three-dimensional image of the robot system model arranged in the virtual space is displayed on the display unit 12. The model arrangement unit 112 has a function for arranging the three-dimensional model of various objects that form the robot system model, which includes a three-dimensional model of the robot, in the virtual space based on the arrangement information about various objects that form the robot system model. The area definition unit 113 has a function for defining an area with respect to a given task by a robot model. In particular, the area definition unit 113 can have a function for receiving a definition of an area on an object arranged in the virtual space or of a point on the area by an external input or a user operation. The lattice assembly unit 114 has a function for generating and arranging a lattice (hereinafter also referred to as a three-dimensional lattice) that extends three-dimensionally in virtual space. The lattice assembly unit 114 can have a function for automatically generating the three-dimensional lattice or it can have a function for generating the three-dimensional lattice based on information specified by an external input or a user operation. As described below, the three-dimensional lattice is used to improve operability in a situation where the operator teaches a pickup position, placement position, approach point, departure point, and the like, relative to a workpiece model, to the robot model. The grid spacing adjustment unit 115 has a function for setting the grid spacing of the three-dimensional grid generated by the grid arrangement unit 114. The grid spacing adjustment unit 115 may have a function for automatically setting a grid spacing or a function for receiving a grid spacing specification from an external input or a user operation. The grid area setting unit 116 has a function for setting a spatial area of ​​the three-dimensional grid. The grid area setting unit 116 can have a function for automatically setting a spatial area of ​​the three-dimensional grid based on predefined information, or it can have a function for accepting a specification of a spatial area of ​​the three-dimensional grid through an external input or a user operation. A parameter that defines a spatial area can include a position, a size, a shape, and / or a vertex position. For example, if the three-dimensional grid has the shape of a rectangular parallelepiped, a spatial area of ​​the three-dimensional grid can be specified by information that indicates a position and a size (sizes in a vertical, horizontal, and height direction) of the three-dimensional grid. The grid point selection unit 117 has a function for selecting a grid point in the three-dimensional grid and may have a function for receiving a selection of a grid point by an external input or a user operation. The workpiece model direction setting unit 118 has a function for setting a direction (position) of a workpiece model arranged in the virtual space and can also have a function for receiving a setting of a direction (position) of a workpiece model by an external input or a user operation. The interference detection unit 119 has a function for detecting interference between object models based on information representing the position and shape of various object models arranged in virtual space. For example, it can detect interference between workpiece models arranged in virtual space and interference between a workpiece model and a model of a peripheral device. The interference detection unit 119 can also have a function for displaying a warning or indicator so that the operator can identify an area where interference between object models has occurred when interference is detected, and a function for changing the position of an object model so that no interference occurs when interference is detected. The undersurface contact detection unit 120 has a function for determining the contact condition between the bottom surface of a workpiece model and a surface on which the workpiece model is placed. It detects, for example, a situation in which the bottom surface of a workpiece model partially protrudes from a top surface of a worktable model on which the workpiece model is placed. The undersurface contact detection unit 120 can also have a function for issuing a warning or displaying an indication so that the operator can recognize that the contact condition between the bottom surface of a workpiece model and the surface on which the workpiece model is placed is not good when it is determined that the contact condition between the bottom surface of the workpiece model and the surface on which the workpiece model is placed is not good. The workpiece model position change unit 121 has a function for changing the position of a workpiece model and can also have a function for automatically changing the arrangement position of a workpiece model based on information about the arrangement position and shape of various object models, for example, when the interference detection unit 119 detects an occurrence of interference between the object models or when the undersurface contact detection unit 120 determines that the contact condition between the bottom surface of the workpiece model and a surface on which the workpiece model is arranged is not good. The workpiece model position change unit 121 can also have a function for changing the position of a workpiece model based on a user operation. The position setting unit 122 has a function for setting a position of the robot model and may also have a function for automatically setting a position of the robot model at a selected grid point or a function for receiving a user operation to set a position of the robot model at the selected grid point. The teach-in point generation unit 123 has a function for generating a teach-in point, which forms a motion program of the robot, based on a position of the robot model, defined as a grid point in the three-dimensional grid, and a position of the robot model set for that position. The robot position defined as a grid point in the three-dimensional grid can include a pick-up position, a placement position, an approach point, a departure point, and the like with respect to a workpiece model. The simulation execution unit 124 has a function for executing a simulation of the robot system model. The simulation can include a simulation in which, in addition to causing a three-dimensional model of each device containing a robot model to perform a simulated movement on a display screen (virtual space), a numerical calculation of the position and orientation of a robot model and a model of each of the other devices is performed. Fig. 3 is a flowchart illustrating the processing (program creation processing) for generating a robot motion program on the robot programming device 10. The program creation processing is executed under the control of the processor 11. When the program creation processing is started by the operator performing a predefined operation, the model arrangement unit 112 first arranges a robot system model, which includes a robot model, a hand model attached to the robot model, and a workpiece model, in a virtual space created by the unit 111 to create a virtual space (step S11). Fig. 4 depicts a situation in which a robot system model 100M is arranged in a workspace as a virtual space. An image representing a state in the virtual space is displayed on a screen of the display unit 12, as shown in Fig. 4 and subsequent graphical representations. As an example, Fig. 4 shows a situation in which the robot system model 100M, comprising a robot model 30M and worktable models 91M and 92M, is arranged. A hand model 31M is mounted on an arm tip region of the robot model 30M. The following describes the present robot program creation process, assuming a task to transfer a workpiece model by the robot model 30M within the robot system model 100M, as shown in Fig. 4, from the worktable model 91M to the worktable model 92M.Figure 4 represents a robot coordinate system C1, which is defined in a base region of the robot model 30M. The direction of each of the coordinate axes (X, Y, and Z axes) of the robot coordinate system C1 is shown in a circle in the lower right of Figure 4. Information representing the position (including orientation) and shape of each object model in the virtual space can be represented based on the robot coordinate system C1. It should be noted that the configuration of the robot system model 100M shown in Fig. 4 is merely an example, and various robot system models can be configured according to a given work content. For example, different object models, such as a model of a peripheral device (including a worktable, a container, a conveyor, and the like), a machine tool model, and a sensor model, can be arranged within the robot system model. It should also be noted that the example shown here uses a model of a vertical articulated robot as robot model 30M; however, depending on the work content, a model of another type of robot, such as a horizontal articulated robot, a robot with parallel linkage, or a dual-arm robot, can be used. Next, the gripping position setting unit 125, as shown in Fig. 5, sets the gripping position as a position of the workpiece model WM, which is a work target, relative to the hand model 31M when the workpiece model WM is gripped by the hand model 31M (step S12). The gripping position represents the position and orientation of the workpiece model relative to the hand model 31M when the hand model 31M grips the workpiece model WM appropriately. Therefore, when the position of the workpiece model WM is set as the gripping position in the virtual space, a position and orientation of the hand model 31M (i.e., a position and orientation of the robot model 30M) can be determined. Next, the surface definition unit 113 receives a user operation to define a surface (a surface as the source of a transfer) from which the workpiece model WM is picked up, or a surface (a surface as the target of a transfer) on which the workpiece model WM is to be placed, in the virtual space (step S13). As shown in Fig. 6, the operator is enabled to define a point on the surface from which the workpiece model WM is picked up, or a point on the surface on which the workpiece model WM is to be placed, by operating a cursor R on the display screen via a pointing device of the control unit 13. Fig. 6 depicts a situation in which an upper surface 91a of the worktable model 91M is defined as the surface from which the workpiece model WM is picked up, and an upper surface 92a of the worktable model 92M is defined as the surface on which the workpiece model WM is to be placed. If the surface from which the workpiece model WM is picked up, or the surface on which the workpiece model WM is to be positioned, is defined, the lattice arrangement unit 114 next arranges a three-dimensional lattice relative to the point on the surface from which the workpiece model WM is picked up, or the point on the surface on which the workpiece model is to be positioned (step S14). Here, arranging the three-dimensional lattice relative to a specific point corresponds to arranging the three-dimensional lattice in a predefined positional relationship to the point (reference point). Alternatively, the lattice arrangement unit 114 can arrange the three-dimensional lattice relative to a defined surface. Here, arranging the three-dimensional lattice relative to a specific surface corresponds to arranging the three-dimensional lattice in a predefined positional relationship to the surface. Fig. 114 provides an example.Figure 7 represents a situation in which three-dimensional grids 51 and 52 are arranged on the upper surfaces of the worktable models 91M and 92M, respectively. The three-dimensional grids 51 and 52 are each formed from a plurality of cubes arranged at regular intervals and together have the shape of a rectangular parallelepiped. The three-dimensional grid 51 is arranged such that a grid point of the center (the geometric center) of a lower surface of the three-dimensional grid 51 coincides with a center 91c (geometric center) of the upper surface of the worktable model 91M.The size of the three-dimensional grid 51 can be configured such that a dimension in a horizontal direction (X and Y axis direction) of the three-dimensional grid 51 corresponds to a dimension in the horizontal direction (X and Y axis direction) of the upper surface of the worktable model 91M, and a height of the three-dimensional grid 51 can be set to a standard size that covers a range of motion in the vertical direction within which the robot model 30M performs work. Similarly, the three-dimensional grid 52 is arranged such that a grid point of the center point (geometric center) of a lower surface of the three-dimensional grid 52 coincides with a center point 92c (geometric center) of the upper surface of the worktable model 92M.Furthermore, the size of the three-dimensional grid 52 is designed such that a size in the horizontal direction (X and Y axis direction) of the three-dimensional grid 52 corresponds to a size in the horizontal direction (X and Y axis direction) of the upper surface of the worktable model 91M, and a height of the three-dimensional grid 52 is set to the same height as the height of the three-dimensional grid 51. Various parameters, including a spatial area (a size), a grid spacing and the like of the three-dimensional grid, can be automatically generated by the grid arrangement unit 114 according to predefined information such as a work content, or can be set by an external input or a user operation. When the robot programming device 10 automatically generates the three-dimensional grid, the grid area setting unit 116 can, for example, adjust a region of the three-dimensional grid so that an entire area, defined as the surface from which the workpiece model is picked up or as the surface on which the workpiece model is to be positioned, is covered by the lower surface of the three-dimensional grid. In this case, the height of the three-dimensional grid can be set to a standard height that covers a range of motion when the robot performs different types of work. When the robot programming device 10 automatically generates the three-dimensional grid, the grid spacing adjustment unit 115 can set a grid point spacing in the three-dimensional grid, for example, according to the overall size of the three-dimensional grid or a work area. When the grid spacing adjustment unit 115 sets a grid point spacing according to the overall size of the three-dimensional grid, it can, for example, set a grid point spacing in relation to the overall size of the three-dimensional grid.When the grid spacing adjustment unit 115 sets a grid point spacing according to a work item, for example, in a case where the work item of the robot model 30M is a task requiring high accuracy, such as "inserting a workpiece into a workpiece machining position in a machine tool model," the grid point spacing of the three-dimensional grid can be set to a small distance with higher accuracy. In this way, a grid point spacing can be small if a work item specifies the execution of a precise task. In this way, the grid point spacing of the three-dimensional grid can have a value corresponding to a work content. As an example, however, in a case where the work involves transferring a workpiece by the robot model 30M, a possible scenario is that the grid point spacing k1 of the three-dimensional grid is set to 100 mm if squares, as shown in Fig. 7, are assigned to a floor area in the workspace and a distance d between the squares is set to 1,000 mm. If the robot programming device 10 allows the user to define a spatial area and a grid point spacing of the three-dimensional grid, the grid arrangement unit 114 can provide a user interface that accepts a user operation for defining an area and a grid point spacing of the three-dimensional grid on the display screen of the display unit 12. Such a user interface can be provided by the interaction of the grid arrangement unit 114, the grid area setting unit 116, and the grid spacing setting unit 115. Fig. 37 shows an example of a user interface 200 that has such a function. The user interface 200 shown in Fig. 37 includes input columns 201 and 202 for defining a spatial area (herein a quantity) and a grid point spacing of the three-dimensional grid, respectively.The operator can enter a dimension in the X, Y, and Z axis directions of the three-dimensional grid (X, Y, and Z axis directions in the robot coordinate system) in input column 201 and a grid point spacing value in input column 202. By setting values ​​in input columns 201 and 202, the operator can adjust the area and grid point spacing of the three-dimensional grid automatically generated by the grid arrangement unit 114, or generate the three-dimensional grid with the specified area and grid point spacing. It should be noted that the user interface may also include an input column for specifying a position as a reference for arranging the three-dimensional grid (for example, which part of an area defined by the operator is set as the reference for arranging the three-dimensional grid). Returning to the flowchart in Fig. 3, the grid point selection unit 117 next accepts a user operation to define at least one of the grid points of the three-dimensional grid 51 or 52 on the surface from which the workpiece model is picked up or the surface on which the workpiece model is to be positioned (step S15). Fig. 8 depicts a situation in which the operator moves the cursor R and defines a grid point G1 on the surface from which the workpiece model is picked up. It should be noted that on the left side of Fig. 8, a state is shown in which the robot model 30M is viewed from a top view, and on the right side of Fig. 8, a state is shown in which the robot model 30M is viewed from the front. The grid point G1 selected on the surface from which the workpiece model is picked up is set as the position (gripping position) of the workpiece model to be picked up.A grid point selected on the surface where the workpiece model is to be placed is set as the position (gripping position) at which the workpiece model must be positioned. The model arrangement unit 112 positions the workpiece model WM at the position set in step S15 (gripping position) where the workpiece model must be picked up (step S16). Fig. 9 shows a situation in which the workpiece model WM is positioned at the grid point G1 selected in step S15. It should be noted that the left side of Fig. 9 shows a top view of the robot model 30M, while the right side shows a front view of the robot model 30M. Here, the workpiece model orientation setting unit 118 can receive a user operation to change the direction (position) of the workpiece model arranged in step S15. As shown on the right side of Fig. 10, the workpiece model orientation setting unit 118 can be configured to receive a user operation to rotate the workpiece model WM about an axis line A1 that is perpendicular to the surface from which the workpiece model is picked up and passes through the gripping position (lattice point G1) of the workpiece model WM. This function allows the operator to position the workpiece model WM in a desired direction (position). It should be noted that on the left side of Fig. 10, a state is shown in which a situation in which the direction of the workpiece model WM is adjusted is viewed from a top view of the robot model 30M, and on the right side of Fig.Figure 9 shows a state in which a situation in which the direction of the workpiece model WM is adjusted is viewed in a front view of the robot model 30M. Next, the position setting unit 122 sets the position of the robot model 30M such that the robot model 30M (hand model 31M) grips the workpiece model WM at the position (grid point G1) of the workpiece model WM set in step S16 (step S17). Here, the position of the robot model 30M is set using the gripping position set in step S12, and the position of the workpiece model relative to the hand model is determined. Fig. 11 depicts a situation in which the position of the robot model 30M (of the hand model 31M) is set so that the hand model 31M grips the workpiece model WM appropriately through the processing in step S17. It should be noted that on the left side of Fig. 11, a state is shown in which the situation in which the position of the robot model 30M is set is viewed from a top view of the robot model 30M, and on the right side of Fig. 11, a state in which the situation in which the position of the robot model 30M is set is shown from a top view of the robot model 30M.11 a state is represented in which the situation in which the position of the robot model 30M is set is viewed in a front view of the robot model 30M. With respect to the position set in step S16, at which the workpiece model is positioned, the position setting unit 122 similarly sets a position of the robot model 30M when the robot model 30M (hand model 31M) positions the workpiece model WM. In this case as well, the gripping position set in step S12 is used, which determines the position of the workpiece model relative to the hand model. Based on the position and orientation of the robot model when the robot model 30M picks up the workpiece model, which are set as described above, the training point generation unit 123 can generate a training point for picking up the workpiece model by the hand model, which forms a motion program (step S18). Furthermore, based on the position and orientation of the robot model when the robot model 30M positions the workpiece model, which are set as described above, the training point generation unit 123 can generate a training point for positioning the workpiece model by the hand model, which forms a motion program (step S18). The training point is information that defines the position and orientation of a predefined area (for example, of the hand model 31M) of the robot model 30M. Fig.Figure 12 depicts a situation in which a teach-in point P1 for picking up the workpiece model WM is set by the hand model 31M. It should be noted that on the left side of Figure 12, a state is shown in which the situation in which the teach-in point P1 for picking up the workpiece model WM is set by the hand model 31M is viewed from a top view of the robot model 30M, and on the right side of Figure 12, a state is shown in which the situation in which the teach-in point P1 for picking up the workpiece model WM is set by the hand model 31M is viewed from a front view of the robot model 30M. The grid point selection unit 117 can accept a further operation for selecting a grid point, which must be set as a teach-in point that forms a motion program. For example, the grid point selection unit 117 accepts an operation for selecting an approach point for approaching the workpiece model, which is positioned on the surface from which the workpiece model is picked up, and a departure point to which the workpiece model is moved away from the surface from which it is picked up, as a position at a grid point. For this purpose, the grid point selection unit 117, as shown in Fig. 13, accepts an operation for selecting a grid point in the three-dimensional grid 51 that is not located on the surface from which the workpiece model is picked up (step S19).Figure 13 represents a situation in which the operator moves the cursor R and selects a grid point G2 or a grid point G3 as the approach point and the departure point, respectively. For example, the grid points G2 and G3, corresponding to the approach point and the departure point, are selected from grid points in an upper region in a vertical direction from grid point G1 (teaching point P1), which corresponds to the pickup position of the workpiece model. To set a position of the robot model 30M at grid points G2 and G3, the position setting unit 122 can determine a position of the robot model 30M (the hand model 31M) assuming that the workpiece model is being picked up at grid points G2 and G3. In this way, as shown in Fig. 14, the training point generation unit 123 can generate a training point P2 corresponding to the approach point and a training point P3 corresponding to the departure point (step S20). In other words, the training point generation unit 123 can generate a motion program for performing a picking motion of the workpiece model while simultaneously moving along a path L1 in the sequence of training points P2, P1, and P3. It should be noted that Fig. 14 shows an example in which training points P2 and P3 are aligned vertically with respect to training point P1; however, the orientation of training points P2 and P3 may not be vertical with respect to training point P1. Furthermore, an intermediate training point can be added between training point P1 (gripping position) and training point P3 (departure point). Furthermore, the grid point selection unit 117, in relation to a movement for positioning the workpiece model, accepts an operation for selecting an approach point for approaching the surface on which the workpiece model is to be positioned and a departure point located away from the workpiece model positioned on the surface, as grid points in the three-dimensional grid 52. For this purpose, in step S19, the grid point selection unit 117 accepts an operation for selecting a grid point in the three-dimensional grid 52 that is not located on the surface on which the workpiece model is positioned. In this way, as shown in Fig. 15, the training point generation unit 123 can generate a training point P4 corresponding to an approach point and a training point P6 corresponding to a departure point in the movement for positioning the workpiece model (step S20).It should be noted that a learning point P5 is the learning point for arranging the workpiece model by the hand model, which is created in step S18. In this way, the teaching point generation unit 123 can generate a motion program for performing a recording and arrangement of the workpiece model while simultaneously moving on a path L2 in the sequence of teaching points P2, P1, P3, P4, P5 and P6. As described above, during program creation processing according to the present embodiment, an operator can, by a simple process of setting a grid point in the robot model using a pointing device such as a mouse, teach a position for picking up a workpiece model, a position for placing the workpiece model, an approach point, a departure point and the like, and generate a motion program.Since a three-dimensional grid is displayed in a workspace, the operator can easily and reliably position a workpiece model and a robot model at a desired position using a grid point or a line connecting grid points as a guide. Furthermore, the operator can adjust their positions while recognizing the position of the workpiece model, the position of the robot model, or the positional relationship between the workpiece model or the robot model and another object (such as a workpiece and a worktable). Additionally, various parameters (such as a spatial area, grid point spacing, and a reference position) that define the three-dimensional grid can also be set automatically or manually by the operator.Therefore, the operator can easily and efficiently create a motion program according to a work content. By repeatedly executing the learning process (steps S15 to S19) for picking up a workpiece model from a predefined position and for arranging the workpiece model at a predefined position in the program creation process described above, a motion program can also be generated for picking up the plurality of workpiece models arranged on a surface from which the workpiece model is picked up, and for arranging each of the plurality of workpiece models on a surface (surface of a transfer target) on which the workpiece model is to be arranged. Fig. 16 shows a situation in which such a learning process generates a motion program for arranging each of the plurality of workpiece models WM, which are arranged on the upper surface of the worktable model 91M, on the upper surface of a worktable model 92M. Next, the functions of the interference detection unit 119 are described with reference to Figures 17, 18, 19, 20, 21 to 22. As described above, a plurality of workpiece models to be picked up can also be arranged on a surface from which the workpiece model is picked up. If a plurality of grid points are selected as positions of workpiece models on a surface from which the workpiece model is picked up, the interference detection unit 119 can operate in such a way that it detects interference between the workpiece models or between the workpiece model and another object and changes the position of the workpiece model so that the interference does not occur. As shown in Fig. 17, a situation is assumed in which the operator uses the function of the grid point selection unit 117 to select grid points G11 and G12 as positions of workpiece models on the surface (the upper surface of the worktable model 91M) from which the workpiece model is picked up. It should be noted that on the left side of Fig. 17, a state is shown in which the situation in which grid points G11 and G12 are selected is viewed from a top view of the robot model 30M, and on the right side of Fig. 17, a state is shown in which the situation in which grid points G11 and G12 are selected is viewed from a front view of the robot model 30M. In this case, the model arrangement unit 112, as shown in Fig. 18, positions workpiece models W2M and W3M at grid points G1 and G2, respectively, on the surface (the upper surface of the worktable model 91M) from which the workpiece model is picked up. It should be noted that the left side of Fig. 18 shows a top view of the robot model 30M showing the situation in which the workpiece models W2M and W3M are positioned at grid points G11 and G12, and the right side of Fig. 18 shows a front view of the robot model 30M showing the same situation in which the workpiece models W2M and W3M are positioned at grid points G11 and G12. As shown in Fig. 18, the workpiece models W2M and W3M are in a state where they partially overlap. The interference detection unit 119 can detect interference between the workpiece models W2M and W3M based on information about their position and shape. If the interference detection unit 119 detects interference between the workpiece models, the workpiece model position change unit 121 can change the position of the workpiece model at the grid point on the upper surface of the worktable model 91M so that the interference does not occur. Fig. 19 shows a situation in which the position of the workpiece model W3M is changed to a grid point G13 by the workpiece model position change unit 121. In this way, the interference between the workpiece models W2M and W3M is eliminated. It should be noted that on the left side of Fig. 19, a state is shown in which the situation in which the position of the workpiece model W3M is changed to grid point G13 is viewed from a top view of the robot model 30M, and on the right side of Fig.Figure 19 shows a state in which the situation in which the position of the workpiece model W3M is changed to the grid point G13 is viewed in a front view of the robot model 30M. Fig. 20 is a graphical representation illustrating an example in which a container model 93M is arranged in virtual space as a model of a peripheral device, and a bottom surface of the container model 93M is defined by a user operation as the surface from which the workpiece model is received or as the surface on which the workpiece model is to be arranged. In this case, the grid arrangement unit 114 arranges the three-dimensional grid 53 with respect to a point on the bottom surface of the container model 93M. In the example in Fig. 20, the three-dimensional grid 53 has a size defined such that a grid point of the center point of the bottom surface of the three-dimensional grid 53 coincides with the center point of the bottom surface of the container model 93M, and the three-dimensional grid 53 extends over the entire accommodation space of the container model 93M. The container model 93M is used to house a workpiece model that needs to be picked up or to place a workpiece model that has been picked up from a specific location. During the program creation process described above, the operator performs an operation to select a grid point located on the bottom surface of the container model 93M as the position for picking up or as the position for placing a workpiece model. Fig. 21 shows, as an example, a situation in which the container model 93M is used as a container for housing a workpiece model that needs to be picked up, and the majority of workpiece models WM are positioned at user-defined positions on the bottom surface of the container model 93M. It should be noted that on the left side in Fig.Fig. 21 shows a state in which the situation in which the workpiece models are placed on the bottom surface of the container model 93M is viewed in a top view of the robot model 30M, and on the right side of Fig. 21 shows a state in which the situation in which the workpiece models are placed on the bottom surface of the container model 93M is viewed from an oblique angle above the robot model 30M. As shown on the left side of Fig. 21, the workpiece model WM, which is placed at a grid point G14 defined by the operator, partially projects outwards from the workpiece models Wm on a wall surface of the container model 93M. Based on information specifying the position and shape of each of the object models (here, the workpiece model WM and the container model 93M), the interference detection unit 119 can detect interference between the workpiece model WM and the container model 93M. If the interference detection unit 119 detects interference between the workpiece model WM and the container model 93M, the workpiece model position change unit 121 can change the position of the workpiece model WM so that it no longer interferes with the container model 93M. For example, the workpiece model position change unit 121 moves the workpiece model WM towards the inside of the container model 93M so that it no longer interferes with the wall surface of the container model 93M. The workpiece model position change unit 121 also ensures that the moved workpiece model does not come into contact with the other workpiece model. Figure 22 illustrates a situation in which the position of the workpiece model WM, where interference with the container model 93M occurs, is changed to a grid point G15 by such a function of the workpiece model position change unit 121.At the position of grid point G15, the workpiece model WM is arranged in a suitable manner without interfering with the container model 93M. It should be noted that on the left side of Fig. 22, a state is shown in which the situation in which the position of the workpiece model WM is changed to grid point 15 is viewed from a top view of the robot model 30M, and on the right side of Fig. 21, a state is shown in which the situation in which the position of the workpiece model WM is changed to grid point 15 is viewed from an oblique angle above the robot model 30M. The interference detection unit 119 can have a function to issue a warning or display an indication so that the operator can recognize the occurrence of interference when interference is detected between the workpiece model WM and the container model 93M. For example, the interference detection unit 119 can perform processing to emit an alarm tone, display a warning message on the display screen, highlight a location where the interference occurs, and the like when interference is detected. In this case, the operator can recognize that interference is occurring between the workpiece model WM and the container model 93M (i.e., that grid point G14 is not a suitable position for the workpiece model).Furthermore, the operator can perform a process to change the position of the workpiece model via the functions of the grid point selection unit 117 and the workpiece model position change unit 121 in such a way that interference does not occur. The description of the program creation process described above includes an example in which the upper surface of the worktable model 91M or 92M is defined as the surface from which the workpiece model is picked up or as the surface on which the workpiece model is to be positioned. The other example, with respect to the surface from which the workpiece model is picked up or the surface on which the workpiece model is to be positioned, is described below with reference to Figures 23, 24 to 25. The situation is assumed in which the robot model 30M and the worktable models 91M and 92M are arranged in the virtual space, as shown in Fig. 5, and the majority of workpiece models are already aligned and arranged on the worktable models 91M and 92M, as shown in Figs. 23 and 24. In such a situation, the operator can, as indicated by thick arrows in Fig. 23, define an upper surface of the workpiece model WM, which is arranged on the upper surface of the worktable model 91M, as the surface from which the workpiece model is picked up, and can furthermore define an upper surface of the workpiece model WM, which is arranged on the upper surface of the worktable model 92M, as the surface on which the workpiece model is to be placed. In this case, the grid arrangement unit 114, as shown in Fig. 23, arranges a three-dimensional grid 54 on a plane that includes the defined upper surface of the workpiece model WM. The position of the three-dimensional grid 54 can be determined at a predetermined position relative to the center point of the defined upper surface of the workpiece model WM. For example, the three-dimensional grid 54 can be arranged such that one of the grid points of a lower surface of the three-dimensional grid 54 coincides with the center point of the defined upper surface of the workpiece model WM.The size of the three-dimensional grid 54 in the horizontal direction can be determined such that it covers an area of ​​the upper surface of the worktable model 91M on which the specified workpiece model WM is placed, or an area of ​​a group of workpiece models located within a specified distance of the specified workpiece model WM. The height and grid point spacing of the three-dimensional grid 54 can be determined from a similar perspective as in the case of the three-dimensional grid 51 described above. Furthermore, the spatial area and grid point spacing of a three-dimensional grid 55 can be determined by a similar procedure to that used for the three-dimensional grid 54. The operator can select a grid point on the lower surface of the three-dimensional grid 54, corresponding to the upper surface of the workpiece model WM, as the position of the workpiece model to be picked up. Fig. 24 depicts a situation in which the operator selects a grid point G16 on the lower surface of the three-dimensional grid 54 as the position of the workpiece model to be picked up. It should be noted that on the left side of Fig. 24, a state is shown in which the situation in which grid point G16 is selected is viewed from a top view of the robot model 30M, and on the right side of Fig. 24, a state is shown in which the situation in which grid point G16 is selected is viewed from a front view of the robot model 30M. The model arrangement unit 112 positions the workpiece model at the grid point selected by the operator. Fig. 25 depicts a situation in which the workpiece model W5M is positioned at grid point G16 by the model arrangement unit 112. It should be noted that on the left side of Fig. 25, a state is shown in which the situation in which the workpiece model W5M is positioned at grid point G16 is viewed from a top view of the robot model 30M, and on the right side of Fig. 25, a state is shown in which the situation in which the workpiece model W5M is positioned at grid point G16 is viewed from a front view of the robot model 30M. In this way, the operator can also define an upper surface of a workpiece model, which is already stacked on a worktable model, as the surface from which the workpiece model is picked up or as the surface on which the workpiece model is to be positioned. Furthermore, the operator can also perform an operation on the three-dimensional grid 55 to select a grid point for positioning a workpiece model. Therefore, as described above with regard to the program creation process (Fig. 3), the operator can also teach a motion program for transferring the workpiece model W5M using the three-dimensional grids 54 and 55 into the robot model. Next, the functions of the undersurface contact detection unit 120 are described with reference to Figures 26, 27, 28 to 29. The undersurface contact detection unit 120 has a function for determining whether a lower surface of a workpiece model is in suitable contact with a surface defined as the surface from which the workpiece model is picked up or as the surface on which the workpiece model is to be positioned. As shown in Figure 26, a situation is assumed in which the operator selects a grid point G20 on the lower surface of the three-dimensional grid 51 (the upper surface of the worktable model 91M) as the position of a workpiece model to be picked up and positions the workpiece model WM at the grid point G20. It should be noted that on the left side in Figure 26, the operator selects a grid point G20 on the lower surface of the three-dimensional grid 51 (the upper surface of the worktable model 91M) as the position of a workpiece model to be picked up and positions the workpiece model WM at the grid point G20.Fig. 26 shows a state in which the situation in which the workpiece model WM is arranged at the grid point G20 is viewed in a top view of the robot model 30M, and on the right side of Fig. 26 shows a state in which the situation in which the workpiece model WM is arranged at the grid point G20 is viewed in a front view of the robot model 30M. As shown on the left side of Fig. 26, the workpiece model WM is in a state where it partially protrudes from the upper surface of the worktable model 91M. Based on information representing the position and shape of the workpiece model WM and the worktable model 91M, the under-surface contact detection unit 120 can detect whether the lower surface of the workpiece model WM is appropriately in contact with a surface from which the workpiece model is received or with a surface on which the workpiece model is to be placed. The workpiece model position change unit 121 can have a function for automatically correcting the position of a workpiece model when the undersurface contact detection unit 120 detects that the contact condition between the workpiece model and a specified surface is not good. Fig. 27 shows a situation in which the position of the workpiece model WM is changed by the workpiece model position change unit 121 to a grid point G21 such that the contact condition between the workpiece model WM and the upper surface of the worktable model 91M is good. In this case, the workpiece model position change unit 121 moves the workpiece model WM inward from an outer edge on the upper surface of the worktable model 91M so that the entire underside of the workpiece model WM comes into contact with the upper surface of the worktable model 91M. It should be noted that on the left side in Fig.27 shows a state in which the situation in which the position of the workpiece model WM is changed to the grid point G21 is viewed in a top view of the robot model 30M, and on the right side of Fig. 27 shows a state in which the situation in which the position of the workpiece model WM is changed to the grid point G21 is viewed in a front view of the robot model 30M. Next, as in the example described above with reference to Figs. 23 and 24, a situation is assumed in which the operator defines upper surfaces of workpiece models, already aligned and arranged on the worktable model 91M, as surfaces from which the workpiece model is picked up, and the three-dimensional grid 54 is generated. As shown in Fig. 28, a situation is assumed in which the operator selects a grid point G25 as the position of the workpiece model W6M and positions the workpiece model W6M at the grid point G25. It should be noted that on the left side of Fig. 28, a state is shown in which the situation in which the workpiece model W6M is positioned at the grid point G25 is viewed from a top view of the robot model 30M, and on the right side of Fig.Figure 28 shows a state in which the situation in which the workpiece model W6M is positioned at the grid point G25 is viewed in a front view of the robot model 30M. As shown on the left side of Fig. 28, the lower surface of workpiece model W6M is displaced below the lower surface of workpiece model WM relative to the upper surface of workpiece model W6M, and a contact state between the lower surface of workpiece model W6M and the upper surface of workpiece model WM is not a good condition. The subsurface contact detection unit 120 can detect such a condition. The workpiece model position change unit 121 can have a function for automatically adjusting the position of a target workpiece model when the undersurface contact detection unit 120 detects that the contact condition between the target workpiece model and a specified surface (a top surface of the workpiece model WM) is not good. Fig. 29 shows a situation in which the position of the workpiece model W6M is changed by the workpiece model position change unit 121 to a grid point G26 such that the contact condition between the bottom surface of the workpiece model W6M and the top surface of the workpiece model WM is good. In this case, the workpiece model position change unit 121 moves the workpiece model W6M so that the entire bottom surface of the workpiece model W6M comes into contact with the top surface of the workpiece model WM. It should be noted that on the left side in Fig.29 shows a state in which the situation in which the position of the workpiece model W6M is changed to the grid point G26 is viewed in a top view of the robot model 30M, and on the right side of Fig. 29 shows a state in which the situation in which the position of the workpiece model W6M is changed to the grid point G26 is viewed in a front view of the robot model 30M. If it is detected that the contact condition between the bottom surface of a target workpiece model and a specified surface is not good, the subsurface contact detection unit 120 can issue a warning or display an indication that the contact condition is not good. In this case, the subsurface contact detection unit 120 can, for example, perform processing to emit an alarm tone, display a warning message on the display screen, highlight an area of ​​the bottom surface of the target workpiece model that is not in contact with the specified surface, and so on.In this way, the operator can detect the fact that the contact condition between the lower surface of the target workpiece model and the specified surface is not good, and the area of ​​the lower surface that does not come into contact with the specified surface, and change the position of the target workpiece model via the function of the grid point selection unit 117. As described above, according to the first embodiment, a three-dimensional grid is displayed on a surface which is defined by an operator as a surface with respect to work by a robot model in a virtual space, and the operator can easily and efficiently teach a pickup position, a placement position, an approach point, a departure point and the like with respect to a workpiece model by means of a method for selecting a grid point in the three-dimensional grid. Therefore, according to the first embodiment, the process of teaching a robot a motion program can be simplified for an operator, and robot programming can be carried out more efficiently. Second embodiment A robot programming device 10A according to a second embodiment is described. Since the robot programming device 10A according to the second embodiment has an external configuration that corresponds to that of the robot programming device 10 shown in Fig. 1 according to the first embodiment, the external configuration is described with reference to Fig. 1. Fig. 30 shows a graphical functional block representation of the robot programming device 10A according to the second embodiment. For the sake of clarity, in Fig. 30 a functional block that has the same or a similar function as that of the functional block of the robot programming device 10 according to the first embodiment is provided with the same reference numeral. As in Fig.As shown in Figure 30, the robot programming device 10A includes a unit 111 for creating a virtual space, a model arrangement unit 112, a surface definition unit 113A, a grid arrangement unit 114, a grid spacing adjustment unit 115, a grid area adjustment unit 116, a grid point selection unit 117, a workpiece model orientation adjustment unit 118, an interference detection unit 119, a subsurface contact detection unit 120, a workpiece model position change unit 121, a position adjustment unit 122, a teach-in point generation unit 123, a simulation execution unit 124, a gripper position adjustment unit 125, and a holdpoint change unit 126. In the second embodiment, the surface definition unit 113A has a function that allows an operator to select a point to define a holding point on a surface in relation to a work in a virtual space for holding a workpiece model. Fig. 31 is a flowchart illustrating program creation processing according to the second embodiment. The program creation processing is started by a predefined action performed by the operator and is executed under the control of processor 11. When the program creation process in Fig. 31 starts, the model arrangement unit 112 first arranges a robot system model 100M, which includes a robot model, a hand model, and a workpiece model, in a virtual space created by the unit 111 (step S31). In this way, the robot model 30M and the worktable models 91M and 92M are arranged in the virtual space, as shown in Fig. 4. A case is then assumed in which a training operation is performed with respect to a transfer operation to pick up a workpiece model from the worktable model 91M and to arrange the workpiece model on the worktable model 92M in the robot system model 100M, as shown in Fig. 4. The robot system model 100M, thus arranged in the virtual space, is displayed on a display screen of the display unit 12. Next, the gripping position setting unit 125 sets a gripping position of the workpiece model WM relative to the hand model 31M (a position and orientation of the workpiece model WM relative to the hand model 31M) in a state where the workpiece model WM can be gripped by the hand model 31M in a suitable manner, as shown in Fig. 5 (step S32). This "gripping position" is used to calculate a position and orientation of the robot model 30M when the workpiece model WM, placed in the virtual space, is gripped by the robot model 30M (hand model 31M). Next, the surface definition unit 113A receives a user operation to define a point on a surface from which the workpiece model is picked up, or a point on a surface on which the workpiece model WM is to be positioned, in the virtual space (step S33). Fig. 32 depicts a situation in which the operator moves the cursor R by operating a pointing device of the control unit 13 and defines a point on an upper surface of the worktable model 91M and a point on an upper surface of the worktable model 92M, respectively. In this case, the surface definition unit 113A defines as holding points H1 and H2, respectively, which represent a position for holding the workpiece model, the point defined on the surface (the upper surface of the worktable model 91M) from which the workpiece model is picked up, and the point defined on the surface (the upper surface of the worktable model 92M) on which the workpiece model is to be positioned (step S34). As shown in Fig. 33, the workpiece model WM is positioned by the model arrangement unit 112 at the holding point H1, which is defined on the surface (the upper surface of the worktable model 91M) from which the workpiece model is picked up. It should be noted that on the left side of Fig. 33, a state is shown in which the situation in which the workpiece model WM is positioned at the holding point H1 is viewed from a top view of the robot model 30M, and on the right side of Fig. 33, a state is shown in which the situation in which the workpiece model WM is positioned at the holding point H1 is viewed from a front view of the robot model 30M. Next, the grid arrangement unit 114 arranges a three-dimensional grid relative to the holding point (step S35). Fig. 34 shows a situation in which the grid arrangement unit 114 arranges a three-dimensional grid 56 relative to holding point H1 and a three-dimensional grid 57 relative to holding point H2. As an example, the three-dimensional grid 56 is configured such that one of the grid points on a lower surface of the three-dimensional grid 56 coincides with holding point H1, and the surface (the upper surface of the worktable model 91M) from which the workpiece model is received is completely covered by the three-dimensional grid 56.Similarly, the three-dimensional grid 57 is configured such that one of its grid points on a lower surface coincides with the holding point H2, and the surface (the upper surface of the worktable model 92M) on which the workpiece model is positioned is completely covered by the three-dimensional grid 57. The height of the three-dimensional grids 56 and 57 can be set to a standard value so that a work area is covered by the three-dimensional grid by the robot model 30M. The workpiece model orientation setting unit 118 has a function for adjusting the direction (position) of a workpiece model arranged at a holding point. As shown in Fig. 35, the workpiece model orientation setting unit 118 can, for example, be configured to accept a user operation to rotate the workpiece model WM arranged at holding point H1 about the axis line A2, which is perpendicular to the surface (the upper surface of the worktable model 91M) from which the workpiece model is picked up and which passes through holding point H1. It should be noted that on the left side of Fig. 35 a state is shown in which the situation in which the direction of the workpiece model WM is adjusted is viewed from a top view of the robot model 30M, and on the right side of Fig.Figure 35 shows a state in which the situation in which the direction of the workpiece model WM is adjusted is viewed in a front view of the robot model 30M. The stoppoint change unit 126 can be configured to accept a user operation to change the position of a stoppoint defined as described above. Fig. 36 depicts a situation in which the operator changes the position of stoppoint H1 to a stoppoint H3 using such a function via the stoppoint change unit 126. In this way, the arrangement position of the workpiece model WM is changed to the position of stoppoint H3. It should be noted that on the left side of Fig. 36, a state is shown in which the situation in which the position of the workpiece model WM is changed to stoppoint H3 is viewed from a top view of the robot model 30M, and on the right side of Fig. 36, a state is shown in which the situation in which the position of the workpiece model WM is changed to stoppoint H3 is viewed from a front view of the robot model 30M. Next, the position setting unit 122 sets the position of robot model 30M so that the workpiece model WM is gripped by hand model 31M at the holding point of workpiece model WM (step S36). Here, the position of robot model 30M (of hand model 31M) is set using the holding point as the gripping position so that hand model 31M grips the workpiece model. For each of the holding points H1 and H2, the position setting unit 122 sets the position of robot model 30M so that robot model 30M (hand model 31M) grips workpiece model WM. Based on the position and orientation of the robot model when the robot model 30M picks up the workpiece model, as configured, the teach-in point generation unit 123 can generate a teach-in point for a pick-up position relative to the workpiece model (step S37). Furthermore, based on the position and orientation of the robot model when the robot model 30M positions the workpiece model, as configured as described above, the teach-in point generation unit 123 can generate a teach-in point for a placement position relative to the workpiece model (step S37). Next, in step S38, the grid point selection unit 117, similar to the case described in relation to step S19 in the first embodiment, receives a selection operation with respect to the position of holdpoint H1, a grid point in the three-dimensional grid 56 that is not located on the surface from which the workpiece model is picked up. Furthermore, the grid point selection unit 117 receives a selection operation with respect to the position of holdpoint H2, a grid point in the three-dimensional grid 57 that is not located on the surface on which the workpiece model is to be positioned. In this way, as described with reference to Figures 13 to 14 in the first embodiment, a training point corresponding to an approach point for approaching the workpiece model and a training point corresponding to a departure point away from the workpiece model can be generated (step S39). As a result, by the program creation processing, as described with reference to Fig. 15 in the first embodiment, training points can be generated which create a motion program for performing a series of movements to pick up a workpiece model from a surface from which the workpiece model is picked up and to arrange the workpiece model on a surface on which the workpiece model is to be arranged. The functions for detecting interference between workpiece models arranged at grid points or between a workpiece model and a model of a peripheral device, and for changing the position of the workpiece model so that the interference is avoided, by the interference detection unit 119 and the workpiece model position change unit 121, as described in the first embodiment with reference to Figs. 17, 18, 19, 20, 21 to 22, can also be provided in the second embodiment as functions for detecting interference between workpiece models arranged at a plurality of holding points or interference between a workpiece model arranged at a holding point and a model of a peripheral device, and for automatically changing the position of the workpiece model so that the interference is avoided. The function for determining a contact state between a lower surface of a workpiece model arranged at a grid point and a surface from which the workpiece model is received, or a surface on which the workpiece model is to be arranged, as well as the function for changing a position of the workpiece model so that the contact state is good when it is determined that the contact state is not good, by which in the first embodiment with reference to Fig. 26, Fig. 27, Fig. 28 to Fig.In the second embodiment, the subsurface contact detection unit 120 and the workpiece model position change unit 121 described in Section 29 can also be provided as a function for determining a contact state between a lower surface of a workpiece model arranged at a holding point and a surface from which the workpiece model is received or a surface on which the workpiece model is to be arranged, as well as a function for changing a position of the workpiece model so that the contact state is good if it is determined that the contact state is not good. As described above, according to the second embodiment, a three-dimensional grid is displayed relative to a point (holding point) on a surface defined by an operator as the surface in relation to work performed by a robot model in a virtual space, and a workpiece model is positioned at the holding point. The holding point coincides with one of the grid points of the three-dimensional grid on the defined surface. In this way, the operator can easily and efficiently teach the robot a pickup position, placement position, approach point, departure point, and the like with respect to the workpiece model by selecting a grid point in the three-dimensional grid. The second embodiment has the advantage that an operator can more freely set a holding point in a virtual space, at which a workpiece model should be positioned. A three-dimensional grid is displayed relative to the holding point, and the operator can then use this grid to easily define various training points relative to the holding point. Therefore, according to the second embodiment, the process of teaching a robot a motion program can be simplified for an operator, and robot programming can be carried out more efficiently. In each of the embodiments described above, the three-dimensional grid described as an example is a grid having the shape of a rectangular parallelepiped formed from a plurality of cubes arranged at regular intervals; however, the shape of the three-dimensional grid is not limited to this. The shape of the three-dimensional grid can be various three-dimensional shapes, such as a sphere, a hemisphere, a dome, a column, and a polyhedron. In the example of the three-dimensional grid described above, a grid spacing of the three-dimensional grid is defined; however, this is not the only possible example. The grid point spacing of the three-dimensional grid may not be uniform and may differ in some areas. For example, a possible scenario is that a grid point spacing near the center of the three-dimensional grid is smaller than a grid point spacing in a border region of the three-dimensional grid (the grid points near the center are closer together). There are various display styles for showing a three-dimensional grid on a display screen, and such display styles may include: simultaneously displaying a grid point and the vertical and horizontal lines connecting the grid points; displaying only grid points; and displaying a grid point at a normal level of emphasis and the vertical and horizontal lines connecting the grid points in a light color. The grid arrangement unit 114 may be configured to allow the operator to select such a display style of the three-dimensional grid. The grid arrangement unit 114 may further be configured to accept a user operation for setting a size, color, density, and the like for a grid point and a thickness, color, density, and the like for a line connecting grid points.Such a configuration can make it easier for the operator to recognize a spatial distribution of grid points in the three-dimensional grid. When the grid arrangement unit 114 arranges a three-dimensional grid relative to an area specified by the operator, a situation may arise where the size of the three-dimensional grid is larger than the area described above. In such a case, the grid arrangement unit 114 can change the display style of an area of ​​the three-dimensional grid that is not on the area compared to that of an area of ​​the three-dimensional grid that is on the area, so that the operator can identify the area of ​​the three-dimensional grid that is not on the area as an area where a workpiece model cannot be placed. For example, the grid arrangement unit 114 can set a different color for the area of ​​the three-dimensional grid that is not on the area than for the area of ​​the three-dimensional grid that is on the area. The configuration of the functional arrangement in the graphical function block representation of the robot programming device shown in Figs. 2 and 30 in the embodiments described above represents an example, and the configuration of the functional arrangement of the robot programming device is not limited to this. It will be evident from the description of each of the embodiments described above that not all of the function blocks shown in Fig. 2 or Fig. 30 are required to achieve the function as a robot programming device.For example, if the grid arrangement unit 114 in the robot programming device 10 according to the first embodiment automatically generates a three-dimensional grid based on predefined information such as a work content, the functions as grid spacing adjustment unit 115, grid area adjustment unit 116, workpiece model direction adjustment unit 118, interference detection unit 119, subsurface contact detection unit 120 and workpiece model position change unit 121 in the graphical function block representation in Fig. 2 can be omitted. The function as a robot programming device in the embodiments described above can be integrated into the function of a handheld programming device. The functional block of the robot programming device shown in Fig. 2 and Fig. 30 can be achieved by executing different types of software stored in a memory device by one or more processors of the robot programming device, or can be achieved by a configuration in which a hardware component such as an application-specific integrated circuit (ASIC) is a major component. The program for executing different types of processing, such as program creation processing in the embodiments described above, can be recorded in various computer-readable recording media (for example, semiconductor memory such as ROM, EEPROM and flash memory, magnetic recording medium and optical disk such as CD-ROM and DVD-ROM). Although the present disclosure has been described in detail above, it is not limited to the individual embodiments described above. Various types of additions, substitutions, modifications, partial deletions, and the like may be made to the embodiments without deviating from the purpose of the present disclosure or from the content described in the claims and the scope of the present disclosure resulting from their correspondences. Furthermore, the embodiments may also be implemented in combination. For example, a sequence of operations and a sequence of parts of a processing operation are given in the embodiments described above as examples, which are not limited to these. The same applies if a numerical value or expression is used in the description of the embodiments described above. With regard to the embodiments and modification examples described above, further supplementary remarks are described below. Supplementary Note 1 A robot programming device (10, 10A) comprising: a model arrangement unit (112) configured to arrange a robot system model, comprising a robot model, a hand model attached to the robot model, and a workpiece model, in a virtual space; a surface definition unit (113, 113A) configured to receive a user operation for defining a surface with respect to a predefined job performed by the robot model on the workpiece model in the virtual space; a grid arrangement unit (114) configured to arrange a three-dimensional grid in the virtual space with respect to the defined surface or a point on the defined surface; a position setting unit (122) configured to set a position of the robot model, which, via the hand model, grasps the workpiece model arranged at a grid point of the three-dimensional grid;and a training point generation unit (123) configured to generate a training point forming a motion program of the specified work, based on the grid point at which the workpiece model is located and the position of the robot model set at the grid point. Supplementary Note 2 The robot programming device (10, 10A) according to claim 1, wherein the position setting unit (122) is configured to set a position of the robot model which grasps the workpiece model by means of the hand model, which is arranged at a first grid point that is present on the defined surface of the three-dimensional grid and is defined on the basis of a user operation, and the teach-in point generation unit (123) is configured to generate a teach-in point which forms the motion program of the specified work, on the basis of the first grid point and the position of the robot model set at the first grid point. Supplementary Note 3 The robot programming device (10) according to claim 2, which further includes a grid point selection unit (117) configured to receive a user operation for selecting a grid point in the three-dimensional grid, wherein the first grid point is a grid point that is selected by the user operation via the grid point selection unit and is present on the specified surface of the three-dimensional grid. Supplementary note 4 The robot programming device (10A) according to claim 2, wherein the surface definition unit (113A) is configured to receive a process for defining a point on the surface with respect to the predetermined work as a holding point of the workpiece model, the grid arrangement unit (114) is configured to arrange the three-dimensional grid such that the holding point and a predetermined grid point of the three-dimensional grid coincide, and the first grid point at which the workpiece model is arranged is the predetermined grid point that coincides with the holding point. Supplementary note 5 The robot programming device (10A) according to claim 4, which further includes a stop point change unit (126) configured to receive a user operation for selecting a grid point in the three-dimensional grid in order to change a position of the stop point in the three-dimensional grid. Supplementary Note 6 The robot programming device (10, 10A) according to any one of claims 2 to 5, wherein the surface with respect to the specified work is a surface from which the workpiece model is picked up by the robot model or a surface on which the workpiece model is to be arranged by the robot model, and the teach-in point generation unit (123) is configured to generate a teach-in point corresponding to a pick-up position or a placement position of the workpiece model. Supplementary note 7 The robot programming device (10, 10A) according to any one of claims 2 to 6, wherein the position setting unit (122) is configured to further set a position of the robot model at one or more second grid points that are not located on the defined surface of the three-dimensional grid, wherein the one or more second grid points are defined based on a user operation and correspond to an approach point and / or a departure point with respect to the workpiece model, and the teach-in point generation unit is configured to further generate a teach-in point based on the one or more second grid points and the position of the robot model defined for the one or more second grid points, which corresponds to an approach point and / or a departure point with respect to the workpiece model. Supplementary Note 8 The robot programming device (10, 10A) according to any one of claims 2 to 7, which further comprises a workpiece model orientation setting unit (118) configured to receive a process for rotating the workpiece model arranged at the first grid point on the defined surface about an axis line perpendicular to the defined surface. Supplementary note 9 The robot programming device (10, 10A) according to any one of claims 2 to 8, further comprising: an interference detection unit (119) configured to detect whether interference occurs between a plurality of workpiece models, each arranged at a plurality of grid points selected by a user operation on the defined surface in the three-dimensional grid and including the first grid point; and a workpiece model position change unit (121) configured to change the position of at least one of the plurality of workpiece models such that interference does not occur when interference is detected by the interference detection unit. Supplementary Note 10 The robot programming device (10, 10A) according to any one of claims 2 to 8, wherein the robot system model includes a model of a peripheral device, and the robot programming device further includes: an interference detection unit (119) configured to detect interference between the workpiece model arranged at the first grid point and another object model in the robot system model; and a workpiece model position change unit (121) configured to change a position of the workpiece model so that the interference does not occur when the interference is detected by the interference detection unit. Supplementary Note 11 The robot programming device (10, 10A) according to any one of claims 2 to 8, further comprising: a subsurface contact detection unit (120) configured to detect whether an entire lower surface of the workpiece model arranged at the first grid point comes into contact with the specified surface; and a workpiece model position change unit (121) configured to change a position of the workpiece model such that the entire lower surface of the workpiece model comes into contact with the specified surface when the subsurface contact detection unit determines that the entire lower surface of the workpiece model does not come into contact with the specified surface. Supplementary Note 12 The robot programming device (10, 10A) according to any one of claims 1 to 11, which further comprises a grid spacing adjustment unit (115) configured to set a grid point spacing of the three-dimensional grid based on predetermined input information or a user operation, wherein the grid arrangement unit (114) is configured to generate the three-dimensional grid based on the set grid point spacing. Supplementary Note 13 The robot programming device (10, 10A) according to any one of claims 1 to 12, which further comprises a grid area setting unit (116) configured to set a spatial area of ​​the three-dimensional grid based on predetermined input information or a user operation, wherein the grid arrangement unit (114) is configured to generate the three-dimensional grid based on the set spatial area. Supplementary Note 14 The robot programming device (10, 10A) according to any one of claims 1 to 13, wherein the defined surface is either an upper surface of a model of a peripheral device arranged in the virtual space or an upper surface of the workpiece model arranged in the virtual space. Supplementary Note 15 The robot programming device (10, 10A) according to any one of claims 1 to 14, which further includes a gripping position setting unit (125) configured to set a gripping position which specifies a position and orientation of the workpiece model relative to the hand model when the hand model grips the workpiece model. List of reference symbols 10, 10A Robot programming device 11 Processor 12 Display unit 13 Operator unit 30M Robot model 31M Hand model 91M, 92M Worktable model 93M Container model 100M Robot system model 111 Virtual space creation unit 112 Model arrangement unit 113, 113A Surface definition unit 114 Lattice arrangement unit 115 Lattice spacing adjustment unit 116 Lattice area adjustment unit 117 Lattice point selection unit 118 Workpiece model orientation adjustment unit 119 Interference detection unit 120 Subsurface contact detection unit 121 Workpiece model position change unit 122 Position adjustment unit 123 Teaching point generation unit 124 Simulation execution unit 125 Gripping position adjustment unit 126 Holding point change unit

Claims

A robot programming device comprising: a model arrangement unit configured to arrange a robot system model, comprising a robot model, a hand model attached to the robot model, and a workpiece model, in a virtual space; a surface definition unit configured to receive a user operation for defining a surface with respect to a predefined job performed by the robot model on the workpiece model in the virtual space; a grid arrangement unit configured to arrange a three-dimensional grid with respect to the defined surface or a point on the defined surface; a position setting unit configured to set a position of the robot model, which, via the hand model, grasps the workpiece model arranged at a grid point of the three-dimensional grid;and a training point generation unit designed to generate a training point, which forms a motion program of the specified work, based on the grid point at which the workpiece model is located and the position of the robot model set at the grid point. Robot programming device according to claim 1, wherein the position setting unit is configured to set a position of the robot model which grasps the workpiece model by means of the hand model, which is arranged at a first grid point that is present on the defined surface of the three-dimensional grid and is defined on the basis of a user operation, and the teach-in point generation unit is configured to generate a teach-in point which forms the motion program of the specified work, on the basis of the first grid point and the position of the robot model set at the first grid point. Robot programming device according to claim 2, further comprising a grid point selection unit configured to receive a user operation for selecting a grid point in the three-dimensional grid, wherein the first grid point is a grid point selected by the user operation via the grid point selection unit and is present on the specified surface of the three-dimensional grid. Robot programming device according to claim 2, wherein the surface definition unit is configured to receive a process for defining a point on the surface with respect to the predetermined work as a holding point of the workpiece model, the grid arrangement unit is configured to arrange the three-dimensional grid such that the holding point and a predetermined grid point of the three-dimensional grid coincide with each other, and the first grid point at which the workpiece model is arranged is the predetermined grid point that coincides with the holding point. Robot programming device according to claim 4, which further comprises a stoppoint change unit configured to receive a user operation for selecting a grid point in the three-dimensional grid in order to change a position of the stoppoint in the three-dimensional grid. Robot programming device according to any one of claims 2 to 5, wherein the surface with respect to the specified work is a surface from which the workpiece model is picked up by the robot model, or a surface on which the workpiece model is to be arranged by the robot model, and the teaching point generation unit is configured to generate a teaching point corresponding to a pickup position or a placement position of the workpiece model. Robot programming device according to any one of claims 2 to 6, wherein the position setting unit is configured to further set a position of the robot model at one or more second grid points that are not located on the defined surface of the three-dimensional grid, wherein the one or more second grid points are defined on the basis of a user operation and correspond to an approach point and / or a departure point with respect to the workpiece model, and the teach-in point generation unit is configured to further generate a teach-in point, which corresponds to an approach point and / or a departure point with respect to the workpiece model, on the basis of the one or more second grid points and the position of the robot model defined for the one or more second grid points. Robot programming device according to any one of claims 2 to 7, which further comprises a workpiece model direction setting unit configured to receive a process for rotation, on the defined surface, of the workpiece model arranged at the first grid point on the defined surface about an axis line that is perpendicular to the defined surface. A robot programming device according to any one of claims 2 to 8, further comprising: an interference detection unit configured to detect whether interference occurs between a plurality of workpiece models, each arranged at a plurality of grid points selected by a user operation on the defined surface in the three-dimensional grid and including the first grid point; and a workpiece model position change unit configured to change the position of at least one of the plurality of workpiece models such that interference does not occur when interference is detected by the interference detection unit. Robot programming device according to any one of claims 2 to 8, wherein the robot system model includes a model of a peripheral device, and the robot programming device further comprises: an interference detection unit configured to detect interference between the workpiece model arranged at the first grid point and another object model in the robot system model; and a workpiece model position change unit configured to change a position of the workpiece model such that the interference does not occur when the interference is detected by the interference detection unit. A robot programming device according to any one of claims 2 to 8, further comprising: a subsurface contact detection unit configured to detect whether an entire lower surface of the workpiece model arranged at the first grid point comes into contact with the specified surface; and a workpiece model position change unit configured to change a position of the workpiece model such that the entire lower surface of the workpiece model comes into contact with the specified surface when the subsurface contact detection unit determines that the entire lower surface of the workpiece model does not come into contact with the specified surface. Robot programming device according to any one of claims 1 to 11, which further comprises a grid spacing adjustment unit configured to set a grid point spacing of the three-dimensional grid based on predetermined input information or a user operation, wherein the grid arrangement unit is configured to generate the three-dimensional grid based on the set grid point spacing. Robot programming device according to any one of claims 1 to 12, further comprising a grid area setting unit configured to set a spatial area of ​​the three-dimensional grid based on predetermined input information or a user operation, wherein the grid arrangement unit is configured to generate the three-dimensional grid based on the set spatial area. Robot programming device according to any one of claims 1 to 13, wherein the defined surface is either an upper surface of a model of a peripheral device arranged in the virtual space or an upper surface of the workpiece model arranged in the virtual space. Robot programming device according to any one of claims 1 to 14, which further comprises a gripping position setting unit configured to set a gripping position which specifies a position and orientation of the workpiece model relative to the hand model when the hand model grips the workpiece model.