Patent ID: 12248300

DETAILED DESCRIPTION

An embodiment of the present invention (hereafter, the present embodiment) will now be described with reference to the drawings. The present embodiment described below is a mere example of the present invention in all aspects. The embodiment may be variously modified or altered without departing from the scope of the present invention. More specifically, the present invention may be implemented as appropriate using the configuration specific to each embodiment. Although data used in the present embodiment is described in a natural language, such data may be specifically defined using any computer-readable language, such as a pseudo language, commands, parameters, or a machine language.

1. Example Use

FIG.1is a schematic diagram of an example situation in which an embodiment of the present invention is used. A controller1according to the present embodiment includes a computer that controls the motion of a robot device2in accordance with a motion program. An operation to be performed by the robot device2includes an assembly operation for assembling a product3using multiple components. The controller1according to the present embodiment further receives a request for a component change and generates a new motion program by correcting command values included in a motion program in response to the requested component change. The controller1according to the present embodiment is an example of a program generation apparatus.

The controller1first obtains a motion program50for instructing the robot device2to perform a series of motions included in an assembly operation to assemble the product3using multiple components. The controller1also receives a request for a component change to change at least one of the multiple components. The controller1then refers to attribute information121indicating the attributes of each component and compares the attributes of a first component indicated as a target of the component change and the attributes of a second component to replace the first component in the component change. Based on the comparison results, the controller1extracts, from the series of motions defined in the motion program50, a motion to be corrected based on a difference in attribute between the first component and the second component. The controller1then generates a new motion program55to instruct the robot device2to perform a series of motions included in the assembly operation performed after the component change by correcting the command value of the extracted motion in the motion program50to compensate for the difference in attribute between the first component and the second component.

The robot device2may be of any type selected as appropriate in each embodiment. The robot device2may be one or more manipulators (industrial robots) selected from vertical articulated robots, horizontal articulated robots, selective compliance assembly robot arm (SCARA) robots, parallel link robots, Cartesian robots, and cooperative robots. The robot device2may include one or more tools for performing operations associated with the components. The tool(s) may include a first tool used for an operation associated with a first component included in an assembly operation. The tool(s) may be, for example, a gripper (robot hand), a suction device, a screw tightening device, and a soldering device. The operations associated with components include gripping, transporting, inserting, placing, pressing, repositioning, and aligning. A motion program includes a series of command values to instruct motions included in an assembly operation. Each command value may be defined as appropriate to drive the robot device2. Each command value may include, for example, a target value of a control quantity or an operational quantity of a component (e.g., a tool or a joint) of the robot device2(e.g., a target position, an opening width, or a closing width of the gripper25described later).

The product3may be any object including multiple components and may be selected as appropriate in each embodiment. The product3may be, for example, any product that can be assembled on a production line, such as an electronic device, an electronic component, or an automotive component. The electronic component may be, for example, a substrate, a chip capacitor, a liquid crystal, or a relay coil. The automotive component may be, for example, a connecting rod, a shaft, an engine block, a power window switch, or a panel. The product may be a final product after completion of the manufacturing process or an intermediate product during the manufacturing process. The components may be selected as appropriate for each product. The components may be, for example, substrates, various chips, capacitors, connectors, pegs, sockets, holes, gears, bolts, screws, and nuts. The attributes of the components can affect the assembly operation. The attributes of the components include, for example, shape, dimensions, position, and weight.

In the example ofFIG.1, the product3includes three components31to33, and the robot device2is a vertical articulated robot. The robot device2includes a gripper25as an end-effector to transport the components31to33. An assembly operation of this product3is to stack the components31to33on one another in sequence. In the example ofFIG.1, a request for the product3for replacing the component31with the component35is received. The component31is an example of a first component. The component35is an example of a second component. The gripper25is an example of a first tool. The structure shown inFIG.1is a mere specific example for convenience of explanation. The structure of the robot device2and the structure of the product3as well as the procedure for the assembly operation may be determined as appropriate in each embodiment. The number of components included in the product3may be selected as appropriate in each embodiment. A component to be a target of a component change may be selected as appropriate from the multiple components included in the product3.

FIGS.2A to2Dschematically show an example procedure for an operation of assembling the product3before a component change. As shown inFIG.2A, the components31to33are placed at different feeding positions in an initial state. An example assembly operation includes three processes.

The first process is to place the component31at its target position in its target orientation. The controller1first causes the robot device2to move the gripper25to the feeding position of the component31. The controller1then causes the robot device2to open and close the gripper25to grip the component31. As shown inFIG.2B, the controller1causes the robot device2to transport the gripped component31to the target position. The controller1then causes the robot device2to open the gripper25and place the component31at the target position in the target orientation. This ends the first process.

The second process is to place the component32at the target position on the component31in the target orientation. The controller1first causes the robot device2to move the gripper25to the feeding position of the component32. The controller1then causes the robot device2to open and close the gripper25to grip the component32. As shown inFIG.2C, the controller1causes the robot device2to transport the gripped component32to a target position on the component31. The controller1then causes the robot device2to open the gripper25and place the component32at the target position on the component31in the target orientation. This ends the second process.

The third process is to place the component33at a target position on the component32in a target orientation. The controller1first causes the robot device2to move the gripper25to the feeding position of the component33. The controller1then causes the robot device2to open and close the gripper25to grip the component33. As shown inFIG.2D, the controller1causes the robot device2to transport the gripped component33to the target position on the component32. The controller1then causes the robot device2to open the gripper25and place the component33at the target position on the component32in the target orientation. This ends the third process to complete the assembly of the product3.

An example of the motion program50includes a series of command values defined to instruct motions of the robot device2in the above processes such as the target position, the opening width, and the closing width of the gripper25. An example of the motion program50may be generated as appropriate by, for example, direct teaching, manual designing (teaching using, for example, a teaching pendant or programming), or automatic planning (e.g., motion planning).

