tsid  1.8.0
Efficient Task Space Inverse Dynamics for Multi-body Systems based on Pinocchio
tsid::tasks::TaskJointPosVelAccBounds Class Reference

#include <tsid/tasks/task-joint-posVelAcc-bounds.hpp>

Inheritance diagram for tsid::tasks::TaskJointPosVelAccBounds:
Collaboration diagram for tsid::tasks::TaskJointPosVelAccBounds:

Public Types

typedef math::ConstraintBound ConstraintBound
 
typedef math::ConstraintInequality ConstraintInequality
 
typedef math::VectorXi VectorXi
 
typedef pinocchio::Data Data
 
- Public Types inherited from tsid::tasks::TaskMotion
typedef trajectories::TrajectorySample TrajectorySample
 
- Public Types inherited from tsid::tasks::TaskBase
typedef math::ConstRefVector ConstRefVector
 
typedef pinocchio::Data Data
 
typedef robots::RobotWrapper RobotWrapper
 

Public Member Functions

 TaskJointPosVelAccBounds (const std::string &name, RobotWrapper &robot, double dt, bool verbose=true)
 
int dim () const override
 Return the dimension of the task. \info should be overloaded in the child class. More...
 
const ConstraintBasecompute (double t, ConstRefVector q, ConstRefVector v, Data &data) override
 
const ConstraintBasegetConstraint () const override
 
void setTimeStep (double dt)
 
void setPositionBounds (ConstRefVector lower, ConstRefVector upper)
 
void setVelocityBounds (ConstRefVector upper)
 
void setAccelerationBounds (ConstRefVector upper)
 
const VectorgetAccelerationBounds () const
 
const VectorgetVelocityBounds () const
 
const VectorgetPositionLowerBounds () const
 
const VectorgetPositionUpperBounds () const
 
void setVerbose (bool verbose)
 
void setImposeBounds (bool impose_position_bounds, bool impose_velocity_bounds, bool impose_viability_bounds, bool impose_acceleration_bounds)
 
void isStateViable (ConstRefVector q, ConstRefVector dq, bool verbose=true)
 
void computeAccLimitsFromPosLimits (ConstRefVector q, ConstRefVector dq, bool verbose=true)
 
void computeAccLimitsFromViability (ConstRefVector q, ConstRefVector dq, bool verbose=true)
 
void computeAccLimits (ConstRefVector q, ConstRefVector dq, bool verbose=true)
 
TSID_DEPRECATED const Vectormask () const
 
TSID_DEPRECATED void mask (const Vector &mask)
 
virtual void setMask (math::ConstRefVector mask) override
 
- Public Member Functions inherited from tsid::tasks::TaskMotion
 TaskMotion (const std::string &name, RobotWrapper &robot)
 
virtual const TrajectorySamplegetReference () const
 
virtual const VectorgetDesiredAcceleration () const
 
virtual Vector getAcceleration (ConstRefVector dv) const
 
virtual const Vectorposition_error () const
 
virtual const Vectorvelocity_error () const
 
virtual const Vectorposition () const
 
virtual const Vectorvelocity () const
 
virtual const Vectorposition_ref () const
 
virtual const Vectorvelocity_ref () const
 
virtual const VectorgetMask () const
 
virtual bool hasMask ()
 
- Public Member Functions inherited from tsid::tasks::TaskBase
 TaskBase (const std::string &name, RobotWrapper &robot)
 
virtual ~TaskBase ()=default
 
const std::string & name () const
 
void name (const std::string &name)
 

Public Attributes

EIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef math::Vector Vector
 
- Public Attributes inherited from tsid::tasks::TaskMotion
EIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef math::Vector Vector
 
- Public Attributes inherited from tsid::tasks::TaskBase
EIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef math::ConstraintBase ConstraintBase
 

Protected Attributes

ConstraintInequality m_constraint
 
double m_dt
 
bool m_verbose
 
int m_nv
 
int m_na
 
Vector m_mask
 
VectorXi m_activeAxes
 
Vector m_qa
 
Vector m_dqa
 
double m_eps
 
Vector m_qMin
 
Vector m_qMax
 
Vector m_dqMax
 
Vector m_ddqMax
 
Vector m_dqMinViab
 
Vector m_dqMaxViab
 
Vector m_ddqLBPos
 
Vector m_ddqUBPos
 
Vector m_ddqLBVia
 
Vector m_ddqUBVia
 
Vector m_ddqLBVel
 
Vector m_ddqUBVel
 
