Robot control device and robot control method

Through the axis motor control unit, obstacle model storage unit and motion instruction generation unit of the robot control device, a trajectory is generated to avoid obstacle collisions, and motion instructions representing the axis and other axes are selected. This solves the collision and time extension problems caused by improper user specifications, and achieves effective collision avoidance and shortened motion time.

CN115702064BActive Publication Date: 2025-10-10MITSUBISHI ELECTRIC CORP
View PDF 3 Cites 0 Cited by

Patent Information

Application Number
CN202080102378.6
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Filing Date
2020-07-08
Publication Date
2025-10-10
Estimated Expiration
2040-07-08

AI Technical Summary

Technical Problem

In the prior art, a robot control device requires the user to specify appropriate transit points to avoid collisions and shorten the movement time. However, if the user specifies improperly, the movement time may be prolonged.

Method used

Through the axis motor control unit, obstacle model storage unit, robot model storage unit and motion instruction generation unit of the robot control device, a trajectory to avoid obstacle collision is generated, and motion instructions representing the axis and other axes are selected, and the motion time is adjusted to avoid collision and shorten the movement time.

Benefits of technology

Even without specifying appropriate transit points, the robot can effectively avoid collisions with obstacles and reduce movement time.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN115702064B_ABST
    Figure CN115702064B_ABST
Patent Text Reader

Abstract

A robot control device (200) has: a shaft motor control section that controls each shaft motor that drives each shaft of a robot (101); and a motion command generation section (24) that generates a first motion command to each shaft motor in which a motion time from a motion start point to a motion end point of the robot (101) without considering an obstacle becomes the shortest, and selects a shaft in which the motion time becomes the longest when the motion is performed by the first motion command among the shafts as a representative shaft, the first motion command includes a motion command to other shafts than the representative shaft, that is, other shaft commands, and a motion command to the representative shaft, that is, a representative shaft command, the motion command generation section (24) adjusts the other shaft commands so that the motion time of the other shaft commands is shortened, and in a case where it is determined that a first track corresponding to a second motion command including the representative shaft command and the adjusted other shaft commands is a track in which collision of the robot (101) and the obstacle is avoided, the second motion command corresponding to the first track is output to the shaft motor control section.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present invention relates to a robot control device, a robot control method and a robot control program for controlling a robot. Background Art

[0002] One of the robot control devices that controls a robot is a device that controls the robot, which holds and transports a workpiece using a fingertip tool. This robot control device generates a trajectory that prevents collisions between the robot, the workpiece, and other moving objects, including the fingertip tool, and obstacles, and moves the workpiece along the generated trajectory.

[0003] The control device described in Patent Document 1 generates a cam curve for each motor that minimizes the operating time of the motor used to transport the workpiece when moving it from a starting point to an end point. The cam curve for the motor with the longest operating time among multiple motors is retained. The control device sets a position between the starting point and the end point where the workpiece does not collide with an obstacle as a transit point, and adjusts the cam curves so that the cam curves of the remaining motors pass through the transit point, thereby shortening the movement time.

[0004] Patent Document 1: Japanese Patent Application Laid-Open No. 2014-37029 Summary of the Invention

[0005] However, in the technology of Patent Document 1, the control device adjusts the motion command of each axis so that the axis passes through the intermediate point specified by the user. Therefore, if the user does not specify an appropriate intermediate point, the movement time becomes longer.

[0006] The present invention has been made in view of the above-mentioned circumstances, and an object of the present invention is to provide a robot control device that can avoid collisions between a robot and obstacles and reduce movement time even without the user specifying appropriate transit points.

[0007] To solve the above-mentioned problems and achieve the purpose, the robot control device of the present invention comprises: an axis motor control unit that controls the axis motors that drive each of the multiple axes that move the robot's joints; and a storage unit that stores robot information (i.e., robot information), endpoint information (i.e., information about a start point for starting a movement at a specific position of the robot and an end point for ending the movement at the specific position of the robot), and obstacle information (i.e., information about obstacles relative to the robot). Furthermore, the robot control device of the present invention comprises an action command generation unit that, based on the robot information and endpoint information, generates an action command (i.e., a first action command) for each axis motor that minimizes the first action time required to move the robot from the start point to the end point of the movement without considering any obstacles. The robot control device selects the axis with the longest action time when actuated by the first action command as a representative axis. The first action command includes an other-axis command (i.e., an action command for an axis other than the representative axis) and a representative-axis command (i.e., an action command for the representative axis). The motion instruction generation unit adjusts other axis instructions based on the robot information and endpoint information so as to shorten the motion time of the other axis instructions, i.e., the second motion time. When the motion instruction generation unit determines, based on the obstacle information, that the first track corresponding to the second motion instruction including the representative axis instruction and the adjusted other axis instructions is a track for avoiding collision between the robot and the obstacle, the motion instruction generation unit outputs the second motion instruction corresponding to the first track to the axis motor control unit.

[0008] Effects of the Invention

[0009] The robot control device according to the present invention has the effect of avoiding collision between the robot and an obstacle and reducing movement operation time even without the user specifying an appropriate transit point. BRIEF DESCRIPTION OF THE DRAWINGS

[0010] Figure 1 This is a diagram showing a schematic configuration of a robot system including the robot control device according to the first embodiment.

[0011] Figure 2 This is a diagram showing an example of a robot controlled by the robot control device according to the first embodiment.

[0012] Figure 3 This is a diagram showing the configuration of a robot control device according to the first embodiment.

[0013] Figure 4 This is a flowchart showing the processing procedure for trajectory generation performed by the robot control device according to the first embodiment.

[0014] Figure 5This is a diagram for explaining representative axes selected by the robot controller according to the first embodiment.

[0015] Figure 6 This is a diagram for explaining the route area set by the robot control device according to the first embodiment.

[0016] Figure 7 This is a flowchart showing a detailed processing procedure of the robot control device according to the first embodiment for generating a trajectory based on a transit area.

[0017] Figure 8 This is a diagram for explaining a process of generating a temporary operation command for another axis by the robot controller according to the first embodiment.

[0018] Figure 9 This is a diagram for explaining a temporary relay point used when the robot controller according to the first embodiment generates a temporary operation command for another axis.

[0019] Figure 10 This is a flowchart showing the processing procedure of adjusting the motion commands for other axes by the robot controller according to the first embodiment.

[0020] Figure 11 This is a diagram for explaining a process of shifting the acceleration / deceleration timing of the motion commands for other axes by the robot controller according to the first embodiment.

[0021] Figure 12 This is a diagram for explaining a process in which the robot controller according to the first embodiment shifts the axis angle at a temporary relay point of an operation command for another axis to shorten the operation time.

[0022] Figure 13 This is a diagram for explaining a process in which the robot controller according to the first embodiment adjusts the motion command for the representative axis by shifting the start timing of the motion command for the representative axis.

[0023] Figure 14 This is a diagram for explaining a process in which the robot controller according to the first embodiment adjusts the motion command of the representative axis by changing the maximum speed of the representative axis in motion.

[0024] Figure 15 This is a diagram showing a schematic configuration of a robot system including a robot control device according to a second embodiment.

[0025] Figure 16 This is a diagram for explaining the route area set by the robot control device according to the second embodiment.

[0026] Figure 17 This is a flowchart showing a detailed processing procedure of the robot control device according to the second embodiment for generating a trajectory based on a transit area.

[0027] Figure 18 This is a diagram for explaining a process of generating a temporary operation command for another axis by the robot controller according to the second embodiment.

[0028] Figure 19 This is a flowchart showing the processing procedure of adjusting the motion commands for other axes by the robot controller according to the second embodiment.

[0029] Figure 20 This is a diagram for explaining the continuous direction motion instructions integrated by the robot control device involved in the second embodiment.

[0030] Figure 21 This is a diagram for explaining a process in which the robot controller according to the second embodiment shifts the acceleration and deceleration timings of the motion commands for other axes to shorten the motion time.

[0031] Figure 22 This is a diagram for explaining a process in which the robot control device according to the second embodiment shifts the axis angle at a temporary relay point of an operation command for another axis in order to shorten the operation time.

[0032] Figure 23 This is a diagram for explaining a process in which the robot controller according to the second embodiment adjusts the motion command for the representative axis by shifting the start timing of the motion command for the representative axis.

[0033] Figure 24 This is a diagram for explaining a process in which the robot controller according to the second embodiment adjusts the motion command of the representative axis by collectively changing the maximum speed of the representative axis in motion.

[0034] Figure 25 This is a diagram for explaining a process in which the robot controller according to the second embodiment adjusts the motion command of the representative axis by partially changing the maximum speed of the representative axis in motion.

[0035] Figure 26 This is a diagram for explaining a process in which the robot control device according to the second embodiment changes the route area to a space separated from the interference point by a specific distance.

[0036] Figure 27This is a diagram for explaining a process of changing the route area to a position that does not include obstacles by the robot control device according to the second embodiment.

[0037] Figure 28 This is a flowchart showing the processing procedure for trajectory generation performed by the robot control device according to the third embodiment.

[0038] Figure 29 This is a flowchart showing the processing procedure of adjusting the motion commands for other axes by the robot controller according to the third embodiment.

[0039] Figure 30 This is a diagram for explaining operation commands for motors of respective axes used in the robot control device according to the third embodiment.

[0040] Figure 31 This is a flowchart showing the processing procedure of adjusting the motion commands for all axes by the robot control device according to the third embodiment.

[0041] Figure 32 This is a diagram showing the hardware configuration of the robot control device according to the first to third embodiments. DETAILED DESCRIPTION

[0042] Hereinafter, a robot control device, a robot control method, and a robot control program according to embodiments of the present invention will be described in detail with reference to the accompanying drawings.

[0043] Implementation method 1.

[0044] Figure 1 This figure schematically illustrates the configuration of a robot system including a robot controller according to Embodiment 1. Robot system 100 includes robot 101 and robot controller 200 that controls robot 101. Robot 101 is a device that holds and transports a workpiece 103 and includes a fingertip tool 102 that holds workpiece 103. Robot 101 is used for product production, for example.

[0045] The workpiece 103 is the object to be transported by the robot 101. The robot control device 200 is a computer that controls the motors of the robot 101, thereby controlling the movement of the axes connected to the motors. The robot control device 200 controls the movement of the axes of the robot 101, thereby controlling the position of the fingertip tool 102.

[0046] In the following description, the fingertip tool 102 in the state of holding the workpiece 103 will be referred to as the fingertip tool 102. Therefore, the robot control device 200 controls the robot 101 so that the robot 101 including the fingertip tool 102 does not collide with the obstacle 31. In the following description, the collision between the fingertip tool 102 and the obstacle 31 is described as an example of the collision between the robot 101 and the obstacle 31. That is, the robot control device 200 of embodiment 1 controls the robot 101 so that the fingertip tool 102 does not collide with the obstacle 31. Specifically, the robot control device 200 controls the robot 101 so that the fingertip tool 102 does not collide with the obstacle 31 when the fingertip tool 102 moves from the action starting point P S 移动至动作终点P G At this time, the robot 101 is controlled so that the fingertip tool 102 does not collide with the obstacle 31 .

[0047] Figure 2 1 is a diagram showing an example of a robot controlled by the robot control device according to Embodiment 1. Figure 2 中,图示出机器人101所具有的轴。在 Figure 2 In the description, the robot 101 has six axes, namely the first axis A1 to the sixth axis A6. However, the number of axes of the robot 101 may be 5 or less, or 7 or more. The robot 101 moves the first axis A1 to the sixth axis A6 to move the fingertip tool 102.

[0048] Figure 3 This diagram shows the configuration of a robot control device according to Embodiment 1. The robot control device 200 includes an obstacle model storage unit 21, a robot model storage unit 22, an endpoint storage unit 23, an operation command generation unit 24, and a motor control unit for each axis. The robot 101 includes a motor and an encoder for each axis.

[0049] The motor control units for each axis of the robot control device 200 are arranged in the same number as the number of axes of the robot 101. Therefore, the motor control units for each axis of the robot control device 200 are six, namely the first axis motor control unit B1 to the sixth axis motor control unit B6. Figure 3 In the figure, the second-axis motor control unit B2 to the fifth-axis motor control unit B5 are omitted.

[0050] The motors for each axis of the robot 101 are arranged in the same number as the number of axes of the robot 101. Therefore, the motors for each axis of the robot 101 are six, namely the first axis motor M1 to the sixth axis motor M6. Figure 3 In the figure, the second-axis motor M2 to the fifth-axis motor M5 are omitted.

[0051] The axis encoders of the robot 101 are arranged in the same number as the axes of the robot 101. Therefore, the axis encoders of the robot 101 are six, namely the first axis encoder E1 to the sixth axis encoder E6. Figure 3 In the figure, the illustration of the 2nd axis encoder E2 to the 5th axis encoder E5 is omitted.

[0052] The obstacle model storage unit 21 stores obstacle information for all obstacles within the robot system 100, including obstacle 31. The obstacle model's obstacle information represents the shape and location of obstacle 31. An example of this obstacle information is 3D CAD (Three Dimensional Computer Aided Design) data for obstacle 31. Alternatively, the obstacle information may be the shape and location information of a simplified external model of obstacle 31.

[0053] The robot model storage unit 22 stores robot information related to the robot 101. The robot information includes at least shape information indicating the shape of the robot 101, size information indicating the dimensions of the robot 101, the maximum rotational speed achievable by the motors on each axis, torque limit information indicating the torque limit of the motors on each axis, and information on the angular range of the rotational angle achievable by the motors on each axis.

[0054] 端点存储部23对与动作起点P S 及动作终点P G The relevant information is the endpoint information. The endpoint information contains the action starting point P S The coordinates of the fingertip tool 102 at the position, the posture information of the fingertip tool 102 and the joint angle information of each axis of the robot 101. In addition, the endpoint information includes the action endpoint P G The coordinates of the fingertip tool 102 at the position, information on the posture of the fingertip tool 102 and information on the joint angles of the axes of the robot 101 are obtained.

[0055] The motion command generator 24 is connected to the obstacle model storage 21, the robot model storage 22, and the endpoint storage 23. The motion command generator 24 reads obstacle information from the obstacle model storage 21, robot information from the robot model storage 22, and endpoint information from the endpoint storage 23.

[0056] The motion command generating unit 24 generates a motion command for moving from the designated motion starting point P while avoiding the obstacle 31 disposed in the robot system 100 based on the obstacle information, the robot information, and the endpoint information. S 移动至动作终点P GThe trajectory of the fingertip tool 102 at the time of the collision is determined. Specifically, the motion command generation unit 24 generates a trajectory that satisfies the constraints imposed on the robot 101 based on the robot information and endpoint information. Based on the generated trajectory and obstacle information, the motion command generation unit 24 determines whether the trajectory collides with the obstacle 31. Hereinafter, the obstacle information, robot information, and endpoint information may be referred to as motion information. The motion command generation unit 24 outputs motion commands for the motors of each axis corresponding to the generated trajectory to the motor control unit for each axis.