FIG.3Aschematically shows an example procedure for the operation of assembling the product3in an initial state after a component change.FIG.3Bschematically shows the product3in a finished state after the component change (in other words, upon completion of the assembly operation). In an example component change involving a change in attribute of a target component as shown inFIGS.3A and3B, a replacement component35has dimensions different from the dimensions of a component31used before the component change. For example different dimensions, the component35is wider than and less tall than the component31. The feeding position of the component35may be the same as or different from the feeding position of the component31.

In this example, the process sequence in the assembly operation of the product3remain the same before and after the component change. The controller1causes the robot device2to perform motions corresponding to the first to third processes, or specifically, transport the components35,32, and33in sequence to their target positions. This completes the assembly operation of the product3as shown inFIG.3B.

However, the gripper25in the robot device2driven in the same manner as before the component change cannot perform the assembly operation of the product3appropriately due to the dimensions of the component35different from the dimensions of the component31. For example, the component35is wider than the component31. The gripper25with the opening width intended for gripping the component31cannot grip the component35. Through the above information processing, the controller1corrects the command values in the motion program50to respond to the component change and thus generates a new motion program55that can perform the operation of assembling the product3after the component change.

After obtaining the motion program50and then receiving a request for the component change, the controller1refers to the attribute information121and compares the attributes of the component31with the attributes of the component35. The comparison allows the controller1to obtain the dimensional differences between the component31and the component35. Based on this, the controller1extracts, from the series of motions defined in the motion program50, a motion to be corrected.

A motion to be corrected may simply be a motion associated with the first component to be replaced with the second component. However, the component change can also affect a component having dependency on the first component, such as a component with its placement position determined by the first component. In the above specific example, two components (32,33) are placed on the component31to be changed and are thus affected by the component change. A motion to be corrected may include a motion associated with any component having dependency on the first component, in addition to a motion associated with the first component. Extracting a motion to be corrected may thus include identifying, among multiple components, a third component that is affected by the component change, identifying, among a series of motions, one or more motions associated with the first component or with the identified third component, and extracting, from the identified motion(s), a motion to be corrected based on a difference in attribute between the first component and the second component. Each of the components (32,33) is an example of a third component. This allows appropriate extraction of any motion to be corrected based on a component change.

In the above specific example, an example motion extracted from motions associated with the component31through this process as a motion to be corrected may be a motion of gripping the component31with the gripper25and a motion of transporting the component31to its target position with the gripper25. When the feeding position of the component35is different from the feeding position of the component31, an extracted example motion to be corrected may be a motion of moving the gripper25to the feeding position of the component31. An example motion to be corrected that is extracted from motions associated with the components (32,33) may be a motion of transporting each component (32,33) to its target position with the gripper25.

The controller1then corrects the command value of the extracted motion in the motion program50to compensate for the dimensional differences between the component31and the component35. As specific example command values to be corrected, the opening width and the closing width of the gripper25defined to grip the component31may be corrected to larger values to grip the component35. The target position of the gripper25defined to transport the component31to its target position may be corrected to a smaller value for the component35that is less tall than the component31. The opening width of the gripper25defined to release the component31at the target position may be corrected to a larger value to release the component35. When the feeding position of the component35is different from the feeding position of the component31, the target position of the gripper25defined to move to the feeding position of the component31may be corrected to match the feeding position of the component35. The target position of the gripper25defined to transport each component (32,33) to its target position may be corrected to a smaller value for the component35that is less tall than the component31.

Each correction value may be determined in accordance with a difference in attribute between the first component and the second component. The rule for the correction may be determined as appropriate. For example, a difference in attribute value between the first component and the second component may be used directly as a correction value. In the above specific example, a difference in dimension between the component31and the component35may be used directly as a correction value. For example, each correction value may be derived from a difference in attribute value between the first component and the second component in accordance with a predetermined rule. This allows generation of a new motion program55.

As described above, the controller1according to the present embodiment can automatically generate a new motion program55by correcting command values included in the motion program50in response to a request for a component change. The generated new motion program55includes command values of motions that are affected by the component change corrected through the above process to match the attributes of the replacement second component (the component35in the above specific example). The generated new motion program55thus allows the assembly operation of the product3to be performed appropriately after the component change from the first component to the second component. The structure according to the present embodiment reduces, for any change in at least one component included in the product3, the time and labor to generate a new motion program55usable in an assembly operation performed after the component change.

Further, generating a new motion program in response to a component change previously involves a skilled person with much knowledge about the motion of the robot device and each component. The controller1according to the present embodiment can automatically generate, in response to a request for a component change, a new motion program55usable in an assembly operation performed after the component change. The controller1according to the present embodiment allows a relatively inexperienced person to generate a new motion program in response to a component change.

2. Example Structure

Hardware Configuration

Controller

FIG.4is a schematic diagram of the controller1according to the present embodiment showing its hardware configuration. As shown inFIG.4, the controller1according to the present embodiment is a computer including a control unit11, a storage12, an external interface13, an input device14, an output device15, and a drive16that are electrically connected to one another. InFIG.4, the external interface is abbreviated as an external I/F.

The control unit11includes, for example, a central processing unit (CPU) as a hardware processor, a random-access memory (RAM), and a read-only memory (ROM). The control unit11performs information processing based on programs and various items of data. The storage12, as an example of a memory, includes, for example, a hard disk drive or a solid-state drive. In the present embodiment, the storage12stores various sets of information including the motion program50, a generation program81, the attribute information121, specification information123, and robot information125.

