tasks::qp::DamperJointLimitsConstr Class Reference

#include <Tasks/QPConstr.h>

Inheritance diagram for tasks::qp::DamperJointLimitsConstr:
Collaboration diagram for tasks::qp::DamperJointLimitsConstr:

Public Member Functions

 DamperJointLimitsConstr (const std::vector< rbd::MultiBody > &mbs, int robotIndex, const QBound &qBound, const AlphaBound &aBound, double interPercent, double securityPercent, double damperOffset, double step)
 
 DamperJointLimitsConstr (const std::vector< rbd::MultiBody > &mbs, int robotIndex, const QBound &qBound, const AlphaBound &aBound, const AlphaDBound &aDBound, double interPercent, double securityPercent, double damperOffset, double step)
 
 DamperJointLimitsConstr (const std::vector< rbd::MultiBody > &mbs, int robotIndex, const QBound &qBound, const AlphaBound &aBound, const AlphaDBound &aDBound, const AlphaDDBound &aDDBound, double interPercent, double securityPercent, double damperOffset, double step)
 
virtual void updateNrVars (const std::vector< rbd::MultiBody > &mbs, const SolverData &data) override
 
virtual void update (const std::vector< rbd::MultiBody > &mbs, const std::vector< rbd::MultiBodyConfig > &mbcs, const SolverData &data) override
 
virtual std::string nameBound () const override
 
virtual std::string descBound (const std::vector< rbd::MultiBody > &mbs, int line) override
 
virtual int beginVar () const override
 
virtual const Eigen::VectorXd & Lower () const override
 
virtual const Eigen::VectorXd & Upper () const override
 
double computeDamping (double alpha, double dist, double iDist, double sDist)
 compute damping that avoid speed jump More...
 
double computeDamper (double dist, double iDist, double sDist, double damping)
 
- Public Member Functions inherited from tasks::qp::ConstraintFunction< Bound >
virtual ~ConstraintFunction () override
 
void addToSolver (QPSolver &sol)
 
void addToSolver (const std::vector< rbd::MultiBody > &mbs, QPSolver &sol)
 
void removeFromSolver (QPSolver &sol)
 
- Public Member Functions inherited from tasks::qp::Constraint
virtual ~Constraint ()
 

Detailed Description

Avoid to reach articular position and velocity limits based on a velocity damper. For each articulation \( j \):

\[ \frac{\max(-\xi \frac{\underline{d} - d_s}{d_i - d_s}, \underline{\alpha}_{j}) - \alpha_{j}}{\Delta_{dt}} \leq \dot{\alpha}_{j} \leq \frac{\min(\xi \frac{\overline{d} - d_s}{d_i - d_s}, \overline{\alpha}_{j}) - \alpha_{j}}{\Delta_{dt}} \]

with \( \underline{d} \) and \( \overline{d} \) the distance to the lower and upper articular position bound, \( d_i \) the interactive distance, \( d_s \) the security distance and \( \xi \) the damper.

The damper \( \xi \) is calculated automatically each time the distance \( \underline{d} \) or \( \overline{d} \) go below the interactive distance \( d_i \) with the following formula:

\[ \xi = -\frac{d_i - d_s}{d - d_s}\alpha + \xi_{\text{off}} \]

This behavior give the better stability and we usually use the following values:

  • \( d_i = 0.1 (\overline{q} - \underline{q}) \)
  • \( d_s = 0.01 (\overline{q} - \underline{q}) \)
  • \( \xi_{\text{off}} = 0.5 \)

Constructor & Destructor Documentation

◆ DamperJointLimitsConstr() [1/3]

tasks::qp::DamperJointLimitsConstr::DamperJointLimitsConstr ( const std::vector< rbd::MultiBody > &  mbs,
int  robotIndex,
const QBound qBound,
const AlphaBound aBound,
double  interPercent,
double  securityPercent,
double  damperOffset,
double  step 
)
Parameters
mbsMulti-robot system.
robotIndexConstrained robot Index in mbs.
qBoundArticular position bounds.
aBoundArticular velocity bounds.
interPercent\( interPercent (\overline{q} - \underline{q}) \)
securityPercent\( securityPercent (\overline{q} - \underline{q}) \)
damperOffset\( \xi_{\text{off}} \)
stepTime step in second.

◆ DamperJointLimitsConstr() [2/3]

tasks::qp::DamperJointLimitsConstr::DamperJointLimitsConstr ( const std::vector< rbd::MultiBody > &  mbs,
int  robotIndex,
const QBound qBound,
const AlphaBound aBound,
const AlphaDBound aDBound,
double  interPercent,
double  securityPercent,
double  damperOffset,
double  step 
)
Parameters
mbsMulti-robot system.
robotIndexConstrained robot Index in mbs.
qBoundArticular position bounds.
aBoundArticular velocity bounds.
aDBoundArticular acceleration bounds.
interPercent\( interPercent (\overline{q} - \underline{q}) \)
securityPercent\( securityPercent (\overline{q} - \underline{q}) \)
damperOffset\( \xi_{\text{off}} \)
stepTime step in second.

◆ DamperJointLimitsConstr() [3/3]

tasks::qp::DamperJointLimitsConstr::DamperJointLimitsConstr ( const std::vector< rbd::MultiBody > &  mbs,
int  robotIndex,
const QBound qBound,
const AlphaBound aBound,
const AlphaDBound aDBound,
const AlphaDDBound aDDBound,
double  interPercent,
double  securityPercent,
double  damperOffset,
double  step 
)
Parameters
mbsMulti-robot system.
robotIndexConstrained robot Index in mbs.
qBoundArticular position bounds.
aBoundArticular velocity bounds.
aDBoundArticular acceleration bounds.
aDDBoundArticular jerk bounds.
interPercent\( interPercent (\overline{q} - \underline{q}) \)
securityPercent\( securityPercent (\overline{q} - \underline{q}) \)
damperOffset\( \xi_{\text{off}} \)
stepTime step in second.

Member Function Documentation

◆ beginVar()

virtual int tasks::qp::DamperJointLimitsConstr::beginVar ( ) const
overridevirtual

◆ computeDamper()

double tasks::qp::DamperJointLimitsConstr::computeDamper ( double  dist,
double  iDist,
double  sDist,
double  damping 
)

◆ computeDamping()

double tasks::qp::DamperJointLimitsConstr::computeDamping ( double  alpha,
double  dist,
double  iDist,
double  sDist 
)

compute damping that avoid speed jump

◆ descBound()

virtual std::string tasks::qp::DamperJointLimitsConstr::descBound ( const std::vector< rbd::MultiBody > &  mbs,
int  line 
)
overridevirtual

◆ Lower()

virtual const Eigen::VectorXd& tasks::qp::DamperJointLimitsConstr::Lower ( ) const
overridevirtual

◆ nameBound()

virtual std::string tasks::qp::DamperJointLimitsConstr::nameBound ( ) const
overridevirtual

◆ update()

virtual void tasks::qp::DamperJointLimitsConstr::update ( const std::vector< rbd::MultiBody > &  mbs,
const std::vector< rbd::MultiBodyConfig > &  mbcs,
const SolverData data 
)
overridevirtual

Implements tasks::qp::Constraint.

◆ updateNrVars()

virtual void tasks::qp::DamperJointLimitsConstr::updateNrVars ( const std::vector< rbd::MultiBody > &  mbs,
const SolverData data 
)
overridevirtual

Implements tasks::qp::Constraint.

◆ Upper()

virtual const Eigen::VectorXd& tasks::qp::DamperJointLimitsConstr::Upper ( ) const
overridevirtual

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