# Patent

## Title
Robot and spot welding robot with learning control function

## Abstract

A robot (100) has a robot mechanism unit (1) having a sensor (10) and a control unit (2), and the control unit (2) includes a normal control unit (4) that controls the operation of the robot mechanism unit, and a learning control unit (3) that, when the robot mechanism unit (1) is operated by a speed command that is given by multiplying a teaching speed designated in a task program by a speed change ratio, performs learning to calculate, from a detection result by the sensor (10), a learning correction amount for making the trajectory or position of the control target in the robot mechanism unit (1) approach the target trajectory or target position, or for reducing the vibration of the control target, and performs processes so that the control target position of the robot mechanism unit (1) moves along a fixed trajectory regardless of the speed change ratio.

## Background
This application is a new U.S. patent application that claims benefit of JP 2011-110787 filed on May 17, 2011 and 2011-178634 filed on Aug. 17, 2011, the content of 2011-110787 and 2011-178634 is incorporated herein by reference.
FIELD OF THE INVENTION
The present invention relates to a robot and spot welding robot having a learning control function. More particularly, the present invention relates to a robot and spot welding robot that increase the speed of operation using a sensor attached to an arm.
BACKGROUND OF THE INVENTION
In a robot, the position and speed of a part to be driven by a servo-motor (hereinafter, also referred to as “motor”) are controlled. Consequently, normally, position feedback control, speed feedback control and furthermore current feedback control are executed. These controls are executed until the position and speed of the driven part match the commanded position and the commanded speed.
Even if the position feedback control, speed feedback control and furthermore current feedback control are executed, when a robot is operated at high-speed, a trajectory error and a position vibration component may be produced. Also, in high-speed operation, the dynamic characteristics of the motor and the dynamic characteristics of the arm are different. Consequently, it is not possible to measure the trajectory error and position vibration component of the arm directly using a motor encoder which is provided near the motor for driving the arm. Therefore, it is necessary to mount a sensor directly on the arm in order to measure the trajectory error and position vibration component. It is known that learning control is executed using an acceleration sensor for such a sensor (see Patent Document 1).
FIG. 1 is a schematic diagram showing a robot having a learning control filter to carry out learning control. A robot 1000 is configured with a robot mechanism unit 1 and a control unit 2 that controls the robot mechanism unit 1. The control unit 2 includes a learning control unit 3 that carries out learning control for the robot, and a normal control unit 4 that directly drives the robot mechanism unit 1.
In the robot mechanism unit 1, an acceleration sensor 10, an arm 11, an arm forward end portion 12 (hereinafter also referred to as “gun”), and a motor (not shown) are provided. The normal control unit 4 included in the control unit 2 drives the arm 11 and moves the arm forward end portion 12 to a desired position, by inputting signals in the motor of the robot mechanism unit 1, and carries out tasks such as welding, for example. The acceleration sensor 10 is installed in the arm forward end portion 12, and therefore can acquire spatial position data (yj(k)) of the arm forward end portion 12. The position data (yj(k)) obtained from the acceleration sensor 10 is input to the learning control unit 3 and used for learning control. The symbol “j” of “yj(k)” designates the number of tries, the symbol “k” of “yj(k)” designates time, and the symbol “Ns” of a delay circuit 361 in FIG. 1 designates the number of the times sampling is made in each one trial. “yd(k)” designates position command data, and “yj(k)” designates the amount subjected to control at a previous trial. “ej(k)” designates the target correction amount calculated from yd(k) and (yj(k)) through a filter, and “uj(k)” designates learning correction amount at a previous trial.
In the normal control unit 4, a position control unit 41, a speed control unit 42, a current control unit 43, an amplifier 44 and a differentiation means 45 are provided. The position control unit 41 receives position command data (yd(k)) that is input from outside the control unit 2. The position control unit 41 furthermore receives position information of, for example, the motor position of the robot mechanism unit 1, and outputs desired position information for the arm forward end portion 12 of the robot mechanism unit 1, to the speed control unit 42. The differentiation means 45 receives the motor position information that is fed back from the robot mechanism unit 1, calculates the motor speed, and outputs this motor speed to the speed control unit 42.
The speed control unit 42 calculates the desired motor speed taking into account the position information from the position control unit 41 and the motor speed information from the differentiation means 45, and outputs this desired motor speed to the current control unit 43. The current control unit 43 receives the current value that is fed back from the amplifier 44. Furthermore, the current control unit 43 calculates the current to flow in the motor to achieve the desired motor speed input from the speed control unit 42, and outputs the resulting current to the amplifier 44. The amplifier 44 calculates the desired power based on the current value from the current control unit 43, and applies this to the motor (not shown) of the robot mechanism unit 1.
In the learning control unit 3, a first memory 31, a learning control filter L(q) 32, a low-pass filter Q(q) 33, a second memory 34, a delay circuit 361 and a third memory 362 are provided. The first memory 31 receives target correction amount ej(k) calculated from the position command data (yd(k)) for the arm forward end portion 12 and the position data (yj(k)) measured by the acceleration sensor 10 through a filter. The first memory 31 stores the target correction amount ej(k) received as input, and also outputs the target correction amount ej(k) to the learning control filter L(q) 32. The target correction amount ej(k) corresponds to the trajectory/vibration errors against the desired position of the arm forward end portion 12.
By executing the task program stored in the learning control filter L(q) 32, the learning control filter L(q) 32 calculates a learning correction amount uj+1(k), from the target correction amount ej(k) and uj(k), and outputs this learning correction amount uj+1(k) to the low-pass filter Q(q) 33. The learning correction amount uj+1(k) that is input to the low-pass filter Q(q) 33 is output to the second memory 34 and stored in the second memory 34. The learning correction amount uj+1(k) is added to position error data that is calculated in the position control unit 41 of the normal control unit 4.
Based on the corrected position error data, the robot mechanism unit 1 is controlled, and learning control is repeated. In the learning control, this series of processes are repeatedly executed so that the position error converges to “0”. After the operation for calculating the learning correction amount by learning control is finished, i.e., after the learning operation is finished, the loop for updating the learning correction amount, which is indicated by dotted lines in FIG. 1, is not executed. Instead, the learning correction amount uj+1(k) is output from the second memory 34 to the position control unit 41. The solid line parts and dotted line parts in FIG. 1, which represent signal flows, will be explained. The solid line parts represent parts which the normal control unit 4 implements to operate the robot mechanism unit 1. On the other hand, the dotted line parts represent parts which the learning control unit 3 implements in a state of the learning operation. The dotted lines represent parts which are implemented after the operation of the robot mechanism unit 1 by the normal control unit 4 is finished.
As examples of robot application, a robot for spot welding has been reported (see, for example, Patent Documents 2 and 3). Also, an example of a robot with a vision sensor detecting position of an object and perform spot welding by the robot is disclosed (see, for example, Patent Document 4).

    Patent Document 1: Japanese Patent Application Publication No. 2006-172149
    Patent Document 2: Japanese Patent Application Publication No. 2007-268590
    Patent Document 3: Japanese Patent Application Publication No. 2007-7666
    Patent Document 4: Japanese Patent Application Publication No. 2005-138223