As described above, the motion program50includes a series of command values for instructing the robot device2to perform a series of motions included in an assembly operation to assemble the product3using multiple components. The generation program81causes the controller1to perform information processing (described below referring toFIGS.8A and8B) for generating a new motion program55in response to a request for a component change. The generation program81includes a series of commands for the information processing. The attribute information121includes information about the attributes of the components to be used in the product3. The components to be used in the product3include the above components (31to33and35). The attribute information121may include information about the shape, dimensions, and position (in other words, geometric attributes) of each component. The position of each component includes, for example, the above feeding position. The geometric attributes may further include the orientations (e.g., roll, pitch, and yaw) of each component. The attribute information121may further include information about the weight (in other words, attributes other than the geometric attributes) of each component. The specification information123includes information about the specifications of each tool attachable to the robot device2. The specifications of each tool refer to the capability to perform an operation. The specifications include the maximum opening width of the gripper. The specifications indicated by the specification information123may be selected as appropriate for the type of tool. The tools attachable to the robot device2include the gripper25described above. The robot information125includes information about the specifications of the robot device2. This will be described in detail later.

The external interface13is an interface for connection to an external device and may be, for example, a universal serial bus (USB) port or a dedicated port. The type and the number of external interfaces13may be selected as appropriate for the type and the number of external devices to be connected. In the present embodiment, the controller1is connected to the robot device2through the external interface13. The controller1can thus control the motion of the robot device2.

However, the configuration for controlling the motion of the robot device2may be any configuration other than the above example and may be determined as appropriate in each embodiment. For the controller1and the robot device2including a communication interface, for example, the controller1may be connected to the robot device2through the communication interface. For the robot device2connected to another information processor (e.g., another controller), the controller1may be connected to the robot device2through the other information processor.

The input device14is, for example, a mouse and a keyboard. The output device15is, for example, a display and a speaker. An operator may operate the controller1using the input device14and the output device15.

The drive16is, for example, a compact disc (CD) drive or a digital versatile disc (DVD) drive for reading programs or other information stored in a storage medium91. The storage medium91stores programs or other information in an electrical, magnetic, optical, mechanical, or chemical manner to allow a computer or another device or machine to read the stored programs or other information.

At least one of the motion program50, the generation program81, the attribute information121, the specification information123, or the robot information125may be stored in the storage medium91. The controller1may obtain at least one of the motion program50, the generation program81, the attribute information121, the specification information123, or the robot information125from the storage medium91.

InFIG.4, the storage medium91is a disc storage, such as a CD or a DVD. However, the storage medium91is not limited to a disc storage. An example of the storage medium other than a disc storage is a semiconductor memory such as a flash memory. The drive16may be of any type selected as appropriate for the type of storage medium91.

For the specific hardware configuration of the controller1, components may be eliminated, substituted, or added as appropriate in each embodiment. For example, the control unit11may include multiple hardware processors. Each hardware processor may include a microprocessor, a field-programmable gate array (FPGA), a digital signal processor (DSP), or other processors. The storage12may be the RAM and the ROM included in the control unit11. At least one of the external interface13, the input device14, the output device15, or the drive16may be eliminated. The controller1may include a communication interface for data communication with another information processing device. The controller1may include multiple computers. In this case, each computer may have the same or a different hardware configuration. The controller1may be an information processing apparatus dedicated to an intended service, or may be a general-purpose personal computer (PC) such as a desktop PC or a tablet PC, or a programmable logic controller (PLC).

Robot Device

FIG.5is a schematic diagram of the robot device2according to the present embodiment showing its hardware configuration.

The robot device2in the present embodiment is a vertically articulated six-axis industrial robot with a base210and six joints211to216. Each of the joints211to216incorporates a servomotor (not shown) and is rotatable about its axis. The first joint211is connected to the base210and has its distal end rotatable about the axis of the base. The second joint212is connected to the first joint211and has its distal end rotatable in the back-and-forth direction. The third joint213is connected to the second joint212with a link221and has its distal end rotatable vertically. The fourth joint214is connected to the third joint213with a link222and has its distal end rotatable about the axis of the link222. The fifth joint215is connected to the fourth joint214with a link223and has its distal end rotatable vertically. The sixth joint216is connected to the fifth joint215with a link224and has its distal end rotatable about the axis of the link224. The sixth joint216has its distal end receiving the gripper25as an end-effector.

Each of the joints211to216further incorporates an encoder (not shown). The encoder measures the angle of the corresponding one of the joints211to216. The encoder may be of any type selected as appropriate in each embodiment. The measurement values from the encoder are used to control the angle of each of the joints211to216. The angle of each of the joints211to216may be controlled with any method selected as appropriate in each embodiment. The joints211to216may be controlled with a known method such as proportional-integral-derivative (PID) control or PI control. The transformation between the angle of each of the joints211to216and the position of the gripper25may be performed based on forward kinematics and inverse kinematics. A command value used for moving the gripper25as an example control method may be defined by the target position of the gripper25. In this case, the target position of the gripper25may be converted into the target angle of each of the joints211to216based on inverse kinematics. The drive amount of each of the joints211to216may then be determined based on the difference between the target angle of each of the joints211to216and the current angle measured by the encoder.

The robot device2may have the hardware configuration different from the structure in the example. For the specific hardware configuration of the robot device2, components may be eliminated, substituted, or added as appropriate in each embodiment. For example, the robot device2may include a sensor other than the encoder to measure the control quantity or other attributes. The robot device2may further include, for example, at least one of a vision sensor (e.g., a camera) or a tactile sensor. Sensing data obtained from the sensor may be used in feedback control of the robot device2. For example, the motion of the robot device2may be controlled not to apply an excessive force to the gripper25based on sensing data obtained from a tactile sensor. For example, the motion of the robot device2may be controlled to move the gripper25to an intended position (e.g., to a position to grip each component) based on sensing data obtained from the vision sensor. The robot device2may have another number of axes other than six axes selected as appropriate in each embodiment. The robot device2may be a known industrial robot.

Software Configuration

FIG.6is a schematic diagram of the controller1according to the present embodiment showing its example software configuration associated with the information processing for generating a program.

The control unit11in the controller1loads the generation program81stored in the storage12into the RAM. The CPU in the control unit11then interprets and executes a command included in the generation program81loaded in the RAM to control each unit. The controller1according to the present embodiment thus operates as a computer including a data obtainer111, a change receiver112, a motion extractor113, a command corrector114, a simulator115, a specification determiner116, a tool extractor117, an index determiner118, and a coordinate corrector119as software modules as shown inFIG.6. In the present embodiment, each software module in the controller1associated with the information processing for generating a program is implemented by the control unit11(CPU).

