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

This class implements the Stack of Task. It allows to deal with the priority of the controllers through the shell. More...

#include <sot/core/sot.hh>

Inheritance diagram for dynamicgraph::sot::Sot:

Public Types

typedef std::list< TaskAbstract * > StackType
 Defines a type for a list of tasks. More...
 

Public Member Functions

virtual const std::string & getClassName () const
 Returns the name of this class. More...
 
 Sot (const std::string &name)
 Default constructor. More...
 
 ~Sot (void)
 
virtual void defineNbDof (const unsigned int &nbDof)
 This method defines the part of the state vector which correspond to the free flyer of the robot. More...
 
virtual const unsigned int & getNbDof () const
 
virtual std::ostream & writeGraph (std::ostream &os) const
 This method write the priority between tasks in the output stream os. More...
 
Methods to handle the stack.
virtual const StackTypetasks () const
 
virtual void push (TaskAbstract &task)
 Push the task in the stack. It has a lowest priority than the previous ones. If this is the first task, then it has the highest priority. More...
 
virtual TaskAbstractpop (void)
 Pop the task from the stack. This method removes the task with the smallest priority in the task. The other are projected in the null-space of their predecessors. More...
 
virtual bool exist (const TaskAbstract &task)
 This method allows to know if a task exists or not. More...
 
virtual void remove (const TaskAbstract &task)
 Remove a task regardless to its position in the stack. It removes also the signals connected to the output signal of this stack. More...
 
virtual void removeDependency (const TaskAbstract &key)
 This method removes the output signals depending on this task. More...
 
virtual void up (const TaskAbstract &task)
 This method makes the task to swap with the task having the immediate superior priority. More...
 
virtual void down (const TaskAbstract &task)
 This method makes the task to swap with the task having the immediate inferior priority. More...
 
virtual void clear (void)
 Remove all the tasks from the stack. More...
 
Methods to compute the control law following the

recursive definition of the stack of tasks.

virtual dynamicgraph::Vector & computeControlLaw (dynamicgraph::Vector &control, const int &time)
 Compute the control law. More...
 

Static Public Member Functions

static void taskVectorToMlVector (const VectorMultiBound &taskVector, Vector &err)
 Number of joints by default. More...
 

Public Attributes

Methods to handle signals
SignalPtr< dynamicgraph::Vector, int > q0SIN
 Intrinsec velocity of the robot, that is used to initialized the recurence of the SOT (e.g. velocity coming from the other OpenHRP plugins). More...
 
SignalPtr< dynamicgraph::Matrix, int > proj0SIN
 A matrix K whose columns are a base of the desired velocity. In other words, \( \dot{q} = K * u \) where \( u \) is the free parameter to be computed. More...
 
SignalPtr< double, int > inversionThresholdSIN
 This signal allow to change the threshold for the damped pseudo-inverse on-line. More...
 
SignalTimeDependent< dynamicgraph::Vector, int > controlSOUT
 Allow to get the result of the computed control law. More...
 

Static Public Attributes

static const std::string CLASS_NAME
 Specify the name of the class entity. More...
 
static const double INVERSION_THRESHOLD_DEFAULT
 Threshold to compute the dumped pseudo inverse. More...
 

Protected Attributes

StackType stack
 This field is a list of controllers managed by the stack of tasks. More...
 
unsigned int nbJoints
 Store the number of joints to be used in the command computed by the stack of tasks. More...
 
bool enablePostureTaskAcceleration
 Option to disable the computation of the SVD for the last task if this task is a Task with a single FeaturePosture. More...
 
double maxControlIncrementSquaredNorm
 Maximum allowed squared norm of control increment. A task whose control increment is above this value is discarded. It defaults to std::numeric_limits<double>::max(). More...
 

Methods to display the stack of tasks.

virtual void display (std::ostream &os) const
 
SOTSOT_CORE_EXPORT friend std::ostream & operator<< (std::ostream &os, const Sot &sot)
 

Detailed Description

This class implements the Stack of Task. It allows to deal with the priority of the controllers through the shell.

Member Typedef Documentation

◆ StackType

Defines a type for a list of tasks.

Constructor & Destructor Documentation

◆ Sot()

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

Default constructor.

◆ ~Sot()

dynamicgraph::sot::Sot::~Sot ( void  )
inline

Member Function Documentation

◆ clear()

virtual void dynamicgraph::sot::Sot::clear ( void  )
virtual

Remove all the tasks from the stack.

◆ computeControlLaw()

virtual dynamicgraph::Vector& dynamicgraph::sot::Sot::computeControlLaw ( dynamicgraph::Vector &  control,
const int &  time 
)
virtual

Compute the control law.

◆ defineNbDof()