Conventional learning control focuses on improvement of trajectory/vibration errors under certain conditions. However, there is a problem, with conventional learning control, that the range of application is narrow and usability is given not much thought.
The aforementioned conventional technique described above as an example of learning control using a sensor is an example of a machine tool and yet assumes the use of an acceleration sensor for the sensor. In the case an acceleration sensor is mounted on a robot, although the trajectory/position errors can be extracted in orthogonal coordinates, there is still a problem that, in this condition, it is not possible to calculate the trajectory/position errors on each axis directly from the sensor data.
Also, according to the conventional technique described above, a normal high-pass filter is used to extract the trajectory/vibration errors from the acceleration sensor. With machine tools, the frequency band for feedback control is as high as several tens of Hz to several hundred Hz. That is to say, feedback control has very high performance in this frequency band. Consequently, no serious problem is posed even in the case where learning control using data of not more than 10 [Hz] is not possible, and offset is not a significant problem. On the other hand, with industrial robots, the frequency band for feedback control is normally several [Hz], and frequency bands higher than this are subject to feed forward control. As a result of this, the performance is liable to depend on the model error, and therefore this part is corrected by learning control. For example, in the case where a high-pass filter of 1 [Hz] is used to remove the offset of acceleration sensor data, the phase of the trajectory/vibration errors up to about 10 [Hz] rotates. Consequently, the trajectory/vibration error data of frequency bands to be removed is also processed, posing a problem that learning control performance is deteriorated.
Furthermore, there are two difficult problems in adjusting a learning control filter. One is the condition of convergence. The condition of convergence refers to the guarantee that repeating learning will always leads to convergence. Unless this is guaranteed, every learning leads only to divergence and this eventually damages the operation. The second is the condition of monotonic decrease. This is a condition to guarantee that the trajectory/vibration errors decrease every time learning is executed. Unless this is guaranteed, there is a possibility that convergence is reached only after the trajectory/vibration errors increase significantly over the course toward convergence. This then results in a possibility that the trajectory drifts significantly and vibration is produced in the course of learning, causing damage to the peripheral devices. Adjustment for meeting these two conditions is in fact mostly made by trial and error in most work fields. Also, given that the robot system changes in accordance with the posture, robustness also has to be taken into account. Learning control filters have become too complex taking into account these factors, and are therefore very difficult to implement. Furthermore, the calculation in the course of design is too complex. Consequently, in reality, no controllers to fulfill these conditions are used for industrial robots. There are examples of usage for machine tools, adjustments are in reality made based on experience per application. At present, an industrial robot having a learning function to design parameters and increase speed to cope with such problems, is still unavailable.
Furthermore, the conventional, general spot welding robots disclosed in Patent Documents 2 and 3 simply perform spot welding by performing operations that are stored in advance. Consequently, there is a problem that optimal robot operations are blocked by trajectory error and vibration components that are produced by high-speed robot operations. Patent Document 4 discloses an example of detecting an object by a vision sensor and correcting the operation of a robot. With this example, it is not possible to optimize the operation of a robot itself that moves toward an object. As a result, as described above, trajectory errors and vibration components are produced, and these become factors to lower the speed of robot operations.
It is therefore an object of the present invention to provide a robot and spot welding robot with learning control functions, that, in a spot welding application in which productivity relies upon robot operations, detect the position of a part that is subject to position control and control this to approach closer to a target operation.
It is also an object of the present invention to provide a robot and spot welding robot that make it possible to improve productivity and reduce cost by increasing the speed of robot operation.
It is also an object of the present invention to provide a robot and spot welding robot that can reduce the system cost by reducing the number of robots required to perform tasks, reducing the line space, and reducing the steps to perform.
It is also an object of the present invention to provide a robot and spot welding robot that can solve the problem of offset with acceleration sensors, without risking deterioration of performance.
It is also an object of the present invention to provide a robot and a spot welding robot that can automatically increase the speed of operation during learning.
It is also an object of the present invention to provide a robot and spot welding robot that can reduce the vibration of the spot welding robot and realize fast operation.
SUMMARY OF THE INVENTION
A robot according to one aspect of the present invention, includes a robot mechanism unit that has a sensor in a part that is subject to position control, and a control unit that controls an operation of the robot mechanism unit, and the control unit includes a normal control unit that controls the operation of the robot mechanism unit, and a learning control unit that, when the robot mechanism unit is operated by a speed command given by multiplying a teaching speed designated in a task program by a speed change ratio, calculates, from a result detected by the sensor, a learning correction amount for making a trajectory or position of a control target of the robot mechanism unit approach a target trajectory or target position that is assigned to the normal control unit, or for reducing a vibration of the control target that is produced when the robot mechanism unit is operated, and performs processes so that the control target position of the robot mechanism unit moves on a fixed trajectory regardless of the speed change ratio.
According to another aspect of the present invention, the learning control unit preferably calculates the learning correction amount while changing the speed change ratio over a plurality of times until reaching a predetermined maximum speed change ratio.
According to another aspect of the present invention, the predetermined maximum speed change ratio may be calculated by the learning control unit, based on data acquired when the robot mechanism unit is operated, a maximum speed and maximum acceleration that can be tolerated in the robot mechanism unit, or a duration of life of a decelerator.
According to another aspect of the present invention, the predetermined speed change ratio may be set in the control unit from outside.
According to another aspect of the present invention, a technique of designing a learning control filter by H-infinity norm, incorporating the concept of frequency response, is proposed. By this means, filter design to guarantee convergence and monotonic decrease from the frequency response of a robot by a systematic technique, not an experience-based technique, is made possible. Furthermore, regarding the robustness against change of posture, systematic calculation is made possible by incorporating uncertainties into H-infinity norm. This systematic technique reduces these filter design problems to a minimization problem of a decision-value sign matrix problem.
According to another aspect of the present invention, the control unit may further include a teaching control unit that teaches or corrects a position or speed in the task program, and the normal control unit may operate the robot mechanism unit by a position command that is based on the teaching position set in the task program, a learning correction amount that is calculated by the learning control unit, and a speed command that is given by multiplying the teaching speed set in the task program by a speed change ratio upon calculation of the learning correction amount, and, after the learning correction amount is calculated by the learning control unit, when the position of a teaching point is corrected by the teaching control unit, if a distance between the position of the teaching point after the position correction and the position of the teaching point before the position correction is equal to or greater than a predetermined distance, may control move to the teaching point at the teaching speed, and, if the distance is less than the predetermined threshold, may control the move to the teaching point by the speed command.
According to another aspect of the present invention, after the learning correction amount is calculated by the learning control unit, when the position of the teaching point is corrected by the teaching control unit, if the distance between the position of the teaching point after the position correction and the position of the teaching point before the position correction is equal to or greater than the predetermined distance, the normal control unit may control the move to the teaching point or move from the teaching point to a next teaching point at the teaching speed, and, if the distance is less than the predetermined threshold, may control the move to the teaching point or the move from the teaching point to the next teaching point by the speed command.
According to another aspect of the present invention, after the learning correction amount is calculated by the learning control unit, when the speed command is corrected by the teaching control unit, if a difference between the speed command after the correction and the speed command before the correction is equal to or greater than a predetermined rate or a predetermined value, the normal control unit may control the move to the teaching point at the teaching speed, and, if the difference is lower than the predetermined rate or the predetermined value, may control the move to the teaching point by the speed command.
According to another aspect of the present invention, the learning control unit may include a filter for calculating trajectory/vibration errors of the robot mechanism unit against data detected by the sensor.
According to another aspect of the present invention, the learning control unit preferably calculates a position on each axis including trajectory/vibration errors by inverse-transforming the data detected by the sensor into three basic axes.
According to another aspect of the present invention, the learning control unit may make the robot mechanism unit execute a predetermined operation, and calculates a position and inclination of the sensor.
According to another aspect of the present invention, the learning control unit preferably further includes a memory unit for storing the learning correction amount.
According to another aspect of the present invention, the sensor may be one of a vision sensor, an acceleration sensor, a gyro sensor, an inertial sensor, an optical sensor and a distortion gauge.
According to another aspect of the present invention, the sensor preferably has a mounting means that can be attached to and detached from the robot mechanism unit, and more preferably has a magnet as the mounting means.
A spot welding robot according to one aspect of the present invention includes: a robot mechanism unit that has a control target part that is subject to position control and a sensor that is mounted on the control target part; a normal control unit that acquires position command data related to a target trajectory or target position of the control target part, and, according to position error data that is calculated using the position command data, operates the robot mechanism unit at a predetermined operation speed, by a task program; and a learning control unit that calculates a trajectory or position of the control target part from a detection result of the sensor, and, by learning control, calculates a learning correction amount, for correcting a trajectory error between the trajectory and the target trajectory or a position error between the position and the target position, or for reducing a vibration of the control target part that is produced when the robot mechanism unit is operated, and, the normal control unit corrects the position error data using the learning correction amount, and the learning control unit, in a course of calculating the learning correction amount, calculates a maximum operation speed that can be set in the robot mechanism unit, and calculates the learning correction amount while increasing the operation speed in one time or over a plurality of times until reaching the maximum operation speed.
According to another aspect of the present invention, the normal control unit may acquire a target operation speed, which is a target value of the operation speed of the robot mechanism unit, and the learning control unit may compare the target operation speed and the maximum operation speed, and, when the target operation speed is less than the maximum operation speed, calculate the learning correction amount while increasing the operation speed in one time or a plurality of times until reaching the target operation speed.
According to another aspect of the present invention, the learning control unit preferably calculates the maximum operation speed based on a maximum speed and maximum acceleration that can be tolerated in the robot mechanism unit.
A spot welding robot according to another aspect of the present invention includes: a robot mechanism unit that has a control target part that is subject to position control and a sensor that is mounted on the control target part; a normal control unit that acquires position command data related to a target trajectory or target position of the control target part, and, according to position error data that is calculated using the position command data, operates the robot mechanism unit at a predetermined operation speed, by a task program; and a learning control unit that calculates a trajectory or position of the control target part from a detection result of the sensor, and, by learning control, calculates a learning correction amount, for correcting a trajectory error between the trajectory and the target trajectory or a position error between the position and the target position, or for reducing a vibration of the control target part that is produced when the robot mechanism unit is operated, and the normal control unit corrects the position error data using the learning correction amount; and the learning control unit performs a process of calculating the learning correction amount and comparing the trajectory error or the position error, or the vibration, within each threshold that is set in advance, and repeats the process, while increasing the operation speed, until the trajectory error or the position error, or the vibration, exceeds each threshold.
According to another aspect of the present invention, the normal control unit may acquire a target operation speed, which is a target value of the operation speed of the robot mechanism unit, and the learning control unit may increase the operation speed in one time or over a plurality of times until reaching the target operation speed, and upon every increase, perform a process of calculating a learning correction amount and comparing the trajectory error or the position error, or the vibration, within each threshold that is set in advance, and repeat the process, as long as the trajectory error or the position error, or the vibration, stays within each threshold, or until the operation speed reaches the target operation speed.
According to another aspect of the present invention, the learning control unit may calculate data on each axis by transforming data that is calculated from the detection result of the sensor and that includes the trajectory error, the position error or a vibration component of the control target part, into position coordinates based on each axis of the robot mechanism unit.
Effects of the Invention
A robot according to one aspect of the present invention performs processes so that the control target position of a robot mechanism unit moves on a fixed trajectory regardless of the speed change ratio. As a result of this, trajectory drift due to change of the speed change ratio is not produced, and therefore it is possible to improve the accuracy and safety of operation of the robot mechanism unit.
Furthermore, with a robot according to another aspect of the present invention, a learning control unit calculates the maximum speed change ratio that can be set in a learning operating state, and calculates a learning correction amount while changing the speed change ratio over a plurality of times until reaching the maximum speed change ratio. As a result of this, it is possible to actually increase the speed of operation during learning.
There is also an advantage that the system cost can be reduced by reducing the number of robots required to perform tasks, reducing the line space, and reducing the steps to perform. Furthermore, the number of robots to maintain can be reduced, and this helps reducing the cost of maintenance.
Furthermore, a robot according to another aspect of the present invention, it is possible to solve the problem of offset with acceleration sensors, by introducing a zero-phase filter, without risking deterioration of performance.
With a robot according to another aspect of the present invention, a learning control unit calculates the maximum speed of operation that can be set in a learning operating state, and calculates a learning correction amount while increasing the speed of operation in one time or over a plurality of times until reaching the maximum speed of operation. As a result of this, it is possible to automatically increase the speed of operation during learning.
A spot welding robot according to one aspect of the present invention has learning control functions to detect the position of a part that is subject to position control by a sensor and control this to approach closer to a target operation. As a result of this, it is possible to reduce the vibration of the spot welding robot and realize fast operation.
With a spot welding robot according to another aspect of the present invention, it is possible to increase the speed of operation of the robot and improve the work capacity of the robot by means of fast operation without vibration. In spot welding, improved productivity can be achieved by increasing the speed of robot operation. Also, with a spot welding system of the same cycle time, the same volume of spot welding is made possible by fewer spot welding robots, so that it is possible to reduce the system cost.



DESCRIPTION OF THE DRAWINGS
These and other features and advantages of the present invention will be better understood by reading the following detailed description, taken together with the drawings wherein:
FIG. 1 is a diagram showing a configuration of a conventional robot;
FIG. 2 is a diagram showing a configuration of a robot according to the first embodiment;
FIG. 3A and FIG. 3B are diagrams showing configurations of a robot mechanism unit and sensor in the robot according to the first embodiment;
FIG. 4 is a conceptual diagram showing a configuration of the robot mechanism unit in the robot according to the first embodiment;
FIG. 5 is a diagram showing the position of a sensor in a world coordinate system;
FIG. 6 is a flowchart for explaining the steps of increasing the speed of operation of the robot mechanism unit forming the robot according to the first embodiment;
FIG. 7A and FIG. 7B are diagrams for explaining operation following a fixed trajectory;
FIG. 8 is a flowchart showing the step of finding a maximum speed change ratio based on the duration of life of a decelerator;
FIG. 9A and FIG. 9B are diagrams for explaining the effect of a zero-phase high-pass filter;
FIG. 10 is a diagram for explaining the steps of data processing in a zero-phase high-pass filter;
FIG. 11 is a diagram showing a configuration of a robot according to a second embodiment;
FIG. 12 is a flowchart for explaining the steps of operation of the robot according to the second embodiment;
FIG. 13 is a flowchart for explaining the steps of robot operations according to the second embodiment;
FIG. 14 is a perspective view of a robot mechanism unit in a spot welding robot according to a third embodiment;
FIG. 15 is a diagram showing a configuration of the spot welding robot according to the third embodiment:
FIG. 16 is a flowchart for explaining the steps of operation of the robot mechanism unit forming the spot welding robot according to the third embodiment;
FIG. 17 is a flowchart for explaining the steps of operation of a robot mechanism unit forming a spot welding robot according to a fourth embodiment;
FIG. 18 is a flowchart for explaining the steps of operation of a robot mechanism unit forming a spot welding robot according to a fifth embodiment;
FIG. 19 is a flowchart for explaining the steps of operation of a robot mechanism unit forming a spot welding robot according to a sixth embodiment; and
FIG. 20 is a diagram showing an example of a vision sensor as an example of a sensor.



DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT
The robot and spot welding robot according to the present invention will be described below in detail with reference to the accompanying drawings. However, it should be noted that the technical scope of this invention is not limited to the embodiments described below and covers the invention described in the appended claims and equivalents thereof.
First Embodiment
FIG. 2 is a schematic diagram of a robot 100 according to the first embodiment. The robot 100 is configured with a robot mechanism unit 1, and a control unit 2 that controls the robot mechanism unit 1. The control unit 2 has a learning control unit that executes learning control for the robot 100, and a normal control unit 4 that controls the operation of the robot mechanism unit 1 by driving the robot mechanism unit 1 directly.
The learning control unit 3 operates the robot mechanism unit according to a speed command which is given by multiplying the teaching speed designated in a task program by a speed change ratio. From a detection result of an acceleration sensor 10, the learning control unit 3 executes learning for calculating a learning correction amount uj+1(k) for making the trajectory or position of the control target of the robot mechanism unit 1 approach closer to the target trajectory or target position that is assigned to the normal control unit 4. Otherwise, the learning control unit 3 executes learning to calculate a learning correction amount uj+1(k) for reducing the vibration of the control target, which is generated when the robot mechanism unit is operated. The robot 100 according to the first embodiment has a feature that the normal control unit 4 performs processes so that the control target position of the robot mechanism unit 1 moves along a fixed trajectory regardless of the speed change ratio. Configurations other than the learning control unit 3 is the same as the configurations of the conventional robot shown in FIG. 1 and therefore will not be explained in detail. In the learning control unit 3, a first memory 31, a position transformer 35, a high-pass filter 36, an inverse transformer IK 37, a forward transformer FK 38, a learning control filter L(q) 32, a low-pass filter Q(q) 33, a second memory 34, a delay circuit 361, a third memory 362 and a fourth memory 39 are provided.
FIG. 3 is a diagram showing a configuration of the robot mechanism unit 1 of the robot 100. FIG. 3A shows an overall configuration of the robot mechanism unit 1, and FIG. 3B shows an enlarged view of a gun 12 having an acceleration sensor 10 mounted thereon. The robot mechanism unit 1 is a well-known robot manipulator. There are no particular limits regarding the mechanism of the robot mechanism unit, as long as the gun 12 can reach the positions and postures in which the gun 12 performs tasks. The acceleration sensor 10 is used as a sensor for detecting the position of the robot mechanism unit 1 and the trajectory/vibration errors which may occur when the robot mechanism unit 1 is decelerated to pause. The acceleration sensor 10 is mounted at the forward end portion of the gun 12, which is the part of the robot mechanism unit that is subject to position control. A tri-axial acceleration sensor may be used as the acceleration sensor 10. The acceleration sensor 10 has a mounting means that is formed with a magnet and can be attached to and detached from the robot mechanism unit 1, and therefore is detachable. The case of the acceleration sensor 10 may be formed with a magnet.
The calibration of the acceleration sensor 10 attached to the robot mechanism unit 1 of the robot shown in FIG. 3 will be described with reference to FIG. 4.
After mounting the acceleration sensor 10 on the robot mechanism unit 1, the robot mechanism unit 1 is made to perform predetermined operations, and calibration to calculate the position and inclination of the acceleration sensor 10 is performed. Data transform from a tool coordinate system into a world coordinate system is necessary to perform calibration, and this is performed in the following steps.
First, the inclination of the acceleration sensor 10 is specified. As shown in FIG. 5, operation is performed in the X axis direction from a given point P0 (not shown) on a world coordinate system, and acceleration data upon passing through a given point P1 (not shown) is acquired. Then, assume that the acceleration data in a stationary state at point P0 is designated as a0, and the acceleration data at point P1 in an operating state is designated as a1. Then, the acceleration axγ excluding the gravitational acceleration (stationary acceleration) can be expressed as axγ=a1−a0. By normalization, this can be defined as follows.




  
    a
    x
  
  =
  
    
      a
      xr
    
    
      
      
        a
        
          x
          ⁢
          
            
          
          ⁢
          γ
        
      
      
    
  




