tsid  1.8.0
Efficient Task Space Inverse Dynamics for Multi-body Systems based on Pinocchio
tsid::InverseDynamicsFormulationBase Class Referenceabstract

Wrapper for a robot based on pinocchio. More...

#include <tsid/formulations/inverse-dynamics-formulation-base.hpp>

Inheritance diagram for tsid::InverseDynamicsFormulationBase:
Collaboration diagram for tsid::InverseDynamicsFormulationBase:

Public Types

typedef math::Vector Vector
 
typedef math::RefVector RefVector
 
typedef math::ConstRefVector ConstRefVector
 
typedef tasks::TaskMotion TaskMotion
 
typedef tasks::TaskContactForce TaskContactForce
 
typedef tasks::TaskActuation TaskActuation
 
typedef tasks::TaskBase TaskBase
 
typedef contacts::MeasuredForceBase MeasuredForceBase
 
typedef contacts::ContactBase ContactBase
 
typedef solvers::HQPData HQPData
 
typedef solvers::HQPOutput HQPOutput
 
typedef robots::RobotWrapper RobotWrapper
 

Public Member Functions

 InverseDynamicsFormulationBase (const std::string &name, RobotWrapper &robot, bool verbose=false)
 
virtual ~InverseDynamicsFormulationBase ()=default
 
virtual Datadata ()=0
 
virtual unsigned int nVar () const =0
 
virtual unsigned int nEq () const =0
 
virtual unsigned int nIn () const =0
 
virtual bool addMotionTask (TaskMotion &task, double weight, unsigned int priorityLevel, double transition_duration=0.0)=0
 
virtual bool addForceTask (TaskContactForce &task, double weight, unsigned int priorityLevel, double transition_duration=0.0)=0
 
virtual bool addActuationTask (TaskActuation &task, double weight, unsigned int priorityLevel, double transition_duration=0.0)=0
 
virtual bool updateTaskWeight (const std::string &task_name, double weight)=0
 
virtual bool addRigidContact (ContactBase &contact, double force_regularization_weight, double motion_weight=1.0, unsigned int motion_priority_level=0)=0
 Add a rigid contact constraint to the model, introducing the associated reaction forces as problem variables. More...
 
virtual TSID_DEPRECATED bool addRigidContact (ContactBase &contact)
 
virtual bool updateRigidContactWeights (const std::string &contact_name, double force_regularization_weight, double motion_weight=-1.0)=0
 Update the weights associated to the specified contact. More...
 
virtual bool addMeasuredForce (MeasuredForceBase &measuredForce)=0
 
virtual bool removeTask (const std::string &taskName, double transition_duration=0.0)=0
 
virtual bool removeRigidContact (const std::string &contactName, double transition_duration=0.0)=0
 
virtual bool removeMeasuredForce (const std::string &measuredForceName)=0
 
virtual const HQPDatacomputeProblemData (double time, ConstRefVector q, ConstRefVector v)=0
 
virtual const VectorgetActuatorForces (const HQPOutput &sol)=0
 
virtual const VectorgetAccelerations (const HQPOutput &sol)=0
 
virtual const VectorgetContactForces (const HQPOutput &sol)=0
 
virtual bool getContactForces (const std::string &name, const HQPOutput &sol, RefVector f)=0
 

Public Attributes

EIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef pinocchio::Data Data
 

Protected Attributes

std::string m_name
 
RobotWrapper m_robot
 
bool m_verbose
 

Detailed Description

Wrapper for a robot based on pinocchio.

Member Typedef Documentation

◆ ConstRefVector

◆ ContactBase

◆ HQPData

◆ HQPOutput

◆ MeasuredForceBase

◆ RefVector

◆ RobotWrapper

◆ TaskActuation

◆ TaskBase

◆ TaskContactForce

◆ TaskMotion

◆ Vector

Constructor & Destructor Documentation

◆ InverseDynamicsFormulationBase()

tsid::InverseDynamicsFormulationBase::InverseDynamicsFormulationBase ( const std::string &  name,
RobotWrapper robot,
bool  verbose = false 
)

◆ ~InverseDynamicsFormulationBase()

virtual tsid::InverseDynamicsFormulationBase::~InverseDynamicsFormulationBase ( )
virtualdefault

Member Function Documentation

◆ addActuationTask()

virtual bool tsid::InverseDynamicsFormulationBase::addActuationTask ( TaskActuation task,
double  weight,
unsigned int  priorityLevel,
double  transition_duration = 0.0 
)
pure virtual

◆ addForceTask()