[0057] Each axis motor in the robot 101 is connected to an encoder for each axis. The encoder for each axis acquires joint angle data, which is data of the joint angle of the motor for each axis, in real time and feeds back the data to the control unit for each axis motor.

[0058] The motor control unit for each axis performs feedback control on the motor for each axis using the joint angle data transmitted from the encoder for each axis.

[0059] Next, the procedure for generating the trajectory of the fingertip tool 102 by the motion command generating unit 24 will be described. Figure 4 This is a flowchart showing the processing procedure of trajectory generation performed by the robot control device according to the first embodiment.

[0060] The motion instruction generation unit 24 reads the motion information (step S110). The motion information includes obstacle information, robot information, and endpoint information. Specifically, the motion instruction generation unit 24 reads the obstacle information from the obstacle model storage unit 21, reads the robot information from the robot model storage unit 22, and reads the endpoint information from the endpoint storage unit 23. The endpoint information includes the motion starting point P S and the end point P G The joint angles of the respective axes of the robot 101 at .

[0061] Next, the motion instruction generating unit 24 generates a S To the end point P G The joint interpolation trajectory R0 is the joint interpolation trajectory R0 obtained by moving the fingertip tool 102 from the motion starting point P without considering the obstacle 31. S Move to the end point P G The trajectory that minimizes the operating time of the robot 101 until the end.

[0062] The motion command generation unit 24 generates motion commands for each axis based on the joint interpolation trajectory R0. The motion command corresponding to the joint interpolation trajectory R0 is the first motion command. This first motion command includes motion commands for other axes (other-axis commands) and motion commands for a representative axis (representative-axis commands). The motion time required to operate the robot 101 according to the first motion command is the first motion time.

[0063] In the first embodiment, a case will be described where the robot controller 200 uses, as a motion command, a speed command value for each axis included in the robot 101. The motion command generation unit 24 sets the generated joint interpolation trajectory R0 as a temporary trajectory.

[0064] Next, the motion command generator 24 selects the axis that contributes most to the motion time of the temporary track, i.e., the representative axis, from among the axes. Specifically, the motion command generator 24 selects the representative axis that determines the motion time of the temporary track from among the axes (step S130). Furthermore, the motion command generator 24 selects the motion command for the representative axis from among the motion commands for each axis included in the temporary track.

[0065] In the first embodiment, the representative axis is defined as the axis from the action starting point P S To the end point P G The axis with the largest angular change relative to the maximum speed that each axis motor can output is the axis with the largest angular change relative to the maximum speed that each axis motor can output. S To the end point P G When the operation is performed in the shortest time so far, the axis that contributes most to the operation time can be regarded as the axis with the longest operation time.

[0066] The representative axis is moving from the starting point P without considering the obstacle 31. S To the end point P G In the case of a movement that minimizes the time required to achieve the desired result, the representative axis is the axis whose angular velocity of the axis motor driving the axis matches the maximum achievable speed of the axis motor during movement, when the angular change of at least one axis is sufficiently large. Furthermore, when the angular change of all axes is small, the representative axis is the axis whose maximum speed achieved during movement is the highest, with a ratio of less than 1 to the maximum achievable speed of the axis motor. In the following description, axes other than the representative axis may be referred to as "other axes."

[0067] Figure 5 This is a diagram for explaining representative axes selected by the robot control device according to Embodiment 1. Here, the representative axes when the robot 101 has three axes will be explained. Figure 5 The graph shows changes in angular velocity corresponding to velocity command values ​​of the representative axis and other axes when the robot 101 is operated along the joint interpolation trajectory R0.

[0068] Hereinafter, the representative axis or other axis may be referred to as axis j. In addition, the representative axis may be referred to as representative axis j'. Figure 5In the upper part, a graph for the angular velocity of the representative axis j', a graph for the angular velocity of an axis other than the representative axis j', i.e., other axis j_b, and a graph for the angular velocity of an axis other than the representative axis j', i.e., other axis j_c are shown. The horizontal axis of each graph is time, and the vertical axis is the angular velocity of the axis.

[0069] Figure 5 The graph shown in the upper part is a graph of the angular velocity corresponding to the velocity command value for the representative axis j', the graph shown in the middle part is a graph of the angular velocity corresponding to the velocity command value for the other axis j_b, and the graph shown in the lower part is a graph of the angular velocity corresponding to the velocity command value for the other axis j_c. The action command generation section 24 selects, as the representative axis j', an axis j that satisfies the following equation (1).

[0070] [Equation 1]

[0071]

[0072] Here, θ Sj is the angle of the axis j at the action start point P S , θ Gj is the angle of the axis j at the action end point P G , and v_max j is the maximum speed that the axis motor of the axis j can achieve. Equation (1) is an equation for selecting the representative axis j' that determines the action time of the temporary action. The right side of equation (1) shows to what extent the amount of change in the angle of the axis j is relative to the maximum speed v_max j that the axis motor of the axis j can achieve. The axis j for which the value obtained by dividing the amount of change in the angle by the maximum speed v_max j becomes the largest becomes the representative axis j'. That is, the axis for which the proportion of the amount of change in the angle of the axis j relative to the maximum speed v_max j that the axis motor can output becomes the largest is the representative axis.

[0073] As shown in the graph of the angular velocity corresponding to the velocity command value for the representative axis j', in the case where the amount of change in the angle of the representative axis j' is sufficiently large, the maximum speed v- j′ of the axis motor of the representative axis j' that is achieved in the action coincides with the maximum speed v_max j′ that the axis motor of the representative axis j' can achieve. The "-" is a connecting sign, and is attached to the upper part of v- j′ . Hereinafter, likewise, the "-" is a connecting sign throughout. The action command generation section 24 calculates, in the temporary track, the maximum speed v- j of the motor achieved by the other axis other than the representative axis j' based on the following equation (2).

[0074] [Equation 2]

[0075]

[0076] exist Figure 5 In the example, the maximum speed that the motor of the other axis j_b can achieve is expressed as v_max. j_b Indicates that the maximum speed that the motor of the other axis j_c can achieve is v_max j_c In addition, in the temporary track, the maximum speed of the other axis j_b achieved in the action of the other axis j_b is expressed by the maximum speed v- j_b Indicates that the maximum speed of the other axis j_c achieved in the motion of the other axis j_c in the temporary track is reduced to the maximum speed v - j_c express.

[0077] When the motion command generator 24 selects the motion command for the representative axis, it initializes the first repetition counter. Specifically, the motion command generator 24 sets i = 1 to the first repetition counter (step S140). The first repetition counter counts the number of repetitions when the process of changing the routed area is repeated, as described later. The first repetition counter is used in the process of step S220.

[0078] Next, the motion command generating unit 24 sets candidates for the transit area, and specifies the transit area through which the specific position of the fingertip tool 102 passes from among the candidates (step S150 ).

[0079] Figure 6 This is a diagram for explaining the passing area set by the robot control device involved in embodiment 1. Figure 6 , a via area 601 and a via area 603 are shown as examples of via area candidates.

[0080] Candidates for the route area are set in advance by the user based on the arrangement of the obstacles 31. Alternatively, the action command generation unit 24 may set candidates for the route area to areas where no obstacles 31 exist based on the obstacle information acquired from the obstacle model storage unit 21.

[0081] When specifying a transit area, the motion command generation unit 24 specifies one transit area from a plurality of transit area candidates. Here, the case where the motion command generation unit 24 specifies transit area 601 will be described. The motion command generation unit 24 generates a trajectory 602 that causes a specific position of the fingertip tool 102 to pass through an arbitrary position in transit area 601 at an arbitrary time.

[0082] The motion command generation unit 24 generates the transit areas 601 and 603 and the track 602 for the XYZ space, which is the robot motion space based on the entire robot 101. Alternatively, the motion command generation unit 24 may generate the transit areas 601 and 603 and the track 602 for the joint angle space based on the joint angles of the robot 101.

[0083] After specifying the transit area, the motion command generator 24 initializes the second repetition counter. Specifically, the motion command generator 24 sets i2 = 1 to the second repetition counter (step S160). The second repetition counter counts the number of times the process of generating a trajectory for a transit area is repeated. The second repetition counter is used in the process of step S210.

[0084] After initializing the second repetition counter, the motion command generator 24 generates a trajectory based on the transit area selected in step S150. In this case, the motion command generator 24 generates motion commands for axes other than the representative axis and a motion command for the representative axis based on the generated trajectory.

[0085] If the motion time of the motion command for the other axis is longer than the first motion time, the motion command generator 24 adjusts the motion command for the other axis to generate a trajectory different from the joint interpolation trajectory R0, thereby shortening the motion time of the generated trajectory (step S170). The motion time of the robot 101 corresponding to the motion command for the other axis is the second motion time. In step S170, the motion command generator 24 adjusts the motion command for the other axis to shorten the second motion time.

[0086] The motion command that includes the adjusted motion commands for the other axes and the unadjusted motion command for the representative axis is the second motion command. The trajectory corresponding to this second motion command is the first trajectory. After adjusting the motion commands for the other axes, the motion command generator 24 generates a trajectory using the adjusted motion commands. This trajectory may be used to avoid obstacle 31.

[0087] In addition, the motion instruction generation unit 24 determines whether the generated trajectory meets specific conditions. Specifically, the motion instruction generation unit 24 determines whether the generated trajectory, i.e., the generated trajectory, avoids the obstacle 31 based on the obstacle information (step S180). In addition, the joint interpolation trajectory R0 is the trajectory corresponding to the shortest action time, so the action time in the generated trajectory will not be shorter than that in the joint interpolation trajectory R0. In addition, here, since only the motion instructions of other axes are adjusted, the action time in the generated trajectory will not be longer than that in the joint interpolation trajectory R0. That is, at this moment, the action time in the generated trajectory is the same as the action time in the joint interpolation trajectory R0, which becomes the shortest action time.

[0088] If the generated trajectory avoids obstacle 31 (step S180, Yes), the motion command generation unit 24 jumps to step S260. Specifically, the motion command generation unit 24 outputs the motion command corresponding to the generated trajectory with the shortest action time. The generated trajectory stored in the motion command generation unit 24 here is the generated trajectory with the shortest action time. Therefore, the motion command generation unit 24 outputs the motion command corresponding to the first trajectory that avoids obstacle 31, among the second motion commands.

[0089] If the generated trajectory interferes with obstacle 31 (step S180, No), the motion command generation unit 24 adjusts the motion command for the representative axis and generates the trajectory using the adjusted motion command (step S190). The motion command including the adjusted motion commands for the other axes and the adjusted motion command for the representative axis is the third motion command. The motion time of robot 101 generated by this third motion command is the third motion time, and the trajectory corresponding to the third motion command is the second trajectory. Hereinafter, the motion command adjusted in steps S170 and S190 may be referred to as the adjusted motion command.

[0090] The motion command generation unit 24 determines whether the generated trajectory satisfies specific conditions. Specifically, the motion command generation unit 24 generates the trajectory based on the motion commands for the other axes and the representative axis. Furthermore, the motion command generation unit 24 determines whether the generated trajectory avoids obstacle 31 and whether the motion time in the generated trajectory equals the motion time in the joint interpolation trajectory R0 (step S200). At this point, the motion command generation unit 24 determines whether the generated trajectory avoids obstacle 31 based on the obstacle information.

[0091] If the conditions of step S200 are met (step S200, Yes), the motion command generation unit 24 outputs the motion command corresponding to the generated trajectory with the shortest motion time to the control unit of each axis motor (step S260). The motion command generation unit 24 calculates the motion time based on the stored generated trajectory. The motion command generation unit 24 selects the shortest motion time from the various motion times and outputs the motion command corresponding to the generated trajectory with the shortest motion time. In this case, the motion command generation unit 24 outputs the motion command corresponding to the second trajectory with the shortest motion time, which avoids the obstacle 31, among the third motion commands.

[0092] If the condition of step S200 is not satisfied (step S200, No), the motion command generating unit 24 determines whether the count value of the second repetition counter has reached the set maximum value. In other words, the motion command generating unit 24 determines whether i2 = the maximum number of repetitions (step S210).

[0093] When i2 does not equal the maximum number of repetitions (step S210 , No), the motion command generating unit 24 adds 1 to i2 (step S230 ), and returns to the process of step S170 .

[0094] In this case, the motion command generator 24 changes the motion command parameters representing the motion conditions of the robot 101 and executes the process of step S170. That is, the motion command generator 24 searches for a motion command that can avoid collisions while changing the motion command parameters. Specifically, the motion command generator 24 changes at least one of the following motion command parameters: the number of angle changes for each axis motor; the start timing of each angle change; the maximum speed during each angle change; the length of time each axis motor outputs maximum speed (i.e., the output time); the acceleration during each angle change; and the deceleration during each angle change.

[0095] Thus, the motion command generator 24 executes the process of step S170 multiple times, and thus can execute the process of step S170 under multiple conditions. One angle change of each axis motor is an action that accelerates or decelerates from a state where the speed of each axis motor is zero until the speed of each axis motor returns to zero again.

[0096] If i2 = the maximum number of repetitions (step S210, Yes), the motion command generator 24 determines whether the count value of the first repetition counter has reached the set maximum value. In other words, the motion command generator 24 determines whether i = the maximum number of repetitions (step S220).

[0097] When i=maximum number of repetitions (step S220 , Yes), the motion command generation unit 24 outputs a motion command corresponding to the generated trajectory of the shortest motion time to each axis motor control unit (step S260 ).

[0098] If i does not equal the maximum number of repetitions (step S220, No), the motion command generator 24 changes the route area (step S240). Specifically, the motion command generator 24 specifies a different route area from the set route area. Furthermore, the motion command generator 24 adds 1 to i (step S250) and returns to step S160.

[0099] Here, a description will be given of a process in which the motion command generating unit 24 generates a trajectory based on the transit area. Figure 7 This is a flowchart showing the detailed processing procedures of the robot control device according to the first embodiment for generating a trajectory based on the passing area. The processing of steps S310 to S430 described below is the same as that in Figure 4 The processing corresponds to steps S170 to S200 described in .

[0100] The motion command generating unit 24 initializes the second repetition counter, that is, substitutes i2=1 into the second repetition counter (step S160 ).