Next, operation is performed in the Y axis direction from the point P0, and acceleration data a2 upon passing a given point P2 (not shown) is acquired. In the process, the acceleration ayγ excluding the gravitational acceleration can be expressed as ayγ=a2−a0. By normalization, this can be defined as follows.




  
    a
    y
  
  =
  
    
      a
      
        y
        ⁢
        
          
        
        ⁢
        r
      
    
    
      
      
        a
        
          y
          ⁢
          
            
          
          ⁢
          γ
        
      
      
    
  




A vector that is orthogonal to these two is given as azγ=ax×ay and can be expressed as follows.




  
    a
    z
  
  =
  
    
      a
      
        z
        ⁢
        
          
        
        ⁢
        γ
      
    
    
      
      
        a
        
          z
          ⁢
          
            
          
          ⁢
          γ
        
      
      
    
  




As a result, the matrix Rt for transforming the posture from the tool coordinate system into the world coordinate system can be expressed as follows.

Rt=└ax ay az┘

Next, by operating J5 and J6, the position of the acceleration sensor 10 is specified. First, as shown in FIG. 4, J5 is rotated Δθ1. Then, by multiplying the corresponding acceleration data measured in the coordinate system of the acceleration sensor 10 by the matrix Rt and making the acceleration data having been transformed into the world coordinate system ({umlaut over (φ)}1x,{umlaut over (φ)}1y,{umlaut over (φ)}1z) sensor displacement Δφ1 can be expressed as follows.

Δφ1=∫∫√{square root over ({umlaut over (φ)}21x+{umlaut over (φ)}21z)}dtdt 

The amount of offset Δx in the X axis direction in the world coordinate system at that time is expressed as Δx=Δφ1/Δθ1.
Then, as shown in FIG. 5, J6 is rotated Δθ2. Then, by multiplying the corresponding acceleration data measured in the coordinate system of the acceleration sensor by the matrix Rt and making the acceleration data having been transformed into the world coordinate system ({umlaut over (φ)}2x,{umlaut over (φ)}2y,{umlaut over (φ)}2z), sensor displacement Δφ2 can be expressed as follows.

Δφ2=∫∫√{square root over ({umlaut over (φ)}22y+{umlaut over (φ)}22z)}dtdt 

γ=Δφ2/Δθ2 is given, and the amount of offset Δy in the Y axis direction in the world coordinate system is calculated as Δy=γ cos θ2, and the amount of offset Δz in the Z axis direction in the world coordinate system is calculated as Δz=γ sin θ2.
As described above, by transforming data from the tool coordinate system into the world coordinate system, it is possible to calculate the position and inclination of the acceleration sensor 10 from output data of the acceleration sensor 10, and perform calibration.
Next, the designing of the learning control filter 32 will be explained. First, the frequency response up to a position estimated based on the acceleration sensor 10 is measured from input of the learning correction amount uj+1(k) with respect to each axis. Also, the block of the learning control unit 3 is shown in FIG. 2.
Next, from the frequency response result, a linear matrix inequality is solved. A linear matrix inequality is a problem to calculate x that minimizes cTx (cεRm) under the following restraint conditions.



  
    
      F
      ⁡
      
        (
        x
        )
      
    
    =
    
      
        
          F
          0
        
        +
        
          
            ∑
            
              i
              =
              1
            
            m
          
          ⁢
          
            
              x
              i
            
            ⁢
            
              F
              i
            
          
        
      
      ≥
      0
    
  




  
    (
    
      
        x
        ∈
        
          R
          m
        
      
      ,
      
        
          F
          i
        
        =
        
          
            F
            i
            *
          
          ∈
          
            R
            
              n
              ×
              n
            
          
        
      
      ,
      m
      ,
      
        i
        ∈
        Z
      
    
    )
  



Fi is a positive semi-definite matrix.

Now, assume that the learning control filter is expressed as

L(z)=L0z−N0+L1z−N0+1+ . . . +LN0z0+ . . . +L2N0−1zN0−1+L2N0zN0 

where N0εZ.

Assuming that

x=[γ2 L0 L1 . . . L2N0]T 

cT=[1 0 0 . . . 0]

where γεR, LkεRNy×Nu, kεZ,
then, the conditions for guaranteeing the stability and monotonic decrease of the learning control filter are expressed as shown below in the frequency domain.

∥Q(z)(I−L(z)P(z))∥∞=γ<1  (2)

In this equation, Q(z) designates a low-pass filter having the learning band as the cut frequency, L(z) designates the learning control filter, and P(z) is the transfer function from the input of the learning correction amount to the control target. L(z) is the notation of the learning control filter in the frequency domain, and, on the other hand, L(q) is the notation of the learning control filter in the time domain. The smaller the value of this γ, the higher the performance of the learning control filter. The learning control filter optimization problem is a problem to calculate the learning filter L(z) to give the minimum γ when a frequency band for learning control is allocated. This equation can be rewritten as follows.




  
    [
    
      
        
          0
        
        
          
            
              Q
              ⁡
              
                (
                
                  e
                  
                    j
                    ⁢
                    
                      
                    
                    ⁢
                    
                      Ω
                      i
                    
                  
                
                )
              
            
            *
          
        
      
      
        
          
            Q
            ⁡
            
              (
              
                e
                
                  j
                  ⁢
                  
                    
                  
                  ⁢
                  
                    Ω
                    i
                  
                
              
              )
            
          
        
        
          0
        
      
    
    ]
  
  +
  
    
      γ
      2
    
    ⁡
    
      [
      
        
          
            I
          
          
            0
          
        
        
          
            0
          
          
            0
          
        
      
      ]
    
  
  +
  
     
    
      
        [
        
          
            
              0
            
            
              
                
                  (
                  
                    
                      -
                      
                        Q
                        ⁡
                        
                          (
                          
                            e
                            
                              j
                              ⁢
                              
                                
                              
                              ⁢
                              
                                Ω
                                i
                              
                            
                          
                          )
                        
                      
                    
                    ⁢
                    
                      L
                      ⁡
                      
                        (
                        
                          e
                          
                            j
                            ⁢
                            
                              
                            
                            ⁢
                            
                              Ω
                              i
                            
                          
                        
                        )
                      
                    
                    ⁢
                    
                      P
                      ⁡
                      
                        (
                        
                          e
                          
                            j
                            ⁢
                            
                              
                            
                            ⁢
                            
                              Ω
                              i
                            
                          
                        
                        )
                      
                    
                  
                  )
                
                *
              
            
          
          
            
              
                (
                
                  
                    -
                    
                      Q
                      ⁡
                      
                        (
                        
                          e
                          
                            j
                            ⁢
                            
                              
                            
                            ⁢
                            
                              Ω
                              i
                            
                          
                        
                        )
                      
                    
                  
                  ⁢
                  
                    L
                    ⁡
                    
                      (
                      
                        e
                        
                          j
                          ⁢
                          
                            
                          
                          ⁢
                          
                            Ω
                            i
                          
                        
                      
                      )
                    
                  
                  ⁢
                  
                    P
                    ⁡
                    
                      (
                      
                        e
                        
                          j
                          ⁢
                          
                            
                          
                          ⁢
                          
                            Ω
                            i
                          
                        
                      
                      )
                    
                  
                
                )
              
            
            
              0
            
          
        
        ]
      
      ≥
      
        0
        ⁢
        
          

        
        ⁢
        
          
        
        ⁢
        
          (
          
            γ
            <
            
              1
              ⁢
              
                
              
              ⁢
              for
              ⁢
              
                
              
              ⁢
              all
              ⁢
              
                
              
              ⁢
              
                Ω
                i
              
            
          
          )
        
      
    
  




Assuming that

φk(z)=z−N0+(k−1),

then,





  
    
      
        
          
            
              
                
                  
                    L
                    ⁡
                    
                      (
                      
                        e
                        
                          j
                          ⁢
                          
                            
                          
                          ⁢
                          
                            Ω
                            i
                          
                        
                      
                      )
                    
                  
                  =
                  
                  ⁢
                  
                    
                      L
                      0
                    
                    ⁢
                    
                      
                        φ
                        0
                      
                      ⁡
                      
                        (
                        z
                        )
                      
                    
                  
                
                
              
              
                z
                =
                
                  e
                  
                    j
                    ⁢
                    
                      
                    
                    ⁢
                    
                      Ω
                      i
                    
                  
                
              
            
            +
            ...
            +
            
              
                L
                
                  2
                  ⁢
                  
                    
                  
                  ⁢
                  
                    N
                    0
                  
                
              
              ⁢
              
                
                  φ
                  
                    2
                    ⁢
                    
                      
                    
                    ⁢
                    
                      N
                      0
                    
                  
                
                ⁡
                
                  (
                  z
                  )
                
              
            
          
          
        
        
          z
          =
          
            e
            
              j
              ⁢
              
                
              
              ⁢
              
                Ω
                i
              
            
          
        
      
    
  
  
    
      
        
          
            =
            
            ⁢
            
              
                ∑
                
                  k
                  =
                  0
                
                
                  2
                  ⁢
                  
                    
                  
                  ⁢
                  
                    N
                    0
                  
                
              
              ⁢
              
                
                  L
                  k
                
                ⁢
                
                  
                    φ
                    k
                  
                  ⁡
                  
                    (
                    z
                    )
                  
                
              
            
          
          
        
        
          z
          =
          
            e
            
              j
              ⁢
              
                
              
              ⁢
              
                Ω
                i
              
            
          
        
      
    
  




is given.

Lk can be expressed by the linearity of αk,j and Vj, where Vj is in the same dimension as Lk, and is always zero other than the element (j,i). For example, assume that Ny=2 and Nu=2.




  
    
      
        
          L
          k
        
        =
        
        ⁢
        
          [
          
            
              
                
                  L
                  
                    1
                    ,
                    1
                  
                  k
                
              
              
                
                  L
                  
                    1
                    ,
                    2
                  
                  k
                
              
            
            
              
                
                  L
                  
                    2
                    ,
                    1
                  
                  k
                
              
              
                
                  L
                  
                    2
                    ,
                    2
                  
                  k
                
              
            
          
          ]
        
      
    
  
  
    
      
        =
        
        ⁢
        
          
            
              L
              
                1
                ,
                1
              
              k
            
            ⁡
            
              [
              
                
                  
                    1
                  
                  
                    0
                  
                
                
                  
                    0
                  
                  
                    0
                  
                
              
              ]
            
          
          +
          
            
              L
              
                1
                ,
                2
              
              k
            
            ⁡
            
              [
              
                
                  
                    0
                  
                  
                    1
                  
                
                
                  
                    0
                  
                  
                    0
                  
                
              
              ]
            
          
          +
          
            
              L
              
                2
                ,
                1
              
              k
            
            ⁡
            
              [
              
                
                  
                    0
                  
                  
                    0
                  
                
                
                  
                    1
                  
                  
                    0
                  
                
              
              ]
            
          
          +
          
            
              L
              
                2
                ,
                2
              
              k
            
            ⁡
            
              [
              
                
                  
                    0
                  
                  
                    0
                  
                
                
                  
                    0
                  
                  
                    1
                  
                
              
              ]
            
          
        
      
    
  
  
    
      
        =
        
        ⁢
        
          
            
              α
              
                k
                ,
                1
              
            
            ⁢
            
              V
              1
            
          
          +
          
            
              α
              
                k
                ,
                2
              
            
            ⁢
            
              V
              2
            
          
          +
          
            
              α
              
                k
                ,
                3
              
            
            ⁢
            
              V
              3
            
          
          +
          
            
              α
              
                k
                ,
                4
              
            
            ⁢
            
              V
              4
            
          
        
      
    
  




