pinocchio  1.2.6-7-g6de3e-dirty
Non linear motor model.
Collaboration diagram for Non linear motor model.:

Classes

class  ActuatorDCNonLinearMotorData< Scalar_ >
 Template for handling data related to a non linear DC motor model. More...
 
class  ActuatorDCNonLinearMotorModel< Scalar_ >
 Template implementing a non linear DC motor model. More...
 

Detailed Description

The model used for this non linear version of the DC motor is defined by the following state vector \( \mathbf{x} = [ x_0, x_1, x_2 ]^{\top} = [ \theta_m, \dot{\theta}_m, i_a ]^{\top} \) with \(\theta_m\) the motor angle.
The ODE function \( \dot{\bf{x}}= f(\bf{x},\bf{u},\bf{c},\bf{f}_{ext}) \) describing the dynamics of the motor for a set of parameters \( \bf{c} \), with control vector \( \bf{u} \) and submitted to external forces \( \bf{f}_{ext} \) by the multi-body rigid dynamics is:

\[ \left( \begin{matrix} \dot{\theta}_m \\ \ddot{\theta}_m \\ \dot{i}_a \\ \end{matrix} \right) = \left( \begin{matrix} \dot{\theta}_m \\ \frac{K_m}{B_m} i_a - \frac{D_m}{B_m} \dot{\theta}_m -\frac{\tau_l}{B_m} \\ -\frac{R}{L} i_a - \frac{K_b}{L}\dot{\theta}_m + \frac{V}{L} \\ \end{matrix} \right) \]

with \( B_m\) the rotor inertia, \( K_m \) the motor torque constant, \( R \) the armature resistance, \( i_a \) the current armature, \( \tau_m \) the motor torque, \( V \) the armature voltage, \( V_b \) the back electromotive force (E.M.F.), \( D_m \) the motor friction and includes friction in the brushes and gears, the robot position \( \theta_m \), \( \tau_l \) the motor load, the gear train inertia \( B_g \), \( K_b \) the back E.M.F. constant, \(L\) the motor inductance.

As the dynamics can be also written:

\[ \left( \begin{matrix} \dot{x}_0 \\ \dot{x}_1 \\ \dot{x}_2 \ \ \end{matrix} \right) = \left( \begin{matrix} x_1 \\ c_{1} i_a + c_{2} x_1 + c_3 \tau_l \\ c_4 i_a + c_5 x_1 + c_6 V \end{matrix} \right) = \left( \begin{matrix} x_1 \\ c_{1} x_2 + c_{2} x_1 + c_3 \bf{S}\bf{f}_{ext} \\ c_{4} x_2 + c_5 x_1 + c_6 u\\ \end{matrix} \right) \]

Thus

\[ \begin{array}{rcl} c_1 &= &\frac{K_m}{B_m}\\ c_2 &= & - \frac{D_m}{B_m}\\ c_3 &= & -\frac{1}{B_m}\\ c_4 &= & -\frac{R}{L} \\ c_5 &= & -\frac{K_b}{L} \\ c_6 &= & \frac{1}{L} \\ \end{array} \]

The control vector \( \bf{u} \) is the voltage \( V \).
\( \bf{S} \) is the selection matrix projecting the spatial force \(\bf{f}_{ext}\) expressed in the motor coordinates.
The observation function \(h(\bf{x},\bf{u},\bf{c},\bf{f}_{ext})\) is defined as:

\[ \left( \begin{matrix} \tau_m\\ V_b \\ \end{matrix} \right) = \left( \begin{matrix} \frac{K_m}{i_a}\\ K_b \dot{\theta}_m\\ \end{matrix} \right) \]