[0101] If the motion command generating unit 24 substitutes i2=1 for the second repetition counter, the motion command generating unit 24 will generate a temporary relay point (hereinafter referred to as a temporary relay point P) that the fingertip tool 102 passes through at any point in the passing area. R ) to set (step S310).

[0102] Furthermore, the motion command generating unit 24 determines the motor angle of each axis motor of the robot 101 so that the specific position of the fingertip tool 102 reaches the temporary relay point P R In other words, the action command generating unit 24 determines the temporary relay point P R The motor angle of each axis motor of the robot 101 at the location (step S320). That is, the motion command generating unit 24 generates the motor angle of each axis motor of the robot 101 at the location (step S320). R , set the group of joint angles including the fingertip tool 102.

[0103] In addition, the operation command generating unit 24 may be replaced by a user as a temporary relay point P R , specifies any position in the passing area and the posture of the robot 101 at that time. In addition, the action command generating unit 24 can also serve as a temporary relay point P R The points in the passing area are randomly selected. Temporary relay point P R It is not necessary to pass through it on the track, but is temporarily specified for the calculation of the initial track.

[0104] Next, the motion command generating unit 24 specifies the angular velocity of each axis motor in the motor angle of each axis motor determined in step S320. That is, the motion command generating unit 24 specifies the angular velocity of each axis motor through the temporary relay point P by the determined joint angle. R The angular velocity specified here is an angular velocity temporarily set for calculating the initial trajectory.

[0105] Next, the action command generating unit 24 generates an action command based on the endpoint information and the designated temporary relay point P. R The position and angular velocity specified at the starting point P S , action end point P G , temporary relay point P RThe maximum driving torque that can be used to drive each axis is calculated (step S340). Next, the motion command generating unit 24 generates a temporary motion command for the axis other than the representative axis, that is, the other axis (step S350).

[0106] Figure 8 This is a diagram for explaining a process of generating a temporary operation command for another axis by the robot controller according to the first embodiment. Figure 9 This is a diagram for explaining a temporary relay point used when the robot controller according to the first embodiment generates a temporary motion command for another axis. Figure 9 As shown, the temporary relay point P R Set within the transit area 601.

[0107] Figure 8 The graph shown in the upper part is a graph for the angular velocity of the representative axis j'. In addition, the graph shown in the middle is a graph for the angular velocity of the other axis j_b at the starting point P of the action. S The graph of the angular velocity when the maximum driving torque is applied to the acceleration is shown in the figure below. The graph of the angular velocity when the other axis j_b is applied to the temporary relay point P is shown in the figure below. R Graphs of angular velocity when the vehicle is accelerated by the maximum driving torque. The horizontal axis of each graph is time, and the vertical axis is angular velocity.

[0108] First, yes Figure 8 The motion command generating unit 24 uses the motion command of the representative axis j′ of the joint interpolation trajectory R0 to obtain the motion starting point P S To temporary relay point P R The action time t1 to the temporary relay point P R To the end point P G The action time t2 is from the action starting point P S The angle θ of the representative axis j′ Sj′ To temporary relay point P R The angle θ of the representative axis j′ Rj′ The time when the angle change amount until t=0 coincides with the integrated value of the motion command of the representative axis j′ from time t=0 to t1 is t1.

[0109] Next, use Figure 8 The diagram in the middle of FIG will explain a method for generating a temporary motion command for an axis j_b other than the representative axis j′. The motion command generating unit 24 generates a temporary motion command for an axis j_b other than the representative axis j′ at the motion starting point P. S The slope of the command line L1 is calculated when the vehicle is accelerated by the maximum driving torque. RThe slope of the command line L2 when deceleration is performed by the maximum driving torque is calculated. Furthermore, the motion command generation unit 24 generates a command line L3 indicating the maximum speed achievable by the motors of each axis of the robot 101 .

[0110] The motion command generation unit 24 calculates the area S1 of the trapezoid enclosed by the four lines: the command lines L1, L2, and L3, and the line with an angular velocity of 0. Here, the intersection of the command line L1 and the line with an angular velocity of 0 is at time t = 0. The motion command generation unit 24 determines the time at which the command line L2 and the line with an angular velocity of 0 intersect so that the value of the area S1 is equal to the value of the motion starting point P from the axis j_b. S To temporary relay point P R The absolute value of the angle change until |θ Rj -θ Sj The operation time from time t=0 to the time when the command straight line L2 and the straight line with angular velocity 0 intersect is the operation time t. 1j Therefore, the intersection point between the command line L2 and the line of angular velocity 0 is at time t 1j θ Sj is the starting point of the action P S The angle of the axis j_b at Rj It is a temporary relay point P R The angle of the axis j_b at .

[0111] If the slope of the command line L1 is set to a (>0) and the slope of the command line L2 is set to b (<0), the motion command generating unit 24 can calculate the intersection of the command line L2 and the line of angular velocity 0, that is, the time t 1j Perform calculations.

[0112] [Formula 3]

[0113]

[0114] Here, in t 1j > t1, the trapezoidal waveform surrounded by the four straight lines becomes S To temporary relay point P R The motion command of axis j_b up to now.

[0115] On the other hand, in t 1j When t1 is less than or equal to t1, the motion command generating unit 24 increases the maximum speed during the motion from v_max j Changed to ovrd 1j *v_max j , so that from the starting point P S To temporary relay point P RThe operation time until t1 is t2. The operation command generating unit 24 generates the operation command by 1j Solve the following equation (4) to get ovrd 1j *v_max j Perform calculations.

[0116]

[0117] Next, Figure 8 The operation command generating unit 24 generates the operation command from the temporary relay point P R The slope of the command line L5 is calculated when the vehicle is accelerated by the maximum driving torque. G The slope of the command line L6 when deceleration is performed by the maximum driving torque is calculated. Based on this, the motion command generation unit 24 generates a command line L7 indicating the maximum speed achievable by the motors of each axis of the robot 101.

[0118] The motion command generating unit 24 calculates the area S2 of a trapezoid surrounded by four straight lines: the command straight lines L5 , L6 , and L7 , and the straight line of angular velocity 0.

[0119] The motion command generating unit 24 determines the time t t , which is the intersection point between the command line L6 and the line of angular velocity 0. 1j +t 2j , so that the value of S2 is equal to the temporary relay point P from axis j_b R To the end point P G The absolute value of the angle change until |θ Gj -θ Rj |. θ Gj is the end point of the action P G The angle of the axis j_b at Rj It is a temporary relay point P R Here, the intersection point between the straight line of angular velocity 0 and the command straight line L5 is at time t 1j Therefore, from the moment t 1j Until the time t that becomes the intersection point between the command straight line L6 and the straight line of angular velocity 0 1j +t 2j The action time up to 2j .

[0120] If the slope of the command line L5 is set to c (> 0) and the slope of the command line L6 is set to d (< 0), the motion command generating unit 24 can calculate the intersection of the command line L6 and the line of angular velocity 0, i.e., the time t 1j +t 2jThe calculation is performed.

[0121] [Formula 5]

[0122]

[0123] Here, in the case where t 2j > t2, the trapezoidal waveform surrounded by the four lines of the command straight lines L5, L6, L7, and the straight line of the angular velocity 0 becomes a movement command of the axis j_b from the temporary relay point P R to the action end point P G .

[0124] On the other hand, in the case where t 2j ≤ t2, the movement command generation section 24 changes the maximum speed in the movement from v_max j to ovr 2j * v_max j so that the movement time from the temporary relay point P R to the action end point P G becomes t2. The movement command generation section 24 calculates ovr 2j * v_max 2j by solving the following Formula (6) with respect to ovr j .

[0125] [Formula 6]

[0126]

[0127] The processing of the step S360 described below corresponds to the processing of the step S170 described in Figure 4 , and the processing of the steps S370 to S380 corresponds to the processing of the step S180 described in Figure 4 .

[0128] The movement command generation section 24 adjusts the movement command of the other axis after generating the temporary movement command of the other axis (step S360). The movement command generation section 24 generates a track in which the movement command of the other axis is adjusted. The details of the processing of the step S360 of adjusting the movement command of the other axis are described later. In the embodiment 1, the movement command of the representative axis is adjusted after the movement command of the other axis is adjusted.

[0129] Next, the movement command generation section 24 calculates the movement time in the track based on the movement command of the other axis in which the adjustment is completed and the movement command of the representative axis, and determines whether the movement time in the track satisfies a certain condition.

[0130] Specifically, the motion command generation section 24 determines whether the generated trajectory for the robot 101 avoids the obstacle 31 in a case where the robot 101 is caused to act based on the adjusted motion command of the other axis and the motion command of the representative axis (step S370). That is, the motion command generation section 24 determines whether the entire robot 101, that is, the robot 101 main body, the fingertip tool 102, and the workpiece 103 collide with the obstacle 31 in a case where the robot 101 is caused to act by the trajectory corresponding to the motion command.

[0131] In a case where the generated trajectory interferes with the obstacle 31 (step S370, No), the motion command generation section 24 does not cause the generated trajectory to be stored as a candidate of the output trajectory, but adjusts the motion command of the representative axis (step S400). The motion command generation section 24 can adjust the motion command of the representative axis by shifting the start timing of the motion command, or can adjust the motion command of the representative axis by changing the maximum speed in the motion.

[0132] On the other hand, in a case where the generated trajectory avoids the obstacle 31 (step S370, Yes), the motion command generation section 24 stores the generated trajectory as a candidate of the output trajectory (step S380). In addition, the motion command generation section 24 can also store the candidate of the output trajectory together with the motion command corresponding to the candidate of the output trajectory. Subsequently, the motion command generation section 24 jumps to the process of step S260.

[0133] Here, the detailed process of step S360, that is, the process of adjusting the motion command of the other axis, will be described. Figure 10 is a flowchart showing the process order of the process of adjusting the motion command of the other axis by the robot control device according to Embodiment 1.

[0134] The motion command generation section 24 sets the temporary motion command generated by step S350 of Figure 7 as a temporary motion command (step S510).

[0135] Next, the motion command generation section 24 selects all the other axes whose motion time under the temporary motion command exceeds the motion time in the joint interpolation trajectory R0 (step S520).

[0136] Next, the motion command generator 24 shifts the acceleration / deceleration timing of the motion command to shorten the motion time of the selected other axes (step S530). Specifically, the motion command generator 24 determines the amount of acceleration / deceleration timing shift to shorten the motion time of the selected other axes, and generates the motion command based on the determined acceleration / deceleration timing shift. Thus, the motion command generator 24 changes the motion command to shorten the motion time of the selected other axes.

[0137] Figure 11 This is a diagram for explaining the process of shifting the acceleration and deceleration timing of the motion instructions of other axes by the robot control device involved in the first embodiment. Figure 11 In the following, a case where the axis j is selected as another axis will be described.

[0138] Figure 11 The graph shown in the upper part is a graph of the angular velocity corresponding to the speed command value for the representative axis, the graph shown in the middle part is a graph of the angular velocity corresponding to the speed command value before the change for the other axes, and the graph shown in the lower part is a graph of the angular velocity corresponding to the speed command value after the change for the other axes. The horizontal axis of each graph is time, and the vertical axis is the angular velocity of the axis. Figure 11 In the graph shown in the lower part of , the waveform of the angular velocity before the change is shown by a dotted line, and the waveform of the angular velocity after the change is shown by a solid line. Figure 11 In the following figures, in the graphs showing both a dotted waveform and a solid waveform, the dotted waveform represents the angular velocity before the change, and the solid waveform represents the angular velocity after the change.

[0139] The motion command generating unit 24 generates a temporary motion command based on the temporary motion command generated in step S350, and generates a motion command from the motion starting point P of the axis j. S To temporary relay point P R Action time t 1j and the starting point P of the movement from the representative axis S To temporary relay point P R The action command generating unit 24 confirms t 1j =Whether t1 holds true.

[0140] Next, the motion command generating unit 24 generates a temporary motion command for the temporary relay point P from the axis j based on the temporary motion command generated in step S350. R To the end point P G Action time t 2j and from the temporary relay point P representing the axis R To the end point P G The action instruction generating unit 24 confirms t 2j=Whether t2 holds true.

[0141] The action instruction generating unit 24 generates an 1j = t1 and t 2j = t2, the acceleration / deceleration timing of the motion command of the axis j is not changed.

[0142] exist Figure 11 In the figure, only t 1j =t1 holds, t 2j = t2 does not hold. In this case, from the action starting point P S To temporary relay point P R The maximum speed ovrd of the axis motor of axis j during the operation 1j *v_max j The maximum speed v_max that the axis motor of axis j can achieve has not been reached j Therefore, the action instruction generating unit 24 starts from the action starting point P S To temporary relay point P R The maximum speed of the axis motor of axis j in the operation to date meets ovrd 1j <ovrd 1j _New<1ovrd 1j _New. That is, the action command generating unit 24 will start from the action starting point P S To temporary relay point P R The maximum speed of the axis motor of axis j in the operation up to now is changed to ovrd 1j _New*v_max j .

[0143] In addition, the motion instruction generating unit 24 uses the motion starting point P S The acceleration at the position is calculated using the slope of the command line L1 calculated in step S350, i.e., Figure 8 Similarly, the motion command generating unit 24 uses the temporary relay point P as the slope of the command straight line L1 described in R The deceleration at the position is calculated using the slope of the command line L2 calculated in step S350, i.e., Figure 8 The slope of the command straight line L2 described in .

[0144] In addition, the motion instruction generation unit 24 may generate the ovrd every time the track within the passing area is repeated. 1j In other words, the motion command generation unit 24 may change the value of ovrd each time it determines whether i2 = the maximum number of repetitions in step S210. 1j The operation command generating unit 24 sets the value of ovrd at the initial stage of repetition, for example. 1j_New=1, every time the number of repetitions increases, ovrd 1j _New are reduced by a certain amount respectively.

[0145] The motion command generating unit 24 uses the following formula (7) to generate the motion starting point P from the axis j. S To temporary relay point P R Action time t 1j The changed action time t 1j _New is calculated.

[0146] [Formula 7]

[0147]

[0148] Next, for only t 2j =t2 holds, t 1j = t1 does not hold. In this case, from the temporary relay point P R To the end point P G The maximum speed ovrd of the motor of axis j during the operation 2j *v_max j The maximum speed v_max that the motor of axis j can achieve is not reached j Therefore, the action command generating unit 24 is R To the end point P G The maximum speed of the motor of axis j in the operation to date satisfies ovrd 2j <ovrd 2j _New<1ovrd 2j _New. That is, the action command generating unit 24 will R To the end point P G The maximum speed of the motor of axis j in the operation up to now is changed to ovrd 2j _New*v_max j .

