dynamicgraph::sot::IntegratorEuler< sigT, coefT > Class Template Reference

integrates an ODE using a naive Euler integration. TODO: change the integration method. For the moment, the highest derivative of the output signal is computed using the previous values of the other derivatives and the input signal, then integrated n times, which will most certainly induce a huge drift for ODEs with a high order at the denominator. More...

#include <sot/core/integrator-euler.hh>

Inheritance diagram for dynamicgraph::sot::IntegratorEuler< sigT, coefT >:
[legend]

Public Member Functions

virtual const std::string & getClassName (void) const
 
 IntegratorEuler (const std::string &name)
 
virtual ~IntegratorEuler (void)
 
sigT & integrate (sigT &res, int time)
 
sigT & derivative (sigT &res, int time)
 
void setSamplingPeriod (const double &period)
 
double getSamplingPeriod () const
 
void initialize ()
 
- Public Member Functions inherited from dynamicgraph::sot::IntegratorAbstract< sigT, coefT >
 IntegratorAbstract (const std::string &name)
 
virtual ~IntegratorAbstract ()
 
void pushNumCoef (const coefT &numCoef)
 
void pushDenomCoef (const coefT &denomCoef)
 
void popNumCoef ()
 
void popDenomCoef ()
 

Static Public Member Functions

static std::string getTypeName (void)
 

Static Public Attributes

static const std::string CLASS_NAME
 

Protected Attributes

std::vector< sigT > inputMemory
 
std::vector< sigT > outputMemory
 
dg::SignalTimeDependent< sigT, int > derivativeSOUT
 
double dt
 
double invdt
 
- Protected Attributes inherited from dynamicgraph::sot::IntegratorAbstract< sigT, coefT >
std::vector< coefT > numerator
 
std::vector< coefT > denominator
 

Additional Inherited Members

- Public Attributes inherited from dynamicgraph::sot::IntegratorAbstract< sigT, coefT >
dg::SignalPtr< sigT, int > SIN
 
dg::SignalTimeDependent< sigT, int > SOUT
 

Detailed Description

template<class sigT, class coefT>
class dynamicgraph::sot::IntegratorEuler< sigT, coefT >

integrates an ODE using a naive Euler integration. TODO: change the integration method. For the moment, the highest derivative of the output signal is computed using the previous values of the other derivatives and the input signal, then integrated n times, which will most certainly induce a huge drift for ODEs with a high order at the denominator.

Constructor & Destructor Documentation

◆ IntegratorEuler()

◆ ~IntegratorEuler()

template<class sigT , class coefT >
virtual dynamicgraph::sot::IntegratorEuler< sigT, coefT >::~IntegratorEuler ( void  )
inlinevirtual

Member Function Documentation

◆ derivative()

template<class sigT , class coefT >
sigT& dynamicgraph::sot::IntegratorEuler< sigT, coefT >::derivative ( sigT &  res,
int  time 
)
inline

◆ getClassName()

template<class sigT , class coefT >
virtual const std::string& dynamicgraph::sot::IntegratorEuler< sigT, coefT >::getClassName ( void  ) const
virtual

◆ getSamplingPeriod()

template<class sigT , class coefT >
double dynamicgraph::sot::IntegratorEuler< sigT, coefT >::getSamplingPeriod ( ) const
inline

◆ getTypeName()

template<class sigT , class coefT >
static std::string dynamicgraph::sot::IntegratorEuler< sigT, coefT >::getTypeName ( void  )
inlinestatic

◆ initialize()

template<class sigT , class coefT >
void dynamicgraph::sot::IntegratorEuler< sigT, coefT >::initialize ( )
inline

◆ integrate()

template<class sigT , class coefT >
sigT& dynamicgraph::sot::IntegratorEuler< sigT, coefT >::integrate ( sigT &  res,
int  time 
)
inlinevirtual

◆ setSamplingPeriod()

template<class sigT , class coefT >
void dynamicgraph::sot::IntegratorEuler< sigT, coefT >::setSamplingPeriod ( const double &  period)
inline

Member Data Documentation

◆ CLASS_NAME

template<class sigT , class coefT >
const std::string dynamicgraph::sot::IntegratorEuler< sigT, coefT >::CLASS_NAME
static

◆ derivativeSOUT

template<class sigT , class coefT >
dg::SignalTimeDependent<sigT, int> dynamicgraph::sot::IntegratorEuler< sigT, coefT >::derivativeSOUT
protected

◆ dt

template<class sigT , class coefT >
double dynamicgraph::sot::IntegratorEuler< sigT, coefT >::dt
protected

◆ inputMemory

template<class sigT , class coefT >
std::vector<sigT> dynamicgraph::sot::IntegratorEuler< sigT, coefT >::inputMemory
protected

◆ invdt

template<class sigT , class coefT >
double dynamicgraph::sot::IntegratorEuler< sigT, coefT >::invdt
protected

◆ outputMemory

template<class sigT , class coefT >
std::vector<sigT> dynamicgraph::sot::IntegratorEuler< sigT, coefT >::outputMemory
protected