|
pinocchio
1.2.6-7-g6de3e-dirty
|
Classes | |
| class | ActuatorDCMotorData< Scalar_ > |
| Template for handling data related to a second order linear DC motor model. More... | |
| class | ActuatorDCMotorModel< Scalar_ > |
| Template which implements a second order linear DC motor model. More... | |
| class | ActuatorDCTempNonLinearMotorData< Scalar_ > |
| Template for handling data related to a second order linear DC motor model. More... | |
| class | ActuatorDCTempNonLinearMotorModel< Scalar_ > |
| Template which implements a second order linear DC motor model. More... | |
| class | PneumaticTwoChambersData< Scalar_ > |
| Template for handling data related to a second order linear DC motor model. More... | |
| class | PneumaticTwoChambersModel< Scalar_ > |
| Template which implements a second order linear DC motor model. More... | |
The model used for this linear version of the DC motor is defined by the following state vector \( \mathbf{x} = [ x_0, x_1 ]^{\top} = [ \theta_m, \dot{\theta}_m ]^{\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 \\ \end{matrix} \right) = \left( \begin{matrix} \dot{\theta}_m \\ \frac{K_m}{R B_m}V - (\frac{K_b}{R B_m} + \frac{D_m}{B_m}) \dot{\theta}_m -\frac{\tau_l}{B_m} \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.
As the dynamics can be also written:
\[ \left( \begin{matrix} \dot{x}_0 \\ \dot{x}_1 \\ \end{matrix} \right) = \left( \begin{matrix} x_1 \\ c_{1} V + c_{2} x_1 + c_3 \tau_l \end{matrix} \right) = \left( \begin{matrix} x_1 \\ c_{1} u + c_{2} x_1 + c_3 \bf{S}\bf{f}_{ext} \end{matrix} \right) \]
Thus
\[ \begin{array}{rcl} c_1 &= &\frac{K_b}{R B_m}\\ c_2 &= & -\frac{K_b}{R B_m} - \frac{D_m}{B_m}\\ c_3 &= & -\frac{1}{B_m}\\ \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} i_a \\ \tau_m\\ V_b \\ \end{matrix} \right) = \left( \begin{matrix} \frac{V}{R} - \frac{K_b}{R}\dot{\theta}_m \\ \frac{V K_m}{R} - \frac{K_b K_m}{R}\dot{\theta}_m\\ K_b \dot{\theta}_m\\ \end{matrix} \right) \]