[0149] In addition, the operation instruction generating unit 24 acts as a temporary relay point P R The acceleration at the position is calculated using the slope of the command line L5 calculated in step S350, i.e., Figure 8 Similarly, the motion command generating unit 24 takes the motion end point P as the slope of the command straight line L5 described in the above. G The deceleration at the position is calculated using the slope of the command line L6 calculated in step S350, i.e., Figure 8 The slope of the command straight line L6 described in .

[0150] In addition, the motion instruction generation unit 24 may generate the ovrd every time the track within the passing area is repeated.2j the value of ovrd_New is changed. In other words, the action instruction generating section 24 can change the value of ovrd_New each time it judges whether i2 = the maximum number of repetitions in step S210, and change the value of ovrd_New to ovrd_New = 1 when i2 = the maximum number of repetitions. 2j the value of ovrd_New is changed. The action instruction generating section 24, for example, sets ovrd_New = 1 at the start of the repetition, and changes the value of ovrd_New to ovrd_New = 0.5 when the number of repetitions is increased by one. 2j the value of ovrd_New = 1, and changes the value of ovrd_New to ovrd_New = 0.5 when the number of repetitions is increased by one. 2j the value of ovrd_New is changed by a certain amount each time.

[0151] The action instruction generating section 24 calculates the changed action time t_New of the action from the temporary relay point Pj of the axis j to the action end point Pj+1 using the following equation (8) for each axis j. R to the action end point Pj+1 G the changed action time t_New of the action from the temporary relay point Pj of the axis j to the action end point Pj+1 2j the changed action time t_New of the action from the temporary relay point Pj of the axis j to the action end point Pj+1 2j the value of ovrd_New is changed by a certain amount each time.

[0152] [Equation 8]

[0153]

[0154] As described above, the action instruction generating section 24 calculates the execution time of the changed action instruction, i.e., the action time corresponding to the changed action instruction, for each of the other axes after the action instruction is changed in step S530. In addition, the action instruction generating section 24 calculates the execution time of the temporary action instruction, i.e., the action time corresponding to the temporary action instruction, for each of the other axes.

[0155] Next, the action instruction generating section 24 judges whether the action time under the changed action instruction is less than or equal to the action time under the temporary action instruction for each of the other axes. That is, the action instruction generating section 24 judges whether the other axis is such that the action time under the changed action instruction = the action time under the temporary action instruction for all of the other axes (step S540).

[0156] In the case where the action time under the changed action instruction = the action time under the temporary action instruction for the other axis (step S540, Yes), the action instruction generating section 24 stores the changed action instruction as a candidate for the output track. That is, the action instruction generating section 24 sets the changed action instruction as the temporary action instruction for the other axis for which the action time under the changed action instruction = the action time under the temporary action instruction (step S550).

[0157] The action instruction generating section 24 does not change the temporary action instruction for the other axis for which the action time under the changed action instruction > the action time under the temporary action instruction (step S540, No), and proceeds to the processing of step S560.

[0158] The motion command generating unit 24 selects the other axes whose motion commands have been changed in step S530 and whose motion time under the temporary motion command exceeds the motion time in the joint interpolation trajectory R0 (step S560 ).

[0159] Next, the motion instruction generating unit 24 makes the temporary relay point P of the motion instruction R The angle of the other axis at the temporary relay point P is shifted so that the operation time of the other axis selected in step S520 is shortened (step S570). The operation command generation unit 24 generates a temporary relay point P R The motion instruction after the axis angle is offset.

[0160] Figure 12 This is a diagram for explaining the process of shifting the axis angle at the temporary relay point of the motion command of the other axis by the robot control device according to the first embodiment so as to shorten the motion time. Figure 12 In the following, the case where axis j is selected is described.

[0161] Figure 12 The upper graph shows the angular velocity corresponding to the speed command value for the representative axis. The middle graph shows the angular velocity corresponding to the speed command values ​​for the other axes before the change. The lower graph shows the angular velocity corresponding to the speed command values ​​for the other axes after the change. The horizontal axis of each graph represents time, and the vertical axis represents the angular velocity of the axis.

[0162] The operation command generating unit 24 sets the temporary relay point P R The angle of the axis j at θ Rj Change to θ Rj_New In addition, the action instruction generating unit 24 takes the action starting point P as S The acceleration at the position is calculated using the slope of the command line L1 calculated in step S350, i.e., Figure 8 The slope of the instruction straight line L1 described in the above description. R The deceleration at the position is calculated using the slope of the command line L2 calculated in step S350, i.e., Figure 8 The slope of the command straight line L2 described in .

[0163] In addition, the operation instruction generating unit 24 acts as a temporary relay point P R The acceleration at the position is calculated using the slope of the command line L5 calculated in step S350, i.e., Figure 8 The slope of the instruction straight line L5 described in the above description. G The deceleration at the position is calculated using the slope of the command line L6 calculated in step S350, i.e., Figure 8 The slope of the command straight line L6 described in .

[0164] The motion command generating unit 24 determines θ from the range satisfying the following equation (9): Rj_New Specify.

[0165] [Formula 9]

[0166] |θ Rj -θ Sj |>|θ Rj _New-θ Sj | …(9)

[0167] The motion command generating unit 24 uses the following formula (10) to calculate the motion starting point P from the axis j. S To temporary relay point P R Action time t 1j The changed action time t 1j_New The value of is calculated. Figure 12 In the figure, ovrd is shown 1j _New=1.

[0168] [Equation 10]

[0169]

[0170] The motion command generating unit 24 uses the following formula (11) to calculate the temporary relay point P of the slave axis j. R To the end point P G Action time t 2j The changed action time t 2j_New The value of is calculated. Figure 12 In the figure, ovrd is shown 2j _New=1.

[0171] [Formula 11]

[0172]

[0173] like Figure 12 As shown, the motion command generating unit 24 makes the temporary relay point P of the motion command of the axis j R The difference between the area T1 of the trapezoid before the axis angle change and the area T2 of the trapezoid after the axis angle change corresponds to the reduction in the angle change.

[0174] Next, the action command generating section 24 judges whether the action time under the changed action command is less than or equal to the action time under the temporary action command for each of the other axes. That is, the action command generating section 24 judges whether the action time under the changed action command = the action time under the temporary action command for all of the other axes (step S580).

[0175] In the case where the action time under the changed action command for the other axes = the action time under the temporary action command (step S580, Yes), the action command generating section 24 stores the changed action command as a candidate of the output track. That is, the action command generating section 24 sets the changed action command as the temporary action command for the other axes for which the action time under the changed action command = the action time under the temporary action command (step S590). The action command generating section 24 generates a track corresponding to the temporary action command set by step S550 or step S590.

[0176] In the case where the action time under the changed action command for the other axes ≠ the action time under the temporary action command (step S580, No), the action command generating section 24 does not change the temporary action command. That is, the action command generating section 24 does not change the temporary action command for the axes for which the action time under the changed action command > the action time under the temporary action command, and ends the process of adjusting the action commands of the other axes.

[0177] The process of step S400 explained below corresponds to the process of step S190 explained in Figure 4 The processes of steps S410 to S430 correspond to the processes of step S200 explained in Figure 4

[0178] Figure 13 is a graph for explaining the process of adjusting the action command of the representative axis by the robot control device related to Embodiment 1 by changing the start timing of the action command of the representative axis. Figure 14 is a graph for explaining the process of adjusting the action command of the representative axis by the robot control device related to Embodiment 1 by changing the maximum speed of the representative axis in the action.

[0179] Figure 13 The graph shown in the upper portion of is a graph for the angular velocity of the representative axis, and the graph shown in the lower portion is a graph for the angular velocity of the other axes. In addition, Figure 14 The graph shown in the upper portion of is a graph for the angular velocity of the representative axis, and the graph shown in the lower portion is a graph for the angular velocity of the other axes. Figure 13 and Figure 14 ​In each graph shown, the horizontal axis represents time, and the vertical axis represents the angular velocity of the axis.

[0180] The motion command generating unit 24 adjusts the motion command of the representative axis among the motion commands of the other axes adjusted in step S360 so that the motion time t 1jl +t 2jl Match (step S400).

[0181] The action instruction generating unit 24 is based on Figure 13 The method shown and Figure 14 Use any of the methods shown to adjust the motion command of the representative axis. Figure 13 The method shown and Figure 14 In the method shown, the position passed by the fingertip tool 102 changes. Therefore, the motion command generating unit 24 generates a motion command for a representative axis using one method, and generates a motion command for a representative axis using another method only when the generated track collides with the obstacle 31.

[0182] First, use Figure 13 The following describes a method for adjusting the motion command of the representative axis by shifting the start timing of the motion command of the representative axis by the motion command generating unit 24. The motion command generating unit 24 adjusts the motion command of the representative axis at the adjusted motion time (Δt+Δt1 j′ +Δt2 j′ ) does not exceed the action time (Δt) of the other axis j_l with the longest action time among the other axes 1j_l +Δt 2j_l ) range, select the offset of the start timing of the action instruction, that is, the time Δt.

[0183] Next, use Figure 14 The following describes a method for adjusting the motion command of the representative axis by changing the maximum speed of the motion of the representative axis by the motion command generating unit 24. The motion command generating unit 24 changes the maximum speed from v_max j′ Changed to ovrd j′ *v_max j′ The action command generating unit 24 acts as ovrd j′ , use about ovrd j′ The values ​​obtained by solving the following equation (12) are: The motion command generation unit 24 uses the same values ​​as the motion command for the representative axis before adjustment as acceleration and deceleration. In equation (12), the acceleration in the motion command for the representative axis is a_j', and the deceleration is b_j'.

[0184] [Equation 12]

[0185]

[0186] Next, the motion command generation unit 24 generates a trajectory based on the motion commands indicating that adjustments have been completed for the other axes and the motion command indicating that adjustments have been completed for the representative axis, and determines whether the generated trajectory satisfies specific conditions. Specifically, when the robot 101 is moved using the trajectory generated based on the motion commands indicating that adjustments have been completed for the other axes and the motion command indicating that adjustments have been completed for the representative axis, the motion command generation unit 24 determines whether the fingertip tool 102 interferes with the obstacle 31. In other words, the motion command generation unit 24 determines whether the generated trajectory avoids the obstacle 31 (step S410).

[0187] If the generated trajectory avoids the obstacle 31 (step S410, Yes), the motion command generation unit 24 stores the generated trajectory as a candidate for the output trajectory (step S420). Alternatively, the motion command generation unit 24 may store the candidate for the output trajectory together with the motion command corresponding to the candidate for the output trajectory.

[0188] On the other hand, if the generated trajectory interferes with obstacle 31 (step S410, No), the motion command generator 24 does not store the generated trajectory as a candidate for output trajectory, but instead jumps to the repetition process of generating another trajectory passing through the designated route area. Specifically, the motion command generator 24 determines whether the count value i2 of the second repetition counter reaches i2 = the maximum number of repetitions (step S210).

[0189] Next, the motion command generator 24 determines whether the motion time required to move the robot 101 based on the adjusted motion commands for the other axes and the motion command for the representative axis is less than or equal to the motion time in the joint interpolation trajectory R0. In other words, the motion command generator 24 determines whether the motion time in the generated trajectory equals the motion time in the joint interpolation trajectory R0 (step S430).

[0190] If the motion time in the generated trajectory equals the motion time in the joint interpolation trajectory R0 (step S430, Yes), the motion command generation unit 24 jumps to step S260. If the motion time in the generated trajectory exceeds the motion time in the joint interpolation trajectory R0 (step S430, No), the motion command generation unit 24 jumps to the repetition process of generating another trajectory passing through the designated transit area. Specifically, the motion command generation unit 24 determines whether the count value i2 of the second repetition counter reaches i2 = the maximum number of repetitions (step S210).

[0191] When i2 does not equal the maximum number of repetitions (step S210 , No), the motion command generating unit 24 adds 1 to i2 (step S230 ), and returns to the process of step S310 .

[0192] When i2 = the maximum number of repetitions (step S210 , Yes), the motion command generation unit 24 determines whether the number of stored generated trajectories for avoiding the obstacle 31 is greater than or equal to 1 in the process of step S380 or step S420 (step S215 ).

[0193] If the number of generated trajectories for avoiding the obstacle 31 stored is greater than or equal to 1 (step S215, Yes), the action command generating unit 24 jumps to the repeated processing of changing the passing area. That is, if the number of generated trajectories for avoiding the obstacle 31 stored is greater than or equal to 1, the action command generating unit 24 jumps to the repeated processing of changing the passing area. Figure 4 The processing of step S220 described in .

[0194] On the other hand, if the stored number of generated trajectories avoiding the obstacle 31 is 0 (step S215 , No), the motion command generating unit 24 adds a new passing area (step S216 ) and then returns to the process of step S140 .

[0195] like Figure 4 As described above, when i=maximum number of repetitions (step S220, Yes), the motion command generation unit 24 outputs a motion command corresponding to the generated trajectory of the shortest motion time to each axis motor control unit (step S260).

[0196] On the other hand, if i does not equal the maximum number of repetitions (step S220, No), the motion command generating unit 24 changes the route area (step S240). Figure 4 The process of step S250 described in the above is then returned to the process of step S160.

[0197] In the first embodiment, the motion command generator 24 stores a generated trajectory in which the robot 101 and the obstacle 31 do not collide, and outputs a motion command corresponding to the generated trajectory, thereby avoiding collisions between the robot 101 and the obstacle 31. Thus, the robot controller 200 can improve production efficiency.

[0198] Furthermore, the motion command generating unit 24 can search for motion commands even without the user specifying a transit area, and thus can easily generate a trajectory with a shorter motion time than when generating a trajectory by specifying a transit area.

[0199] Further, the motion command generating section 24 can generate a track that avoids collision without increasing the motion time, first, in a case where the track is generated without changing the motion command of the representative axis. Further, the motion command generating section 24 generates the track by changing the motion command of the representative axis in a case where the track that can avoid interference cannot be generated without changing the motion command of the representative axis, and thus can generate the track that can avoid interference even in a case where the track that avoids collision is complicated.

[0200] Further, the motion command generating section 24 searches the motion command via the region, and thus can reduce the time required to search the motion command that can avoid collision.

[0201] Further, the motion command generating section 24 adds a candidate of a via region other than the initially designated via region, and thus the derivation of the track in which the motion time becomes the shortest becomes easy.

[0202] As described above, according to Embodiment 1, the motion command generating section 24 changes the motion command of the representative axis from the motion command of the representative axis in the joint interpolation track R0 after adjusting the motion command of the other axis. Further, the motion command generating section 24 generates the track with respect to the changed motion command, and stores the generated track as a candidate of the output track in a case where there is no interference with the obstacle 31. Thus, the motion command generating section 24 can generate only the track that avoids collision with the obstacle 31 and that can be executed by the robot 101 as a candidate of the output track.

