|
| 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) |
|
virtual | ~ConstraintFunction () override |
|
void | addToSolver (QPSolver &sol) |
|
void | addToSolver (const std::vector< rbd::MultiBody > &mbs, QPSolver &sol) |
|
void | removeFromSolver (QPSolver &sol) |
|
virtual | ~Constraint () |
|
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 \)