virtual void dynamicgraph::sot::Sot::defineNbDof ( const unsigned int &  nbDof)
virtual

This method defines the part of the state vector which correspond to the free flyer of the robot.

◆ display()

virtual void dynamicgraph::sot::Sot::display ( std::ostream &  os) const
virtual

Display the stack of tasks in text mode as a tree.

◆ down()

virtual void dynamicgraph::sot::Sot::down ( const TaskAbstract task)
virtual

This method makes the task to swap with the task having the immediate inferior priority.

◆ exist()

virtual bool dynamicgraph::sot::Sot::exist ( const TaskAbstract task)
virtual

This method allows to know if a task exists or not.

◆ getClassName()

virtual const std::string& dynamicgraph::sot::Sot::getClassName ( void  ) const
inlinevirtual

Returns the name of this class.

◆ getNbDof()

virtual const unsigned int& dynamicgraph::sot::Sot::getNbDof ( ) const
inlinevirtual

◆ pop()

virtual TaskAbstract& dynamicgraph::sot::Sot::pop ( void  )
virtual

Pop the task from the stack. This method removes the task with the smallest priority in the task. The other are projected in the null-space of their predecessors.

◆ push()

virtual void dynamicgraph::sot::Sot::push ( TaskAbstract task)
virtual

Push the task in the stack. It has a lowest priority than the previous ones. If this is the first task, then it has the highest priority.

◆ remove()

virtual void dynamicgraph::sot::Sot::remove ( const TaskAbstract task)
virtual

Remove a task regardless to its position in the stack. It removes also the signals connected to the output signal of this stack.

◆ removeDependency()

virtual void dynamicgraph::sot::Sot::removeDependency ( const TaskAbstract key)
virtual

This method removes the output signals depending on this task.

◆ tasks()

virtual const StackType& dynamicgraph::sot::Sot::tasks ( ) const
inlinevirtual

◆ taskVectorToMlVector()

static void dynamicgraph::sot::Sot::taskVectorToMlVector ( const VectorMultiBound taskVector,
Vector &  err 
)
static

Number of joints by default.

◆ up()

virtual void dynamicgraph::sot::Sot::up ( const TaskAbstract task)
virtual

This method makes the task to swap with the task having the immediate superior priority.

◆ writeGraph()

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

This method write the priority between tasks in the output stream os.

Friends And Related Function Documentation

◆ operator<<

SOTSOT_CORE_EXPORT friend std::ostream& operator<< ( std::ostream &  os,
const Sot sot 
)
friend

Wrap the previous method around an operator.

Member Data Documentation

◆ CLASS_NAME

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

Specify the name of the class entity.

◆ controlSOUT

SignalTimeDependent<dynamicgraph::Vector, int> dynamicgraph::sot::Sot::controlSOUT

Allow to get the result of the computed control law.

◆ enablePostureTaskAcceleration

bool dynamicgraph::sot::Sot::enablePostureTaskAcceleration
protected

Option to disable the computation of the SVD for the last task if this task is a Task with a single FeaturePosture.

◆ INVERSION_THRESHOLD_DEFAULT

const double dynamicgraph::sot::Sot::INVERSION_THRESHOLD_DEFAULT
static

Threshold to compute the dumped pseudo inverse.

◆ inversionThresholdSIN

SignalPtr<double, int> dynamicgraph::sot::Sot::inversionThresholdSIN

This signal allow to change the threshold for the damped pseudo-inverse on-line.

◆ maxControlIncrementSquaredNorm

double dynamicgraph::sot::Sot::maxControlIncrementSquaredNorm
protected

Maximum allowed squared norm of control increment. A task whose control increment is above this value is discarded. It defaults to std::numeric_limits<double>::max().

Warning
This is a security feature and is not a good way of adding a proper constraint on the control generated by SoT.

◆ nbJoints

unsigned int dynamicgraph::sot::Sot::nbJoints
protected

Store the number of joints to be used in the command computed by the stack of tasks.

◆ proj0SIN

SignalPtr<dynamicgraph::Matrix, int> dynamicgraph::sot::Sot::proj0SIN

A matrix K whose columns are a base of the desired velocity. In other words, \( \dot{q} = K * u \) where \( u \) is the free parameter to be computed.

Note
K should be an orthonormal matrix.

◆ q0SIN

SignalPtr<dynamicgraph::Vector, int> dynamicgraph::sot::Sot::q0SIN

Intrinsec velocity of the robot, that is used to initialized the recurence of the SOT (e.g. velocity coming from the other OpenHRP plugins).

◆ stack

StackType dynamicgraph::sot::Sot::stack
protected

This field is a list of controllers managed by the stack of tasks.


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