Robot control
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
(
θ
→
)
θ
→
¨
+
C
(
θ
→
,
θ
→
˙
)
θ
→
˙
+
τ
→
g
(
θ
→
)
=
τ
→
{\displaystyle \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 }}}
where
θ
→
∈
R
N
{\displaystyle {\vec {\theta }}\in \mathbb {R} ^{N}}
is the state vector of joint variables that describe the system,
M
(
θ
→
)
{\displaystyle \mathbf {M} \left({\vec {\theta }}\right)}
is the inertia matrix,
C
(
θ
→
,
θ
→
˙
)
θ
→
˙
{\displaystyle \mathbf {C} \left({\vec {\theta }},{\dot {\vec {\theta }}}\right){\dot {\vec {\theta }}}}
is the vector Coriolis and centrifugal torques,
τ
→
g
(
θ
→
)
{\displaystyle {\vec {\tau }}_{g}\left({\vec {\theta }}\right)}
are the torques caused by gravity and
τ
→
{\displaystyle {\vec {\tau }}}
is the vector of joint torque inputs.
Assume that we have an approximate model of the system made up of
M
~
(
θ
→
)
,
C
~
(
θ
→
,
θ
→
˙
)
,
τ
→
~
g
(
θ
→
)
{\displaystyle {\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)}
. This model does not need to be perfect, but it should justify the approximations
M
(
θ
→
)
−
1
M
~
(
θ
→
)
≈
1
{\displaystyle \mathbf {M} \left({\vec {\theta }}\right)^{-1}{\tilde {\mathbf {M} }}\left({\vec {\theta }}\right)\approx \mathbf {1} }
and
M
−
1
(
C
(
θ
→
,
θ
→
˙
)
θ
→
˙
+
τ
→
g
(
θ
→
)
)
≈
M
−
1
(
C
~
(
θ
→
,
θ
→
˙
)
θ
→
˙
+
τ
→
~
g
(
θ
→
)
)
{\displaystyle \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)}
.
Given a desired trajectory
θ
→
d
(
t
)
{\displaystyle {\vec {\theta }}_{d}(t)}
the error relative to the current state
θ
→
(
t
)
{\displaystyle {\vec {\theta }}(t)}
is then
θ
→
e
(
t
)
=
θ
→
d
(
t
)
−
θ
→
(
t
)
{\displaystyle {\vec {\theta }}_{e}(t)={\vec {\theta }}_{d}(t)-{\vec {\theta }}(t)}
.
We can then set the input of the system to be
τ
→
(
t
)
=
M
~
(
θ
→
)
(
θ
→
¨
d
(
t
)
+
K
p
θ
→
e
(
t
)
+
K
i
∫
0
t
θ
→
¨
e
(
t
′
)
d
t
′
+
K
d
θ
→
˙
e
(
t
)
)
+
C
~
(
θ
→
,
θ
→
˙
)
+
τ
→
~
g
(
θ
→
)
{\displaystyle {\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)}
With this input the dynamics of the entire systems becomes
M
(
θ
→
)
θ
→
¨
+
C
(
θ
→
,
θ
→
˙
)
θ
→
˙
+
τ
→
g
(
θ
→
)
=
M
~
(
θ
→
)
(
θ
→
¨
d
(
t
)
+
K
p
θ
→
e
(
t
)
+
K
i
∫
0
t
θ
→
¨
e
(
t
′
)
d
t
′
+
K
d
θ
→
˙
e
(
t
)
)
+
C
~
(
θ
→
,
θ
→
˙
)
+
τ
→
~
g
(
θ
→
)
θ
→
¨
+
M
(
θ
→
)
−
1
(
C
(
θ
→
,
θ
→
˙
)
θ
→
˙
+
τ
→
g
(
θ
→
)
)
=
M
(
θ
→
)
−
1
M
~
(
θ
→
)
⏟
≈
1
(
θ
→
¨
d
(
t
)
+
K
p
θ
→
e
(
t
)
+
K
i
∫
0
t
θ
→
¨
e
(
t
′
)
d
t
′
+
K
d
θ
→
˙
e
(
t
)
)
+
M
(
θ
→
)
−
1
(
C
~
(
θ
→
,
θ
→
˙
)
+
τ
→
~
g
(
θ
→
)
)
θ
→
¨
=
θ
→
¨
d
(
t
)
+
K
p
θ
→
e
(
t
)
+
K
i
∫
0
t
θ
→
¨
e
(
t
′
)
d
t
′
+
K
d
θ
→
˙
e
(
t
)
0
=
θ
→
¨
e
+
K
p
θ
→
e
(
t
)
+
K
i
∫
0
t
θ
→
¨
e
(
t
′
)
d
t
′
+
K
d
θ
→
˙
e
(
t
)
{\displaystyle {\begin{aligned}\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{aligned}}}
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.
^ Lynch, Kevin M.; Park, Frank C. (2017). Modern robotics: mechanics, planning, and control . Cambridge: Cambridge university press. ISBN 978-1-107-15630-2 .
^ Siciliano, Bruno; Khatib, Oussama, eds. (2016). Springer handbook of robotics . Springer handbooks (2nd ed.). Berlin Heidelberg: Springer. pp. 174– 175. ISBN 978-3-319-32550-7 .