1. Field of the Invention
The present invention relates to torque control of a robot.
2. Description of Background Art
Often, a robot is commanded to follow a given trajectory in order to accomplish a particular task. Individual joint position commands are calculated by applying inverse kinematics for an end-effector's position level control in Cartesian space. Motion can also be accomplished by directly commanding individual joint positions. A typical position controller by Proportional-Integral-Derivative (PID) control is implemented for each joint level controller and the joint position command is achieved by high gain control. This is a popular control system used with industrial robots. It is used because accuracy and quick responses are required to accomplish desired tasks and these were achieved by traditional position control.
Many humanoid robots are also controlled by position control. Traditional position controllers have been successfully applied for humanoid robot control, particularly for balancing and walking control. This is because accuracy and fast responses for Zero Moment Point (ZMP) control and manipulation are of a high priority for humanoid robots. Human-like whole-body motions and simple manipulation tasks are also often realized by using traditional position control.
More advanced robots are desired to work not only in industry but also in the everyday environment of people. These robots can be used to assist people and to communicate with people in their homes, offices, public spaces, hospitals, disaster areas etc. One of the critical problems for controlling a robot in people's daily environments is (i) contact between the robot and the external environment and (ii) contact with people. In case of the contact with the environment, unpredictable contact will happen because the work space of the robot is very narrow and complicated. In case of the contact with people, human motion itself is unpredictable. However, many advanced robots are not designed for contact. They are designed for the presumption that the external environment is fixed or that contact points are limited (e.g., both hands and feet). As a result, development of compliant motion for safe contact with the environment and with people is an important issue for advanced robot control.
Whole-body contact and control are often used for many small robots. Because a small robot has a lower weight, the contact force between the robot and the external environment is negligible. Also, in many cases, small robots are controlled by position command which is generated by kinematics without accounting for any contact force. As for human-sized robots, whole-body motion has been used with some robots. These robots can stand up from a prone position or crawl in a narrow space. However, the motion is pre-designed and the robot is just following the motion commanded by position control. Compliant control is applied to motion in contact; however, the motion while in contact with the environment is limited to a fixed or stable environment. To realize more advanced whole-body motion in contact with the environment or with a human, the robot's posture should be compliant with external forces so that the robot can accomplish its multiple tasks smoothly by sensing the environment through physical contact as a human would.
One solution for this problem is use torque control for robots. Often, to realize torque control, the control system hardware is designed for torque control. The motor is controlled by a torque control unit by which measured torque feedback data is compensated and a desired torque command input is achieved. However, a torque controlled system uses significantly different hardware from a position controlled system, which is commonly found in robots. As a result, it can be difficult to use torque control with a position controlled system. What is needed is a method for realizing compliant open-loop torque control on a traditional position-controlled system with position-control hardware.
The above need is met by a method for controlling a joint of a robot, the joint having a position controller with a position feedback loop. A torque command is received for the joint, and a velocity feedforward command is determined for realizing the torque command using the position controller. The velocity feedforward command is sent to the position controller and the position feedback loop is canceled. The position feedback loop is canceled by sending a position command to the position controller, where the position command is an actual measured position of the joint. The position feedback loop is also canceled by setting the gain of the position feedback loop to zero.
The invention is illustrated by way of example, and not by way of limitation, in the figures of the accompanying drawings in which like reference numerals refer to similar elements.
A preferred embodiment of the present invention is now described with reference to the figures where like reference numbers indicate identical or functionally similar elements. Also in the figures, the left most digits of each reference number corresponds to the figure in which the reference number is first used.
Reference in the specification to “one embodiment” or to “an embodiment” means that a particular feature, structure, or characteristic described in connection with the embodiments is included in at least one embodiment of the invention. The appearances of the phrase “in one embodiment” in various places in the specification are not necessarily all referring to the same embodiment.
Some portions of the detailed description that follows are presented in terms of algorithms and symbolic representations of operations on data bits within a computer memory. These algorithmic descriptions and representations are the means used by those skilled in the data processing arts to most effectively convey the substance of their work to others skilled in the art. An algorithm is here, and generally, conceived to be a self-consistent sequence of steps (instructions) leading to a desired result. The steps are those requiring physical manipulations of physical quantities. Usually, though not necessarily, these quantities take the form of electrical, magnetic or optical signals capable of being stored, transferred, combined, compared and otherwise manipulated. It is convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, or the like. Furthermore, it is also convenient at times, to refer to certain arrangements of steps requiring physical manipulations of physical quantities as modules or code devices, without loss of generality.
However, all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. Unless specifically stated otherwise as apparent from the following discussion, it is appreciated that throughout the description, discussions utilizing terms such as “processing” or “computing” or “calculating” or “determining” or “displaying” or “determining” or the like, refer to the action and processes of a computer system, or similar electronic computing device, that manipulates and transforms data represented as physical (electronic) quantities within the computer system memories or registers or other such information storage, transmission or display devices.
Certain aspects of the present invention include process steps and instructions described herein in the form of an algorithm. It should be noted that the process steps and instructions of the present invention could be embodied in software, firmware or hardware, and when embodied in software, could be downloaded to reside on and be operated from different platforms used by a variety of operating systems.
The present invention also relates to an apparatus for performing the operations herein. This apparatus may be specially constructed for the required purposes, or it may comprise a general-purpose computer selectively activated or reconfigured by a computer program stored in the computer. Such a computer program may be stored in a computer readable storage medium, such as, but is not limited to, any type of disk including floppy disks, optical disks, CD-ROMs, magnetic-optical disks, read-only memories (ROMs), random access memories (RAMs), EPROMs, EEPROMs, magnetic or optical cards, application specific integrated circuits (ASICs), or any type of media suitable for storing electronic instructions, and each coupled to a computer system bus. Furthermore, the computers referred to in the specification may include a single processor or may be architectures employing multiple processor designs for increased computing capability.
The algorithms and displays presented herein are not inherently related to any particular computer or other apparatus. Various general-purpose systems may also be used with programs in accordance with the teachings herein, or it may prove convenient to construct more specialized apparatus to perform the required method steps. The required structure for a variety of these systems will appear from the description below. In addition, the present invention is not described with reference to any particular programming language. It will be appreciated that a variety of programming languages may be used to implement the teachings of the present invention as described herein, and any references below to specific languages are provided for disclosure of enablement and best mode of the present invention.
In addition, the language used in the specification has been principally selected for readability and instructional purposes, and may not have been selected to delineate or circumscribe the inventive subject matter. Accordingly, the disclosure of the present invention is intended to be illustrative, but not limiting, of the scope of the invention, which is set forth in the following claims.
The inputs to the joint position control unit are a position command qcmd/jnt and a velocity command Vff/jnc provided by the motion controller. The position control unit includes a motor that is controlled based on the position and velocity commands. The motor generates a motor torque τmot. The position control unit is typically designed to compensate for the linear dynamics of the joint as well as to address any nonlinear dynamics of the joint. As illustrated in
A position controller by proportional-integral-derivative (PID) control is implemented for each position control unit. The position control system has a position feedback loop and a velocity feedback loop in which data is measured by the sensor. Actual position is measured by an encoder sensor or a potentiometer, etc., which is attached to the motor. Actual velocity is measured by a velocity sensor or calculated by actual position data. Generally, the motor is connected to a gear to generate a large torque at the physical joint. To improve accuracy and quick responses of the motor control, a velocity feedforward command is applied to the position control unit and the position gain and velocity gain are adjusted for every joint motor.
The dynamics of the physical joint with transfer function PJ(s) is given by
Iphy{umlaut over (q)}+Fphy{dot over (q)}+N(q,{dot over (q)})=τmot (1)
Here, Iphy is the physical moment of inertia, Fphy is the physical linear friction coefficient at the joint output and N(q, {dot over (q)}) is the nonlinear element in the joint dynamics. These values are calculated by using the mechanical properties of the system. q, {dot over (q)}, and {umlaut over (q)} are the position, velocity, and acceleration of the joint, respectively. τmot is the torque produced by the motor as described above.
In the current feedback loop, CL, the current gain KC is composed of a current proportional gain Kip and a current integral gain Kii. The negative current feedback loop is closed by subtracting the actual current, imot from icmd. AL represents armature losses and is defined as 1/(Lms+Rm) where Rm is the motor resistance and Lm is the motor inductance. KE is the back electromotive force which is generated by the actuation of the motor torque. The motor torque is calculated by multiplying torque constant KT with actual current imot that is output from the current feedback loop. IF is composed of rotor inertia Jm and rotor friction Bm and is defined as 1/(Jms+Bm). The motor is controlled by this framework and the physical joint PJ is actuated according to the commands with high gain feedback control.
The motor torque controller is composed of a torque control unit, also referred to as a motor torque control unit, a sensor, and a physical joint which has a gear system. The torque control unit includes a motor. Unlike the joint position-controlled system of
T(s)={dot over (q)}act/mot(s)/Vff/mot(s) (2)
The torque at the joint τphy is given by
τphy(s)=AS*(s)·(Vff/mot(s)−{dot over (q)}act/mot(s))=AS*(s)·Vff/mot(s)(1−T(s)) (3)
In cases where nonlinear effects at the joint are negligible, the terms AS*(s) and PJ*(s) can be represented as linear transfer functions. They can be analytically defined by a block diagram using the dynamics parameters of the motor. In this case, the ideal torque τphy(s) is calculated as τcmd(s), the desired torque.
In cases where nonlinear effects at the joint are not negligible, T(s) cannot be computed analytically; however, T(s) can be experimentally identified from frequency analysis of the feedback control system response. Given the identified closed loop transfer function T(s) and PJ*(s), the ideal controller can be computed as follows:
Here, the ideal torque τphy(s) is derived as the torque associated with the linear part of the ideal dynamic system. Therefore, the ideal physical joint, PJ*(s), is defined as follows:
where Fphy is the friction of the joint and Iphy is the inertia of the inertia of the gear and link attached to the joint.
The ideal physical torque τphy(s) at the joint is the desired dynamic torque τdes if the ideal position control unit with transfer function AS*(s) is identified. The velocity input Vff/mot(s) corresponding to a desired dynamic torque τdes(s) is determined from Equation 3 as follows:
Here, AS*(s) is the identified position control unit transfer function defined by AS*(s)=VL*(s)·CL*(s)·M*(s).
Equation 6 shows how the dynamic velocity input Vff/mot(s) relates to desired torque command τdes(s) for a position controlled system. At the joint level, Equation 6 becomes:
where η is the gear ratio and where:
Vff/mot(s)=η·Vff/mot(s)
{dot over (q)}act/mot(s)=η·{dot over (q)}act/jnt(s)
τcmd/jnt(s)=η·τcmd/mot(s) (8)
Equation 6 and 7 show how the dynamic velocity input Vff/mot(s) relates to the desired torque command τcmd(s) for a position controlled system as illustrated in
The position controller takes the following inputs: 1) Velocity feedforward input to the motor, and 2) Position command input to the motor or position feedback loop gain to the motor. In one embodiment, the TVT takes the following inputs: 1) An actual position for canceling the position feedback loop by commanding the actual position to the motor, and 2) An actual velocity for canceling the velocity feedback loop by commanding the actual velocity to the motor.
It is useful to identify AS*(s), which is shown in
KP·(qcmd/mot−qact/mot)=0 (10)
By multiplying velocity gain KP and KV, the input icmd to the current feedback loop, becomes:
icmd=KV·(Vff/mot−{dot over (q)}act/mot) (11)
On the other hand, the motor generates the torque through its actuation. The motor torque is determined as follows:
τphy=KT·imot=KT·CL·icmd (12)
By applying Equation 11 to Equation 12, τphy is determined as follows:
τphy=KV·KT·CL·(Vff−{dot over (q)}act/mot) (13)
By replacing τphy by τcmd, Vff/mot is defined as follows:
At the joint level, Equation 15 is calculated using Equation 6 and Equation 14.
Equation 15 can be simplified by assuming the transfer function of the current feedback loop CL to be equal to 1 because the response of the closed loop is much faster than the position feedback loop. In
icmd=imot (16)
KP·(qcmd/mot−qact/mot)=0 (17)
By multiplying velocity gain KP and KV, the input to a current feedback loop, icmd, becomes:
icmd=KV·(Vff/mot−qact/mot) (18)
On the other hand, the motor generates the torque through its actuation. The motor torque is defined as follows:
τphy=KT·imot=KT·icmd (19)
Applying Equation 18 to Equation 19 yields:
τphy=KV·KT·(Vff−{dot over (q)}act/mot) (20)
Replacing τphy by τcmd, qcmd/mot gives:
At the joint level, Equation 22 below is calculated from Equation 8 and Equation 21.
KP·(qcmd/mot−qact/mot)=0 (23)
Therefore, the effect of a position feedback loop to a velocity feedback loop is zero. On the other hand, TVT transforms the torque command into the velocity feedforward command as follows:
Because the effect of the position feedback loop is cancelled, only the velocity feedforward command from Equation 24 is sent to the velocity feedback loop. The actual motor velocity is subtracted from the velocity feedforward command in the velocity feedback loop and becomes:
Equation 25 is multiplied by KV and is output as the current command icmd.
As a result, the torque command is directly sent to the current feedback loop and the current command is directly controlled from the torque command using the TVT.
Generally, a motor is connected to a gear to generate a large torque at the physical joint; however, it also generates friction, which is not modeled in TVT discussed above. Because the TVT works as an open loop function which converts a torque command into a velocity command, the friction between a motor and a joint affects the response of TVT. The hardware dependent characteristics such as friction, stiffness, etc., can be calculated and included in the joint torque command τcmd/jnt to improve the response of the TVT in an actual robot. In one embodiment, the friction model includes: (i) a Coulomb friction model, (ii) viscous friction, and (iii) stiction, that are applied and added to the torque command to the TVT.
The hardware dependent characteristics such as friction, stiffness etc. can be cancelled by a torque sensor which is mounted on the output of a joint. By using information from the torque sensor, torque feedback control can be applied for a torque command to TVT.
To improve the motion of a robot, a torque command can be calculated through a dynamics calculation which accounts for mass, center of gravity, inertia, coriolis and centrifugal forces in joint space control and the end-effector's position control in task space control. As the robot moves, dynamics parameters are recalculated according to the posture of the robot and a correct torque command is generated for every servo loop time.
Although the invention has been described in considerable detail with reference to certain embodiments thereof, other embodiments are possible as will be understood to those skilled in the art.
This application claims priority from the following U.S. provisional patent application, which is hereby incorporated by reference: Ser. No. 60/913,428, filed on Apr. 23, 2007, entitled “A New Approach for Open-Loop Torque Control on Traditional Joint Position-Controlled Robots.”
Number | Name | Date | Kind |
---|---|---|---|
4864204 | Daggett et al. | Sep 1989 | A |
4925312 | Onaga et al. | May 1990 | A |
5986422 | Iwashita et al. | Nov 1999 | A |
6961628 | Yutkowitz | Nov 2005 | B2 |
7211979 | Khatib et | May 2007 | B2 |
20060186845 | Terada et al. | Aug 2006 | A1 |
20070070738 | Gonzalez-Banos et al. | Mar 2007 | A1 |
Number | Date | Country | |
---|---|---|---|
20080258670 A1 | Oct 2008 | US |
Number | Date | Country | |
---|---|---|---|
60913428 | Apr 2007 | US |