Also,




  
    
      
        
          
            
              
                
                  Q
                  ⁡
                  
                    (
                    
                      e
                      
                        j
                        ⁢
                        
                          
                        
                        ⁢
                        
                          Ω
                          i
                        
                      
                    
                    )
                  
                
                ⁢
                
                  L
                  ⁡
                  
                    (
                    
                      e
                      
                        j
                        ⁢
                        
                          
                        
                        ⁢
                        
                          Ω
                          i
                        
                      
                    
                    )
                  
                
                ⁢
                
                  P
                  ⁡
                  
                    (
                    
                      e
                      
                        j
                        ⁢
                        
                          
                        
                        ⁢
                        
                          Ω
                          i
                        
                      
                    
                    )
                  
                
              
              =
              
              ⁢
              
                
                  Q
                  ⁡
                  
                    (
                    
                      e
                      
                        j
                        ⁢
                        
                          
                        
                        ⁢
                        
                          Ω
                          i
                        
                      
                    
                    )
                  
                
                ⁢
                
                  
                    ∑
                    
                      k
                      =
                      0
                    
                    
                      2
                      ⁢
                      
                        
                      
                      ⁢
                      
                        N
                        0
                      
                    
                  
                  ⁢
                  
                    
                      ∑
                      
                        j
                        =
                        1
                      
                      
                        
                          N
                          y
                        
                        ⁢
                        
                          N
                          u
                        
                      
                    
                    ⁢
                    
                      
                        α
                        
                          k
                          ,
                          j
                        
                      
                      ⁢
                      
                        V
                        j
                      
                      ⁢
                      
                        
                          φ
                          k
                        
                        ⁡
                        
                          (
                          z
                          )
                        
                      
                    
                  
                
              
            
            
          
          
            z
            =
            
              e
              
                j
                ⁢
                
                  
                
                ⁢
                
                  Ω
                  i
                
              
            
          
        
        ⁢
        
          P
          ⁡
          
            (
            
              e
              
                j
                ⁢
                
                  
                
                ⁢
                
                  Ω
                  i
                
              
            
            )
          
        
      
    
  
  
    
      
        =
        
        ⁢
        
          
            ∑
            
              l
              =
              1
            
            
              
                (
                
                  
                    2
                    ⁢
                    
                      
                    
                    ⁢
                    
                      N
                      0
                    
                  
                  +
                  1
                
                )
              
              ⁢
              
                N
                y
              
              ⁢
              
                N
                u
              
            
          
          ⁢
          
            
              β
              l
            
            ⁢
            
              F
              l
              i
            
          
        
      
    
  




is given, where

β1αk,j,

and

Fli=Q(ejΩi)VjP(ejΩi).

As a result, this equation is rewritten as




  
    
      
        γ
        2
      
      ⁡
      
        [
        
          
            
              I
            
            
              0
            
          
          
            
              0
            
            
              0
            
          
        
        ]
      
    
    +
    
      
        ∑
        
          l
          =
          1
        
        
          
            (
            
              
                2
                ⁢
                
                  
                
                ⁢
                
                  N
                  0
                
              
              +
              1
            
            )
          
          ⁢
          
            N
            y
          
          ⁢
          
            N
            u
          
        
      
      ⁢
      
        
          β
          l
        
        ⁡
        
          [
          
            
              
                0
              
              
                
                  
                    
                      F
                      l
                      i
                    
                    ⁡
                    
                      (
                      
                        e
                        
                          j
                          ⁢
                          
                            
                          
                          ⁢
                          
                            Ω
                            i
                          
                        
                      
                      )
                    
                  
                  *
                
              
            
            
              
                
                  
                    F
                    l
                    i
                  
                  ⁡
                  
                    (
                    
                      e
                      
                        j
                        ⁢
                        
                          
                        
                        ⁢
                        
                          Ω
                          i
                        
                      
                    
                    )
                  
                
              
              
                0
              
            
          
          ]
        
      
    
    +
    
      [
      
        
          
            0
          
          
            
              
                Q
                ⁡
                
                  (
                  
                    e
                    
                      j
                      ⁢
                      
                        
                      
                      ⁢
                      
                        Ω
                        i
                      
                    
                  
                  )
                
              
              *
            
          
        
        
          
            
              Q
              ⁡
              
                (
                
                  e
                  
                    j
                    ⁢
                    
                      
                    
                    ⁢
                    
                      Ω
                      i
                    
                  
                
                )
              
            
          
          
            0
          
        
      
      ]
    
  
  ≥
  0




Considering the first term and second term of this equation as Σi=1mxiFi and the third term as F0,

c=[1 0 0 . . . 0], x=└γ2 β1 β2 . . . β(2N0+1)NyNu┘

is given, and the above equation is expressed as

Σi=1mxiFi+F0.

This is equivalent to the restraint condition of the linear matrix inequality (1). Then, the minimization problem leads to the problem of minimizing cTx, i.e., γ2. This can be interpreted as a learning control filter optimization problem. That is to say, by leading to a minimization problem by a linear inequality of a decision-value sign matrix, it is possible to find a solution systematically. Thus, the sufficient condition for stability and monotonic decrease is given as cTx≦1. So, by measuring P(ejΩi) from experiment and giving the learning band filter Q(z), the learning filter L(z) 32 can be determined automatically.
Furthermore, the robustness of the learning control filter is taken into account. A robot has a feature of changing its system significantly with posture.
Assuming that a given posture is determined as a reference posture and Pn(z) is the learning system for the reference posture. Then, an arbitrary posture Pm(z) is expressed as Pm(z)=Pn(z)+ΔPm(z), where ΔPm(z) is the amount of change of the learning system from the reference posture. In this case, the restraint condition when the learning band filter Q(z) is given is expressed as follows.




  
    
      
        γ
        m
        2
      
      ⁡
      
        [
        
          
            
              I
            
            
              0
            
          
          
            
              0
            
            
              0
            
          
        
        ]
      
    
    +
    
      
        ∑
        
          l
          =
          1
        
        
          
            (
            
              
                2
                ⁢
                
                  
                
                ⁢
                
                  N
                  0
                
              
              +
              1
            
            )
          
          ⁢
          
            N
            y
          
          ⁢
          
            N
            u
          
        
      
      ⁢
      
        
          β
          l
        
        ⁡
        
          [
          
            
              
                0
              
              
                
                  
                    
                      F
                      
                        l
                        ,
                        m
                      
                      i
                    
                    ⁡
                    
                      (
                      
                        e
                        
                          j
                          ⁢
                          
                            
                          
                          ⁢
                          
                            Ω
                            i
                          
                        
                      
                      )
                    
                  
                  *
                
              
            
            
              
                
                  
                    F
                    
                      l
                      ,
                      m
                    
                    i
                  
                  ⁡
                  
                    (
                    
                      e
                      
                        j
                        ⁢
                        
                          
                        
                        ⁢
                        
                          Ω
                          i
                        
                      
                    
                    )
                  
                
              
              
                0
              
            
          
          ]
        
      
    
    +
    
      [
      
        
          
            0
          
          
            
              
                Q
                ⁡
                
                  (
                  
                    e
                    
                      j
                      ⁢
                      
                        
                      
                      ⁢
                      
                        Ω
                        i
                      
                    
                  
                  )
                
              
              *
            
          
        
        
          
            
              Q
              ⁡
              
                (
                
                  e
                  
                    j
                    ⁢
                    
                      
                    
                    ⁢
                    
                      Ω
                      i
                    
                  
                
                )
              
            
          
          
            0
          
        
      
      ]
    
  
  ≥
  0




Considering xm=└γm2 β1,m β2,m . . . β(2N0+1)NyNu,m┘, the sufficient condition for the stability condition and monotonic decrease is met by satisfying the following condition for an arbitrary integer m.

cTxm≦1

Following the above steps, by measuring experimentally P(ejΩi) for m postures, it is possible to determine the learning control filter automatically as in the preceding case.
Next, the data processing steps in the learning control unit will be explained.
As shown in FIG. 2, feedback is established from three loops, namely position control, speed control and current control, and the learning control forms a loop outside the feedback position control loop. Parts designated by solid lines form an effective loop during in the learning operating state, and, after stop of the learning operation, the loop indicated by dotted lines becomes effective. aj designates data obtained from the acceleration sensor 10, and the position transformer 35 transforms the acceleration data aj into position data. During learning, the data on the vibration which occurs when the robot mechanism unit 1 is paused and which is detected by the acceleration sensor 10, is saved in the first memory 31. The learning correction amount uj+1(k) is output from the second memory 34.
After completion of the operation, the position transformer 35 estimates the trajectory/vibration errors of the orthogonal coordinates, and, by using the high-pass filter 36, which is a zero-phase high-pass filter, the trajectory/vibration error Δr from which offset is removed, is extracted. This trajectory/vibration error is added to the position data r of the acceleration sensor 10, which is estimated from motor position feedback (FB) data using FK 38, and, by this means, the sensor position of the acceleration sensor 10 in the orthogonal coordinate system including the dynamics of the arm, is estimated.
Next, by inverse-transforming the sensor position estimated from the detected data of the acceleration sensor 10 into the three basic axes, the position on each axis including arm dynamics, that is, position vibration components, is calculated. From this position on each axis including arm dynamics, the position on each axis not including arm dynamics, that is, the motor position, is subtracted, to calculate the target correction amount on each axis. In the equation shown below, ψj designates the target correction amount on each axis for the j-th trial, IK designates inverse transformation, and θmj designates the motor position on each axis in the j-th trial.

ψj=IK−1(r+Δr)−θmj 

By inputting this target correction amount for each axis into the learning control filter, the correction amount uj+1(k) for the next trial is calculated. Through the learning control filter L(q) 32, the learning correction amount uj for the preceding trial is added from the third memory 362, and the learning correction amount uj+1 for the next trial is calculated through the low-pass filter Q(q) 33.
As described above, through the data processing steps in the learning control unit 3, it is possible to find the learning correction amount uj+1.
Next, the steps of increasing the operation speed of the robot mechanism unit 1 in learning control will be explained with reference to FIG. 6.
FIG. 6 is a flowchart for explaining the steps of increasing the operation speed of the robot mechanism unit. To increase the operation speed of the robot mechanism unit 1, the learning control unit 3 calculates the maximum speed change ratio (hereinafter also referred to as “maximum speed override”) that can be set while learning is in progress, and executes learning to calculate a learning correction amount uj+1(k) while changing the speed change ratio over a plurality of times until reaching a predetermined maximum speed change ratio. Upon execution of a program, the speed given by multiplying the teaching speed by the speed change ratio serves as the operation speed. This technique of processing the speed change ratio is the same as the technique of processing the speed override.
First, in step S101, the learning control unit 3 sets the maximum speed change ratio that can be set while learning is in progress. The maximum speed change ratio is calculated by the learning control unit 3, based on data acquired when the robot mechanism unit is operated, the maximum speed and maximum acceleration that can be tolerated in the robot mechanism unit, or the desired duration of life of the decelerator. First, the robot mechanism unit is operated once, and, from the data of the first trial, the maximum speed change ratio that is determined from the maximum acceleration which can be learned for each axis, the maximum speed change ratio that is determined from the maximum speed, and the maximum speed change ratio that is determined from the duration of life of the decelerator, are calculated.
First, the maximum speed change ratio that can be learned for each axial motor is calculated from the viewpoint of the maximum acceleration. The equation of motion of the robot is defined as follows.

τ=M(Θ){umlaut over (Θ)}+V(Θ,{dot over (Θ)})+G(Θ)

(where Θ is the position of the arm and {dot over (Θ)} is the speed).

M(Θ) is a matrix of the inertial term, V(Θ,{dot over (Θ)}) is a vector of the speed term, and G(Θ) is a vector of the gravity term. A part where a great amount of torque is used is mainly a situation of acceleration or deceleration. Assuming that the torque increase due to the increase in the speed override is mainly caused from M(Θ){umlaut over (Θ)}, an approximate value of the maximum speed override ovr_max1,i is calculated from the viewpoint of acceleration and deceleration.
Assuming that the maximum torque for the first trial is τmax,i, the maximum torque tolerance of the motor is τp,i and the torque M(Θ){umlaut over (Θ)} used for acceleration and deceleration is τa,i, the equation below is obtained.

τa,i=τmax,i−(V(Θ,{dot over (Θ)})+G(Θ))i 

In the case the maximum speed ratio is determined without actual operation (for example, offline), it is possible to use a maximum torque command instead of the maximum torque for the first trial.
In this case, considering the ovr_max1,i is proportional to the square of τa,i, the following is given.




  
    ovr_max
    
      1
      ,
      i
    
  
  =
  
    
      
        
          τ
          
            p
            ,
            i
          
        
        -
        
          
            (
            
              
                V
                ⁡
                
                  (
                  
                    Θ
                    ,
                    
                      Θ
                      .
                    
                  
                  )
                
              
              +
              
                G
                ⁡
                
                  (
                  Θ
                  )
                
              
            
            )
          
          i
        
      
      
        τ
        
          a
          ,
          i
        
      
    
  




where the affix i indicates the i-th axis.

In the manner described above, the maximum override ovr_max1,i is obtained from the viewpoint of the maximum acceleration.
Next, the maximum speed override ovr_max2,i is calculated from the viewpoint of the maximum speed. Assuming that the maximum speed for the first trial is ωv,i and the maximum speed tolerance of the motor is ωp,i,




  
    ovr_max
    
      2
      ,
      i
    
  
  =
  
    
      ω
      
        p
        ,
        i
      
    
    
      ω
      
        v
        ,
        i
      
    
  




is obtained. When the maximum speed ratio is determined without actual operation (for example, offline), it is possible to use a maximum speed command instead of the maximum speed for the first trial.

As described above, the maximum speed change ratio ovr_max2,i is obtained from the viewpoint of the maximum speed.
Next, from the viewpoint of the duration of life of the decelerator, the maximum speed change ratio ovr_max3,i is calculated. Assuming that the estimated duration of life of the decelerator is Lh [hour], Lh can be expressed in the following equation. In this embodiment, the maximum speed change ratio ovr_max3,i is determined using the following equation.




  
    L
    h
  
  =
  
    K
    ×
    
      
        ω
        t
      
      
        ω
        av
      
    
    ×
    
      
        (
        
          
            τ
            t
          
          
            τ
            av
          
        
        )
      
      
        10
        /
        3
      
    
  




Note that K is the rated life [hour], ωt is the rated speed [rpm], ωav is the average speed [rpm], τt is the rated torque [Nm], and τav is the average torque [Nm]. Also, the coefficient 10/3 is a coefficient to depend on the type of the decelerator. The average speed ωav is defined as follows.




  
    ω
    av
  
  =
  
    Δ
    ⁢
    
      
    
    ⁢
    t
    ⁢
    
      
        ∑
        j
        n
      
      ⁢
      
        
      
      ⁢
      
        
          ω
          j
        
        ⁡
        
          (
          
            j
            ⁢
            
              
            
            ⁢
            Δ
            ⁢
            
              
            
            ⁢
            t
          
          )
        
      
    
  




Note that ωj(t) is the motor axis speed, j is an integer, and Δt is the sampling time. The average torque τav is expressed by the following equation.




  
    τ
    av
  
  =
  
    
      
        
          ∑
          j
          n
        
        ⁢
        
          
        
        ⁢
        
          ω
          j
          
            10
            3
          
        
      
      
        
          ∑
          j
          n
        
        ⁢
        
          ω
          j
        
      
    
    
      10
      3
    
  




When the maximum speed ratio is determined without actual operation (for example, offline), it is possible to use a maximum speed command instead of the maximum speed for the first trial.
Next, the method of calculating the maximum speed change ratio ovr_max3,i will be explained. In the initial operation, the speed change ratio ovr is set as follows.

ovr=ovr_ini

(where, ovr_ini=100)

Also, the motor axis speed then is defined as ωint,j(jΔt). The estimated duration of life of the decelerator then is expressed by the following equation.




  
    L
    
      ini
      ,
      h
    
  
  =
  
    K
    ×
    
      
        ω
        t
      
      
        ω
        
          ini
          ,
          av
        
      
    
    ×
    
      
        (
        
          
            τ
            t
          
          
            τ
            
              ini
              ,
              av
            
          
        
        )
      
      
        10
        /
        3
      
    
  




When the maximum speed ratio is determined without actual operation (for example, offline), it is possible to use a motor axis speed command instead of the motor axis speed for the first trial.
The average speed ωint,av is expressed by the following equation.




  
    ω
    
      ini
      ,
      av
    
  
  =
  
    Δ
    ⁢
    
      
    
    ⁢
    t
    ⁢
    
      
        ∑
        j
        n
      
      ⁢
      
        
      
      ⁢
      
        
          ω
          
            ini
            ,
            j
          
        
        ⁡
        
          (
          
            j
            ⁢
            
              
            
            ⁢
            Δ
            ⁢
            
              
            
            ⁢
            t
          
          )
        
      
    
  




The average torque τav is expressed by the following equation.




  
    τ
    av
  
  =
  
    
      
        
          ∑
          j
          n
        
        ⁢
        
          
        
        ⁢
        
          ω
          
            ini
            ,
            j
          
          
            10
            3
          
        
      
      
        
          ∑
          j
          n
        
        ⁢
        
          ω
          
            ini
            ,
            j
          
        
      
    
    
      10
      3
    
  




If the condition Lint,j≧Ld is met, further acceleration is possible. If this condition is not met, further acceleration is not possible. In the case the above condition is met, ovr is accumulated as follows.

ovr=ovr_ini+k×Δovr

Note that k is the number of times ovr is increased for optimization. The motor axis speed ωj(jΔt) then can be expressed as follows.




  
    
      ω
      j
    
    ⁡
    
      (
      
        j
        ⁢
        
          
        
        ⁢
        Δ
        ⁢
        
          
        
        ⁢
        t
      
      )
    
  
  =
  
    
      ovr
      100
    
    ⁢
    
      
    
    ⁢
    
      
        ω
        0
      
      ⁡
      
        (
        
          j
          ⁢
          
            
          
          ⁢
          Δ
          ⁢
          
            
          
          ⁢
          t
          ⁢
          
            100
            ovr
          
        
        )
      
    
  




The average speed ωav is expressed by the following equation.




  
    ω
    av
  
  =
  
    
      
        ovr
        100
      
      ⁢
      Δ
      ⁢
      
        
      
      ⁢
      t
      ⁢
      
        
          ∑
          j
          n
        
        ⁢
        
          
            ω
            0
          
          ⁡
          
            (
            
              j
              ⁢
              
                
              
              ⁢
              Δ
              ⁢
              
                
              
              ⁢
              t
            
            )
          
        
      
    
    =
    
      
        ovr
        100
      
      ⁢
      
        
          ω
          
            ini
            ,
            j
          
        
        ⁡
        
          (
          
            j
            ⁢
            
              
            
            ⁢
            Δ
            ⁢
            
              
            
            ⁢
            t
          
          )
        
      
    
  




The average torque τav is expressed by the following equation.




  
    τ
    av
  
  =
  
    
      
        
          
            ∑
            j
            n
          
          ⁢
          
            
          
          ⁢
          
            ω
            j
            
              10
              3
            
          
        
        
          
            ∑
            j
            n
          
          ⁢
          
            ω
            j
          
        
      
      
        10
        3
      
    
    =
    
      
        
          ovr
          100
        
        
          70
          9
        
      
      ⁢
      
        
          
            
              ∑
              j
              n
            
            ⁢
            
              
            
            ⁢
            
              ω
              
                ini
                ,
                j
              
              
                10
                3
              
            
          
          
            
              ∑
              j
              n
            
            ⁢
            
              ω
              
                ini
                ,
                j
              
            
          
        
        
          10
          3
        
      
    
  




Consequently, the estimated duration of life Lh,k of the decelerator then is expressed by the following equation.




  
    L
    
      h
      ,
      k
    
  
  =
  
    K
    ×
    
      
        ω
        t
      
      
        ω
        
          ini
          ,
          av
        
      
    
    ×
    
      
        (
        
          
            τ
            t
          
          
            τ
            
              ini
              ,
              av
            
          
        
        )
      
      
        10
        /
        3
      
    
  




Assuming that the maximum k to satisfy Lh,k≧Ld as kmax, ovr_max3,j is expressed as follows using kmax.

ovr_max3,i=ovr_ini+kmax×Δovr

Having calculated the above three values, the minimum value among these is defined as the maximum speed change ratio that can be used in learning control. Expressing this as ovr_max,




  ovr_max
  =
  
    
      max
      i
    
    ⁢
    
      {
      
        
          ovr_max
          
            1
            ,
            i
          
        
        ,
        
          ovr_max
          
            2
            ,
            i
          
        
        ,
        
          ovr_max
          
            3
            ,
            i
          
        
      
      }
    
  




is given.

After setting maximum speed change ratio in step S101 as described above, in step S102, the speed control unit 42 sets the initial value of the speed change ratio. For example, the speed control unit 42 sets the initial value at 10%.
Next, in step S103, the current control unit 43 sets the initial values of operation parameters for operating the robot mechanism unit according to the initial value of the set speed change ratio.
Next, in step S104, the robot mechanism unit is operated according to the set operation parameters, and, based on a signal from the acceleration sensor 10, the learning control unit 3 calculates the vibration attenuation rate. The vibration attenuation rate can be determined from γ that is calculated in the equation (2).
Next, in step S105, the position control unit 41 checks whether or not the vibration attenuation rate is lower than a certain level (for example, 25%).
Next, in the case the vibration attenuation rate is 25% or higher, it is determined that vibration has not attenuated enough, and, in step S106, the position control unit 41 updates the learning correction amount uj+1(k) from the learning control filter.
In the case that the vibration attenuation rate is lower than 25%, in step S107, the speed control unit 42 increases the speed change ratio. For example, the speed change ratio is increased from 10% to 20%.
Next, in step S108, the speed control unit 42 determines whether or not the set speed change ratio exceeds the maximum speed change ratio.
In step S108, in the case the set speed change ratio does not exceed the maximum speed change ratio, in step S109, the current control unit 43 modifies the operation parameters so that the speed change ratio increases. For example, the operation parameters are set so that the operation is performed at a speed change ratio of 20%. After that, by repeating steps S104 to S106, a learning correction amount uj+1(k) to make the vibration attenuation rate less than 25% is calculated.
In this way, according to the present embodiment, learning is executed while increasing the speed change ratio up to the maximum speed change ratio over, for example, a plurality of steps (n steps), and the learning correction amount uj+1(k) is calculated. Assuming that the amount of the speed change ratio to increase in one step is Δ, the number of steps n to increase the speed change ratio can be expressed as follows using Δ.




  n
  =
  
    ceiling
    (
    
      
        ovr_max
        -
        ovr_cur
      
      Δ
    
    )
  




Where, ovr_cur is the speed change ratio that is set first.

In step S108, in the case the set speed change ratio exceeds the maximum speed change ratio, in step S110, the learning control unit 3 determines the learning correction amount uj+1(k) as the learning correction amount uj+1(k) for the maximum speed change ratio, and the learning control unit 3 stores the learning correction amount uj+1(k) in an F-ROM or in a memory card (MC).
In this way, by repeating a process of increasing the speed change ratio and a learning process until the speed change ratio reaches the maximum speed change ratio, the operation speed is increased. In actual operation, the normal control unit 4 calls and reproduces the learning correction amount uj+1(k) from the F-ROM or memory card (MC).
The normal control unit 4 of the robot 100 has a feature of making the robot mechanism unit 1 operate on a fixed trajectory. Operation on a fixed trajectory refers to, when operating the control target position of the robot mechanism unit 1 (i.e., the forward end portion) from the initial position to a desired position according to varying speed change ratios, making the control target position of the robot mechanism unit 1 operate to draw a fixed trajectory regardless of the magnitude of the speed change ratio. Consequently, the normal control unit 4 performs processes so that the control target position in the robot mechanism unit 1 moves along a fixed trajectory regardless of the speed change ratio. For example, as illustrated in FIG. 7A, when the trajectory is not fixed, if the control target position of the robot mechanism unit 1 is operated from the starting point A to end point C, at speed change ratios of 10, 50 and 100%, different trajectories T10, T50 and T100 are drawn. By contrast with this, when the trajectory is fixed, even if the control target position of the robot mechanism unit 1 is operated from the starting point A to the end point C, at speed change ratios of 10, 50 and 100%, the same trajectory T0 is drawn as illustrated in FIG. 7B. In the present embodiment, by operating the control target position of the robot mechanism unit to follow a fixed trajectory, the trajectory does not drift due to change of the speed change ratio, so that it is possible to improve the accuracy and safety of operation of the robot mechanism unit.
As described above, according to the steps of increasing speed illustrated in FIG. 6, a learning correction amount is calculated by repeating learning until the vibration converges within a predetermined range, while gradually increasing the speed change ratio over a plurality of times, so as to allow the control target position of the robot mechanism unit to move along a fixed trajectory regardless of the speed change ratio, so that it is possible to efficiently calculate a learning correction amount that can reduce the vibration.
Also, as with the present embodiment, by fixing the trajectory, the robot 100 is able to enter mass-produced operation soon after the increase of speed is complete.
That is to say, in the case speed is increased without fixing the trajectory as in normal cases, change of the trajectory makes it necessary to check interference against obstacles, and, when there is interference, the program before increase of speed needs to be changed and adjusted so that no interference is caused when speed is increased. In contrast to this, by fixing the trajectory as with the present embodiment, it is possible to omit such checking.
Next, the steps of finding the maximum speed change ratio based on the duration of life of the decelerator will be explained in detail with reference to the flowchart of FIG. 8. First, in step S201, the transport control (Transports and Programs; TP) program is operated once, and actual speed data is acquired. Otherwise, TP program as operated on offline to obtain speed command. Next, in step S202, using the actual speed data or speed command date, an estimated duration of life upon increasing the speed change ratio is calculated. Next, in step S203, whether or not that the estimated duration of life is greater than the desired duration of life Ld is checked. If the estimated duration of life is not greater than the desired duration of life Ld, in step S204, the speed change ratio is increased again, and, in step S202, an estimated duration of life is calculated. By repeating the above processes, in step S205, a maximum speed change ratio ovr_max3,i at which the required duration of life does not exceed the estimated duration of life is calculated. By this means, the maximum speed change ratio is determined based on the duration of life of the decelerator.
Although an example has been shown with the above description where, by operating the robot mechanism unit 1, a predetermined maximum speed change ratio is calculated by the learning control unit 3 based on the maximum speed and maximum acceleration that can be tolerated in the robot mechanism unit 1, and the duration of life of the decelerator, it is equally possible to set a predetermined maximum speed change ratio in the control unit 2 from outside.
As described above, in the present embodiment, a zero-phase high pass filter is used as a high-pass filter. Now, the reason to use a zero-phase high-pass filter will be described below.
To use data related to acceleration detected by an acceleration sensor as position vibration data, it is necessary to remove offset. To remove offset, it is necessary to use a high-pass filter that cancels low-frequency data of 2-3 [Hz] or below. However, a high-pass filter has a shortcoming of moving the phase by 0.1 times to 10 times the cut frequency. When the phase drifts, data of the actual vibration is not acquired, and the performance of learning control is severely deteriorated. This is because learning control functions to correct a phase that is different from the actual phase. Then, if a high-pass filter that does not shift the phase can be used, it is possible to improve performance. A zero-phase filter has a feature of being able to hold the characteristics of a time waveform having been subjected to filter processing in the place where the waveform not having been subjected to filter processing appears, so that, with the present embodiment, a zero-phase filter that does not cause shift of phase is used.
Effects of a zero-phase high-pass filter will be explained with reference to FIG. 9. FIG. 9A shows an original signal represented by the solid line, in which a signal of a period of 1 [Hz] and a signal of a period of 10 [Hz] are mixed, a 10 [Hz] signal (broken line) having passed a normal high-pass filter, and a 10 [Hz] signal (dotted line) having passed a zero-phase high-pass filter. FIG. 9B shows an enlarged view of the elliptic part in FIG. 9A. As illustrated in FIG. 9B, the original signal and the 10 [Hz] signal having passed a zero-phase high-pass filter show their peaks at times t2 and t4, whereas the 10 [Hz] signal having passed a normal high-pass filter shows its peaks at times t1 and t3. From this, it is clear that, while the phase of the original signal is shifted by a normal high-pass filter, when the original signal passes a zero-phase high-pass filter, its phase matches with the original signal. Thus, by using a zero-phase high-pass filter, it is possible to suppress phase lag. Therefore, in the present embodiment, a zero-phase high-pass filter is used.
Next, the steps of data processing in the zero-phase filter will be described with reference to FIG. 10. After acquiring data d1 by applying a high-pass filer to the original data d0 that is arranged in order from 1 to N in a time sequence order, the time sequence is inverse-transformed and rearranged in the order from N to 1, thereby providing data d2. Next, after acquiring data d3 by applying a high-pass filter to data d2, the time sequence is inverse-transformed again into the order from 1 to N, thereby providing data d4. If the processes from data d2 to data d4 are expressed as H(z−1), the zero-phase filter is expressed as H(z)H(z−1) using a low-pass (or high-pass) filter H(z). As described above, since data is rearranged by inverse-transforming a time sequence, this process can be performed only offline. However, in the present embodiment, acceleration data is acquired during the operation of the robot mechanism unit, so that, by performing offline processing after the operation is finished, it is possible to use a zero-phase high-pass filter that does not shift phase.
Second Embodiment
Next, a robot according to a second embodiment will be described. FIG. 11 shows a schematic view of the robot according to the second embodiment. In addition to the robot 100 according to the first embodiment, a robot 101 according to the second embodiment has a feature of further having a teaching control unit 50 which includes a program teaching unit 51 that stores a task program, a program executing unit 52, and an operation planning unit 53. The teaching control unit 50 teaches or corrects the position or speed in a task program.
Also, the normal control unit 4 of the robot 101 according to the second embodiment further has an anti-exception processing unit 46. This anti-exception processing unit 46 operates the robot mechanism unit 1 according to a position command based on a teaching position that is set in a task program, a learning correction amount uj+1(k) that is calculated in the learning control unit 3, and a speed command that is given by multiplying a teaching speed that is set in a task program by the speed change ratio used when calculating the learning correction amount uj+1(k). After the learning correction amount uj+1(k) is calculated by the learning control unit 3, when the position of the teaching point is corrected by the teaching control unit 50, if the distance between the teaching point after the position correction and the teaching point before the position correction equals or exceeds a predetermined distance, the anti-exception processing unit 46 controls the move to the teaching point according to the teaching speed, and, if the distance between the teaching point after the position correction and the teaching point before the position correction is less than a predetermined distance, controls the move to the teaching point according to a speed command.
Operation that have been learned are reproduced in high speed operations using the learning correction amount uj+1(k) that is stored in the RAM 321 in the learning control filter 32. However, when an operation as learned is changed significantly, the learning correction amount uj+1(k) becomes inapplicable, and high-speed operation is not possible. Whether or not an operation is changed is recorded in the RAM 321, and can be judged by comparing the operation position yd(k) that is calculated from the operation position, speed command and the operation plan, and the speed command Vd(k). When an operation is changed, the operation is executed in exception processing (that is, at a teaching speed).
Next, the operation steps of the robot 101 according to the second embodiment will be described with reference to the flowchart of FIG. 12. These operation steps are executed after the robot mechanism unit 1 is operated according to a command position that is given by adding the learning correction amount uj+1(k) that is calculated in the learning control unit 3 to a teaching position that is set in a task program, and a speed command that is given by multiplying a teaching speed that is set in a task program by the speed change ratio that is used when calculating the learning correction amount uj+1(k), and the learning correction amount uj+1(k) is calculated by the learning control unit 3.
First, in step S301, the anti-exception processing unit 46 judges whether or not there is teaching correction. Whether or not there is teaching correction is judged by detecting by the anti-exception processing unit 46 whether or not the position of a teaching point in a task program that is stored in the program teaching unit 51 in the teaching control unit 50 is corrected.
Next, in step S301, if the anti-exception processing unit 46 judges that there is teaching correction, in step S302, the anti-exception processing unit 46 judges whether or not the distance between the position of the teaching point after the position correction and the position of the teaching point before the position correction is less than a predetermined distance. If the distance between the position of the teaching point after the position correction and the position of the teaching point before the position correction equals or exceeds a predetermined distance, the anti-exception processing unit 46 controls the move to the teaching point according to the teaching speed, and, if the distance between the position of the teaching point after the position correction and the position of the teaching point before the position correction is less than a predetermined distance, controls the move to the teaching point according to a speed command. If the distance between the position of the teaching point after the position correction and the position of the teaching point before the position correction equals or exceeds a predetermined distance, in step S303, the anti-exception processing unit 46 controls the move to the teaching point according to the teaching speed, i.e., at a speed not multiplied by the speed change ratio. Although move to the teaching point alone has been described above, it is equally possible to control the operation to move from that teaching point to a next teaching point likewise.
On the other hand, if the distance between the position of the teaching point after the position correction and the position of the teaching point before the position correction is less than a predetermined distance, in step S304, the anti-exception processing unit 46 controls the move to the teaching point by a speed command that is given by multiplying the teaching speed by a speed override.
Also, in the case in step S301 the anti-exception processing unit 46 judges that there is no teaching correction, the anti-exception processing unit 46 likewise controls the move to the teaching point by a speed command.
The steps of processing in the case a task program that is stored in advance in the program teaching unit 51 corrects the position of the teaching point have been described above. Next, the steps of processing in the case the task program corrects a speed command in addition to the position of the teaching point will be described with reference to the flowchart of FIG. 13.
Steps S401 to S403 and S405 are equivalent to above steps S301 to 304, and therefore will not be described in detail. In step S402, if the distance between the position of a teaching point after position correction and the position of the teaching point before the position correction is less than a predetermined distance, furthermore, in step S404, whether or not the difference between the speed command before correction and the speed command after correction is less than a predetermined rate or a predetermined value is judged. If the difference between the speed command before correction and the speed command after correction is equal to or greater than the predetermined rate or predetermined value, in step S403, the move to the teaching point is controlled at teaching speed, that is, at a speed not multiplied by the speed change ratio.
On the other hand, in step 404, if the difference between the speed command before correction and the speed command after correction is less than a predetermined rate or a predetermined value, in step S405, the move to the teaching point is controlled by a speed command.
As described above, with the robot according to the second embodiment, when the teaching position or teaching speed is corrected by a task program, it is possible to control the operation speed depending on the degree of correction, so that it is possible to allow stable execution of the operation of the robot even when the teaching position or teaching speed in a task program is corrected significantly.
Note that, with the robot 101 according to the second embodiment, like the robot 100 according to the first embodiment, the normal control unit 4 is able to perform processes so that the control target position of the robot mechanism unit 1 moves along a fixed trajectory regardless of the speed change ratio. Furthermore, with the robot 101 according to the second embodiment, like the robot 100 according to the first embodiment, it is possible to provide a high-pass filter for calculating the position vibration component of the robot mechanism unit 1, which does not produce phase shift.
Third Embodiment
With the present embodiment, an example to increase speed of the operation of a spot welding robot will be described. First, FIG. 14 shows a perspective view of a robot mechanism unit of the spot welding robot. Also, FIG. 3 shows a configuration of the robot mechanism unit of the spot welding robot. FIG. 3A shows an overall configuration of the robot mechanism unit, and FIG. 3B shows an enlarged view of a spot welding gun (hereinafter referred to as simply “gun”) on which a sensor is mounted. The robot mechanism unit 1 is a well-known robot manipulator and has no limitations regarding its mechanism as long as the gun 12, which is the control target part and is subject to position control, can reach the positions and postures to perform tasks. The gun 12 has a pair of electrodes (namely, a counter electrode 21 and a movable electrode 22), and, by making the interval between the counter electrode 21 and the movable electrode 22 variable by making one of them movable, is able to perform welding for various welding works (not shown). As a sensor for detecting the trajectory and position of the robot mechanism unit 1 and the vibration which may occur when the robot mechanism unit decelerates for pause, an acceleration sensor 10 is mounted at the forward end portion of the gun 12 that forms the control target part of the robot mechanism unit that is subject to position control. A tri-axial acceleration sensor may be used as the acceleration sensor 10. The acceleration sensor 10 has a magnet as a mounting means that can be attached to and detached from the robot mechanism unit 1, and therefore is detachable. The case of the acceleration sensor 10 may be formed with a magnet. An example of using a magnet is only one example, and it is equally possible to form the mounting means using other means.
FIG. 15 shows a schematic configuration of a spot welding robot according to a third embodiment. The robot 102 is formed with a robot mechanism unit 1, and a robot control unit 2 that controls the robot mechanism unit 1. The robot mechanism unit 1 has a gun 12 that is the control target part and is subject to position control, and a acceleration sensor 10 that is provided in the gun 12. The robot control unit 2 has a learning control unit 3 that executes learning control for the robot and a normal control unit 4 that directly drives the robot mechanism unit 1. The normal control unit 4 acquires position command data related to the target trajectory or target position of the gun 12 that is the control target part, and, according to position error data that is calculated using the position command data, operates the robot mechanism unit 1 at a predetermined operation speed by the task program.
The learning control unit 3 calculates the trajectory or position of the gun 12 that is the control target part, from the detection result of the acceleration sensor 10, and, by learning control, calculates a learning correction amount, for correcting the trajectory error between the trajectory and the target trajectory or the position error between the position and the target position, or for reducing the vibration of the gun 12 that is the control target part, which is produced when the robot mechanism unit 1 is operated. The normal control unit 4 corrects the position error data using the learning correction amount.
The spot welding robot according to the third embodiment has a feature that, in the course of calculating the learning correction amount, the learning control unit 3 calculates the maximum operation speed that can be set in the robot mechanism unit 1 and calculates the learning correction amount while increasing the operation speed in one time or over a plurality of times until reaching the maximum operation speed. Configurations other than the learning control unit 3 are the same as the configurations of the conventional robot illustrated in FIG. 1 and therefore will not be described in detail.
Next, the steps of operation of the robot mechanism unit according to the third embodiment will be described with reference to drawings. FIG. 16 is a flowchart for explaining the steps of operation of the robot mechanism unit according to the third embodiment. The speed of the operation of the robot mechanism unit is increased as the learning control unit calculates, during learning, i.e., in the course of calculating a learning correction amount (that is, in a learning operating state), the maximum operation speed that can be set in the robot mechanism unit, and calculates a learning correction amount while increasing the operation speed in one time or over a plurality of times until reaching the maximum operation speed. The term “learning operating state” refers to the state of performing learning to calculate a learning correction amount for operating the robot mechanism unit by a task program and making the trajectory or position of the control target position of the robot mechanism unit, calculated from a sensor detection result, approach closer to the target trajectory or target position that is assigned to the normal control unit.
First, in step S501, in the course of calculating a learning correction amount, the learning control unit 3 calculates the maximum operation speed that can be set in the robot mechanism unit. The maximum operation speed can be calculated based on the maximum speed and maximum acceleration that can be tolerated in the robot mechanism unit. To be more specific, first, the robot mechanism unit is operated once, and, from the data of the first trial, the maximum operation speed which each axis motor can learn is calculated from the viewpoint of the maximum acceleration and maximum speed that can be tolerated in the robot mechanism unit.
The maximum speed override ovr_max1,i that is calculated from the viewpoint of the maximum acceleration and the maximum speed override ovr_max2,i that is calculated from the viewpoint of the maximum speed are as described earlier.
The above two conditions and furthermore the minimum speed override among the axes become the maximum speed override that can be used in learning control. Consequently, assuming that this is expressed as ovr_max, this can be expressed by the following equation.




  ovr_max
  =
  
    
      max
      i
    
    ⁢
    
      {
      
        
          ovr_max
          
            1
            ,
            i
          
        
        ,
        
          ovr_max
          
            2
            ,
            i
          
        
      
      }
    
  




