sot-core  4.11.8
Hierarchical task solver plug-in for dynamic-graph.
dynamicgraph::sot::FeatureAbstract Class Referenceabstract

This class gives the abstract definition of a feature. More...

#include <sot/core/feature-abstract.hh>

Inheritance diagram for dynamicgraph::sot::FeatureAbstract:

Public Member Functions

virtual const std::string & getClassName (void) const
 Returns the name class. More...
 
void featureRegistration (void)
 Register the feature in the stack of tasks. More...
 
void initCommands (void)
 
 FeatureAbstract (const std::string &name)
 Default constructor: the name of the class should be given. More...
 
virtual ~FeatureAbstract (void)
 Default destructor. More...
 
Methods returning the dimension of the feature.
virtual unsigned int & getDimension (unsigned int &res, int time)=0
 Verbose method. More...
 
unsigned int getDimension (int time)
 Short method. More...
 
unsigned int getDimension (void) const
 Shortest method. More...
 
Methods to control internal computation.

The main idea is that some feature may have a lower frequency than the internal control loop. In this case, the methods for computation are called only when needed.

virtual dynamicgraph::Vector & computeError (dynamicgraph::Vector &res, int time)=0
 Compute the error between the desired feature and the current value of the feature measured or deduced from the robot state. More...
 
virtual dynamicgraph::Matrix & computeJacobian (dynamicgraph::Matrix &res, int time)=0
 Compute the Jacobian of the error according the robot state. More...
 
virtual dynamicgraph::Vector & computeErrorDot (dynamicgraph::Vector &res, int time)
 
Reference
virtual void setReference (FeatureAbstract *sdes)=0
 
virtual void unsetReference (void)
 
virtual const FeatureAbstractgetReferenceAbstract (void) const =0
 
virtual FeatureAbstractgetReferenceAbstract (void)=0
 
virtual bool isReferenceSet (void) const
 
virtual void addDependenciesFromReference (void)=0
 
virtual void removeDependenciesFromReference (void)=0
 
void setReferenceByName (const std::string &name)
 
std::string getReferenceByName (void) const
 

Public Attributes

Input signals:
SignalPtr< Flags, int > selectionSIN
 This vector specifies which dimension are used to perform the computation. For instance let us assume that the feature is a 3D point. If only the Y-axis should be used for computing error, activation and Jacobian, then the vector to specify is \( [ 0 1 0] \). More...
 
SignalPtr< dynamicgraph::Vector, int > errordotSIN
 Derivative of the reference value. More...
 

Static Public Attributes

static const std::string CLASS_NAME
 Store the name of the class. More...
 

Output signals:

SignalTimeDependent< dynamicgraph::Vector, int > errorSOUT
 This signal returns the error between the desired value and the current value : \( E(t) = {\bf s}(t) - {\bf s}^*(t)\). More...
 
SignalTimeDependent< dynamicgraph::Vector, int > errordotSOUT
 Derivative of the error with respect to time: \( \frac{\partial e}{\partial t} = - \frac{d{\bf s}^*}{dt} \). More...
 
SignalTimeDependent< dynamicgraph::Matrix, int > jacobianSOUT
 Jacobian of the error wrt the robot state: \( J = \frac{\partial {\bf s}}{\partial {\bf q}}\). More...
 
SignalTimeDependent< unsigned int, int > dimensionSOUT
 Returns the dimension of the feature as an output signal. More...
 
virtual std::ostream & writeGraph (std::ostream &os) const
 This method write a graph description on the file named FileName. More...
 
virtual SignalTimeDependent< dynamicgraph::Vector, int > & getErrorDot ()
 

Detailed Description

This class gives the abstract definition of a feature.

par_features_definition Definition
In short, a feature is a data evolving according to time. It is defined by a vector \({\bf s}({\bf q}) \in \mathbb{R}^n \) where \( {\bf q} \) is a robot configuration, which depends on the time \( t \). By default a feature has a desired \({\bf s}^*(t) \). \({\bf s}^*\) is provided by another feature of the same type called reference. The feature is in charge of collecting its own current state. A feature is supposed to compute an error between its current state and the desired one: \( E(t) = e({\bf q}(t), t) = {\bf s}({\bf q}(t)) \ominus {\bf s}^*(t) \). Here, \( \ominus \) is the difference operator of Lie group in which \( {\bf s} \) and \( {\bf s}^* \) are. The documentation below assumes the Lie group is a vector space and \(\ominus\) is the usual difference operator.