The data obtainer111obtains a motion program50for instructing the robot device2to perform a series of motions included in an assembly operation to assemble the product3using multiple components. The change receiver112receives a request for a component change to change at least one of the multiple components. The motion extractor113refers to the attribute information121, compares the attributes of the first component indicated as a target of the component change with the attributes of the second component to replace the first component in the component change, and extracts, from the series of motions defined in the motion program50, any motion to be corrected based on the difference in attribute between the first component and the second component. The command corrector114then generates a new motion program55to instruct the robot device2to perform a series of motions included in the assembly operation after the component change by correcting the command value of any extracted motion in the motion program50to compensate for the difference in attribute between the first component and the second component.

The simulator115uses the generated new motion program55to simulate a series of motions of the robot device2in the assembly operation to be performed after the component change. The specification determiner116refers to the specification information123and determines whether the specifications of the first tool can respond to the component change from the first component to the second component. When the specification determiner116determines that the specifications of the first tool cannot respond to the component change, the tool extractor117refers to the specification information123. The tool extractor117extracts, from multiple tools indicated by the specification information123, a second tool of the same type as the first tool and having the specifications that can respond to the component change. The command corrector114then generates a new motion program55to instruct the robot device2to perform a series of motions included in the assembly operation after the component change by correcting the command value of the extracted motion in the motion program50to further compensate for the change from the first tool to the second tool.

To simulate the real space in the virtual space, the attribute information121may include the geometric models for the components to be used in the product3. The specification information123may include information about the geometric model for each tool attachable to the robot device2. The robot information125may include the geometric model for the robot device2. A geometric model represents the shape and dimensions of each object (a component, a tool, or the robot device2) in the local coordinate system defined for the corresponding object and having a reference point as the origin. Such geometric models may include computer-aided design (CAD) data, or may be generated with known software. To determine the operating state in the real space for the above simulation or other purposes, the controller1may create a virtual space that can project the operating state in the real space based on the attribute information121, the specification information123, and the robot information125. The operating state may be represented by, for example, the current positions of each component (31to33and35) and the gripper25. The virtual space may be created using known software.

FIG.7is a schematic diagram of an example geometric model (310,350) for each component (31,35). Each geometric model (310,350) represents the shape and the dimensions of the corresponding component (31,35) in the local coordinate system (315,355) defined for the corresponding component (31,35) and having a reference point (317,357) as the origin. In the example ofFIG.7, the reference point317of the geometric model310representing the component31is at the center of the component31. The reference point357of the geometric model350representing the component35is at a corner (the front left corner in the figure) of the component35. In this manner, the reference points of the geometric models for multiple components may be defined using different indexes. This results from, for example, the geometric models being generated by different operators. When the component31is replaced with the component35in this state, the position of the component35may deviate from its intended position in the virtual space by a degree corresponding to the difference between the indexes used for the reference points. This may cause a failure in any motion of the robot device2associated with the component35when the new motion program55is generated and executed.

The index determiner118thus determines whether the reference point of the geometric model for the first component and the reference point of the geometric model for the second component are defined using the same index. When the index determiner118determines that the reference points for the first component and the second component are not defined using the same index, the coordinate corrector119corrects the reference point of the geometric model for the second component to be defined using the same index as the reference point of the geometric model for the first component before the process to correct the command value of the above motion is performed. In the example ofFIG.7, the reference point317for the component31is at the center of the component31, whereas the reference point357for the component35is at one corner of the component35. The index determiner118determines that the reference point317for the component31and the reference point357for the component35are not defined using the same index. The coordinate corrector119corrects the reference point357for the component35to be defined using the same index as the reference point317for the component31. As an example of correction shown inFIG.7, the coordinate corrector119corrects the position of the reference point357to be the center of the component35. When the local coordinate system355for the component35has a different inclination from the local coordinate system315for the component31, correcting the reference point357includes correcting the inclination of the local coordinate system355to match the inclination of the local coordinate system315.

Each software module in the controller1will be described in detail in operation examples described below. In the present embodiment, each software module in the controller1is implemented by a general-purpose CPU. However, some or all of the software modules may be implemented by one or more dedicated processors. For the software configuration of the controller1, software modules may be eliminated, substituted, or added as appropriate in each embodiment.

3. Operation Examples

FIGS.8A and8Bare flowcharts of an example procedure performed by the controller1according to the present embodiment. The procedure described below is an example of a program generation method. The procedure described below is a mere example, and each of its steps may be modified in any possible manner. In the procedure described below, steps may be eliminated, substituted, or added as appropriate in each embodiment.

Step S101

In step S101, the control unit11operates as the data obtainer111to obtain the motion program50.

In the present embodiment, the control unit11obtains the motion program50from the storage12. The motion program50may be obtained from any source other than the storage. The motion program50may be stored in another storage area, such as an external storage device or a storage medium. The external storage may be, for example, a data server such as a network attached storage (NAS), or an external storage device connected to the controller1. In this case, the control unit11may obtain the motion program50from another storage device as appropriate. In some embodiments, the robot device2may include a sub-controller that may store the motion program50. In this case, the control unit11may obtain the motion program50from the sub-controller included in the robot device2.

Upon completion of obtaining the motion program50, the control unit11advances the processing to subsequent step S102.

Step S102

In step S102, the control unit11operates as the change receiver112to receive a request for a component change to change at least one of the multiple components included in the product3.

The request for the component change may be received through any interface appropriately designed in each embodiment to identify the first component as the target of the component change and the second component to replace the first component. For example, the control unit11may receive a request for a component change as an indication of the first component and an indication of the second component received through the input device14. The first component and the second component may be indicated using text input. In another example, the control unit11may output a list of components (components31to33in the above specific example) of the product3to the output device15and receive an indication of the first component with the output list. The list of components included in the product3may be prestored in a storage area such as the storage12, or may be extracted from the motion program50as appropriate. The control unit11may then output a list of components of the same type as the indicated first component to the output device15and receive an indication of the second component with the output list. The list of components of the same type as the first component may be prestored in a storage area or extracted from the attribute information121.

