A program instruction (Move.StartTorqueCntrl) is provided for placing one or more motors of a robot into torque control mode. When in torque control mode, the position and speed of a motor are not controlled and only the torque generated by the motor is monitored and managed.
A program instruction (Move.SetTorques) is provided for specifying the target torque for each motor in torque mode. In addition, one motor can have the scaled value of a system analog input channel automatically added to the program instruction torque command. The program instruction torque commands are transferred to the servos at the standard update rate of the trajectory generator, typically every 1 to 4 msec. The ADC value is sampled by the servo code at the rate at which the servos are closing the torque loop, typically 8khz. The analog input value can be smoothed in hardware and limited to ensure that it is within a specified range. This technique can be employed to have a single axis respond like an analog amplifier for an external controller that is capable of generating a +-10 vdc torque command.
Each time the system is restarted, it places all motors into position control mode. This allows the motors to be commutated utilizing the standard techniques. Also, whenever high power is enabled, all of the motors are placed into position control mode to ensure that they maintain their positions after their brakes are released. After the system has been commutated, a program can attach the robot and special program instructions can be issued to place motors into torque control mode. Note, so long as a position command is not issued to move the robot, torque control mode does not require that the robot be homed.
When an instruction to initiate torque mode is executed, the system waits for any motions in progress to be completed before switching control modes. Any motors that are not placed into torque control mode remain in position control mode and can still be moved by all of the standard motion control instructions. This feature can be employed to execute passive force compliant motions. For example, if a Cartesian robot is making a vertical (Z motion) to mate two parts, the X and Y-axes can be placed into torque control mode with a torque of 0 while leaving the Z-axis in position control mode. This allows the X and Y-axes to comply with any position errors during the mating operation.
Motors remain in torque control mode until one of the following occurs:
When torque control mode is terminated, the system immediately places the torque-controlled motors back into position control mode and automatically executes a controlled position deceleration to bring each motor to a stop.
The torque control capability is implemented via three program instructions: (1) the Move.StartTorqueCntrl method that initiates torque control and sets the initial torque values, (2) the Move.SetTorques method that can update the torque value for each motor during torque control, and (3) the Move.StopSpecialModes method that terminates the torque control mode. In these instructions, torques are specified as +-100% of the “rated torque” output for each motor.