virtual bool tsid::InverseDynamicsFormulationBase::addForceTask ( TaskContactForce task,
double  weight,
unsigned int  priorityLevel,
double  transition_duration = 0.0 
)
pure virtual

◆ addMeasuredForce()

virtual bool tsid::InverseDynamicsFormulationBase::addMeasuredForce ( MeasuredForceBase measuredForce)
pure virtual

◆ addMotionTask()

virtual bool tsid::InverseDynamicsFormulationBase::addMotionTask ( TaskMotion task,
double  weight,
unsigned int  priorityLevel,
double  transition_duration = 0.0 
)
pure virtual

◆ addRigidContact() [1/2]

bool tsid::InverseDynamicsFormulationBase::addRigidContact ( ContactBase contact)
virtual

◆ addRigidContact() [2/2]

virtual bool tsid::InverseDynamicsFormulationBase::addRigidContact ( ContactBase contact,
double  force_regularization_weight,
double  motion_weight = 1.0,
unsigned int  motion_priority_level = 0 
)
pure virtual

Add a rigid contact constraint to the model, introducing the associated reaction forces as problem variables.

Parameters
contactThe contact constraint to add
force_regularization_weightThe weight of the force regularization task
motion_weightThe weight of the motion task (e.g., zero acceleration of contact points)
motion_priority_levelPriority level of the motion task
Returns
True if everything went fine, false otherwise

Implemented in tsid::InverseDynamicsFormulationAccForce.

◆ computeProblemData()

virtual const HQPData& tsid::InverseDynamicsFormulationBase::computeProblemData ( double  time,
ConstRefVector  q,
ConstRefVector  v 
)
pure virtual

◆ data()

virtual Data& tsid::InverseDynamicsFormulationBase::data ( )
pure virtual

◆ getAccelerations()

virtual const Vector& tsid::InverseDynamicsFormulationBase::getAccelerations ( const HQPOutput sol)
pure virtual

◆ getActuatorForces()

virtual const Vector& tsid::InverseDynamicsFormulationBase::getActuatorForces ( const HQPOutput sol)
pure virtual

◆ getContactForces() [1/2]

virtual const Vector& tsid::InverseDynamicsFormulationBase::getContactForces ( const HQPOutput sol)
pure virtual

◆ getContactForces() [2/2]

virtual bool tsid::InverseDynamicsFormulationBase::getContactForces ( const std::string &  name,
const HQPOutput sol,
RefVector  f 
)
pure virtual

◆ nEq()

virtual unsigned int tsid::InverseDynamicsFormulationBase::nEq ( ) const
pure virtual

◆ nIn()

virtual unsigned int tsid::InverseDynamicsFormulationBase::nIn ( ) const
pure virtual

◆ nVar()

virtual unsigned int tsid::InverseDynamicsFormulationBase::nVar ( ) const
pure virtual

◆ removeMeasuredForce()

virtual bool tsid::InverseDynamicsFormulationBase::removeMeasuredForce ( const std::string &  measuredForceName)
pure virtual

◆ removeRigidContact()

virtual bool tsid::InverseDynamicsFormulationBase::removeRigidContact ( const std::string &  contactName,
double  transition_duration = 0.0 
)
pure virtual

◆ removeTask()

virtual bool tsid::InverseDynamicsFormulationBase::removeTask ( const std::string &  taskName,
double  transition_duration = 0.0 
)
pure virtual

◆ updateRigidContactWeights()

virtual bool tsid::InverseDynamicsFormulationBase::updateRigidContactWeights ( const std::string &  contact_name,
double  force_regularization_weight,
double  motion_weight = -1.0 
)
pure virtual

Update the weights associated to the specified contact.

Parameters
contact_nameName of the contact to update
force_regularization_weightWeight of the force regularization task, if negative it is not updated
motion_weightWeight of the motion task, if negative it is not update
Returns
True if everything went fine, false otherwise

Implemented in tsid::InverseDynamicsFormulationAccForce.

◆ updateTaskWeight()

virtual bool tsid::InverseDynamicsFormulationBase::updateTaskWeight ( const std::string &  task_name,
double  weight 
)
pure virtual

Member Data Documentation

◆ Data

EIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef pinocchio::Data tsid::InverseDynamicsFormulationBase::Data

◆ m_name

std::string tsid::InverseDynamicsFormulationBase::m_name
protected

◆ m_robot

RobotWrapper tsid::InverseDynamicsFormulationBase::m_robot
protected

◆ m_verbose

bool tsid::InverseDynamicsFormulationBase::m_verbose
protected

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