Upon completion of receiving a request for a component change, the control unit11advances the processing to subsequent step S103. The processing in step S102is not limited to the above example. When no motion program50is used to generate the list of components included in the product3, the processing in step S102may be performed in parallel with or before the processing in step S101.

Step S103

In step S103, the control unit11operates as the index determiner118to determine whether the reference point of the geometric model for the first component and the reference point of the geometric model for the second component are defined using the same index.

A method of determining whether the same index is used for defining the reference points may be determined as appropriate in each embodiment. In an example, the control unit11may first obtain information indicating the index used for defining the reference point of the geometric model for each component (hereafter also referred to as index information). In the example ofFIG.7, the reference point317of the geometric model310representing the component31is at the center of the component31. The reference point357of the geometric model350representing the component35is at a corner of the component35. The index used for the reference point of the geometric model for each component can be estimated based on the positional relationship of the reference point with the shape of the geometric model, or specifically, for example, the reference point being at a predetermined fixed point (e.g., the center, the center of gravity, or an edge). The control unit11may thus refer to the attribute information121and estimate the index used for the reference point of the geometric model for each component based on the positional relationship of the reference point with the shape of the geometric model for each component. The control unit11may obtain index information based on the estimation result. The index information may be prestored in a storage area. In this case, the control unit11may obtain the index information from the storage area. The control unit11may then compare the indexes used for the reference points of the geometric models for the first component and the second component based on the index information. The comparison results may then be used by the control unit11to determine whether the reference points of the geometric models for the first component and the second component are defined using the same index.

Upon completion of determining whether the reference points of the geometric models for the first component and the second component are defined using with the same index, the control unit11advances the processing to subsequent step S104.

Step S104

In step S104, the control unit11determines a branch destination of the processing based on the determination result in step S103. In step S103, when determining that the reference points of the geometric models for the first component and the second component are defined using the same index, the control unit11advances the processing to subsequent step S106without performing the processing in step S105. When determining that the reference points of the geometric models for the first component and the second component are not defined using the same index, the control unit11advances the processing to subsequent step S105.

Step S105

In step S105, the control unit11operates as the coordinate corrector119to correct the reference point of the geometric model for the second component to be defined using the same index as the reference point of the geometric model for the first component.

In the present embodiment, the control unit11corrects the reference point of the geometric model for the second component by shifting the reference point for the second component to a predetermined fixed point corresponding to the index used for the reference point of the geometric model for the first component. In the example ofFIG.7, the control unit11corrects the position of the reference point357to cause the reference point357to be at the center of the component35. When the local coordinate systems used for the first component and the second component have different inclinations, the control unit11may correct the inclination of the local coordinate system used for the second component to match the inclination of the local coordinate system used for the first component.

Upon completion of correcting the reference point of the geometric model for the second component, the control unit11advances the processing to subsequent step S106. The processing in steps S103to S105may be performed in any order different from this example. The processing in steps S103to S105may be performed at a selected time before the processing in step S107(described later) is performed. The control unit11may use, instead of the second component indicated as a component to replace the first component, each component of the product3before the component change as a pseudo first component, and may correct the reference point of the geometric model for each component that can be replaced with the pseudo first component. In this case, the processing in steps S103to S105may be performed in parallel with or before the processing in step S102.

Step S106

In step S106, the control unit11operates as the motion extractor113to refer to the attribute information121and compare the attributes of the first component with the attributes of the second component. Based on the comparison results, the control unit11extracts, from the series of motions defined in the motion program50, any motion to be corrected based on the difference in attribute between the first component and the second component.

In an example, the control unit11first identifies, among multiple components included in a product3, a third component affected by the component change. The third component has dependency on the first component and is thus affected by the component change. The dependency between such components may occur when multiple components are arranged in layers or structurally in the product3. An example of such dependency is the placement of a component on a target component to be changed, as seen between the components (32,33) in the above specific example. A component has dependency on the first component when its target state (e.g., its placement position or orientation) in the product3is changeable in the assembly after the target component is changed.

The third component having dependency on the first component may be identified as appropriate. For example, the attribute information121may include information indicating dependency between the components (hereafter also referred to as dependency information). In this case, the control unit11can refer to the attribute information121to obtain the dependency information. The control unit11may identify the third component among the multiple components included in the product3by referring to the dependency information. The dependency information may be prestored in a storage area such as the storage12as a separate file from the attribute information121. In this case, the control unit11may obtain the dependency information from the storage area. The control unit11may identify the third component with dependency on the first component in the motion program50with a known analysis method such as dependency analysis.

The control unit11identifies one or more motions associated with the first component or the identified third component among the series of motions defined in the motion program50. The control unit11refers to the attribute information121and compares the attributes of the first component with the attributes of the second component to obtain any attribute value to be changed. The control unit11extracts, from one or more identified motions, a motion associated with the attribute value to be changed (in other words, a motion to be corrected based on the difference in attribute between the first component and the second component).

The motion to be corrected may be identified in accordance with the type of attribute that differs between the first component and the second component. In an example, the correspondence between the motion to be corrected and the type of attribute that differs between the components may be provided based on certain rules. The control unit11can identify the motion to be corrected in accordance with the type of attribute that differs between the first component and the second component by referring to information indicating the correspondence. The information indicating the correspondence may be prestored in a storage area such as the storage12.

