Computed torque control is a control scheme used in motion control in robotics. It combines feedback linearization via a PID controller of the error with a dynamical model of the controlled robot.[1] [2]
Let the dynamics of the controlled robot be described by
M\left(\vec\theta\right)\ddot\vec\theta+C\left(\vec\theta,
\vec\theta |
\right)
\vec\theta |
+ \vec\taug\left(\vec\theta\right) = \vec\tau
\vec\theta\inRN
M\left(\vec\theta\right)
C\left(\vec\theta,
\vec\theta |
\right)
\vec\theta |
\vec\taug\left(\vec\theta\right)
\vec\tau
Assume that we have an approximate model of the system made up of
\tildeM\left(\vec\theta\right), \tildeC\left(\vec\theta,
\vec\theta |
\right),\tilde\vec\taug\left(\vec\theta\right)
M\left(\vec\theta\right)-1\tildeM\left(\vec\theta\right) ≈ 1
M-1\left(C\left(\vec\theta,
\vec\theta |
\right)
\vec\theta |
+ \vec\taug\left(\vec\theta\right) \right) ≈ M-1\left(\tildeC\left(\vec\theta,
\vec\theta |
\right)
\vec\theta |
+ \tilde\vec\taug\left(\vec\theta\right) \right)
Given a desired trajectory
\vec\thetad(t)
\vec\theta(t)
\vec\thetae(t)=\vec\thetad(t)-\vec\theta(t)
We can then set the input of the system to be
\vec\tau(t)= \tildeM\left(\vec\theta\right)\left(\ddot\vec\thetad(t)+Kp\vec\thetae(t)+Ki
t | |
\int | |
0 |
\ddot\vec\thetae(t')dt'+Kd
\vec\theta |
e(t) \right)+ \tildeC\left(\vec\theta,
\vec\theta |
\right)+\tilde\vec\taug\left(\vec\theta\right)
With this input the dynamics of the entire systems becomes
\begin{align} M\left(\vec\theta\right)\ddot\vec\theta+C\left(\vec\theta,
\vec\theta |
\right)
\vec\theta |
+ \vec\taug\left(\vec\theta\right) =& \tildeM\left(\vec\theta\right)\left(\ddot\vec\thetad(t)+Kp\vec\thetae(t)+Ki
t | |
\int | |
0 |
\ddot\vec\thetae(t')dt'+Kd
\vec\theta |
e(t) \right)+ \tildeC\left(\vec\theta,
\vec\theta |
\right)+\tilde\vec\taug\left(\vec\theta\right) \\ \ddot\vec\theta+M\left(\vec\theta\right)-1\left(C\left(\vec\theta,
\vec\theta |
\right)
\vec\theta |
+ \vec\taug\left(\vec\theta\right) \right) =& \underbrace{ M\left(\vec\theta\right)-1\tildeM\left(\vec\theta\right)} ≈ \left(\ddot\vec\thetad(t)+Kp\vec\thetae(t)+Ki
t | |
\int | |
0 |
\ddot\vec\thetae(t')dt'+Kd
\vec\theta |
e(t) \right)+ M\left(\vec\theta\right)-1\left(\tildeC\left(\vec\theta,
\vec\theta |
\right)+\tilde\vec\taug\left(\vec\theta\right) \right)\\ \ddot\vec\theta=& \ddot\vec\thetad(t)+Kp\vec\thetae(t)+Ki
t | |
\int | |
0 |
\ddot\vec\thetae(t')dt'+Kd
\vec\theta |
e(t) \\ 0=& \ddot\vec\thetae +Kp\vec\thetae(t)+Ki
t | |
\int | |
0 |
\ddot\vec\thetae(t')dt'+Kd
\vec\theta |
e(t) \end{align}
and the normal methods for PID controller tuning can be applied. In this way the complicated nonlinear control problem has been reduced to a relatively simple linear control problem.