20 #ifndef _se3_pneumatic_two_chambers_hpp_ 21 #define _se3_pneumatic_two_chambers_hpp_ 24 #include "pinocchio/macros.hpp" 25 #include "pinocchio/actuators/actuator-model.hpp" 41 template<
typename Scalar_>
46 typedef Scalar_ Scalar_t;
47 typedef typename Eigen::Matrix<Scalar_, 12,1 > Parameters_t;
48 typedef typename Eigen::Matrix<Scalar_, 3,1> Observations_t;
49 typedef typename Eigen::Matrix<Scalar_, 6,1> S_t;
50 typedef typename Eigen::Matrix<Scalar_, 1,1> X_t;
51 typedef typename Eigen::Matrix<Scalar_, 1,1> dX_t;
52 typedef typename Eigen::Matrix<Scalar_, 1,1> U_t;
55 const Observations_t &
h()
const {
return h_;}
58 const Parameters_t &
c()
const {
return c_;}
61 const S_t &
S()
const {
return S_;}
63 enum InternalParameters
65 P_VALVE_VOLTAGE_ORIGIN,
66 P_VALVE_VOLTAGE_SCALE,
70 P_VOLUME_SENSOR_SCALE,
74 P_PRESSURE_SENSOR_BIAS,
75 P_PRESSURE_SENSOR_SCALE,
76 P_VOLTAGE_RANGE_OF_LEAKY_REGIME
82 {
c_[P_VALVE_VOLTAGE_ORIGIN] =
c;}
86 {
c_[P_VALVE_VOLTAGE_SCALE]=
c;}
90 {
c_[P_KINK_FACTOR]=
c;}
106 {c[P_RATE_ASSYMMETRY] =
c;}
114 {c[P_PRESSURE_SENSOR_BIAS] =
c;}
118 {c[P_PRESSURE_SENSOR_SCALE] =
c;}
121 void pVoltageRangeOfLeakyRegime(Scalar_
c)
122 {c[P_VOLTAGE_RANGE_OF_LEAKY_REGIME] =
c; }
128 Observations_t &
h() {
return h_;}
149 template<
typename Scalar_>
154 typedef Eigen::Matrix<Scalar_,3,1,0> Vector3Scalar;
159 void ode_func(
typename ActuatorDCMotorData<Scalar_>::dX_t & dstate,
160 typename ActuatorDCMotorData<Scalar_>::X_t & state,
161 typename ActuatorDCMotorData<Scalar_>::U_t & control,
169 data.
h()[0] = control[0] /data.
c()[4] - data.
c()[7] *state[1]/data.
c()[4];
171 data.
h()[1] = data.
c()[5] *data.
h()[0];
173 data.
h()[2] = data.
c()[7] * state[1];
179 aForce.
linear(Vector3Scalar::Zero(3,1));
180 aForce.
angular(Vector3Scalar(0.0,0.0,data.
h()[1]));
193 template <
typename Scalar_>
194 struct adb_traits<ActuatorDCMotorData<Scalar_> >
199 template <
typename Scalar_>
200 struct amb_traits<ActuatorDCMotorModel<Scalar_> >
Template for handling data related to a second order linear DC motor model.
const S_t & S() const
Returns selection matrix.
void pRateAssymmetry(Scalar_ c)
Rate assymmetry.
const Observations_t & h() const
Return observation vector.
void valveVoltageOrigin(Scalar_ c)
Valve-voltage origin.
const Parameters_t & c() const
Return parameters.
Concreate Class representing a force.
Template which implements a second order linear DC motor model.
void kinkFactor(Scalar_ c)
Kink Factor.
ConstAngular_t angular() const
Return the angular part of the force vector.
void valveVoltageScale(Scalar_ c)
Valve Voltage scale.
void pLeakage(Scalar_ c)
Leakage.
Template for handling data related to a second order linear DC motor model.
Template which implements a second order linear DC motor model.
void pPressureSensorBias(Scalar_ c)
Pressure sensor bias.
Observations_t h_
Observation variables.
const Parameters_t & c() const
Return parameters.
void pPressureSensorScale(Scalar_ c)
Pressure sensor scale.
Parameters_t c_
Vector parameters.
ConstLinear_t linear() const
Return the linear part of the force vector.
void pBeq(Scalar_ c)
B eq.
const Observations_t & h() const
Return observation vector.