In the present embodiment, the attribute information121includes information about the geometric attributes of the components. In the processing performed in step S106, the control unit11can extract the geometric motions associated with the first component or the third component in accordance with the difference in geometric attribute between the first component and the second component. In the above specific example, motions to be corrected are extracted from motions associated with the component31through this process. Such motions to be corrected are the motion of gripping the component31with the gripper25, the motion of transporting the component31to the target position with the gripper25, and the motion of transporting each component (32,33) to its target position with the gripper25. When the feeding position of the component35is different from the feeding position of the component31, the motion of moving the gripper25to the feeding position of the component31is further extracted as a motion to be corrected. The attribute information121may further include information about weight. In the processing in step S106, the control unit11can extract motions that are affected by attributes other than geometric attributes, such as the motion of transporting the first component to its target position.

A motion to be corrected may be extracted with a method other than the method in this example. For an example other method simplifying the processing, the control unit11may eliminate the processing associated with the third component and simply extract a motion associated with the first component to be replaced with the second component.

Upon completion of extracting the motion to be corrected, the control unit11advances the processing to subsequent step S107.

Step S107

In step S107, the control unit11operates as the command corrector114to correct the command value of the extracted motion in the motion program50to compensate for the difference in attribute between the first component and the second component.

In the present embodiment, the control unit11corrects the command value of the extracted motion in accordance with the difference in attribute value between the first component and the second component. As described above, the difference in attribute value between the first component and the second component may be used directly as a correction value. In some embodiments, the correction value may be derived from the difference in attribute value between the first component and the second component in accordance with a predetermined rule. The predetermined rule may be provided based on certain rules or using a computational expression such as a function. In the present embodiment, the attribute information121includes information about the geometric attributes of the components. In step S107, the control unit11can correct the command values for the geometric motions of the robot device2, such as the opening width and the closing width of the gripper25and the target positions of the components31to33in the above specific example. The attribute information121may further include information about weight. In the processing in step S107, the control unit11can extract motions that are affected by attributes other than geometric attributes, such as a torque amount for the gripper25for transporting the first component.

This allows the control unit11to generate a temporary motion program with the corrected command value of the extracted motion. Upon completion of generating the temporary motion program by correcting any extracted command value, the control unit11advances the processing to subsequent step S108.

Step S108

In step S108, the control unit11uses the generated temporary motion program to simulate the series of motions of the robot device2in an assembly operation performed after the component change.

The motions may be simulated with any method. The simulation may be performed using known software. For example, the control unit11may simulate, in the virtual space created in the world coordinate system, each of the processes included in an assembly operation of the product3defined by the temporary motion program based on the attribute information121, the specification information123, and the robot information125. Through this simulation process, the control unit11may simulate the series of motions of the robot device2.

An environment in which an assembly operation is performed may include elements other than the components of the product3, such as obstacles. The simulation may further reflect such other elements. Information about such other elements (hereafter also referred to as environmental information) may be obtained as appropriate. The environmental information may be prestored in a storage area such as the storage12. The control unit11may obtain the environmental information from the storage area. Similarly to the attribute information121and other information, the environmental information may include geometric models for other elements such as obstacles.

The simulation in step S108allows determination as to whether a motion failure is to occur when the generated temporary motion program is executed. This allows early detection of an unexpected failure that cannot be removed by simply correcting the command value of a motion associated with a component change. This improves the reliability of the generated motion program. Upon completion of the simulation for the series of motions included in the assembly operation, the control unit11advances the processing to subsequent step S109.

Step S109

In step S109, the control unit11operates as a determination unit (not shown) to determine whether the simulation in step S108shows a failure (problem) in any motion of the robot device2. When determining that the simulation shows a failure in the motion of the robot device2, the control unit11advances the processing to step S110. When determining that the simulation shows no failure, the control unit11advances the processing to step S116.

A typical example failure detected by the simulation is a failure of the specifications of the target tool (first tool) to respond to a component change, or a failure of the specifications of the target tool specification to fit the attributes of the second component. Another example failure is interference of a component with another object, such as an obstacle or another component, during an operation associated with the component due to a change in the positional relationship between the components resulting from any component change. A specific example of such interference occurs when the second component is taller than the first component, and an adjacent component is placed with the gripper at a position away from the feeding position beyond the second component. In this case, the path for transporting the adjacent component with the gripper may be obstructed by the second component. Such an obstructed transportation path is an example of the interference. When detecting such a failure, the control unit11advances the processing to step S110. Interference with another component among other objects may be detected in step S106above. In this case, the control unit11may use, as a third component, a component associated with an operation that can interfere with another object. In step S107, the control unit11may correct the command value of a motion associated with the component to avoid interference with another component.

Step S110

In step S110, the control unit11operates as the specification determiner116to refer to the specification information123and determine whether the specifications of the target tool (first tool) can respond to the component change from the first component to the second component.

The specifications of the target tool responding to the component change refer to the specifications of the target tool allowing a difference in attribute between the first component and the second component, or in other words, the specifications of the target tool satisfying the conditions for performing the same operation on the second component as on the first component with the corrected command value. The control unit11refers to the attribute information121and the specification information123and compares the attributes of the second component with the specifications of the target tool. The comparison results may be used by the control unit11to determine whether the specifications of the target tool satisfy the conditions for performing an operation on the second component, or specifically, whether the specifications of the target tool can respond to the component change from the first component to the second component.

In the above specific example, the specification information123may include, for example, information about the maximum opening width, the minimum opening width, the weight capacity, the opening speed, and the gripping torque of the gripper25. In this case, the control unit11may compare the maximum opening width and the minimum opening width of the gripper25with the dimensions of the component35to determine whether the component35can be transported by the gripper25. The component35has dimensions less than or equal to the maximum opening width and greater than or equal to the minimum opening width and thus can be gripped by the gripper25. The control unit11determines that the specifications of the target tool can respond to the component change from the first component to the second component. The component35has dimensions greater than the maximum opening width or less than the minimum opening width and thus cannot be gripped by the gripper25. The control unit11determines that the specifications of the target tool cannot respond to the component change from the first component to the second component. The control unit11may compare the weight capacity of the gripper25with the weight of the component35to determine whether the component35can be transported by the gripper25. When the weight of the component35is less than or equal to the weight capacity, the control unit11determines that the specifications of the target tool can respond to the component change from the first component to the second component. When the weight of the component35exceeds the weight capacity, the control unit11determines that the specifications of the target tool cannot respond to the component change from the first component to the second component. The comparisons are mere examples, and the types of specifications and attributes to be compared in determining whether the specifications or the attributes can respond to the component change may be selected as appropriate in each embodiment.