Vector m_ddqLBAcc
 
Vector m_ddqUBAcc
 
Vector m_ddqLB
 
Vector m_ddqUB
 
bool m_impose_position_bounds
 
bool m_impose_velocity_bounds
 
bool m_impose_viability_bounds
 
bool m_impose_acceleration_bounds
 
Vector m_viabViol
 
double m_two_dt_sq
 
Vector m_ddqMax_q3
 
Vector m_ddqMin_q3
 
Vector m_ddqMax_q2
 
Vector m_ddqMin_q2
 
Vector m_minus_dq_over_dt
 
double m_dt_square
 
Vector m_dt_dq
 
Vector m_dt_two_dq
 
Vector m_two_ddqMax
 
Vector m_dt_ddqMax_dt
 
Vector m_dq_square
 
Vector m_q_plus_dt_dq
 
double m_two_a
 
Vector m_b_1
 
Vector m_b_2
 
Vector m_ddq_1
 
Vector m_ddq_2
 
Vector m_c_1
 
Vector m_delta_1
 
Vector m_c_2
 
Vector m_delta_2
 
Vector m_ub
 
Vector m_lb
 
- Protected Attributes inherited from tsid::tasks::TaskMotion
Vector m_mask
 
Vector m_dummy
 
trajectories::TrajectorySample TrajectorySample_dummy
 
- Protected Attributes inherited from tsid::tasks::TaskBase
std::string m_name
 
RobotWrapperm_robot
 Reference on the robot model. More...
 

Member Typedef Documentation

◆ ConstraintBound

◆ ConstraintInequality

◆ Data

◆ VectorXi

Constructor & Destructor Documentation

◆ TaskJointPosVelAccBounds()

tsid::tasks::TaskJointPosVelAccBounds::TaskJointPosVelAccBounds ( const std::string &  name,
RobotWrapper robot,
double  dt,
bool  verbose = true 
)

Member Function Documentation

◆ compute()

const ConstraintBase & tsid::tasks::TaskJointPosVelAccBounds::compute ( double  t,
ConstRefVector  q,
ConstRefVector  v,
Data data 
)
overridevirtual

Implements tsid::tasks::TaskBase.

◆ computeAccLimits()

void tsid::tasks::TaskJointPosVelAccBounds::computeAccLimits ( ConstRefVector  q,
ConstRefVector  dq,
bool  verbose = true 
)

Given the current position and velocity, the bounds of position, velocity and acceleration and the control time step, compute the bounds of the acceleration such that all the bounds are respected at the next time step and can be respected in the future. ddqMax is the absolute maximum acceleration.

◆ computeAccLimitsFromPosLimits()

void tsid::tasks::TaskJointPosVelAccBounds::computeAccLimitsFromPosLimits ( ConstRefVector  q,
ConstRefVector  dq,
bool  verbose = true 
)

Compute acceleration limits imposed by position bounds. Fills in m_ddqLBPos and m_ddqUBPos

◆ computeAccLimitsFromViability()

void tsid::tasks::TaskJointPosVelAccBounds::computeAccLimitsFromViability ( ConstRefVector  q,
ConstRefVector  dq,
bool  verbose = true 
)

Compute acceleration limits imposed by viability. ddqMax is the maximum acceleration that will be necessary to stop the joint before hitting the position limits.

-sqrt( 2*ddqMax*(q-qMin) ) < dq[t+1] < sqrt( 2*ddqMax*(qMax-q) ) ddqMin[2] = (-sqrt(max(0.0, 2*MAX_ACC*(q[i]+DT*dq[i]-qMin))) - dq[i])/DT; ddqMax[2] = (sqrt(max(0.0, 2*MAX_ACC*(qMax-q[i]-DT*dq[i]))) - dq[i])/DT;

Fills in m_ddqLBVia and m_ddqUBVia

◆ dim()

int tsid::tasks::TaskJointPosVelAccBounds::dim ( ) const
overridevirtual

Return the dimension of the task. \info should be overloaded in the child class.

Implements tsid::tasks::TaskBase.

◆ getAccelerationBounds()

const Vector & tsid::tasks::TaskJointPosVelAccBounds::getAccelerationBounds ( ) const

◆ getConstraint()

const ConstraintBase & tsid::tasks::TaskJointPosVelAccBounds::getConstraint ( ) const
overridevirtual

Implements tsid::tasks::TaskBase.

◆ getPositionLowerBounds()

const Vector & tsid::tasks::TaskJointPosVelAccBounds::getPositionLowerBounds ( ) const