[0203] Further, the motion command generating section 24 generates a new track by changing the via region in a case where the motion time in the generated track is longer than the motion time in the joint interpolation track R0. Thus, the motion command generating section 24 can generate the track in which the motion time is equal to or less than the joint interpolation track R0 compared to the case where the via point is defined.

[0204] Further, the motion command generating section 24 preferentially outputs the track in which the motion time is less than or equal to the motion time in the joint interpolation track R0 in a case where the robot 101 moves along the generated track. Further, the motion command generating section 24 selects the track in which the motion time is the shortest among the generated tracks in a case where all the generated tracks are longer than the motion time in the joint interpolation track R0. Thus, the motion command generating section 24 can select the track in which the motion time becomes the shortest among the tracks that avoid interference with the obstacle 31.

[0205] Furthermore, the motion command generation unit 24 sets the axis with the largest angular change during motion relative to the maximum output speed of each axis motor as a representative axis and selects a motion command for the representative axis. The motion command generation unit 24 uses the motion command for the selected representative axis as the initial value and searches for motion commands for each axis motor in a manner that avoids obstacle 31. This allows efficient search for a trajectory with a short motion time. Furthermore, since the motion command generation unit 24 searches for motion commands for each axis motor without specifying a transit point as a positive, this can shorten the motion time compared to a case where a transit point is specified as a positive.

[0206] Implementation method 2.

[0207] Next, use Figure 4 、 Figure 14 and Figures 15 to 27 Embodiment 2 will be described. In Embodiment 2, the robot controller 200 generates a trajectory when there are a plurality of passing areas.

[0208] Figure 15 This is a diagram showing a schematic configuration of a robot system including a robot control device according to a second embodiment. Figure 16 This is a diagram for explaining the route area set by the robot control device according to the second embodiment. Figure 15 Among the structural elements of Figure 1 In the robot system 100 of the illustrated embodiment 1, components having the same functions are denoted by the same reference numerals, and redundant descriptions are omitted.

[0209] The robot system 100 of the second embodiment differs from the robot system 100 of the first embodiment in that two transit areas 601a and 601b are used. Alternatively, the number of transit areas may be three or more. An example of a situation where there are multiple transit areas 601a and 601b is when multiple obstacles 31 and 32 are located within the robot system 100.

[0210] The motion command generating unit 24 of the robot system 100 moves the fingertip tool 102 from the specific position of the motion starting point P to the S Move to the end point P G At this time, the robot 101 is controlled so that the fingertip tool 102 does not collide with the obstacles 31 and 32 .

[0211] Next, the procedure for generating the trajectory of the fingertip tool 102 by the motion command generating unit 24 will be described. Figure 4 The main steps are executed in the order described in the process to generate the trajectory. Figure 4The processing different from that of Embodiment 1 in the main steps explained above will be explained.

[0212] In step S150 of Embodiment 2, the action instruction generating section 24 sets a plurality of candidates of the passage area through which the specific position of the fingertip tool 102 passes. Further, the action instruction generating section 24 sets an arbitrary number (plurality) of passage areas from among the set plurality of candidates of the passage area. That is, the action instruction generating section 24 specifies a plurality of passage areas from among the set plurality of candidates of the passage area. The action instruction generating section 24, for example, specifies two passage areas 601a, 601b as shown in Figure 16

[0213] The candidates of the passage area are set in advance by the user based on the arrangement of the obstacles 31, 32. Further, the action instruction generating section 24 can set the candidates of the passage area to be areas in which no obstacle 31 exists based on the obstacle information acquired from the obstacle model storage section 21.

[0214] If the action instruction generating section 24 sets a plurality of passage areas, it generates a track based on the set plurality of passage areas. Specifically, the action instruction generating section 24 generates a track that passes through an arbitrary position of each passage area at an arbitrary time instant for the specific position of the fingertip tool 102.

[0215] In Embodiment 2, the processing in which the action instruction generating section 24 generates a track based on the passage area is different from that of Embodiment 1. Figure 17 is a flowchart showing the detailed processing sequence of the processing in which the robot control device according to Embodiment 2 generates a track based on the passage area. As for the processing shown in Figure 17 the same as that explained in Figure 7 , the repeated explanation is omitted.

[0216] In the following explanation, the passage areas included in the group of passage areas selected through step S150 of Embodiment 2 will be referred to as passage areas m, respectively. m is set to be a natural number from 1 to the total number of the passage areas included in the group of passage areas. Each value represented by m corresponds to the order in which the fingertip tool 102 passes.

[0217] The action instruction generating section 24 initializes the 2nd repetition counter, that is, substitutes i2 = 1 into the 2nd repetition counter (step S160). The action instruction generating section 24 sets an arbitrary point within the passage area m, that is, a temporary relay point P R The temporary relay point P R ​The process of these steps S160 and S310 is the same as that of the steps S160 and S310 described in the first embodiment. In the following description, the temporary relay point P is sometimes referred to as R The Xth (X is a natural number from 1 to m) temporary relay point P R Called P X .

[0218] Next, the operation command generating unit 24 determines the temporary relay point P R The motor angle of each axis motor of the robot 101 at the location (step S320). That is, the motion command generating unit 24 generates the motor angle of each axis motor of the robot 101 at the location (step S320). R , a group including the joint angles of the fingertip tool 102 is set.

[0219] In addition, the operation command generating unit 24 may be replaced by a user as a temporary relay point P R , specifies any position in the passing area and the posture of the robot 101 at that time. In addition, the action command generating unit 24 can also serve as a temporary relay point P R The operation command generation unit 24 performs the temporary relay point P for all the m transit areas. R Designation.

[0220] When the motor angle is determined, the motion command generating unit 24 generates a temporary motion command for the axis other than the representative axis (step S350). Specifically, the motion command generating unit 24 generates a temporary motion command for the axis other than the representative axis (step S350). S , action end point P G and temporary relay point P R The temporary motion instructions for other axes are generated based on the position of the axis.

[0221] After generating the provisional motion commands for the other axes, the motion command generator 24 adjusts the motion commands for the other axes (step S360). The details of step S350 for generating the provisional motion commands for the other axes and step S360 for adjusting the motion commands for the other axes will be described later. The following steps S370 and subsequent steps are identical to those described in Embodiment 1.

[0222] Figure 18 This is a diagram for explaining a process of generating a temporary operation command for another axis by the robot controller according to the second embodiment. Figure 18 The graph shows the angular velocity of each axis motor in the joint interpolation track when there are two areas. Figure 18 Where m=2.

[0223] Figure 18 The two graphs shown in the upper portion of the diagram are graphs for the angular velocity of the representative axis. The graphs shown in the middle and lower portions are graphs for the angular velocity of the other axes. The horizontal axis of each graph is time, and the vertical axis is angular velocity.

[0224] The motion command generating unit 24 generates a motion command to cause the fingertip tool 102 to move from the motion starting point P S Stop at m temporary relay points P respectively R Move to the end point P G Hereinafter, the joint interpolation trajectory in the second embodiment will be referred to as the joint interpolation trajectory R1. Figure 18 Among the graphs shown in the upper part of , the graph on the left corresponds to the joint interpolation trajectory R1 , and the graph on the right corresponds to the joint interpolation trajectory R0 .

[0225] All axes included in the robot 101 have the same motion time. S The operation time to the temporary relay point P1 is t 1j , will be transferred from the temporary relay point P k-1 To temporary relay point P k The action time until is set as t kj (k is a natural number from 2 to m) and will be transferred from the temporary relay point P R To the end point P G The action time until is set as t m+1j .

[0226] The motion command generating unit 24 uses the motion command in the joint interpolation trajectory R0 for the representative axis instead of the motion command in the joint interpolation trajectory R1. The motion command generating unit 24 uses the motion command in the joint interpolation trajectory R0 for the representative axis and generates the motion command from the motion starting point P. S Action time t until the action reaches the temporary relay point P1 1j Perform calculations.

[0227] Furthermore, the motion command generating unit 24 uses the motion command in the joint interpolation trajectory R0 for the representative axis to generate the motion command from the temporary relay point P k-1 Move to temporary relay point P k Action time t kj Perform calculations. Figure 18 In the temporary relay point P k-1 =P1, temporary relay point P k =P2, action time t kj =t2.

[0228] Furthermore, the motion command generating unit 24 uses the motion command in the joint interpolation trajectory R0 for the representative axis to generate the motion command from the temporary relay point P R Action to action end point P G Action time t m+1j Perform calculations. Figure 18 In the temporary relay point P R =P2, action time t m+1j =t3.

[0229] For example, from the action starting point P S The angle θ of the representative axis j′ sj′ Angle θ to the representative axis j′ at the temporary relay point P1 R1′ The angle change from time t = 0 to t 1j The time when the integrated values ​​of the motion commands representing the axis j′ match is t 1j .

[0230] The motion command generating unit 24 performs the same processing as in the first embodiment to calculate the motion time t of the other axes. 1j , t kj , t m+1j Here, from the starting point P S The operation time until the temporary relay point P1 is the operation time t 1j , from the temporary relay point P k-1 Move to temporary relay point P k The action time until the end is the action time t 2j , from the temporary relay point P R Action to action end point P G The action time until the end is the action time t 3j .

[0231] Here, yes Figure 17 The detailed processing of step S360, that is, the processing of adjusting the motion instructions of other axes, will be described. Figure 19 This is a flowchart showing the processing procedure of adjusting the motion instructions of other axes by the robot control device involved in the second embodiment. Figure 19 The processing shown in Figure 10 The same processing as described in is omitted for repeated description.

[0232] The action instruction generating unit 24 will pass Figure 17 The temporary operation instruction generated in step S350 is set as a temporary operation instruction, that is, a temporary operation instruction (step S510).

[0233] Next, the action instruction generating section 24 merges the actions of the intervals that are the same in moving direction and are continuous (step S521). In other words, the action instruction generating section 24 merges the intervals that change the angle in the continuous direction in the temporary action instructions of the respective axes. The group of the intervals that are the same in moving direction and are continuous is the case where there are the interval from the temporary relay point P k-1 to the temporary relay point P k and the interval from the temporary relay point P k to the temporary relay point P k+1 . The following formula (13) is established for the group of the intervals.

[0234] [Formula 13]

[0235] sgn (|θ kj - θ k-1j |) = sgn (|θ k+1j - θ kj |)... (13)

[0236] Figure 20 is a graph for explaining the action instruction of the continuous direction that is merged by the robot control device related to Embodiment 2. Figure 20 The graph of shows the angular velocity of the interval that is the same in moving direction and is continuous in the direction of rotation. Figure 20 The graph shown on the left side of shows the angular velocity before merging, and the graph shown on the right side shows the angular velocity after merging. The horizontal axis of each graph is time, and the vertical axis is angular velocity.

[0237] In Figure 20 , the action time of the interval from the temporary relay point P k-1 to P k is denoted by t 1j , the action time of the interval from the temporary relay point P k to P k+1 is denoted by t 2j , and the action time of the interval from the temporary relay point P k+1 to P k+2 is denoted by t 3j .

[0238] The interval from the temporary relay point P k-1 to P k and the interval from the temporary relay point P k to P k+1 are actions in the same direction of rotation. Therefore, the action instruction generating section 24 merges the interval from the temporary relay point P k-1 to P k and the interval from the temporary relay point P k to P k+1Thus, the motion command generating unit 24 combines the sections in which the angle changes continuously in the same direction.

[0239] In this case, the motion command generating unit 24 uses the acceleration in the combined section and the acceleration from the temporary relay point P k-1 To P k The acceleration of the section to the temporary relay point P is the same as the acceleration of the section to the temporary relay point P. k-1 To P k In addition, the motion instruction generation unit 24 sets the motion time of the merged section to the time from the temporary relay point P k-1 To P k The operation time of the section up to and from the temporary relay point P k To P k+1 The maximum speed v of the motion command of axis j in the combined interval is k-1j It's about v- k-1j It is determined by solving the following equation (14): Here, acceleration is a and deceleration is b.

[0240] [Equation 14]

[0241]

[0242] In the following description, in the combined interval, the angle θ of mj (<m) axes j at the time when the angular velocity of the axis j becomes 0 is kj The location of the merged nodes is called the temporary relay point.

[0243] Next, the motion command generator 24 shifts the acceleration / deceleration timing of the motion command to shorten the motion time of the other selected axes (step S530). Specifically, the motion command generator 24 determines the amount of the acceleration / deceleration timing shift and generates the motion command based on the determined acceleration / deceleration timing shift to shorten the motion time of the other selected axes.

[0244] Figure 21 This is a diagram for explaining the processing of shifting the acceleration and deceleration timing of the motion instructions of other axes by the robot control device involved in the second embodiment to shorten the motion time. Figure 21 In the description, a case where the axis j is selected as the other axis will be described.

[0245] Figure 21The graph shown in the top portion of the figure plots the angular velocity corresponding to the velocity command value for the joint interpolation trajectory R0 for the representative axis. The graph shown in the middle portion plots the angular velocity corresponding to the velocity command values ​​for the other axes before the change, and the graph shown in the bottom portion plots the angular velocity corresponding to the velocity command values ​​for the other axes after the change. The horizontal axis of each graph plots time, and the vertical axis plots the angular velocity of the axis.

[0246] exist Figure 21 In the process, the temporary relay point P k-1 To P k The operation time of the interval up to t 1j Indicates that it will be transferred from the temporary relay point P k To P k+1 The operation time of the interval up to t 2j Indicates that it will be transferred from the temporary relay point P k+1 To P k+2 The operation time of the interval up to t 3j express.

[0247] The motion instruction generating unit 24 starts from the motion starting point P S The maximum speed of the motion instructions is changed sequentially from the motion instructions to the combined temporary relay point P1, thereby shortening the motion time. Specifically, the motion instruction generating unit 24 changes the maximum speed of the motion instructions from the combined temporary relay point P1 to the combined temporary relay point P1. k-1 To the merged temporary relay point P k The maximum speed of the action command up to the maximum speed ovrd kj *v_max j Change to maximum speed ovrd kj _New*v_max j (0<ovrd kj _New<1).

[0248] In addition, the operation instruction generation unit 24 generates the temporary relay point P after the merger. k-1 The acceleration at the point P is the acceleration used in step S521. k-1 The deceleration at step S521 is used.

[0249] In addition, the motion instruction generation unit 24 may generate the ovrd every time the track within the passing area is repeated. kj The operation command generating unit 24 is initially set to ovrd. kj _New=1, every time the number of repetitions increases, ovrd kj _New are reduced by a certain amount respectively.