Upon completion of determining whether the specifications of the target tool can respond to the component change, the control unit11advances the processing to subsequent step S111.

Step S111

In step S111, the control unit11determines a branch destination of the processing based on the determination result in step S110. When determining that the specifications of the target tool can respond to the component change from the first component to the second component in step S110, the control unit11advances the processing to step S115. When determining that the specifications of the target tool cannot respond to the component change, the control unit11advances the processing to step S112.

Step S112

In step S112, the control unit11operates as the tool extractor117to refer to the specification information123and extract, from multiple tools, a tool of the same type as the target tool and having the specifications that can respond to the component change. The extracted tool is an example of a second tool.

In the present embodiment, the control unit11refers to the specification information123to extract the tool of the same type as the target tool and having the specifications that satisfy the conditions for performing the same operation on the second component as on the first component. In the above specific example, when the determination result shows that the component35cannot be gripped by the gripper25, the control unit11extracts, from multiple grippers indicated by the specification information123, a gripper that can grip the component35. When the determination result shows that the component35cannot be transported by the gripper25, the control unit11extracts, from multiple grippers indicated by the specification information123, a gripper having the weight capacity of greater than or equal to the weight of the component35to transport the component35.

Upon completion of extracting the tool with the specifications that can respond to the component change, the control unit11advances the processing to subsequent step S113.

Steps S113and S114

In step S113, the control unit11changes the tool to be used for the target component from the target tool to the extracted tool. In step S112above, multiple tools that can respond to the component change may be extracted. In this case, the control unit11may thus select the tool to be used for the target component from the extracted multiple tools as appropriate. In an example, the specification information123may include information about the priority of each tool to be used. In this case, the control unit11may select a tool to be used for the target component based on the priority assigned to each tool. In another example, the control unit11may output information about the extracted multiple tools to the output device15and receive, through the input device14, an indication of a tool to be used for the target component from the multiple tools. In this case, the control unit11may select a tool to be used for the target component based on an indication from an operator.

In step S114, the control unit11operates as the command corrector114to correct the command value of the extracted motion in the motion program50to further compensate for the change from the target tool to the extracted tool. In other words, the control unit11corrects the command value of the motion associated with the target tool to respond to the extracted tool. As an example correction method, a rule for the correction may be provided based on certain rules. In this case, information indicating the rule for correction (hereafter referred to as correction rule information) may be prestored in a storage area such as the storage12. The control unit11obtains the correction rule information from the storage area. The control unit11corrects the command value of the motion associated with the target tool to respond to the extracted tool based on the correction rule information. The correction rule information may include, for example, information about the correspondence between parameters associated with the multiple tools, such as functions and variables. In this case, the control unit11may further correct the parameters used in the motion program50based on the correspondence.

This allows generation of a new temporary motion program by further correcting the command values in the motion program50, or in other words, by correcting the command values included in the temporary motion program obtained before the processing in step S114. Upon completion of generating the new temporary motion program, the control unit11returns the processing to step S108. The control unit11then repeats the processing from the simulation of a motion using the new temporary motion program. The processing in steps S110to S114may be performed in any order different from this example. The processing in steps S110to S114may be performed before the processing in step S108.

Step S115

In step S115, the control unit11operates as the command corrector114to further correct the command values included in the motion program50to eliminate any failure (problem) detected through the simulation.

A failure other than any failure resulting from the specifications of the above target tool is to be corrected in step S115. As descried above, an example failure to be corrected is a failure caused by the interference with another object. As an example correction method, similarly to step S114above, a rule for the correction to eliminate failures may be provided based on certain rules. The rule for the correction may be provided as appropriate to avoid interference with another object, for example, changing the path for transporting the gripper25, or changing the orientation of the gripper25gripping or releasing each component. A change in each command value may be determined as appropriate. In this case, the control unit11may further correct the command values included in the motion program50to eliminate any detected failure based on the rule for correction.

When automatically correcting command values is difficult, the control unit11may output information about a motion involving a failure to the output device15and receive corrected command values included in the motion program50through the input device14. In this case, the control unit11may further correct command values included in the motion program50in response to an operator input.

This allows generation of a new temporary motion program by further correcting the command values included in the motion program50, or in other words, by correcting the command values included in the temporary motion program obtained before the processing in step S115. Upon completion of generating the new temporary motion program, the control unit11returns the processing to step S108. The control unit11then repeats the processing from the simulation of a motion using the new temporary motion program.

The correction process from steps S110to S114or steps S110, S111, and S115may be repeated during the simulation in step S108in which a motion failure is detected. In the simulation in step S108, the temporary motion program resulting when no more failure in the motion is detected is produced as the new motion program55. The number of times the correction process is repeated may be defined as appropriate. In this case, the control unit11may stop the processing for the example motion once the number of times the correction process is repeated exceeds a specified number, and may output the generated temporary motion program at that moment through the output device15, and may also notify the operator (user) of any motion that can cause a failure.

Step S116

In step S116, the control unit11operates as the storing unit (not shown) to store the generated new motion program55into a predetermined storage area. The predetermined storage area may be, for example, the RAM in the control unit11, the storage12, an external storage, a storage medium, or a combination of these. The new motion program55may overwrite the original motion program50, or may be stored in a separate file from the original motion program50.

Upon completion of storing the new motion program55, the control unit11ends the procedure associated with the example motion.

Features

