Английская Википедия:Computed torque control
Шаблон:Multiple issues Шаблон:Short description
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
<math>\mathbf{M}\left( \vec\theta \right) \ddot\vec\theta + \mathbf{C}\left( \vec\theta, \dot\vec\theta \right) \dot\vec\theta + \vec\tau_g \left(\vec\theta\right) = \vec\tau</math> where <math>\vec\theta \in \mathbb{R}^N</math> is the state vector of joint variables that describe the system, <math>\mathbf{M}\left(\vec\theta\right)</math> is the inertia matrix, <math>\mathbf{C}\left( \vec\theta, \dot\vec\theta \right) \dot\vec\theta
</math> is the vector Coriolis and centrifugal torques, <math>\vec\tau_g \left(\vec\theta\right)</math> are the torques caused by gravity and <math>\vec\tau </math> is the vector of joint torque inputs.
Assume that we have an approximate model of the system made up of <math>\tilde\mathbf{M}\left( \vec\theta \right), \tilde\mathbf{C}\left( \vec\theta, \dot\vec\theta \right), \tilde\vec\tau_g \left(\vec\theta\right) </math>. This model does not need to be perfect, but it should justify the approximations <math>\mathbf{M}\left( \vec\theta \right)^{-1} \tilde\mathbf{M}\left( \vec\theta \right) \approx \mathbf 1 </math> and <math>\mathbf{M} ^{-1} \left( \mathbf{C}\left( \vec\theta, \dot\vec\theta \right) \dot\vec\theta + \vec\tau_g \left(\vec\theta\right) \right) \approx \mathbf{M} ^{-1} \left( \tilde\mathbf{C}\left( \vec\theta, \dot\vec\theta \right) \dot\vec\theta + \tilde\vec\tau_g \left(\vec\theta\right) \right)</math>.
Given a desired trajectory <math>\vec\theta_d(t)</math> the error relative to the current state <math>\vec\theta(t)</math> is then <math>\vec\theta_e(t) = \vec\theta_d(t) - \vec\theta(t)</math>.
We can then set the input of the system to be
<math>\vec\tau(t) = \tilde\mathbf{M}\left( \vec\theta \right) \left(
\ddot\vec\theta_d(t) + K_p \vec\theta_e(t) + K_i \int_0^t \ddot\vec\theta_e(t') dt' + K_d \dot\vec\theta_e(t)
\right) + \tilde\mathbf{C}\left( \vec\theta, \dot\vec\theta \right) + \tilde\vec\tau_g \left(\vec\theta\right) </math>
With this input the dynamics of the entire systems becomes
<math>\begin{align} \mathbf{M}\left( \vec\theta \right) \ddot\vec\theta + \mathbf{C}\left( \vec\theta, \dot\vec\theta \right) \dot\vec\theta + \vec\tau_g \left(\vec\theta\right) =& \tilde\mathbf{M}\left( \vec\theta \right) \left(
\ddot\vec\theta_d(t) + K_p \vec\theta_e(t) + K_i \int_0^t \ddot\vec\theta_e(t') dt' + K_d \dot\vec\theta_e(t)
\right) + \tilde\mathbf{C}\left( \vec\theta, \dot\vec\theta \right) + \tilde\vec\tau_g \left(\vec\theta\right)
\\
\ddot\vec\theta + \mathbf{M}\left( \vec\theta \right)^{-1} \left( \mathbf{C}\left( \vec\theta, \dot\vec\theta \right) \dot\vec\theta + \vec\tau_g \left(\vec\theta\right) \right) =& \underbrace{ \mathbf{M}\left( \vec\theta \right)^{-1} \tilde\mathbf{M}\left( \vec\theta \right) }_{\approx \mathbf{1}} \left(
\ddot\vec\theta_d(t) + K_p \vec\theta_e(t) + K_i \int_0^t \ddot\vec\theta_e(t') dt' + K_d \dot\vec\theta_e(t)
\right) + \mathbf{M}\left( \vec\theta \right)^{-1} \left( \tilde\mathbf{C}\left( \vec\theta, \dot\vec\theta \right) + \tilde\vec\tau_g \left(\vec\theta\right) \right)
\\
\ddot\vec\theta = & \ddot\vec\theta_d(t) + K_p \vec\theta_e(t) + K_i \int_0^t \ddot\vec\theta_e(t') dt' + K_d \dot\vec\theta_e(t)
\\
0 = & \ddot\vec\theta_e + K_p \vec\theta_e(t) + K_i \int_0^t \ddot\vec\theta_e(t') dt' + K_d \dot\vec\theta_e(t)
\end{align} </math>
and the normal methods for PID controller tuning can be applied. In this way the compilcated nonlinear control problem has been reduced to a relatively simple linear control problem.
References