[0250] The action command generating unit 24 uses the following formula (15) to generate the temporary relay point P after the merger. k-1 To the merged temporary relay point P k Action time t kj The changed action time t kj _New is calculated.

[0251] [Equation 15]

[0252]

[0253] exist Figure 21 The graph below shows the operation time when k=1. Figure 21 The lower graph shows the changed action time, ie, the action time t 1j_New .

[0254] like Figure 21 As shown, the motion command generating unit 24 makes the temporary relay point P of the motion command of the axis j k The difference between the area T3 of the trapezoid before the axis angle change and the area T4 of the trapezoid after the axis angle change corresponds to the reduction in the angle change.

[0255] Next, the motion command generator 24 determines whether the motion time of each of the other axes whose motion commands have been changed in step S530 is less than or equal to the motion time of the temporary motion command. Specifically, the motion command generator 24 determines whether the motion time of each of the other axes under the changed motion command equals the motion time of the temporary motion command (step S540).

[0256] If the operation time under the changed operation command for another axis is equal to the operation time under the temporary operation command (step S540, Yes), the operation command generator 24 stores the changed operation command as a candidate for the output trajectory. In other words, for the other axis where the operation time under the changed operation command is equal to the operation time under the temporary operation command, the operation command generator 24 sets the changed operation command as the temporary operation command (step S550).

[0257] For the other axes where the operation time under the changed operation command is greater than the operation time under the temporary operation command (step S540 , No), the operation command generating unit 24 does not change the temporary operation command and proceeds to the process of step S560 .

[0258] The motion command generating unit 24 selects another axis whose motion time under the temporary motion command exceeds the motion time in the joint interpolation trajectory R0 among the other axes changed in step S530 (step S560 ).

[0259] Next, the motion instruction generating unit 24 makes the temporary relay point P of the motion instruction R The axis angle at which the temporary relay point P is shifted is used to shorten the operation time of the other axis merged in step S521 (step S571). The operation command generating unit 24 generates a temporary relay point P R The following processing in step S580 and thereafter is the same as that described in the first embodiment.

[0260] Figure 22 This is a diagram for explaining the processing of the robot control device according to the second embodiment to shift the axis angle at the temporary relay point of the motion command of the other axis so as to shorten the motion time. Figure 22 In the following, the case where axis j is selected is described.

[0261] Figure 22 The graph shown in the top portion of the figure plots the angular velocity corresponding to the velocity command value for the joint interpolation trajectory R0 for the representative axis. The graph shown in the middle portion plots the angular velocity corresponding to the velocity command values ​​for the other axes before the change, and the graph shown in the bottom portion plots the angular velocity corresponding to the velocity command values ​​for the other axes after the change. The horizontal axis of each graph plots time, and the vertical axis plots the angular velocity of the axis.

[0262] The operation command generating unit 24 sets the temporary relay point P R The angle of the axis j at θ Rkj Change to θ Rkj_New In addition, the action instruction generating unit 24 takes the action starting point P as S The acceleration at the temporary relay point P is used as the acceleration used in step S521. R The deceleration at step S521 is used.

[0263] The motion command generating unit 24 determines θ from the range satisfying the following equation (16): Rkj_New Specify.

[0264] [Equation 16]

[0265] |θ Rkj -θRk-1j|>|θRkj-New-θRk-1j| …(16)

[0266] The motion command generation unit 24 uses the following formula (17) to calculate the temporary relay point P after the combination of the slave axis j.k-1 To the merged temporary relay point P k The changed operation time t kj_New The value of is calculated. Figure 22 In the figure, ovrd is shown kj _New = 1. Here, acceleration is a and deceleration is b.

[0267] [Formula 17]

[0268]

[0269] The motion command generation unit 24 uses the following formula (18) to calculate the temporary relay point P after the combination of the slave axis j. k To the merged temporary relay point P k+1 The changed operation time t k+1j_New The value of is calculated. Figure 22 In the figure, ovrd is shown k+1j _New = 1. Here, acceleration is c and deceleration is d.

[0270] [Formula 18]

[0271]

[0272] exist Figure 22 The graph below shows the operation time when k=1. Figure 22 The lower graph shows the changed action time, ie, the action time t 1j_New and action time t 2j_New .

[0273] like Figure 22 As shown, the motion command generating unit 24 makes the temporary relay point P of the motion command of the axis j k The difference between the area T5 of the trapezoid before the axis angle change and the area T6 of the trapezoid after the axis angle change corresponds to the reduction in the angle change.

[0274] Here, the process of adjusting the motion command of the representative axis by the motion command generator 24, namely, the process of step S400, will be described. The motion command generator 24 can adjust the motion command of the representative axis by, for example, shifting the start timing of the motion command. Furthermore, the motion command generator 24 can adjust the motion command of the representative axis by simultaneously changing the maximum speed during operation, or by partially changing the maximum speed during operation.

[0275] Figure 23 This is a diagram for explaining a process in which the robot controller according to the second embodiment adjusts the motion command for the representative axis by shifting the start timing of the motion command for the representative axis. Figure 24 This is a diagram for explaining a process in which the robot controller according to the second embodiment adjusts the motion command of the representative axis by collectively changing the maximum speed of the representative axis in motion. Figure 25 This is a diagram for explaining a process in which the robot controller according to the second embodiment adjusts the motion command of the representative axis by partially changing the maximum speed of the representative axis in motion.

[0276] Figures 23 to 25 The graphs shown in the upper part are all graphs of the angular velocity in the joint interpolation trajectory R0 for the representative axis, and the graphs shown in the lower part are all graphs of the angular velocity in the joint interpolation trajectory R1 for the other axes.

[0277] The motion command generating unit 24 adjusts the motion command of the representative axis among the motion commands of the other axes adjusted in step S360 so that the motion time Σ1 of the axis j_1 having the longest motion time is the same as that of the axis j_1. m′ t kj_l _New matches.

[0278] like Figure 23 As shown, when the motion command generating unit 24 adjusts the motion command of the representative axis by shifting the start timing of the motion command, the start timing of the motion command is shifted by Δt. In this case, the motion command generating unit 24 adjusts the motion time of the representative axis by Δt+Σ1 m t k Do not exceed the action time Σ1 of the axis j_l with the longest action time m′ t kj_l _New range of Δt is selected.

[0279] like Figure 24 As shown, when the motion command generating unit 24 adjusts the motion command of the representative axis by changing the maximum speed during the motion, the maximum speed is changed from v_max to j′ Changed to ovrd j′ *v_max j′ The action command generating unit 24 is ovrd j′ And use about ovrd j′ The values ​​obtained by solving the following equation (19) are: Furthermore, the motion command generator 24 uses the same acceleration and deceleration as the motion command for the representative axis before adjustment. In equation (19), the acceleration in the motion command for the representative axis is a_j′, and the deceleration is b_j′.

[0280] [Equation 19]

[0281]

[0282] like Figure 25 As shown, when the motion command generating unit 24 adjusts the motion command of the representative axis by partially changing the maximum speed during the motion, the temporary relay point P after merging with the slave axis j_1 is set. k-1 To the merged temporary relay point P k The action time of the action command section of the representative axis corresponding to the action up to now is changed to t kj_l _New. Here, at the temporary relay point P after the merger of the slave axis j_l k-1 To the merged temporary relay point P k The action up to this point is from the temporary relay point P before the merger k′-1 To the temporary relay point P before the merger k′ + Δ In the case of combining Δk+1 motion instructions up to k, the corresponding motion instruction interval of the representative axis is from time tk′ to time tk′+ Δ The interval of k.

[0283] The temporary relay point P after the representative axis is merged with respect to the slave axis j_l k-1 To the merged temporary relay point P k The maximum speed of the movement up to ovrd kj′ *v_max j′ In the second embodiment, the time taken for speed change when switching the motion instruction interval is included in the subsequent motion interval. In this case, the motion instruction generating unit 24 generates the motion instruction of the other axis adjusted in step S360 and the temporary relay point P of the representative axis. R The position and velocity information at time t kj_l _New calculates the maximum drive torque that can be used to drive the representative axis. Next, the motion command generation unit 24 calculates the acceleration ak when the axis j is driven by the maximum drive torque. The motion command generation unit 24 here determines ovrd by solving the following equation (20): kj′ .

[0284] [Formula 20]

[0285]

[0286] exist Figure 25 In the figure, ovrd is shown as the maximum speed after the change of the representative axis. 1j′ *v_max j′、ovrd 2j′ *v_max j′ and ovrd 3j′ *v_max j′ .

[0287] The motion command generating unit 24 performs the same processing from step S160 to step S230 as in Embodiment 1. Here, the processing of step S240 in Embodiment 2, that is, the processing of changing the route area by the motion command generating unit 24 will be described.

[0288] If the generated trajectory interferes with either obstacle 31 or 32, the motion command generator 24 specifies one of the candidate passage areas set in step S150 and changes the current passage area to the specified passage area. Alternatively, the motion command generator 24 may change the current passage area to a passage area separated by a specific distance from the interference point, using the interference point as a reference. The interference point is the intersection of the robot 101 and the obstacle at the moment when the trajectory generated by the motion command generator 24 first collides with either obstacle 31 or 32.

[0289] Figure 26 This is a diagram for explaining the process of changing the route area to a space separated by a specific distance from the interference point by the robot control device according to the second embodiment. Figure 26 In FIG, the case where the obstacles are three obstacles 31 to 33 will be described. Here, the case where the obstacle with which the track first collides is obstacle 31 is shown.

[0290] The motion command generator 24 changes the route area (not shown) passing through the interference point PX to a route area 604 separated from the interference point PX by a specific distance. The specific distance here is, for example, a distance that is approximately several times the size of the specific position of the fingertip tool 102. Alternatively, the specific distance may be a distance that is approximately several times the size of the specific position of the robot 101. The direction in which the motion command generator 24 adds the route area 604 is preferably a direction away from the center of the obstacle 31 when viewed from the interference point PX.

[0291] The motion command generating unit 24 changes the route area by designating one candidate from the route area candidates set in step S150 . If no trajectory is outputted even after executing the process of adjusting the motion commands for all candidates, the route area may be added.

[0292] Further, the action command generating section 24, in a case where the action time in the generated track is longer than the action time in the joint interpolation track R0, selects one candidate from among the candidates of the passage region designated through the step S150, and changes the current passage region to the designated passage region. Further, the action command generating section 24, as shown in FIG. 10, can move the position of the current passage region within a range in which the inside does not contain the obstacles 31 to 33. Figure 27

[0293] Figure 27 is a view for describing a process of changing the passage region to a position in which the inside does not contain an obstacle by the robot control device related to Embodiment 2. In Figure 27 , one case where the obstacle is the obstacle 41 is described. Here, the passage region before the change is shown as passage region 605, and the passage region after the change is shown as passage region 606.

[0294] The direction of movement from the passage region 605 to the passage region 606 is preferably a direction in which the amount of change in the angle of each axis of the robot 101 is reduced.

[0295] The action command generating section 24, in a case where the action time is not shortened even if the position of the passage region 605 is moved to the position of the passage region 606, can change the passage region by designating one candidate from among the candidates of the passage region set through the step S150.

[0296] In Embodiment 2, the action command generating section 24, like Embodiment 1, preferentially outputs a track in which the action time is less than or equal to the action time in the joint interpolation track R0 in a case where the robot acts in accordance with the generated track. Further, the action command generating section 24, in a case where all of the generated tracks are longer than the action time in the joint interpolation track R0, selects a track in which the action time is the shortest among the generated tracks. Therefore, the action command generating section 24 can select a track in which the action time becomes the shortest among the tracks in which interference with the obstacle 31 is avoided.

[0297] As described above, according to Embodiment 2, the action command generating section 24, in a case where a plurality of obstacles are arranged and a plurality of passage regions are set, like Embodiment 1, can generate a track that passes through the passage regions. That is, the action command generating section 24 adjusts the action command of the representative axis after adjusting the action command of the other axes, and generates a track with respect to the adjusted action command. Further, the action command generating section 24, in a case where there is no interference with the obstacle 31, stores the generated track as a candidate of the output track. Therefore, the action command generating section 24 can generate only a track in which collision with each obstacle is avoided and which can be executed by the robot 101 as a candidate of the output track. ​

[0298] Furthermore, similarly to Embodiment 1, the motion command generator 24 can generate a trajectory with an operation time equal to or shorter than that of a case where the via points are limited and their positions are not changed. Furthermore, similarly to Embodiment 1, the motion command generator 24 can generate a trajectory with the shortest operation time among trajectories that avoid interference with obstacles.

[0299] Implementation method 3.

[0300] Next, use Figures 28 to 31 Embodiment 3 is described. In embodiment 3, the robot control device 200 adjusts the motion instructions of each axis by machine learning. In embodiment 3, similarly to embodiment 1, the operation of the fingertip tool 102 from the motion starting point P is described. S Move to the end point P G At this time, a method is used to generate a trajectory in which the fingertip tool 102 moves so as not to collide with the obstacle 31 .

[0301] In the third embodiment, the passing area of ​​the fingertip tool 102 is not specified. The configurations of the robot 101 and the robot control device 200 in the third embodiment are the same as those of the first embodiment.

[0302] Next, in the third embodiment, a description will be given of a process of generating a trajectory of the fingertip tool 102 by the motion command generating unit 24 . Figure 28 This is a flowchart showing the processing procedure of trajectory generation by the robot control device according to the third embodiment. The robot control device 200 according to the third embodiment executes the same operation command generation unit 24 as in the first embodiment. Figure 4 The processing of steps S110 to S140 described in is the same as the processing of steps S110 to S140 described in .

[0303] Furthermore, after the processing in step S140, the motion command generation unit 24 uses machine learning to perform a learning process. This learning process generates motion commands for the motors of each axis corresponding to a trajectory that minimizes the motion time among the trajectories that avoid interference with obstacle 31, subject to the constraints of the robot's motion. This learning process includes adjusting the motion commands for other axes to shorten the motion time, and adjusting the motion commands for the motors of each axis, including at least the representative axis, to generate a trajectory.

[0304] Specifically, after the process of step S140, the motion command generation unit 24 executes the processes of steps S170 to S200. In this case, the motion command generation unit 24 executes the process of step S191 instead of step S190. In other words, if the generated trajectory cannot avoid obstacle 31 (step S180, No), the motion command generation unit 24 adjusts the motion commands for all axes, including the representative axis, and generates the trajectory (step S191). The details of the process of step S191, i.e., the process of adjusting the motion commands for all axes, will be described later.

[0305] If the track does not satisfy the conditions of step S200 during the processing of step S200 (step S200, No), the motion command generating unit 24 determines whether the count value of the first repetition counter has reached the set maximum value. In other words, the motion command generating unit 24 determines whether i = the maximum number of repetitions (step S220).

[0306] If i does not equal the maximum number of repetitions (step S220, No), 1 is added to i (step S250), and the process returns to step S170. On the other hand, if i equals the maximum number of repetitions (step S220, Yes), the motion command generator 24 outputs a motion command corresponding to the generated trajectory with the shortest motion time to each axis motor control unit (step S260).

[0307] Here, use Figure 29 The details of the process of step S170 in the third embodiment, that is, the process of adjusting the motion commands of other axes, will be described. Figure 29 This is a flowchart showing the processing procedure of adjusting the motion commands for other axes by the robot controller according to the third embodiment. Figure 30 1 is a diagram for explaining the motion instructions of the motors of each axis used in the robot control device according to the third embodiment. Figure 30 Parameters representing the values ​​of the operation commands for the motors of the respective axes are shown in the figure.

[0308] In the third embodiment, the motion command generating unit 24 uses the motor speed command as the motion command of each axis motor. In addition, in the third embodiment, the motion command generating unit 24 uses the motor speed command to simplify the adjustment of the motion command of each axis motor. Figure 30 The parameters shown are used as action command parameters.

[0309] The first action command parameter is the number of angle changes in the action. The angle change in the action is a series of motor actions in which the angle is changed from a state in which the speed of each axis motor is 0, acceleration is performed, a constant speed is run after a specified maximum speed is reached, and deceleration is performed after a certain length of time elapses. In Embodiment 3, the number of angle changes in the action of the axis motor of the axis j of the robot 101, i.e., the j-axis motor, is set to jk.

[0310] The second action command parameter is the start timing of each angle change. The start timing of each angle change exists jk with respect to the action command of the j-axis motor of the robot 101. In Embodiment 3, the start timing of the jkth angle change is set to time jk .

[0311] The third action command parameter is the maximum speed of the angular velocity in each angle change. The maximum speed in each angle change exists jk with respect to the action command of the j-axis motor of the robot 101. In Embodiment 3, the maximum speed in the jkth angle change is set to v_max jk .

[0312] The fourth action command parameter is the length of the time in which each axis motor outputs the maximum speed. The length of the time in which each axis motor outputs the maximum speed exists jk with respect to the action command of the j-axis motor of the robot 101. In Embodiment 3, the length of the time in which each axis motor outputs the maximum speed in the jkth angle change, i.e., the output time, is set to ct jk .

[0313] The fifth action command parameter is the acceleration in each angle change. The acceleration in each angle change exists jk with respect to the action command of the j-axis motor of the robot 101. In Embodiment 3, the acceleration in the jkth angle change is set to a jk .

[0314] The sixth action command parameter is the deceleration in each angle change. The deceleration in each angle change exists jk with respect to the action command of the j-axis motor of the robot 101. In Embodiment 3, the deceleration in the jkth angle change is set to d jk .

[0315] First, the action command generation section 24 sets the number of angle changes in the action, i.e., jk, with respect to all other axes (Step S810). In the joint interpolation trajectory R0, all axes are jk = 1.

[0316] The motion command generator 24 generates a trajectory by learning a trajectory that avoids interference with the obstacle 31. The trajectory that avoids interference has a higher degree of freedom than the joint interpolation trajectory R0, so the motion command generator 24 preferably generates the trajectory so that there are multiple axes with jk=2 or more.

[0317] Next, the motion command generating unit 24 calculates the acceleration a for each angle change. jk and deceleration d jk In this case, the action command generating unit 24 sets a temporary value of jk and d jk , set a value that does not exceed the maximum acceleration that each axis motor can output.

[0318] Next, the motion command generator 24 initializes the first learning counter, which is used to determine the number of repetitions in the process of repeating learning once. Specifically, the motion command generator 24 substitutes i2 = 1 into the first learning counter (step S830). The first learning counter is used in the process of step S870, described later.

[0319] Next, the motion command generating unit 24 generates a start timing time among the motion command parameters. jk , maximum speed v_max jk And output time ct jk Specifically, the motion command generation unit 24 generates a start timing time of the angle change in the motion command parameter. jk , the maximum speed v_max at each angle change jk And the output time ct of each axis motor outputting the maximum speed jk The candidate C1 of the motion instruction of the initial value of jk , set the value not exceeding the maximum speed that each axis motor can output. jk , set a value that does not exceed the action time in the joint interpolation trajectory R0.

[0320] The motion command generator 24 determines the number of candidate C1 pairs to be generated based on the parameter learning algorithm used in the next step S850. The parameter learning algorithm used in step S850 is an algorithm that learns motion command parameters. Specifically, the parameter learning algorithm used in step S850 is an algorithm that learns an evaluation function (evaluation function J1, described later) that represents the parameters of the motion command.

[0321] For example, when using swarm reinforcement learning or a genetic algorithm in the process of step S850, the motion command generation unit 24 prepares a plurality of sets of motion command parameters that serve as candidate C1. Alternatively, when using Bayesian optimization in the process of step S850, the motion command generation unit 24 prepares a single set of motion command parameters that serve as candidate C1.

[0322] Next, the motion command generation unit 24 updates the value of each candidate C1 generated based on the evaluation function J1 (step S850). That is, the motion command generation unit 24 updates the start timing of the angle change based on the evaluation function J1. jk , the maximum speed v_max at each angle change jk And the output time ct of each axis motor at the highest output speed jk The motion command generating unit 24 updates the value of each candidate C1 of the motion command parameter so as to minimize the evaluation value V1 of the evaluation function J1.

[0323] The motion command generation unit 24 uses, for example, the function shown in the following formula (21) as the evaluation function J1. In formula (21), c1 is an arbitrary constant satisfying c1>0, and tact is the motion time under the motion command in the candidate C1 of the motion command parameter to be used.

[0324] [Equation 21]

[0325]

[0326] The first term of the function shown in formula (21) increases when a collision occurs between the robot 101 and the obstacle 31 during the action. The second term of the function shown in formula (21) is proportional to the action time when the action instruction is generated based on the action instruction parameter of the candidate C1. The candidate C1 that reduces the value of the function shown in formula (21), that is, the evaluation value V1, is a candidate that avoids the collision between the robot 101 and the obstacle 31 and suppresses the action time. That is, the action instruction generation unit 24 generates a candidate C1 with parameters that avoids the collision between the robot 101 and the obstacle 31 and suppresses the third action time based on the parameter learning algorithm that learns the evaluation function J1. The shorter the action time, the lower the evaluation value V1 becomes.

[0327] As described above, the parameter learning algorithm of step S850 used by the motion command generation unit 24 is, for example, an arbitrary black box optimization method such as group reinforcement learning, genetic algorithm, Bayesian optimization, or the like.

[0328] Next, the motion command generation unit 24 checks whether there is one or more candidates C1 among the updated motion command parameter candidates C1 whose evaluation value V1 of the evaluation function J1 is less than or equal to a predetermined value TH1 (step S860). The predetermined value TH1 is, for example, a value approximately twice the motion time in the joint interpolation trajectory R0.

[0329] If there is no candidate C1 with an evaluation value V1 less than or equal to the designated value TH1 (step S860, No), the motion command generator 24 determines whether the number of repetitions has reached the maximum number of repetitions. In other words, the motion command generator 24 determines whether i2 = the maximum number of repetitions (step S870).

[0330] If i2 = the maximum number of repetitions (step S870, Yes), the process jumps to step S191, which is a process for adjusting the motion commands for all axes, including the representative axis. If i2 does not = the maximum number of repetitions (step S870, No), the motion command generator 24 adds 1 to i2 (step S880) and returns to step S850.

[0331] If there is no candidate C1 with an evaluation value V1 less than or equal to the designated value TH1 (step S860 , No) and i2 is not equal to the maximum number of repetitions (step S870 , No), the motion command generation unit 24 repeats the processes from steps S850 to S880 .

[0332] If there is one candidate C1 whose evaluation value V1 is less than or equal to the specified value TH1 (step S860, Yes), the action command generator 24 initializes the second learning counter, which is used to determine the number of repetitions in the process of repeating learning once. In other words, the action command generator 24 substitutes i3 = 1 into the second learning counter (step S890). The second learning counter is used in the process of step S930 described later.

[0333] Next, the motion command generating unit 24 generates the start timing time among the motion command parameters based on the parameter candidate C1 whose evaluation value V1 is less than or equal to the specified value TH1. jk , maximum speed v_max jk , output time ct jk , acceleration a jk and deceleration d jk Specifically, the motion command generation unit 24 generates a start timing time of the angle change in the motion command parameter. jk , the maximum speed v_max at each angle change jk, Output time ct of each axis motor at maximum output speed jk , acceleration a jk Initial value and deceleration d jk The candidate for the action instruction of the initial value is candidate C2. In step S860, the action instruction generation unit 24 uses the time of candidate C1 whose evaluation value V1 is less than or equal to the specified value TH1. jk 、v_max jk and ct jk .

[0334] The motion command generator 24 determines the number of candidates C2 to generate based on the parameter learning algorithm used in the next step S910. The parameter learning algorithm used in step S910 is an algorithm that learns motion command parameters. Specifically, the parameter learning algorithm used in step S910 is an algorithm that learns an evaluation function (evaluation function J2, described later) that represents the parameters of the motion command.

[0335] For example, when using swarm reinforcement learning or a genetic algorithm in the process of step S910, the motion command generation unit 24 prepares a plurality of sets of motion command parameters that serve as candidate C2. Alternatively, when using Bayesian optimization in the process of step S910, the motion command generation unit 24 prepares a single set of motion command parameters that serve as candidate C2.

[0336] Next, the motion command generation unit 24 updates the value of each candidate C2 generated based on the evaluation function J2 (step S910). That is, the motion command generation unit 24 updates the start timing of the angle change based on the evaluation function J2. jk , the maximum speed v_max at each angle change jk , Output time ct of each axis motor at maximum output speed jk , acceleration a jk and deceleration d jk The motion command generating unit 24 updates the value of each candidate C2 of the motion command parameter so as to minimize the evaluation value V2 of the evaluation function J2.

[0337] The motion command generation unit 24 uses, for example, the function shown in the following equation (22) as the evaluation function J2. In equation (22), c1 is an arbitrary constant satisfying c1>0, and c2 is an arbitrary constant satisfying c2>0. Furthermore, tact is the motion time for the motion command in the candidate motion command parameter C2 used. torque_o is the absolute value of the maximum excess torque when an axis exceeds the torque limit during motion, and is set to 0 when no axis exceeds the torque limit during motion.

[0338] [Equation 22]

[0339]

[0340] The first term of the function shown in formula (22) increases when a collision occurs between the robot 101 and the obstacle 31 during the operation. The second term of the function shown in formula (22) is proportional to the operation time when the operation command is generated based on the operation command parameter that becomes candidate C2. The third term of the function shown in formula (22) is a term related to the torque limit of the robot 101. The greater the violation of the limit, the larger the value of the third term becomes. Here, the torque limit of the robot 101 depends on the posture of the robot 101 and the speed of each axis, so the value changes during the operation. Candidate C2 that reduces the value of the function shown in formula (22), that is, the evaluation value V2, is a candidate that avoids the collision between the robot 101 and the obstacle 31, satisfies the torque limit of the robot 101 during operation, and suppresses the operation time. That is, based on the parameter learning algorithm that learns the evaluation function J2, the operation command generation unit 24 generates a candidate C2 with parameters that avoids the collision between the robot 101 and the obstacle 31, satisfies the torque limit of the robot 101 during operation, and suppresses the third operation time. The shorter the operation time, the lower the evaluation value V2 becomes.

[0341] As described above, the parameter learning algorithm of step S910 used by the motion command generation unit 24 is, for example, an arbitrary black box optimization method such as group reinforcement learning, genetic algorithm, or Bayesian optimization.

[0342] Next, the motion command generation unit 24 checks whether there is at least one candidate C2 among the updated motion command parameter candidates C2 whose evaluation value V2, i.e., the evaluation function J2, is less than or equal to a predetermined value TH2 (step S920). The predetermined value TH2 is, for example, the motion time in the joint interpolation trajectory R0.

[0343] If there is one candidate C2 with an evaluation value V2 less than or equal to the specified value TH2 (step S920, Yes), the motion command generation unit 24 sets the candidate C2 with the smallest evaluation value V2 as the motion command for the other axes (step S950). In other words, the motion command generation unit 24 selects the candidate C2 with the shortest motion time and sets this selected candidate C2 as a parameter for adjusting the motion commands for the other axes.

[0344] On the other hand, if there is no candidate C2 whose evaluation value V2 is less than or equal to the designated value TH2 (step S920, No), the motion command generation unit 24 determines whether the number of repetitions has reached the maximum number of repetitions. In other words, the motion command generation unit 24 determines whether i3 = the maximum number of repetitions (step S930).

[0345] When i3 = the maximum number of repetitions (step S930 , Yes), the motion command generating unit 24 sets the candidate C2 with the smallest evaluation value V2 as the motion command for the other axis (step S950 ).

[0346] If i3 is not equal to the maximum number of repetitions (step S930 , No), the motion command generating unit 24 adds 1 to i3 (step S940 ), and returns to the process of step S910 .

[0347] If no candidate C2 exists with an evaluation value V2 less than or equal to the specified value TH2 (step S920, No), and if i3 does not equal the maximum number of repetitions (step S930, No), the motion command generation unit 24 repeats the processes from steps S910 to S940. If only one candidate C2 exists with an evaluation value V2 less than or equal to the specified value TH2, or if i3 equals the maximum number of repetitions, the motion command generation unit 24 sets the candidate C2 with the smallest evaluation value V2 as the motion command for the other axis (step S950). The motion command generation unit 24 then executes the process of step S170.

[0348] if Figure 28 After the processing of step S170 is completed, the motion command generator 24 checks whether the motion time for the robot 101 to move using the motion command set in step S950 is less than or equal to the motion time for the joint interpolation trajectory R0. In other words, the motion command generator 24 determines whether the generated trajectory avoids the obstacle 31 (step S180).

[0349] If the generated trajectory avoids obstacle 31 (step S180, Yes), the motion command generator 24 executes the process of step S260. On the other hand, if the generated trajectory cannot avoid obstacle 31 (step S180, No), the motion command generator 24 adjusts the motion commands for all axes, including the representative axis, and generates the trajectory using the adjusted motion commands (step S191).

[0350] Here, use Figure 31 The details of the process of step S191 in the third embodiment, that is, the process of adjusting the motion commands of all axes including the representative axis, will be described. Figure 31 This is a flowchart showing the processing procedure of adjusting the motion commands for all axes by the robot control device according to the third embodiment.