A feature computes:

  • the Jacobian according to the robot state vector \( J = \frac{\partial e}{\partial {\bf q}} = \frac{\partial{\bf s}}{\partial {\bf q}}\).
  • the partial derivative of the error \( e \): \( \frac{\partial e}{\partial t} = - \frac{d{\bf s}^*}{dt}\).

The task is in general computed from the value of the feature at the current instant \(E(t) = e({\bf q},t)\). The derivative of \( E \) is:

\[ \frac{dE}{dt} = J({\bf q}) \dot{q} + \frac{\partial e}{\partial t} \]

Feature diagram: Feature types derive from

FeatureAbstract. Each feature has a reference of the same type and compute an error by comparing errorSIN signals from itself and from the reference."

Constructor & Destructor Documentation

◆ FeatureAbstract()

dynamicgraph::sot::FeatureAbstract::FeatureAbstract ( const std::string &  name)

Default constructor: the name of the class should be given.

◆ ~FeatureAbstract()

virtual dynamicgraph::sot::FeatureAbstract::~FeatureAbstract ( void  )
inlinevirtual

Default destructor.

Member Function Documentation

◆ addDependenciesFromReference()

virtual void dynamicgraph::sot::FeatureAbstract::addDependenciesFromReference ( void  )
pure virtual

◆ computeError()

virtual dynamicgraph::Vector& dynamicgraph::sot::FeatureAbstract::computeError ( dynamicgraph::Vector &  res,
int  time 
)
pure virtual

Compute the error between the desired feature and the current value of the feature measured or deduced from the robot state.

[out] res: The error will be set into res.
[in] time: The time at which the error is computed.
Returns
The vector res with the appropriate value.

Implemented in dynamicgraph::sot::FeaturePosture, dynamicgraph::sot::FeatureVisualPoint, dynamicgraph::sot::FeatureVector3, dynamicgraph::sot::FeaturePose< representation >, dynamicgraph::sot::FeaturePoint6d, dynamicgraph::sot::FeaturePoint6dRelative, dynamicgraph::sot::FeatureLineDistance, dynamicgraph::sot::FeatureJointLimits, dynamicgraph::sot::FeatureGeneric, and dynamicgraph::sot::Feature1D.

◆ computeErrorDot()

virtual dynamicgraph::Vector& dynamicgraph::sot::FeatureAbstract::computeErrorDot ( dynamicgraph::Vector &  res,
int  time 
)
virtual

Callback for signal errordotSOUT

Copy components of the input signal errordotSIN defined by selection flag selectionSIN.

Reimplemented in dynamicgraph::sot::FeaturePosture, dynamicgraph::sot::FeaturePose< representation >, and dynamicgraph::sot::FeaturePoint6dRelative.

◆ computeJacobian()

virtual dynamicgraph::Matrix& dynamicgraph::sot::FeatureAbstract::computeJacobian ( dynamicgraph::Matrix &  res,
int  time 
)
pure virtual

◆ featureRegistration()

void dynamicgraph::sot::FeatureAbstract::featureRegistration ( void  )

Register the feature in the stack of tasks.

◆ getClassName()

◆ getDimension() [1/3]

unsigned int dynamicgraph::sot::FeatureAbstract::getDimension ( int  time)
inline

Short method.

time: The time at which the feature should be considered.
Returns
Dimension of the feature.
Note
Be careful with features changing their dimension according to time.

◆ getDimension() [2/3]

virtual unsigned int& dynamicgraph::sot::FeatureAbstract::getDimension ( unsigned int &  res,
int  time 
)
pure virtual

Verbose method.

res: The integer in which the dimension will be return.
time: The time at which the feature should be considered.
Returns
Dimension of the feature.
Note
Be careful with features changing their dimension according to time.