◆ getPositionUpperBounds()

const Vector & tsid::tasks::TaskJointPosVelAccBounds::getPositionUpperBounds ( ) const

◆ getVelocityBounds()

const Vector & tsid::tasks::TaskJointPosVelAccBounds::getVelocityBounds ( ) const

◆ isStateViable()

void tsid::tasks::TaskJointPosVelAccBounds::isStateViable ( ConstRefVector  q,
ConstRefVector  dq,
bool  verbose = true 
)

Check if the state is viable, otherwise it returns a measure of the violation of the violated inequality. Fills in m_viabViol , if the state of joint i is viable m_viabViol[i] = 0

◆ mask() [1/2]

const Vector & tsid::tasks::TaskJointPosVelAccBounds::mask ( ) const

◆ mask() [2/2]

void tsid::tasks::TaskJointPosVelAccBounds::mask ( const Vector mask)

◆ setAccelerationBounds()

void tsid::tasks::TaskJointPosVelAccBounds::setAccelerationBounds ( ConstRefVector  upper)

◆ setImposeBounds()

void tsid::tasks::TaskJointPosVelAccBounds::setImposeBounds ( bool  impose_position_bounds,
bool  impose_velocity_bounds,
bool  impose_viability_bounds,
bool  impose_acceleration_bounds 
)

◆ setMask()

void tsid::tasks::TaskJointPosVelAccBounds::setMask ( math::ConstRefVector  mask)
overridevirtual

Reimplemented from tsid::tasks::TaskMotion.

◆ setPositionBounds()

void tsid::tasks::TaskJointPosVelAccBounds::setPositionBounds ( ConstRefVector  lower,
ConstRefVector  upper 
)

◆ setTimeStep()

void tsid::tasks::TaskJointPosVelAccBounds::setTimeStep ( double  dt)

◆ setVelocityBounds()

void tsid::tasks::TaskJointPosVelAccBounds::setVelocityBounds ( ConstRefVector  upper)

◆ setVerbose()

void tsid::tasks::TaskJointPosVelAccBounds::setVerbose ( bool  verbose)

Member Data Documentation

◆ m_activeAxes

VectorXi tsid::tasks::TaskJointPosVelAccBounds::m_activeAxes
protected

◆ m_b_1

Vector tsid::tasks::TaskJointPosVelAccBounds::m_b_1
protected

◆ m_b_2

Vector tsid::tasks::TaskJointPosVelAccBounds::m_b_2
protected

◆ m_c_1

Vector tsid::tasks::TaskJointPosVelAccBounds::m_c_1
protected

◆ m_c_2

Vector tsid::tasks::TaskJointPosVelAccBounds::m_c_2
protected

◆ m_constraint

ConstraintInequality tsid::tasks::TaskJointPosVelAccBounds::m_constraint
protected

◆ m_ddq_1

Vector tsid::tasks::TaskJointPosVelAccBounds::m_ddq_1
protected

◆ m_ddq_2

Vector tsid::tasks::TaskJointPosVelAccBounds::m_ddq_2
protected

◆ m_ddqLB

Vector tsid::tasks::TaskJointPosVelAccBounds::m_ddqLB
protected

◆ m_ddqLBAcc

Vector tsid::tasks::TaskJointPosVelAccBounds::m_ddqLBAcc
protected

◆ m_ddqLBPos

Vector tsid::tasks::TaskJointPosVelAccBounds::m_ddqLBPos
protected

◆ m_ddqLBVel

Vector tsid::tasks::TaskJointPosVelAccBounds::m_ddqLBVel
protected

◆ m_ddqLBVia

Vector tsid::tasks::TaskJointPosVelAccBounds::m_ddqLBVia
protected

◆ m_ddqMax

Vector tsid::tasks::TaskJointPosVelAccBounds::m_ddqMax
protected

◆ m_ddqMax_q2

Vector tsid::tasks::TaskJointPosVelAccBounds::m_ddqMax_q2
protected

◆ m_ddqMax_q3

Vector tsid::tasks::TaskJointPosVelAccBounds::m_ddqMax_q3
protected

◆ m_ddqMin_q2

Vector tsid::tasks::TaskJointPosVelAccBounds::m_ddqMin_q2
protected

◆ m_ddqMin_q3

Vector tsid::tasks::TaskJointPosVelAccBounds::m_ddqMin_q3
protected

◆ m_ddqUB

Vector tsid::tasks::TaskJointPosVelAccBounds::m_ddqUB
protected

◆ m_ddqUBAcc

Vector tsid::tasks::TaskJointPosVelAccBounds::m_ddqUBAcc
protected

◆ m_ddqUBPos

Vector tsid::tasks::TaskJointPosVelAccBounds::m_ddqUBPos
protected

◆ m_ddqUBVel

Vector tsid::tasks::TaskJointPosVelAccBounds::m_ddqUBVel
protected

◆ m_ddqUBVia

Vector tsid::tasks::TaskJointPosVelAccBounds::m_ddqUBVia
protected

◆ m_delta_1

Vector tsid::tasks::TaskJointPosVelAccBounds::m_delta_1
protected

◆ m_delta_2

Vector tsid::tasks::TaskJointPosVelAccBounds::m_delta_2
protected

◆ m_dq_square

Vector tsid::tasks::TaskJointPosVelAccBounds::m_dq_square
protected

◆ m_dqa

Vector tsid::tasks::TaskJointPosVelAccBounds::m_dqa
protected

◆ m_dqMax

Vector tsid::tasks::TaskJointPosVelAccBounds::m_dqMax
protected

◆ m_dqMaxViab

Vector tsid::tasks::TaskJointPosVelAccBounds::m_dqMaxViab
protected

◆ m_dqMinViab

Vector tsid::tasks::TaskJointPosVelAccBounds::m_dqMinViab
protected

◆ m_dt

double tsid::tasks::TaskJointPosVelAccBounds::m_dt
protected

◆ m_dt_ddqMax_dt

Vector tsid::tasks::TaskJointPosVelAccBounds::m_dt_ddqMax_dt
protected

◆ m_dt_dq

Vector tsid::tasks::TaskJointPosVelAccBounds::m_dt_dq
protected

◆ m_dt_square

double tsid::tasks::TaskJointPosVelAccBounds::m_dt_square
protected

◆ m_dt_two_dq

Vector tsid::tasks::TaskJointPosVelAccBounds::m_dt_two_dq
protected

◆ m_eps

double tsid::tasks::TaskJointPosVelAccBounds::m_eps
protected

◆ m_impose_acceleration_bounds

bool tsid::tasks::TaskJointPosVelAccBounds::m_impose_acceleration_bounds
protected

◆ m_impose_position_bounds

bool tsid::tasks::TaskJointPosVelAccBounds::m_impose_position_bounds
protected

◆ m_impose_velocity_bounds

bool tsid::tasks::TaskJointPosVelAccBounds::m_impose_velocity_bounds
protected

◆ m_impose_viability_bounds

bool tsid::tasks::TaskJointPosVelAccBounds::m_impose_viability_bounds
protected

◆ m_lb

Vector tsid::tasks::TaskJointPosVelAccBounds::m_lb
protected

◆ m_mask

Vector tsid::tasks::TaskJointPosVelAccBounds::m_mask
protected

◆ m_minus_dq_over_dt

Vector tsid::tasks::TaskJointPosVelAccBounds::m_minus_dq_over_dt
protected

◆ m_na

int tsid::tasks::TaskJointPosVelAccBounds::m_na
protected

◆ m_nv

int tsid::tasks::TaskJointPosVelAccBounds::m_nv
protected

◆ m_q_plus_dt_dq

Vector tsid::tasks::TaskJointPosVelAccBounds::m_q_plus_dt_dq
protected

◆ m_qa

Vector tsid::tasks::TaskJointPosVelAccBounds::m_qa
protected

◆ m_qMax

Vector tsid::tasks::TaskJointPosVelAccBounds::m_qMax
protected

◆ m_qMin

Vector tsid::tasks::TaskJointPosVelAccBounds::m_qMin
protected

◆ m_two_a

double tsid::tasks::TaskJointPosVelAccBounds::m_two_a
protected

◆ m_two_ddqMax

Vector tsid::tasks::TaskJointPosVelAccBounds::m_two_ddqMax
protected

◆ m_two_dt_sq

double tsid::tasks::TaskJointPosVelAccBounds::m_two_dt_sq
protected

◆ m_ub

Vector tsid::tasks::TaskJointPosVelAccBounds::m_ub
protected

◆ m_verbose

bool tsid::tasks::TaskJointPosVelAccBounds::m_verbose
protected

◆ m_viabViol

Vector tsid::tasks::TaskJointPosVelAccBounds::m_viabViol
protected

◆ Vector

EIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef math::Vector tsid::tasks::TaskJointPosVelAccBounds::Vector

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