[0351] First, the motion command generating unit 24 sets jk, which is the number of angle changes during motion, for all axes including the representative axis (step S1010 ). The motion command generating unit 24 preferably sets jk for other axes to the values ​​set in step S950 .

[0352] Next, the action command generating section 24 sets temporary values of the accelerations a jk and decelerations d jk with respect to each angle change (step S1020). The action command generating section 24 preferably sets the accelerations a jk and decelerations d jk with respect to the other axes to the values set by the step S950.

[0353] Next, the action command generating section 24 initializes a counter used for the judgment of the number of repetitions in the process of the repeated learning, i.e., a 3rd learning counter. That is, the action command generating section 24 substitutes i4 = 1 into the 3rd learning counter (step S1030). The 3rd learning counter is a counter used in the process of the step S1070 described later.

[0354] Next, the action command generating section 24 generates candidates of the start timing time jk , the maximum speed v_max jk , the output time ct jk , the acceleration a jk , and the deceleration d jk , i.e., a candidate C3, among the action command parameters (step S1040). Specifically, the action command generating section 24 generates a candidate of the start timing time jk of the angle change, the maximum speed v_max jk in each angle change, the output time ct jk of the maximum speed of the output of the motor of each axis, and the action command in which the initial value of the acceleration a jk and the initial value of the deceleration d jk are set, i.e., the candidate C3, among the action command parameters.

[0355] The action command generating section 24 determines the number of the candidates C3 to be generated based on a parameter learning algorithm used in the process of the next step S1050. The parameter learning algorithm used in the process of the step S1050 is an algorithm for learning the action command parameters. That is, the parameter learning algorithm used in the process of the step S1050 is an algorithm for learning an evaluation function (an evaluation function J3 described later) that represents the parameters of the action command.

[0356] The action command generating section 24 prepares a plurality of groups of the action command parameters that become the candidates C3, for example, in the case where the swarm reinforcement learning or the genetic algorithm is used in the process of the step S1050. In addition, the action command generating section 24 prepares one group of the action command parameters that become the candidates C3, in the case where the Bayesian optimization is used in the process of the step S1050.

[0357] Next, the motion command generation unit 24 updates the value of each candidate C3 generated based on the evaluation function J3 (step S1050). That is, the motion command generation unit 24 updates the start timing of the angle change based on the evaluation function J3. jk , the maximum speed v_max at each angle change jk , Output time ct of each axis motor at maximum output speed jk , acceleration a jk and deceleration d jk The motion command generating unit 24 updates the values ​​of each candidate C3 of the motion command parameter so as to minimize the evaluation value V3 of the evaluation function J3.

[0358] The motion command generation unit 24 uses, as the evaluation function J3, for example, a formula obtained by replacing J2 in the formula (22) described above with J3. A candidate C3 that reduces the value of the function (22), that is, the evaluation value V3, is a candidate that avoids collision between the robot 101 and the obstacle 31, satisfies the torque limit of the robot 101 during operation, and suppresses the operation time. Specifically, the motion command generation unit 24 generates a candidate C3 with parameters that avoids collision between the robot 101 and the obstacle 31, satisfies the torque limit of the robot 101 during operation, and suppresses the third operation time based on a parameter learning algorithm that learns the evaluation function J3. The shorter the operation time, the lower the evaluation value V3.

[0359] As described above, the parameter learning algorithm of step S1050 used by the action command generation unit 24 is, for example, an arbitrary black box optimization method such as group reinforcement learning, genetic algorithm, Bayesian optimization, or the like.

[0360] Next, the motion command generator 24 checks whether there is one or more candidates C3 among the updated motion command parameter candidates C3 whose evaluation value V3 of the evaluation function J3 is less than or equal to a predetermined value TH3 (step S1060). The predetermined value TH3 is, for example, the motion time in the joint interpolation trajectory R0.

[0361] If there is one candidate C3 with an evaluation value V3 less than or equal to the designated value TH3 (step S1060, Yes), the motion command generation unit 24 sets the candidate C3 with the smallest evaluation value V3 as the motion command for each axis (step S1090). In other words, the motion command generation unit 24 selects one candidate C3 with the shortest motion time and sets this selected candidate C3 as a parameter for adjusting the motion command for each axis.

[0362] On the other hand, if there is no candidate C3 whose evaluation value V3 is less than or equal to the designated value TH3 (step S1060, No), the motion command generation unit 24 determines whether the number of repetitions has reached the maximum number of repetitions. In other words, the motion command generation unit 24 determines whether i4 = the maximum number of repetitions (step S1070).

[0363] When i4=maximum number of repetitions (step S1070 , Yes), the motion command generating unit 24 sets the candidate C3 with the smallest evaluation value V3 as the motion command for each axis (step S1090 ).

[0364] If i4 is not equal to the maximum number of repetitions (step S1070 , No), the motion command generating unit 24 adds 1 to i4 (step S1080 ), and returns to the process of step S1050 .

[0365] If there is no candidate C3 with an evaluation value V3 less than or equal to the specified value TH3 (step S1060, No), and i4 is not equal to the maximum number of repetitions (step S1070, No), the motion command generation unit 24 repeats the processing from step S1050 to S1080. If there is one candidate C3 with an evaluation value V3 less than or equal to the specified value TH3 or i4 is equal to the maximum number of repetitions, the motion command generation unit 24 sets the candidate C3 with the smallest evaluation value V3 as the motion command for each axis (step S1090). Then, the motion command generation unit 24 executes the operation in Figure 28 Step S200 and subsequent processing described in .

[0366] If i does not equal the maximum number of repetitions in step S220 (step S220, No), the motion command generator 24 increments i by 1 (step S250) and returns to step S170. Specifically, if the value of the first repetition counter has not reached the maximum number of repetitions, the motion command generator 24 returns to step S170, adjusts the motion commands for the other axes, and regenerates the trajectory. In this case, the motion command generator 24 can generate a trajectory different from the previous test by changing the number of angle changes jk set in step S170.

[0367] In Embodiment 3, similar to Embodiments 1 and 2, the motion command generation unit 24 prioritizes outputting trajectories whose motion times are less than or equal to the motion times in the joint interpolation trajectory R0 when performing motion according to the generated trajectory. Furthermore, if all generated trajectories have motion times longer than the motion times in the joint interpolation trajectory R0, the motion command generation unit 24 selects the trajectories with the shortest motion times. Therefore, the motion command generation unit 24 can select the trajectories with the shortest motion times among the trajectories that avoid interference with obstacle 31. Furthermore, the learning process described in Embodiment 3 can also be applied to the trajectory generation process in Embodiment 2.

[0368] As described above, according to Embodiment 3, the motion command generator 24 represents the motion command for each axis motor using a limited number of motion command parameters and adjusts these motion command parameters using an existing learning algorithm to generate a trajectory. Therefore, the motion command generator 24 can generate a trajectory that avoids obstacle 31 through a limited number of adjustment trials. Furthermore, the motion command generator 24 can calculate the collision avoidance motion command in a short time.

[0369] Here, the hardware configuration of the robot controller 200 will be described. Figure 32 This is a diagram showing the hardware configuration of the robot control device according to the first to third embodiments.

[0370] The robot control device 200 can Figure 32 The control circuit shown is implemented as a processor 301 and a memory 302. Examples of processor 301 include a CPU (also known as a Central Processing Unit, central processing unit, processing unit, arithmetic unit, microprocessor, microcomputer, processor, DSP (Digital Signal Processor)) or a system LSI (Large Scale Integration). Examples of memory 302 include RAM (Random Access Memory) or ROM (Read Only Memory).

[0371] The robot controller 200 is implemented by the processor 301 reading and executing a program stored in the memory 302 for executing the operations of the robot controller 200. The program can be considered a procedure or method for causing a computer to execute the operations of the robot controller 200. The program executed by the robot controller 200 has a modular structure including the motion command generator 24 and the axis motor control units. These programs are downloaded to and generated on the main storage device.

[0372] The memory 302 stores the obstacle information, the robot information, and the end point information. The memory 302 is also used as a temporary memory when the processor 301 executes various processes.

[0373] The program executed by the processor 301 can be provided as a computer program product by storing a file in a computer-readable storage medium in an installable form or an executable form. In addition, the program executed by the processor 301 can be provided to the robot control device 200 via a network such as the Internet.

[0374] In addition, the robot control device 200 can also be implemented by a dedicated hardware. In addition, as for the functions of the robot control device 200, a part thereof can be implemented by a dedicated hardware, and a part thereof can be implemented by software or firmware.

[0375] The structure shown in the above embodiments represents one example, and can be combined with other known technologies, can be combined with the embodiments, can omit or change a part of the structure without departing from the gist.

[0376] Explanation of Reference Signs

[0377] 21 obstacle model storage section, 22 robot model storage section, 23 end point storage section, 24 action instruction generation section, 31 to 33, 41 obstacle, 100 robot system, 101 robot, 102 fingertip tool, 103 workpiece, 200 robot control device, 301 processor, 302 memory, 601, 601a, 601b, 603 to 606 passage area, 602 track, B1 first axis motor control section, B2 second axis motor control section, B3 third axis motor control section, B4 fourth axis motor control section, B5 fifth axis motor control section, B6 sixth axis motor control section, E1 first axis encoder, E2 second axis encoder, E3 third axis encoder, E4 fourth axis encoder, E5 fifth axis encoder, E6 sixth axis encoder, M1 first axis motor, M2 second axis motor, M3 third axis motor, M4 fourth axis motor, M5 fifth axis motor, M6 sixth axis motor, L1 to L3, L5 to L7 instruction straight line, P G action end point, P R temporary relay point, P S action start point.

Claims

1. A robot control device, characterized in that: have: an axis motor control unit that controls the axis motors that drive the plurality of axes that move the joints of the robot; a storage unit for storing robot information, namely, information about the robot; endpoint information including information about a start point at which the robot starts an action at a specific position and information about an end point at which the robot ends an action at a specific position; and obstacle information, namely, information about obstacles relative to the robot; as well as an action command generating unit for generating, based on the robot information and the endpoint information, an action command (i.e., a first action command) for each of the axis motors that minimizes an action time (i.e., a first action time) for moving the specific position of the robot from the action start point to the action end point without considering the obstacle, and selecting, as a representative axis, an axis for which the action time becomes the longest when the axis is operated by the first action command; The first motion command includes other axis commands, which are motion commands to axes other than the representative axis, and representative axis commands, which are motion commands to the representative axis. The motion command generating unit generates a motion command different from the first motion command, and adjusts other axis commands so as to shorten the motion time of the other axis commands included in the generated motion command, that is, the second motion time. When the motion instruction generating unit determines, based on the obstacle information, that the first track corresponding to the second motion instruction including the representative axis instruction and the adjusted other axis instructions is a track that avoids collision between the robot and the obstacle, the motion instruction generating unit outputs the second motion instruction corresponding to the first track to the axis motor control unit.

2. The robot control device according to claim 1, characterized in that: The motion instruction generating unit adjusts the representative axis instruction based on the robot information and the endpoint information. When the motion instruction generating unit determines, based on the obstacle information, that the second track corresponding to the third motion instruction including the adjusted representative axis instruction and the adjusted other axis instructions is a track for avoiding collision between the robot and the obstacle, and the action time of the third motion instruction, i.e., the third action time, is not longer than the second action time, the third motion instruction in which the third action time becomes the shortest among the third motion instructions is output to the axis motor control unit.

3. The robot control device according to claim 2, characterized in that: The motion command generating unit adjusts the representative axis command when a collision between the robot and the obstacle cannot be avoided even after adjusting the other axis commands.

4. The robot control device according to claim 1, wherein: The motion command generating unit generates a motion command different from the first motion command so as to pass through one or more transit areas arranged between the motion start point and the motion end point.

5. The robot control device according to claim 2 or 3, characterized in that: The motion command generating unit adjusts at least one of the other axis command and the representative axis command so as to pass through one or more passing areas arranged between the motion start point and the motion end point.

6. The robot control device according to claim 5, characterized in that: When the third operation time is not the same as the first operation time, the operation command generating unit changes the transit area and adjusts at least one of the other axis command and the representative axis command.

7. The robot control device according to claim 6, characterized in that: The motion command generating unit applies a parameter that is different for each of the transit areas as a parameter expressing the motion command, and adjusts at least one of the other axis command and the representative axis command.

8. The robot control device according to claim 2, characterized in that: The motion instruction generation unit generates candidates for the parameters that avoid collision between the robot and the obstacle and suppress the third motion time based on a parameter learning algorithm that learns an evaluation function of the parameters that represent the motion instruction, and sets the candidate that makes the robot's motion time the shortest as the parameter when adjusting the other axis instructions or the representative axis instructions.

9. The robot control device according to claim 8, characterized in that: The parameters include the number of times the angle of each axis motor changes, the start timing of each angle change, the maximum speed in each angle change, the time when each axis motor outputs the maximum speed, that is, the length of the output time, the acceleration in each angle change, and at least one of the deceleration in each angle change.

10. The robot control device according to claim 8 or 9, characterized in that: The motion command generation unit generates the parameter candidates that satisfy the torque limit of the robot.

11. A robot control method, comprising controlling motors for driving respective axes of a robot for moving joints. The robot control method is characterized by comprising: a first acquiring step of acquiring robot information, i.e., information about the robot, endpoint information including information about a start point at which the robot starts an action at a specific position, and information about an end point at which the robot ends an action at a specific position, and a storing step of storing obstacle information, i.e., information about an obstacle relative to the robot; a first generating step of generating, based on the robot information and the endpoint information, an operation instruction (first operation instruction) for each axis motor that minimizes an operation time (first operation time) for moving the specific position of the robot from the operation start point to the operation end point without considering the obstacle; a step of selecting, as a representative axis, an axis having the longest operating time when operated by the first operating command among the axes; and a second generation step of generating a trajectory that avoids a collision between the robot and the obstacle, The first motion command includes a motion command to an axis other than the representative axis, namely, an other axis command, and a motion command to the representative axis, namely, a representative axis command. In the second generation step, Generate an action command different from the first action command, and adjust other axis commands so as to shorten the action time of the other axis commands included in the generated action command, that is, the second action time. When it is determined, based on the obstacle information, that the first track corresponding to the second action instruction including the representative axis instruction and the adjusted other axis instructions is a track for avoiding collision between the robot and the obstacle, the second action instruction corresponding to the first track is output to the axis motor control unit that controls each axis motor.

Citation Information

Patent Citations

  • Method for controlling conveyance apparatus and conveyance system

    JP2014037029A

  • Robotic system and robot control device

    CN103568008A

  • Numerical controller performing positioning for avoiding interference with workpiece

    CN106597989A