Implemented in dynamicgraph::sot::FeaturePosture, dynamicgraph::sot::FeatureVisualPoint, dynamicgraph::sot::FeatureVector3, dynamicgraph::sot::FeaturePose< representation >, dynamicgraph::sot::FeaturePoint6d, dynamicgraph::sot::FeatureLineDistance, dynamicgraph::sot::FeatureJointLimits, dynamicgraph::sot::FeatureGeneric, and dynamicgraph::sot::Feature1D.

◆ getDimension() [3/3]

unsigned int dynamicgraph::sot::FeatureAbstract::getDimension ( void  ) const
inline

Shortest method.

Returns
Dimension of the feature.
Note
The feature is not changing its dimension according to time.

◆ getErrorDot()

virtual SignalTimeDependent<dynamicgraph::Vector, int>& dynamicgraph::sot::FeatureAbstract::getErrorDot ( )
inlinevirtual

◆ getReferenceAbstract() [1/2]

virtual const FeatureAbstract* dynamicgraph::sot::FeatureAbstract::getReferenceAbstract ( void  ) const
pure virtual

◆ getReferenceAbstract() [2/2]

virtual FeatureAbstract* dynamicgraph::sot::FeatureAbstract::getReferenceAbstract ( void  )
pure virtual

◆ getReferenceByName()

std::string dynamicgraph::sot::FeatureAbstract::getReferenceByName ( void  ) const

◆ initCommands()

void dynamicgraph::sot::FeatureAbstract::initCommands ( void  )

◆ isReferenceSet()

virtual bool dynamicgraph::sot::FeatureAbstract::isReferenceSet ( void  ) const
inlinevirtual

◆ removeDependenciesFromReference()

virtual void dynamicgraph::sot::FeatureAbstract::removeDependenciesFromReference ( void  )
pure virtual

◆ setReference()

virtual void dynamicgraph::sot::FeatureAbstract::setReference ( FeatureAbstract sdes)
pure virtual

◆ setReferenceByName()

void dynamicgraph::sot::FeatureAbstract::setReferenceByName ( const std::string &  name)

◆ unsetReference()

virtual void dynamicgraph::sot::FeatureAbstract::unsetReference ( void  )
inlinevirtual

◆ writeGraph()

virtual std::ostream& dynamicgraph::sot::FeatureAbstract::writeGraph ( std::ostream &  os) const
virtual

This method write a graph description on the file named FileName.

Member Data Documentation

◆ CLASS_NAME

const std::string dynamicgraph::sot::FeatureAbstract::CLASS_NAME
static

Store the name of the class.

◆ dimensionSOUT

SignalTimeDependent<unsigned int, int> dynamicgraph::sot::FeatureAbstract::dimensionSOUT

Returns the dimension of the feature as an output signal.

◆ errordotSIN

SignalPtr<dynamicgraph::Vector, int> dynamicgraph::sot::FeatureAbstract::errordotSIN

Derivative of the reference value.

◆ errordotSOUT

SignalTimeDependent<dynamicgraph::Vector, int> dynamicgraph::sot::FeatureAbstract::errordotSOUT

Derivative of the error with respect to time: \( \frac{\partial e}{\partial t} = - \frac{d{\bf s}^*}{dt} \).

◆ errorSOUT

SignalTimeDependent<dynamicgraph::Vector, int> dynamicgraph::sot::FeatureAbstract::errorSOUT

This signal returns the error between the desired value and the current value : \( E(t) = {\bf s}(t) - {\bf s}^*(t)\).

◆ jacobianSOUT

SignalTimeDependent<dynamicgraph::Matrix, int> dynamicgraph::sot::FeatureAbstract::jacobianSOUT

Jacobian of the error wrt the robot state: \( J = \frac{\partial {\bf s}}{\partial {\bf q}}\).

◆ selectionSIN

SignalPtr<Flags, int> dynamicgraph::sot::FeatureAbstract::selectionSIN

This vector specifies which dimension are used to perform the computation. For instance let us assume that the feature is a 3D point. If only the Y-axis should be used for computing error, activation and Jacobian, then the vector to specify is \( [ 0 1 0] \).


The documentation for this class was generated from the following file: