A rotary drive device for driving joints of a robot arm, comprising: a servo motor ; a reduction gear configured to reduce the rotational speed of a rotation shaft of the servo motor ; a current control unit configured to supply current to the servo motor according to a current reference value (Iref); a controller configured to output an angle reference value (θgref) of a rotation shaft of the reduction gear ; a first angle-detecting unit configured to detect the rotation angle of the rotation shaft of the servo motor and output a first rotation angle (θm) that is obtained by dividing the detection result by the reduction ratio (N) of the reduction gear ; a second angle-detecting unit configured to detect the rotation angle of the rotation shaft of the reduction gear and output the detection result as a second rotation angle (θg); a torque calculation unit configured to calculate the torque (T) acting on the rotation shaft of the reduction gear by multiplying the angle difference (θdiff) between the first rotation angle (θm) and the second rotation angle (θg) by the torsional stiffness (K) of the reduction gear ; a first angle-control unit configured to generate a torque reference value (Tref) needed to bring the second rotation angle (θg) close to the angle reference value (θgref) according to the difference between the angle reference value (θgref) and the second rotation angle (θg); and a torque control unit configured to generate the current reference value (Iref) needed to bring the torque (T) close to the torque reference value (Tref) according to the difference between the torque reference value (Tref) and the torque (T). a servo motor ; a reduction gear configured to reduce the rotational speed of a rotation shaft of the servo motor ; a current control unit configured to supply current to the servo motor according to a current reference value (Iref); a controller configured to output an angle reference value (θgref) of a rotation shaft of the reduction gear ; a first angle-detecting unit configured to detect the rotation angle of the rotation shaft of the servo motor and output a first rotation angle (θm) that is obtained by dividing the detection result by the reduction ratio (N) of the reduction gear ; a second angle-detecting unit configured to detect the rotation angle of the rotation shaft of the reduction gear and output the detection result as a second rotation angle (θg); a torque calculation unit configured to calculate the torque (T) acting on the rotation shaft of the reduction gear by multiplying the angle difference (θdiff) between the first rotation angle (θm) and the second rotation angle (θg) by the torsional stiffness (K) of the reduction gear ; a first angle-control unit configured to generate a torque reference value (Tref) needed to bring the second rotation angle (θg) close to the angle reference value (θgref) according to the difference between the angle reference value (θgref) and the second rotation angle (θg); and a torque control unit configured to generate the current reference value (Iref) needed to bring the torque (T) close to the torque reference value (Tref) according to the difference between the torque reference value (Tref) and the torque (T). <EOS>