ROBOT CONTROL DEVICE
20170190049 ยท 2017-07-06
Assignee
Inventors
Cpc classification
B25J9/1633
PERFORMING OPERATIONS; TRANSPORTING
B25J13/088
PERFORMING OPERATIONS; TRANSPORTING
B23K9/12
PERFORMING OPERATIONS; TRANSPORTING
B25J9/1641
PERFORMING OPERATIONS; TRANSPORTING
B25J9/1676
PERFORMING OPERATIONS; TRANSPORTING
B25J9/10
PERFORMING OPERATIONS; TRANSPORTING
International classification
Abstract
A control device of a robot for controlling the angle of a joint of the robot that is driven by a motor. The control device is equipped with: a joint angle command-calculating unit for calculating a joint angle command value; an axial force torque-calculating unit for calculating the axial force torque generated in the joint axis; an elastic deformation-compensating unit for calculating a motor command angle by adding a joint deflection, which is calculated from the axial force torque and a joint spring constant, to the joint angle command value; a stopping position-detecting unit for detecting the angle of the motor when the robot contacts an external structure; and a command angle-switching unit for outputting the motor angle detected by the stopping position-detecting unit instead of the joint angle command value when the stopping position-detecting unit outputs the angle of the motor.
Claims
1. A robot control device that controls an angle of a joint of a robot driven by a motor, the robot control device comprising: a joint-angle command calculating unit configured to calculate and output a first angle command indicating an angle of the joint for causing the robot to perform a desired motion; an axial-force torque calculating unit configured to calculate, upon receipt of the first angle command, a first axial force torque on the basis of a kinetic model of the robot, the first axial force torque being generated on a joint axis of the robot operating in accordance with the received first angle command; an elastic deformation compensation unit configured to add the amount of deflection in the joint calculated from the first axial force torque and a spring constant representing stiffness of the joint of the robot to the angle of the joint indicated by the first angle command received by the axial-force torque calculating unit, to calculate and output a motor command angle indicating a rotation angle of the motor; a stop position detecting unit configured to detect and output, as a motor detection angle, an angle of the motor when the robot contacts an external structure; and a command angle switching unit configured to output, when the stop position detecting unit outputs the angle of the motor, the angle of the motor detected by the stop position detecting unit as a second angle command indicating the angle of the joint, instead of the first angle command output from the joint-angle command calculating unit.
2. The robot control device according to claim 1, wherein, upon receipt of the second angle command, the axial-force torque calculating unit calculates a second axial force torque on the basis of the kinetic model of the robot, the second axial force torque being generated on the joint axis of the robot operating in accordance with the received second angle command; and the elastic deformation compensation unit adds the second axial force torque and the amount of deflection in the joint to the angle of the joint indicated by the second angle command received by the axial-force torque calculating unit to calculate the motor command angle.
3. The robot control device according to claim 2, further comprising an inverse elastic deformation compensation unit configured to subtract, from the motor detection angle, the amount of deflection in the joint calculated from the first or second axial force torque output from the axial-force torque calculating unit and the spring constant representing stiffness of the joint to calculate a corrected motor detection angle, wherein the stop position detecting unit detects and outputs the corrected motor detection angle, instead of the motor detection angle.
4. The robot control device according to claim 1, further comprising: an FF torque calculating unit configured to calculate, upon receipt of the first angle command, an FF torque on the basis of kinetic models of the robot and the motor, the FF torque being generated in the motor when the joint operates in accordance with the first angle command; a position/speed control unit configured to output, in accordance with the output motor command angle, a torque command indicating a torque to be generated in the motor; and a torque control unit configured to control the motor in accordance with a command value obtained by adding the FF torque to the torque command output from the position/speed control unit.
5. The robot control device according to claim 2, further comprising: an FF torque calculating unit configured to calculate, upon receipt of the first angle command, an FF torque on the basis of kinetic models of the robot and the motor, the FF torque being generated in the motor when the joint operates in accordance with the first angle command; a position/speed control unit configured to output, in accordance with the output motor command angle, a torque command indicating a torque to be generated in the motor; and a torque control unit configured to control the motor in accordance with a command value obtained by adding the FF torque to the torque command output from the position/speed control unit.
6. The robot control device according to claim 3, further comprising: an FF torque calculating unit configured to calculate, upon receipt of the first angle command, an FF torque on the basis of kinetic models of the robot and the motor, the FF torque being generated in the motor when the joint operates in accordance with the first angle command; a position/speed control unit configured to output, in accordance with the output motor command angle, a torque command indicating a torque to be generated in the motor; and a torque control unit configured to control the motor in accordance with a command value obtained by adding the FF torque to the torque command output from the position/speed control unit.
Description
BRIEF DESCRIPTION OF DRAWINGS
[0025]
[0026]
[0027]
[0028]
[0029]
[0030]
[0031]
[0032]
[0033]
[0034]
[0035]
[0036]
[0037]
[0038]
[0039]
[0040]
[0041]
[0042]
DESCRIPTION OF EMBODIMENTS
[0043] Hereinafter, a robot control device according to an embodiment of the present invention will be described in detail on the basis of the drawings.
[0044] The same components common to the embodiments described below are assigned the same reference numerals and names. Accordingly, the description of the components assigned the same reference numerals and names will not be repeated.
First Embodiment
[0045] With reference to
[0046] First, how the control device 10 of the present embodiment generally controls the robot R will be described. The robot R controlled by the control device 10 of the present embodiment is a robot that has at least one joint J, and operates (or changes its position) when the angle of the joint J is changed by driving (rotating) a motor M. The control device 10 operates the robot R by controlling the rotation of the motor M to change the angle of the joint.
[0047] The present embodiment illustrates an articulated welding robot R as the robot R whose motion is controlled by the control device 10.
[0048]
[0049]
[0050] With reference to
[0051] The higher-level controller C1 illustrated in
[0052] The joint-angle command calculating unit 11 calculates and outputs a joint-angle command value indicating the angle of each joint J to cause the robot R to perform a desired motion. On the basis of the prestored motion information (teaching data) of the robot R, the joint-angle command calculating unit 11 performs inverse transformation from the position of the welding torch 1 at the distal end of the robot R, thereby generating an angle command value for each joint J of the robot R (joint-angle command value .sub.L) as a first angle command. The motion information of the robot R may be the angle of each joint J of the robot R. In this case, the joint-angle command calculating unit 11 uses the angle of each joint J, which is the motion information, as the joint-angle command value for the joint J without changing it.
[0053] As a motor command angle .sub.M, which is a command angle for moving the motor M, the joint-angle command calculating unit can output the generated joint-angle command value .sub.L to the servo amplifier SA (described below) without changing it. That is, the motor command angle .sub.M may be simply made equal to the joint angle (arm angle) of the robot R, but due to the presence of a deflection element (elastic deformation element), such as that illustrated in
[0054]
[0055] The axial-force torque calculating unit 12 and the elastic deformation compensation unit 13 that perform the elastic deformation compensation will now be described.
[0056] Upon receipt of the joint-angle command value .sub.L, which is the first angle command, the axial-force torque calculating unit 12 calculates a torque .sub.L as a first axial force torque on the basis of a kinetic model of the robot R. The torque .sub.L is generated on the joint axis of the robot R that operates in accordance with the received joint-angle command value .sub.L. Specifically, from the joint-angle command value .sub.L for the robot R, the axial-force torque calculating unit 12 calculates the torque .sub.L, which is an axial force torque generated at the joint J, using the kinetic model of the robot R represented by the following equation (1), and outputs the calculated torque .sub.L.
[Equation 1]
J(.sub.L).Math.{umlaut over ()}.sub.L+C(.sub.L,{dot over ()}.sub.L)+G(.sub.L)+F.sub.M({dot over ()}L)=.sub.L equation (1)
[0057] .sub.L: robot joint-angle command value
[0058] J(.sub.L).Math.{umlaut over ()}.sub.L: inertial force on arm
[0059] C(.sub.L,{dot over ()}.sub.L): centrifugal and Coriolis forces on arm
[0060] G(.sub.L): gravity on arm
[0061] F.sub.M ({dot over ()}.sub.L): frictional force on arm
[0062] The elastic deformation compensation unit 13 adds the amount of deflection in the joint J calculated from the torque .sub.L and a spring constant representing the stiffness of the joint J of the robot R to the angle of the joint J indicated by the joint-angle command value .sub.L received by the axial-force torque calculating unit 12 to calculate and output the motor command angle indicating the rotation angle of the motor M. Specifically, the elastic deformation compensation unit 13 receives the torque .sub.L from the axial-force torque calculating unit 12, determines the amount of deflection (.sub.L/K) in the joint J on the basis of the received torque .sub.L as shown in the following equation (2), calculates the motor command angle .sub.M indicating the rotation angle of the motor M using the determined amount of deflection in the joint J, and outputs the calculated motor command angle .sub.M.
[Equation 2]
.sub.M=.sub.L+.sub.L/Kequation (2)
[0063] .sub.M: motor command angle
[0064] K: spring constant related to deflection in joint
[0065] The elastic deformation compensation unit 13 outputs and transmits, to the servo amplifier SA (described below), the motor command angle .sub.M for the motor M of each joint J calculated by equation (2). For example, if the robot R is a six-axis articulated robot having six joints J, the elastic deformation compensation unit 13 outputs six motor command angles .sub.M1 to .sub.M6 for the motors M1 to M6 of the six joints J (J1 to J6) on the first to sixth axes to the servo amplifiers SA1 to SA6 (described below).
[0066] For accurate motion of the robot R, two-degree-of-freedom control which combines feedback (FB) control with feedforward (FF) control is used, as well as the calculation of axial force torque and the elastic deformation compensation described above. The feedback control refers to control performed on the basis of a comparison between a command value, such as the motor command angle M, and a state (e.g., measured joint angle) of an object to be controlled, such as the robot R. The feedforward control refers to control in which a command value given by using a model of the robot R, which is an object to be controlled, is used to predict an input to the motor M for operating the robot R in accordance with the command value.
[0067] An advantage of the two-degree-of-freedom control is that the feedforward control based on the model can compensate for a delay in feedback control that controls the robot motion according to the command value. The two-degree-of-freedom control can make the motor M operate in accordance with the command value. What is required here is to calculate, on the basis of the model of the robot R, an input for operating the robot R in accordance with the command value, that is, a driving torque .sub.r of the motor M.
[0068] Upon receipt of the joint-angle command value .sub.L, which is the first angle command, the FF torque calculating unit 14 calculates, on the basis of kinetic models of the robot R and the motor M, an FF torque generated in the motor M when the robot R operates in accordance with the calculated joint-angle command value .sub.L. Specifically, on the basis of the kinetic model of the robot R and the kinetic model of the motor M, the FF torque calculating unit 14 calculates the driving torque .sub.r (referred to as FF torque .sub.r) of the motor M for operating the robot R in accordance with the command value by using, for example, the following equations (3) to (5) and outputs the calculated FF torque .sub.r.
[Equation 3]
J(.sub.L).Math.{umlaut over ()}.sub.L+C(.sub.L,{dot over ()}.sub.L)+G(.sub.L)+F.sub.M({dot over ()}L)=.sub.L equation (3)
[0069] .sub.L: robot joint-angle command value
[0070] J(.sub.L).Math.{circumflex over ()}.sub.L: inertial force on arm
[0071] C(.sub.L,{dot over ()}.sub.L): centrifugal and Coriolis forces on arm
[0072] G(.sub.L): gravity on arm
[0073] F.sub.M({dot over ()}.sub.L): frictional force on arm
[Equation 4]
J.sub.M.Math.{umlaut over ()}.sub.M+F.sub.M({dot over ()}.sub.M)=.sub.Mequation (4)
[0074] .sub.M: motor command angle
[0075] J.sub.M.Math.{dot over ()}.sub.M: inertial force on motor
[0076] F.sub.M({dot over ()}.sub.M): frictional force on arm
[Equation 5]
.sub.r=.sub.L+.sub.Mequation (5)
The FF torque calculating unit 14 outputs and transmits, to the servo amplifier SA (described below), the FF torque .sub.r calculated by equations (3) to (5) and required for operating each motor M in accordance with the command value. For example, if the robot R is a six-axis articulated robot having six joints J, the FF torque calculating unit 14 transmits six FF torques .sub.r1 to .sub.r6 for the motors M1 to M6 of the six joints J1 to J6 on the first to sixth axes to the servo amplifiers SA1 to SA6 (described below).
[0077] The servo amplifier SA will now be described with reference to
[0078] The servo amplifier SA receives the motor command angle .sub.M and the FF torque .sub.r, which are command values output from the higher-level controller C1, and operates the motor M in accordance with these command values. The servo amplifier SA includes a position/speed control unit 17 and a torque control unit 18. The servo amplifier SA is provided for each of the motors M (M1 to M6) on the first to sixth axes. For example, the servo amplifier SA1 provided for the motor M1 receives the motor command angle .sub.M1 and the FF torque .sub.r1, and operates the motor M1 in accordance with these received command values. Similarly, the servo amplifier SA2 provided for the motor M2 receives the motor command angle .sub.M2 and the FF torque .sub.r2, and operates the motor M2 in accordance with these received command values.
[0079] The position/speed control unit 17 of the servo amplifier SA outputs a torque command indicating a torque to be generated in the motor M, in accordance with the motor command angle .sub.M output from the higher-level controller C1. Specifically, the position/speed control unit 17 mainly performs feedback processing, on the basis of the motor command angle .sub.M calculated by the higher-level controller C1 and also a motor detection angle .sub.FB and a motor detection speed d (.sub.FB) detected by an angle detector, such as an encoder mounted on the motor M. Then, the position/speed control unit 17 calculates, for example, a torque for operating a joint on the third axis of the robot R in accordance with the motor command angle .sub.M3.
[0080] The torque control unit 18 controls the motor M in accordance with a command value obtained by adding the FF torque .sub.r to the torque command output from the position/speed control unit 17. Specifically, the torque control unit 18 adds the FF torque .sub.r calculated by the higher-level controller C1 to the torque calculated by the position/speed control unit 17, and controls and operates the motor M such that a desired torque is generated.
[0081] The configuration of the higher-level controller C1 and the servo amplifier SA described above is a basic configuration of the control device 10 that controls the motion of the robot R according to the present embodiment. This motion control is characterized in that (1) elastic deformation compensation is performed to compensate for deflection in the joint J, and that (2) two-degree-of-freedom control is performed, in which a torque for operating the robot R in accordance with a command value is calculated on the basis of a kinetic model of the robot R.
[0082] With the two motion control operations described above, the control device 10 of the present embodiment can operate a complex mechanical body having a plurality of joints, such as the robot described above, in accordance with a command value, or, in other words, without vibration.
[0083] The motion control described above is effective only when the control device 10 operates the robot R in accordance with a command value based on predetermined or prestored motion information (teaching data). In a robot motion performed when there is no prestored motion information (teaching data) of the robot R and motion information (teaching data) is to be newly created, it is difficult for the control device 10 to operate, with only the configuration described above, the robot R in accordance with a command value.
[0084] Specifically, for the purpose of identifying the position and shape of a workpiece W (see
[0085] The control device 10 of the present embodiment includes the stop position detecting unit 15 and the command angle switching unit 16 as illustrated in
[0086] The stop position detecting unit 15 detects and outputs, as a motor detection angle, the angle of the motor M when the robot R contacts the workpiece W, which is an external structure. Specifically, when the welding wire 2 of the welding torch 1 contacts the workpiece W in touch sensing or the like, the stop position detecting unit 15 detects the motor detection angle .sub.FB (motor detection angles .sub.FB1 to .sub.FB6) at the time of detection of the workpiece contact, and records the detected motor detection angle .sub.FB.
[0087] When the stop position detecting unit 15 outputs the angle of the motor M, the command angle switching unit 16 outputs the angle of the motor M detected by the stop position detecting unit 15 as a second angle command indicating the angle of the joint J, instead of the joint-angle command value .sub.L output from the joint-angle command calculating unit 11. Specifically, the command angle switching unit 16 receives not only the joint-angle command value .sub.L output by the joint-angle command calculating unit 11, but also the motor detection angle .sub.FB detected by the stop position detecting unit 15. When workpiece contact is not detected, the command angle switching unit 16 outputs the joint-angle command value .sub.L. When workpiece contact is detected, the command angle switching unit 16 outputs the motor detection angle .sub.FB, instead of the joint-angle command value .sub.L, as the second angle command. Thus, the command angle switching unit 16 switches the joint-angle command value .sub.L to the motor detection angle .sub.FB
[0088] The joint-angle command value .sub.L and the motor detection angle .sub.FB output from the command angle switching unit 16 are subjected to processing performed by the axial-force torque calculating unit 12 and the elastic deformation compensation unit 13. Specifically, upon receipt of the motor detection angle .sub.FB, which is the second angle command, the axial-force torque calculating unit 12 calculates, as a second axial force torque, the torque .sub.L generated on the joint axis of the robot R that operates in accordance with the received motor detection angle .sub.FB, on the basis of a kinetic model of the robot R. Then, the elastic deformation compensation unit 13 adds the torque .sub.L, which is the second axial force torque, and the amount of deflection in the joint J to the angle of the joint J indicated by the motor detection angle .sub.FB received by the axial-force torque calculating unit 12 to calculate a motor command angle. The calculated motor command angle is output as the motor command angle .sub.M to the servo amplifier SA, or is subjected to processing performed by the FF torque calculating unit 14 and output as the FF torque .sub.r to the servo amplifier SA.
[0089] By controlling the motion of the robot R with the control device 10 including the higher-level controller C1 and the servo amplifier SA described above, it is possible to quickly stop the robot R without causing the robot R to vibrate in a motion which requires the robot R to be quickly stopped at a position not determined in advance, such as a robot motion for creating teaching data.
[0090] With reference to
[0091]
[0092] On the other hand,
Second Embodiment
[0093] With reference to
[0094] The configuration of the control device 20 according to the present embodiment differs from that of the control device 10 according to the first embodiment in that the higher-level controller C2 corresponding to the higher-level controller C1 of the first embodiment includes an inverse elastic deformation compensation unit 21. The configuration other than the inverse elastic deformation compensation unit 21 is the same as that of the control device 10 according to the first embodiment. Therefore, the following description refers to the inverse elastic deformation compensation unit 21 and the advantage effect of the control device 20 achieved by including the inverse elastic deformation compensation unit 21.
[0095] Referring to
[0096] That is, the robot joint angle is replaced by the motor detection angle recorded at the time of workpiece contact. Since the motor command angle .sub.M is not equal to (#) the robot joint angle as described in the first embodiment, simply replacing the joint-angle command value .sub.L with the motor detection angle .sub.FB causes displacement corresponding to the amount of deflection in the joint J.
[0097] The control device 20 of the present embodiment includes the inverse elastic deformation compensation unit 21 to solve the problem of displacement of the robot stop position from the position at the time of workpiece contact.
[0098] The inverse elastic deformation compensation unit 21 subtracts, from the motor detection angle .sub.FB, the amount of deflection in the joint calculated from the torque .sub.L (first axial force torque or second axial force torque) output from the axial-force torque calculating unit 12 and a spring constant representing stiffness of the joint to calculate a corrected motor detection angle. Specifically, on the basis of the torque .sub.L calculated by the axial-force torque calculating unit 12, the inverse elastic deformation compensation unit 21 corrects (subtracts) the motor detection angle .sub.FB as indicated by the following equation (6) to newly create a corrected motor detection angle, and output it to the stop position detecting unit 15.
[Equation 6]
{tilde over ()}.sub.FB=.sub.FB.sub.L/K equation (6)
[0099] {tilde over ()}.sub.FB: corrected motor detection angle
[0100] .sub.FB: motor detection angle
[0101] K: spring constant related to deflection in joint
[0102] Then the stop position detecting unit 15 detects, records, and outputs the corrected motor detection angle, instead of the motor detection angle .sub.FB, and performs the same processing as in the first embodiment. The command angle switching unit 16 receives both the joint-angle command value .sub.L output by the joint-angle command calculating unit 11 and the corrected motor detection angle detected by the stop position detecting unit 15, and performs the same operation as in the first embodiment.
[0103] A technical feature of the control device 20 according to the present embodiment is that the command angle switching unit 16 outputs the corrected motor detection angle, instead of the robot joint angle (joint-angle command value .sub.L). The corrected motor detection angle is obtained by the inverse elastic deformation compensation unit 21 by correcting the motor detection angle at the time of detection of workpiece contact.
[0104] That is, as described above, the elastic deformation compensation unit 13 of the present embodiment adds the amount of deflection in the joint J of the robot R to the joint angle indicated by the joint-angle command value .sub.L received by the axial-force torque calculating unit 12, thereby compensating for the effect of elastic deformation in the robot R. This compensation makes it possible to suppress vibration caused by abrupt stopping of the robot R. However, the compensation performed by the elastic deformation compensation unit 13 works even after the stopping, and the robot R stops at a certain distance from the position at the time of workpiece contact.
[0105] Accordingly, the inverse elastic deformation compensation unit 21 having a feature completely opposite the feature of the elastic deformation compensation unit 13 is prepared. Thus, the corrected motor detection angle obtained by correction performed by the inverse elastic deformation compensation unit 21, instead of the robot joint angle, is output from the command angle switching unit 16 to cancel out the compensation made by the elastic deformation compensation unit 13 after stopping of the robot R.
[0106] Therefore, by controlling the motion of the robot R with the higher-level controller C2 including the inverse elastic deformation compensation unit 21, the control device 20 of the present embodiment can quickly and accurately stop the robot R at a desired stop position (near the position at the time of workpiece contact) without causing the robot R to vibrate, in a motion which requires the robot R to be quickly stopped at a position not determined in advance, such as a robot motion for creating teaching data. It is thus possible to solve the problem of displacement of the robot stop position from the position at the time of workpiece contact.
[0107] With reference to
[0108]
[0109] The embodiments disclosed herein are illustrative in all respects, and should not be considered restrictive. The scope of the present invention is defined by the appended claims, not by the foregoing description, and is intended to include meanings equivalent to the appended claims and all modifications within the scope. Particularly, in the embodiments disclosed herein, matters that are not explicitly disclosed, such as operating conditions, various parameters, and dimensions, weights, and volumes of components, are given by values that are within ranges generally employed by those skilled in the art and that can be easily conceived by those skilled in the art.
[0110] The present application is based on Japanese Patent Application No. 2014-114086 filed on Jun. 2, 2014, the contents of which are incorporated herein by reference.
REFERENCE SIGNS LIST
[0111] 10, 20: control device [0112] 11: joint-angle command calculating unit [0113] 12: axial-force torque calculating unit [0114] 13: elastic deformation compensation unit [0115] 14: FF torque calculating unit [0116] 15: stop position detecting unit [0117] 16: command angle switching unit [0118] 17: position/speed control unit [0119] 18: torque control unit [0120] 21: inverse elastic deformation compensation unit [0121] J: joint [0122] M: motor [0123] R: welding robot (robot) [0124] W: workpiece (external structure) [0125] C1, C2: higher-level controller [0126] SA: servo amplifier