As described above, the structure according to the present embodiment can automatically generate, in response to a request for a component change through the processing in steps S101, S102, S106, and S107, a new motion program55by correcting command values included in the motion program50. The generated new motion program55includes command values for motions that are affected by the component change corrected through the processing in steps S106and S107to match the attributes of the replacement second component. The generated new motion program55thus allows the assembly operation of the product3to be performed appropriately after the component change from the first component to the second component. The structure according to the present embodiment reduces, for any change in at least one component included in the product3, the time and labor to generate a new motion program55usable in an assembly operation performed after the component change. Further, the controller1according to the present embodiment allows a relatively inexperienced person to generate a new motion program in response to a component change.

The structure according to the present embodiment allows, through the processing in steps S103to S105, the reference points of the geometric models for the first component and the second component to be defined using the same index when the new motion program55is generated through the processing subsequent to step S106. This thus prevents a motion failure from occurring due to the different indexes used for the reference points of the geometric models when the new motion program55is executed. The structure can reduce the time and labor to generate a new motion program55usable in an assembly operation performed after the component change by automating the operation of adjusting the reference point of the geometric model for each component.

Through the processing in step S110, the structure according to the present embodiment determines whether a failure is to occur in any motion due to the specifications of the target tool for the component to be changed, thus improving the reliability of the generated motion program55. When a failure is to occur in any motion due to the specifications of a tool used for a component to be changed, an appropriate tool for replacement (second tool) can be automatically extracted through the processing in step S112. This reduces the time and labor to correct the generated motion program. The processing in step S114can further reduce the time and labor to generate a new motion program55by automating any operation associated with the tool change.

The attribute information121including information about the geometric attributes of the components allows, in step S107above, automatic generation of the new motion program55corresponding to any change in the geometric attributes of the target component resulting from the replacement of the first component with the second component. The attribute information121further including information about weight allows, in step S107above, automatic generation of the new motion program corresponding to any change in an attribute other than the geometric attributes of the target component resulting from the replacement of the first component with the second component.

4. Modifications

The embodiment of the present invention described in detail above is a mere example of the present invention in all aspects. The embodiment may be variously modified or altered without departing from the scope of the present invention. For example, the embodiment may be modified in the following forms. The same components as those in the above embodiment are hereafter given like numerals, and the operations that are the same as those in the above embodiment will not be described. The modifications described below may be combined as appropriate.

4.1

The processing in steps S113and S114may be eliminated from the procedure in the above embodiment. In this case, the control unit11may output information about any tool extracted through the processing in step S112to the output device15and receive correction of the temporary motion program through the input device14. The control unit11may correct the command value of the motion associated with the target tool to respond to the extracted tool in response to an operator input.

The processing in step S112may further be eliminated from the procedure in the above embodiment. In this case, the tool extractor117may be eliminated from the software configuration of the controller1. After the processing in step S111, the control unit11may output information indicating that the target tool cannot respond to the component change through the output device15and may receive an indication of a tool for replacement through the input device14. In this case, the control unit11may select the tool to be used for an operation associated with the second component, instead of the target tool, based on an indication from an operator.

The processing in steps S110and S111may be eliminated from the procedure in the above embodiment. In this case, the specification determiner116may be eliminated from the software configuration of the controller1. The command value of any motion associated with the tool may be corrected by, for example, a manual operation performed by an operator.

4.2

The processing in steps S103to S105may be eliminated from the procedure in the above embodiment. In this case, the index determiner118and the coordinate corrector119may be eliminated from the software configuration of the controller1. The reference point of the geometric model for each component may be corrected by, for example, a manual operation performed by an operator.

4.3

The processing in steps S108, S109, and S115may be eliminated from the procedure in the above embodiment. In this case, the simulator115may be eliminated from the software configuration of the controller1. The reliability of the generated new motion program55may be determined as appropriate by a manual operation performed by an operator or by using other software.

4.4

In the above embodiment, the component to be changed (first component) may not be a single component. Multiple components may be changed. Each of the first component and the second component may include multiple sub-components. Each of the first component and the second component may include a different number of sub-components.

In step S105, the control unit11may correct, instead of the reference point of the geometric model for the second component, the reference point of the geometric model for the first component to be defined using the same index as the reference point for the second component. In this case, the control unit11may further correct the command value of any motion associated with the first component in the motion program50in response to the reference point of the geometric model for the first component being corrected.

The controller1according to the above embodiment can perform the information processing for controlling the motion of the robot device2and for generating a new motion program55in response to a request for a component change. However, the program generation apparatus may have any other structure. The information processing to control the motion of the robot device2may be eliminated.

FIG.9is a schematic diagram of another example situation in which an embodiment of the present invention is used. In the example ofFIG.9, a controller7is connected to the robot device2to control the motion of the robot device2. The hardware configuration of the controller7may be the same as the controller1described above. A program generation apparatus1A generates a new motion program55in response to a request for a component change. The program generation apparatus1A may have the same hardware and software configurations as the controller1described above. In this manner, the information processing for controlling the motion of the robot device2and the information processing for generating the new motion program55may be performed by separate computers.

As shown inFIG.9, the program generation apparatus1A and the controller7may be connected to each other with a network. The network may be selected as appropriate from, for example, the Internet, a wireless communication network, a mobile communication network, a telephone network, and a dedicated network. In this case, the program generation apparatus1A and the controller7each further include a network interface. This allows various sets of data (e.g., the motion program50before being changed, or the motion program55after being changed) to be communicated between the program generation apparatus1A and the controller7. However, such data may be communicated between the program generation apparatus1A and the controller7with any method other than the example method described above. For example, data may be communicated between the program generation apparatus1A and the controller7using a storage medium.

REFERENCE SIGNS LIST

1controller11control unit12storage13external interface14input device15output device16drive111data obtainer112change receiver113motion extractor114command corrector115simulator116specification determiner117tool extractor118index determiner119coordinate corrector50motion program (before change)55motion program (after change)121attribute information123specification information125robot information81generation program91storage medium2robot device210base211to216joint221to224link25gripper (tool)3product31component (first component)32,33component35component (second component)310,350geometric model315,355local coordinate system317,357reference point