If there is a target override ovr_max3 that is calculated from the cycle time, from these three conditions, the maximum speed override that can be used is calculated from these three conditions.




  ovr_max
  =
  
    
      max
      i
    
    ⁢
    
      {
      
        
          ovr_max
          
            1
            ,
            i
          
        
        ,
        
          ovr_max
          
            2
            ,
            i
          
        
        ,
        
          ovr_max
          
            3
            ,
            i
          
        
      
      }
    
  




Assuming that the amount of speed override to increase in one step is Δ, the number of steps n is calculated as follows using Δ.




  n
  =
  
    ceiling
    (
    
      
        ovr_max
        -
        ovr_cur
      
      Δ
    
    )
  




The operation speed is increased up to the maximum operation speed, in, for example, n steps, and the learning control unit 3 executes learning and calculates the learning correction amount. To be more specific, in step S502, the learning control unit 3 repeats learning several times at the initial operation speed, and after the vibration converges, calculates the learning correction amount. Next, in step S503, the learning control unit 3 stores the learning correction amount in a storage unit such as a memory (for example, F-ROM or a memory card (MC)).
Next, in step S504, the learning control unit 3 increases the operation speed by a predetermined amount. Next, in step S505, the learning control unit 3 judges whether or not the operation speed is greater than the maximum operation speed. In the case the operation speed is equal to or lower than the maximum operation speed (“No”), in step S502, the learning control unit 3 executes learning at an operation speed that is increased by a predetermined amount. That is to say, the learning control unit 3 executes learning at a new operation speed, which is a new operation speed given by adding a predetermined amount of speed to the operation speed of the current operation speed. In the case the operation speed is greater than the maximum operation speed (“Yes”), the learning control unit 3 finishes the learning control.
In this way, by repeating a process of increasing the operation speed and a process of learning until the operation speed reaches the maximum operation speed, it is possible to acquire a learning correction amount near the maximum operation speed and increase the speed of the operation of the robot. Also, by increasing the operation speed gradually as with the present embodiment, it is possible to reduce the vibration that is produced in the course of learning, and reduce the vibration that needs to be reduced by correction of the learning correction amount. As a result of this, the effect of reducing vibration (i.e., anti-vibration effect) improves.
In the case of actual operation of operating the robot mechanism unit based on the learning correction amount calculated by learning control, the learning correction amount is transmitted from an F-ROM or a memory card (MC) and reproduced.
Fourth Embodiment
Next, the steps of operation of the robot mechanism unit in a spot welding robot according to a fourth embodiment will be described with reference to drawings. The configuration diagram of the spot welding robot according to the fourth embodiment is the same as in the third embodiment and therefore will not be described in detail. FIG. 17 is a flowchart for explaining the steps of operation of the robot mechanism unit according to the fourth embodiment. The spot welding robot according to the fourth embodiment has a feature that the normal control unit 4 acquires a target operation speed, which is the target value of operation speed of the robot mechanism unit 1, and the learning control unit 3 compares the target operation speed and the maximum operation speed, and, if the target operation speed is lower than the maximum operation speed, calculates a learning correction amount while increasing the operation speed in one time or over a plurality of times until reaching the target operation speed.
First, in step S601, the normal control unit 4 of the spot welding robot acquires the target operation speed from outside. To be more specific, referring to FIG. 15, the position control unit 41 acquires the target operation speed with position command data yd(k), and transfers these to the speed control unit 42. Next, in step S602, in the course of calculating a learning correction amount, the learning control unit 3 calculates the maximum operation speed that can be set in the robot mechanism unit 1. The maximum operation speed can be calculated based on the maximum speed and maximum acceleration that can be tolerated in the robot mechanism unit. To be more specific, first, the robot mechanism unit is operated once, and, from the data of the first trial, the maximum operation speed which each axis motor can learn is calculated from the viewpoint of the maximum acceleration and maximum speed that can be tolerated in the robot mechanism unit. The method of calculating the maximum operation speed is the same as in the third embodiment and therefore will not be described in detail.
Next, in steps S603, the learning control unit 3 compares the relationship of magnitude between the acquired target operation speed and the maximum operation speed. If the target operation speed is lower than the maximum operation speed, the learning control unit 3 calculates a learning correction amount while increasing the operation speed in one time or over a plurality of times until reaching the target operation speed. To be more specific, in step S604, the learning control unit 3 repeats learning several times at the initial operation speed, and after the vibration converges, calculates the learning correction amount. Next, in step S605, the learning control unit 3 stores the learning correction amount in a memory, which is, for example, an F-ROM or a memory card (MC)).
Next, in step S606, the learning control unit 3 increases the operation speed by a predetermined amount. Next, in step S607, the learning control unit 3 judges whether or not the operation speed is greater than the maximum operation speed. In the case the operation speed is equal to or lower than the maximum operation speed (“No”), in step S604, the learning control unit 3 executes learning at an operation speed that is given by increasing the operation speed by a predetermined amount. That is to say, the learning control unit 3 executes learning at a new operation speed, which is a new operation speed given by adding a predetermined amount of speed to the operation speed of the current operation speed. In the case the operation speed is greater than the maximum operation speed (“Yes”), the learning control unit 3 finishes the learning control.
In this way, by repeating a process of increasing the operation speed and a process of learning until the operation speed reaches the maximum operation speed, it is possible to acquire a learning correction amount near the maximum operation speed and increase the speed of the operation of the robot. Also, since the operation speed is increased gradually in the present embodiment, it is possible to reduce the vibration that is generated in the course of learning, and reduce the vibration to be suppressed by correction of the learning correction amount. As a result of this, the effect of reducing vibration (i.e., vibration suppression effect) improves. Furthermore, in the case the target operation speed is lower than the maximum operation speed, it becomes unnecessary to increase the operation speed up to the maximum operation speed, so that the learning correction amount can be calculated in short time.
In the case of actual operation of operating the robot mechanism unit based on the learning correction amount calculated by learning control, the learning correction amount is transmitted from an F-ROM or a memory card (MC) and reproduced.
On the other hand, in step S603, in the case the target operation speed is equal to or greater than the maximum operation speed, the learning control unit 3 may finish the learning control or may continue executing learning control until the operation speed reaches the maximum operation speed as was the case in the third embodiment. As one example, FIG. 17 illustrates an example where the learning control unit 3 executes learning control until the operation speed reaches the maximum operation speed. Steps S609 to S611 are the same as above S604 to S606. Next, in step S612, the learning control unit 3 judges whether or not the operation speed is greater than the maximum operation speed. In the case the operation speed is equal to or lower than the maximum operation speed (“No”), in step S609, the learning control unit 3 executes learning by increasing the operation speed by a predetermined amount. That is to say, the learning control unit 3 executes learning at a new operation speed, which is a new operation speed given by adding a predetermined amount of speed to the operation speed of the current operation speed. In the case the operation speed is greater than the maximum operation speed (“Yes”), the learning control unit 3 finishes the learning control.
Although an example has been described above in the present embodiment where, in the case the target operation speed exceeds the maximum operation speed, the learning control unit 3 calculates a learning correction amount by increasing the operation speed up to the maximum operation speed, this example is by no means limited. As described earlier, in the case the target operation speed exceeds the maximum operation speed, the learning control unit 3 may finish learning correction.
Fifth Embodiment
Next, the steps of operation of the robot mechanism unit in a spot welding robot according to a fifth embodiment will be described with reference to drawings. The configuration of the spot welding robot according to the fifth embodiment is the same as in the third embodiment and therefore will not be described in detail. FIG. 18 is a flowchart for explaining the steps of operation of the robot mechanism unit according to the fifth embodiment. The spot welding robot according to the fifth embodiment has a robot mechanism unit 1 including a gun 12 that is the control target part and is subject to position control, and a acceleration sensor 10 that is mounted on the gun 12 that is the control target part, a normal control unit 4 that acquires position command data related to the target trajectory or target position of the gun 12 that is the control target part, and, according to position error data that is calculated using the position command data, operates the robot mechanism unit 1 at a predetermined operation speed by a task program, and a learning control unit 3 that, calculates trajectory or position of the gun 12 that is the control target part from the result detected by the acceleration sensor 10, and calculates a learning correction amount by learning control, for correcting the trajectory error between the trajectory and the target trajectory or the position error between the position and the target position, or for reducing the vibration of the gun 12 that is the control target part, which is produced when the robot mechanism unit 1 is operated, and, the normal control unit 4 corrects the position error data using the learning correction amount, and the learning control unit 3 calculates the learning correction amount, performs a process to compare the trajectory error or position error, or the vibration, within each threshold, and performs the above process while increasing the operation speed until the trajectory error or position error, or the vibration, exceeds each threshold.
The steps of operation of the spot welding robot according to the fifth embodiment will be described below. First, in step S701, the learning control unit 3 repeats learning several times at the initial operation speed. After the vibration converges, the learning control unit 3 calculates the trajectory or position of the gun 12, which is the control target part, based on a detection result of the acceleration sensor 10. Next, by learning control, the learning control unit 3 calculates a learning correction amount, for correcting the trajectory error between the trajectory and the target trajectory or the position error between the position and the target position, or for reducing the vibration of the gun 12 that is the control target part, which is produced when the robot mechanism unit 1 is operated. Next, in step S702, the learning control unit 3 stores the learning correction amount in a storage unit, which is, for example, an F-ROM or a memory card (MC).
Next, in step S703, the learning control unit 3 increases the operation speed by a predetermined amount. Next, in step S704, the learning control unit 3 judges whether or not the trajectory error or position error, or the vibration, exceeds each threshold value. Although an example of judging the relationship of magnitude between the trajectory error and its threshold value is illustrated in FIG. 18, the same applies to the position error and vibration. The thresholds for the trajectory error, position error and vibration can be stored in a memory in advance. Next, in step S704, in the case the trajectory error exceeds the threshold, the learning control unit 3 finishes the process. On the other hand, in the case the trajectory error is equal to or lower than the threshold, back to step S701, the learning control unit 3 repeats learning. For example, when operation is executed at an operation speed of 50 [mm/sec] and the trajectory error is equal to or lower than the threshold, or when operation is executed at an operation speed of 100 [mm/sec] and the trajectory error exceeds the threshold, a learning correction amount is calculated with respect to the case of the operation speed of 50 [mm/sec], and is not calculated with respect to the case of the operation speed of 100 [mm/sec]. In this way, it is possible to calculate a learning correction amount to keep the trajectory error within a range of a predetermined threshold.
Now, the method of increasing the operation speed will be described in detail. Like the present embodiment, in the case the maximum operation speed is not set, i.e., in the case the maximum speed override is not set, insofar as the trajectory error, for example, 100 [msec] (0.1 [sec]) before the end of the operation period, stays within a threshold, the override is increased by a certain amount. By repeating this process, speed is increased.
Assume that the amount of vibration is with ψj(t) and the operation end time is t_end. Then, the condition that the amount of vibration stays within a threshold can be expressed as follows.

φj(t−(t_end−l))<φmax 

(lεR, L<0.1)
In the case the target operation speed is not set, i.e., in the case the target override is not set, the override is increased until the above condition is met. Assume that the override for the present trial is over_cur.
In the case the target override over_max3 is calculated by the cycle time as in the fourth embodiment, while the above conditions and following condition are both met, the override is increased.

over_cur<over_max3 

As described above, with the spot welding robot according to the present embodiment, it is possible to calculate a learning correction amount in a state in which the operation speed is increased within a range where the trajectory error or the like stays within a predetermined threshold, so that the operation speed of the spot welding robot can be increased within a certain range of trajectory error or the like.
Sixth Embodiment
Next, the steps of operation of the robot mechanism unit in a spot welding robot according to a sixth embodiment will be described with reference to drawings. The configuration of the spot welding robot according to the sixth embodiment is the same as in the third embodiment and therefore will not be described in detail. FIG. 19 is a flowchart for explaining the steps of operation of the robot mechanism unit according to the sixth embodiment. The spot welding robot according to the sixth embodiment has a feature that the normal control unit 4 acquires a target operation speed, which is the target value of operation speed of the robot mechanism unit 1, and the learning control unit 3 increases the operation speed in one time or over a plurality of times until reaching the target operation speed, and upon every increase, performs a process of calculating a learning correction amount and comparing the trajectory error or position error, or the vibration, within each threshold that is set in advance, and repeats the process as long as the trajectory error or position error, or the vibration, stays within each threshold, or until the operation speed reaches the target operation speed.
The steps of operation of the spot welding robot according to the sixth embodiment will be described below. First, in step S801, the normal control unit 4 of the spot welding robot acquires the target operation speed from outside. To be more specific, referring to FIG. 15, the position control unit 41 acquires the target operation speed with position command data yd(k), and transfers them to the speed control unit 42. Next, in step S802, the learning control unit 3 repeats learning several times at the initial operation speed. After the vibration converges, the learning control unit 3 calculates the trajectory or position of the gun 12, which is the control target part, from a detection result of the acceleration sensor 10. By learning control, the learning control unit 3 calculates a learning correction amount, for correcting the trajectory error between the trajectory and the target trajectory or the position error between the position and the target position, or for reducing the vibration of the gun 12 that is the control target part, which is produced when the robot mechanism unit 1 is operated. Next, in step S803, the learning control unit 3 stores the learning correction amount in a storage unit, which is, for example, an F-ROM or a memory card (MC).
Next, in step S804, the learning control unit 3 increases the operation speed by a predetermined amount. Next, in steps S805, the learning control unit 3 compares the relationship of magnitude between the acquired target operation speed and the maximum operation speed. If the target operation speed is lower than the maximum operation speed, in step S806, the learning control unit 3 judges whether or not the trajectory error or position error, or the vibration, exceeds each threshold. Although an example of judging the relationship of magnitude between the trajectory error and its threshold value is illustrated in FIG. 19, the same applies to the position error and vibration. The thresholds for the trajectory error, position error and vibration can be stored in a memory in advance.
In step S806, the learning control unit finishes the process in the case the trajectory error exceeds the threshold. In the case the trajectory error is equal to or lower than the threshold, back to step S802, the learning control unit 3 repeats learning. For example, when operation is executed at an operation speed of 50 [mm/sec] and the trajectory error is equal to or lower than the threshold, and when operation is executed at an operation speed of 100 [mm/sec] and the trajectory error exceeds the threshold, a learning correction amount is calculated with respect to the case of the operation speed of 50 [mm/sec], and is not calculated with respect to the case of the operation speed of 100 [mm/sec]. In this way, it is possible to calculate a learning correction amount to keep the trajectory error within a range of a predetermined threshold. On the other hand, in step S805, in the case the target operation speed is equal to or greater than the maximum operation speed, the learning control unit 3 finishes the process.
The present embodiment is designed to calculate a learning correction amount within a range in which the operation speed does not exceed the target operation speed and within a range in which the trajectory error or the like does not exceed a threshold, so that it is possible to calculate a learning correction amount to satisfy both conditions of the target operation speed and the trajectory error or the like. Consequently, it is possible to calculate a learning correction amount in a state in which the operation speed is increased within a range in which the operation speed stays within the target operation speed that is set and within a range in which the trajectory error or the like stays within a range of a predetermined threshold, so that it is possible to increase the operation speed of the spot welding robot within a range of a predetermined target operation speed and within a range of certain trajectory error or the like.
Although a case has been described above with the present embodiment where an acceleration sensor is used as a sensor to mount on the robot mechanism unit, it is equally possible to use any sensor such as a vision sensor, a gyro sensor, an inertial sensor, an optical sensor or a distortion gage.
For an example, a case of using a vision sensor instead of an acceleration sensor is illustrated in FIG. 20. The vision sensor 70 has two cameras of a first camera 72 and a second camera 73, and is mounted on a robot hand 71. The vision sensor 70 measures the position of a virtual TCP 76 on a target line 74 using the cameras 72 and 73, and calculates Δx, Δy and Δz, which are the trajectory/vibration errors in the axis directions of the X axis, Y axis and Z axis, respectively, where the forward direction 75 is the positive direction along the X axis.

## Claims

1. A robot comprising a robot mechanism unit that has a sensor in a part that is subject to position control, and a control unit that controls an operation of the robot mechanism unit,
wherein the control unit comprises:
a normal control unit that controls the operation of the robot mechanism unit;
a learning control unit that, when the robot mechanism unit is operated by a speed command given by multiplying a teaching speed designated in a task program by a speed change ratio, calculates, from a result detected by the sensor, a learning correction amount configured to make a trajectory or position of a control target of the robot mechanism unit approach a target trajectory or target position that is assigned to the normal control unit, or a learning correction amount configured to reduce a vibration of the control target that is produced when the robot mechanism unit is operated; and
a teaching control unit configured to teach or correct a position or speed in the task program,
and performs processes so that a control target position of the robot mechanism unit moves on a fixed trajectory regardless of the speed change ratio,
wherein the normal control unit operates the robot mechanism unit by a position command that is based on the teaching position set in the task program, the learning correction amount that is calculated by the learning control unit, and the speed command that is given by multiplying the teaching speed set in the task program by the speed change ratio that is used upon calculation of the learning correction amount, and, after the learning correction amount is calculated by the learning control unit, when the position of a teaching point is corrected by the teaching control unit, if a distance between the position of the teaching point after the position correction and the position of the teaching point before the position correction is equal to or greater than a predetermined distance, controls move to the teaching point at the teaching speed, and, if the distance is less than the predetermined threshold, controls the move to the teaching point by the speed command.

2. The robot as claimed in claim 1, wherein the learning control unit executes learning to calculate the learning correction amount while changing the speed change ratio over a plurality of times until reaching a predetermined maximum speed change ratio.

3. The robot as claimed in claim 2, wherein the predetermined maximum speed change ratio is calculated by the learning control unit, based on data acquired when the robot mechanism unit is operated, a maximum speed and maximum acceleration that can be tolerated in the robot mechanism unit, or a duration of life of a decelerator.

4. The robot as claimed in claim 2, wherein the predetermined speed change ratio is set in the control unit from outside.

5. The robot as claimed in claim 1, wherein, after the learning correction amount is calculated by the learning control unit, when the position of the teaching point is corrected by the teaching control unit, if the distance between the position of the teaching point after the position correction and the position of the teaching point before the position correction is equal to or greater than the predetermined distance, the normal control unit controls the move to the teaching point and move from the teaching point to a next teaching point at the teaching speed, and, if the distance is less than the predetermined threshold, controls the move to the teaching point and the move from the teaching point to the next teaching point by the speed command.

6. The robot as claimed in claim 1, wherein, after the learning correction amount is calculated by the learning control unit, when the speed command is corrected by the teaching control unit, if a difference between the speed command after the correction and the speed command before the correction is equal to or greater than a predetermined rate or a predetermined value, the normal control unit controls the move to the teaching point at the teaching speed, and, if the difference is lower than the predetermined rate or the predetermined value, controls the move to the teaching point by the speed command.

7. The robot as claimed in claim 1, wherein the learning control unit comprises a filter for calculating a position vibration component of the robot mechanism unit from data detected by the sensor.

8. The robot as claimed in claim 7, wherein the learning control unit calculates a position on each axis including the position vibration component by inverse-transforming the data detected by the sensor into three basic axes of each axis of the robot.

9. The robot as claimed in claim 1, wherein the learning control unit makes the robot mechanism unit execute a predetermined operation, and calculates a position and inclination of the sensor.

10. The robot as claimed in claim 1, wherein the learning control unit further comprises a memory for storing the learning correction amount.

11. The robot as claimed in claim 1, wherein the sensor is one of a vision sensor, an acceleration sensor, a gyro sensor, an inertial sensor, an optical sensor and a distortion gauge.

12. The robot as claimed in claim 1, wherein the sensor comprises a mounting section that can be attached to and detached from the robot mechanism unit.

13. The robot as claimed in claim 12, wherein the sensor comprises a magnet as the mounting section.

14. A spot welding robot comprising:
a robot mechanism unit that comprises a control target part that is subject to position control and a sensor that is mounted on the control target part;
a normal control unit that acquires position command data related to a target trajectory or target position of the control target part, and, according to position error data that is calculated using the position command data, operates the robot mechanism unit at a predetermined operation speed, by a task program; and
a learning control unit that calculates a trajectory or position of the control target part from a detection result of the sensor, and, by learning control, calculates a learning correction amount, configured to correct a trajectory error between the trajectory and the target trajectory or a position error between the position and the target position, or reduce a vibration of the control target part that is produced when the robot mechanism unit is operated,
wherein:
the normal control unit corrects the position error data using the learning correction amount; and
the learning control unit, in a course of calculating the learning correction amount, calculates maximum speed overrides based on maximum acceleration and maximum speed, respectively, that can be tolerated in the robot mechanism unit by operating the robot mechanism unit, and calculates a maximum operation speed that can be set in the robot mechanism unit based on the minimum value among the calculated maximum speed overrides, and calculates the learning correction amount while increasing the operation speed in one time or over a plurality of times until reaching the maximum operation speed.

15. The spot welding robot as defined in claim 14, wherein:
the normal control unit acquires a target operation speed, which is a target value of the operation speed of the robot mechanism unit; and
the learning control unit compares the target operation speed and the maximum operation speed, and, when the target operation speed is less than the maximum operation speed, calculates the learning correction amount while increasing the operation speed in one time or a plurality of times until reaching the target operation speed.

16. The spot welding robot as defined in claim 14, wherein the learning control unit calculates the maximum operation speed based on a maximum speed and maximum acceleration that can be tolerated in the robot mechanism unit.

17. The spot welding robot as defined in claim 14, wherein the learning control unit calculates data on each axis by transforming data that is calculated from the detection result of the sensor and that includes the trajectory error, the position error or a vibration component of the control target part, into position coordinates based on each axis of the robot mechanism unit.

18. The spot welding robot as defined in claim 14, wherein the learning control unit makes the robot mechanism unit execute a predetermined operation and calculates a position and inclination of the sensor.

19. The spot welding robot as defined in claim 14, further comprising a storage unit for storing the learning correction amount.

20. The spot welding robot as defined in claim 14, wherein the sensor is one of a vision sensor, an acceleration sensor, a gyro sensor, an inertial sensor and a distortion gauge.

21. The spot welding robot as defined in claim 14, further comprising a mounting section that allows the sensor to be attached to and detached from the robot mechanism unit.

22. A spot welding robot comprising:
a robot mechanism unit that comprises a control target part that is subject to position control and a sensor that is mounted on the control target part;
a normal control unit that acquires position command data related to a target trajectory or target position of the control target part, and, according to position error data that is calculated using the position command data, operates the robot mechanism unit at a predetermined operation speed, by a task program; and
a learning control unit that calculates a trajectory or position of the control target part from a detection result of the sensor, and, by learning control, calculates a learning correction amount, configured to correct a trajectory error between the trajectory and the target trajectory or a position error between the position and the target position, or reduce a vibration of the control target part that is produced when the robot mechanism unit is operated,
wherein:
the normal control unit corrects the position error data using the learning correction amount; and
the learning control unit performs a process of calculating the learning correction amount and comparing the trajectory error or the position error, or the vibration, with each threshold that is set in advance, and repeats the process, while increasing the operation speed, until the trajectory error or the position error, or the vibration, exceeds each threshold, and increases the operation speed by repeating process of increasing a predetermined amount of override, as long as the trajectory error or the position error, or the vibration, stays within each threshold in a predetermined period before the end of the operation period.