| DART 6.10.1
    | 
ConstraintSolver manages constraints and computes constraint impulses. More...
#include <ConstraintSolver.hpp>
 
  
| Public Member Functions | |
| ConstraintSolver (double timeStep) | |
| Constructor. | |
| ConstraintSolver () | |
| Default constructor. | |
| ConstraintSolver (const ConstraintSolver &other)=delete | |
| Copy constructor. | |
| virtual | ~ConstraintSolver ()=default | 
| Destructor. | |
| void | addSkeleton (const dynamics::SkeletonPtr &skeleton) | 
| Add single skeleton. | |
| void | addSkeletons (const std::vector< dynamics::SkeletonPtr > &skeletons) | 
| Add mutiple skeletons. | |
| const std::vector< dynamics::SkeletonPtr > & | getSkeletons () const | 
| Returns all the skeletons added to this ConstraintSolver. | |
| void | removeSkeleton (const dynamics::SkeletonPtr &skeleton) | 
| Remove single skeleton. | |
| void | removeSkeletons (const std::vector< dynamics::SkeletonPtr > &skeletons) | 
| Remove multiple skeletons. | |
| void | removeAllSkeletons () | 
| Remove all skeletons in this constraint solver. | |
| void | addConstraint (const ConstraintBasePtr &constraint) | 
| Add a constraint. | |
| void | removeConstraint (const ConstraintBasePtr &constraint) | 
| Remove a constraint. | |
| void | removeAllConstraints () | 
| Remove all constraints. | |
| std::size_t | getNumConstraints () const | 
| Returns the number of constraints that was manually added to this ConstraintSolver. | |
| constraint::ConstraintBasePtr | getConstraint (std::size_t index) | 
| Returns a constraint by index. | |
| constraint::ConstConstraintBasePtr | getConstraint (std::size_t index) const | 
| Returns a constraint by index. | |
| std::vector< constraint::ConstraintBasePtr > | getConstraints () | 
| Returns all the constraints added to this ConstraintSolver. | |
| std::vector< constraint::ConstConstraintBasePtr > | getConstraints () const | 
| Returns all the constraints added to this ConstraintSolver. | |
| void | clearLastCollisionResult () | 
| Clears the last collision result. | |
| virtual void | setTimeStep (double _timeStep) | 
| Set time step. | |
| double | getTimeStep () const | 
| Get time step. | |
| void | setCollisionDetector (collision::CollisionDetector *collisionDetector) | 
| Set collision detector. | |
| void | setCollisionDetector (const std::shared_ptr< collision::CollisionDetector > &collisionDetector) | 
| Set collision detector. | |
| collision::CollisionDetectorPtr | getCollisionDetector () | 
| Get collision detector. | |
| collision::ConstCollisionDetectorPtr | getCollisionDetector () const | 
| Get (const) collision detector. | |
| collision::CollisionGroupPtr | getCollisionGroup () | 
| Return collision group of collision objects that are added to this ConstraintSolver. | |
| collision::ConstCollisionGroupPtr | getCollisionGroup () const | 
| Return (const) collision group of collision objects that are added to this ConstraintSolver. | |
| collision::CollisionOption & | getCollisionOption () | 
| Returns collision option that is used for collision checkings in this ConstraintSolver to generate contact constraints. | |
| const collision::CollisionOption & | getCollisionOption () const | 
| Returns collision option that is used for collision checkings in this ConstraintSolver to generate contact constraints. | |
| collision::CollisionResult & | getLastCollisionResult () | 
| Return the last collision checking result. | |
| const collision::CollisionResult & | getLastCollisionResult () const | 
| Return the last collision checking result. | |
| void | setLCPSolver (std::unique_ptr< LCPSolver > lcpSolver) | 
| Set LCP solver. | |
| LCPSolver * | getLCPSolver () const | 
| Get LCP solver. | |
| void | solve () | 
| Solve constraint impulses and apply them to the skeletons. | |
| virtual void | setFromOtherConstraintSolver (const ConstraintSolver &other) | 
| Sets this constraint solver using other constraint solver. | |
| Protected Types | |
| using | CollisionDetector = collision::CollisionDetector | 
| Protected Member Functions | |
| virtual void | solveConstrainedGroup (ConstrainedGroup &group)=0 | 
| bool | containSkeleton (const dynamics::ConstSkeletonPtr &skeleton) const | 
| Check if the skeleton is contained in this solver. | |
| bool | checkAndAddSkeleton (const dynamics::SkeletonPtr &skeleton) | 
| Add skeleton if the constraint is not contained in this solver. | |
| bool | containConstraint (const ConstConstraintBasePtr &constraint) const | 
| Check if the constraint is contained in this solver. | |
| bool | checkAndAddConstraint (const ConstraintBasePtr &constraint) | 
| Add constraint if the constraint is not contained in this solver. | |
| void | updateConstraints () | 
| Update constraints. | |
| void | buildConstrainedGroups () | 
| Build constrained groupsContact. | |
| void | solveConstrainedGroups () | 
| Solve constrained groups. | |
| bool | isSoftContact (const collision::Contact &contact) const | 
| Return true if at least one of colliding body is soft body. | |
| Protected Attributes | |
| collision::CollisionDetectorPtr | mCollisionDetector | 
| Collision detector. | |
| collision::CollisionGroupPtr | mCollisionGroup | 
| Collision group. | |
| collision::CollisionOption | mCollisionOption | 
| Collision detection option. | |
| collision::CollisionResult | mCollisionResult | 
| Last collision checking result. | |
| double | mTimeStep | 
| Time step. | |
| std::vector< dynamics::SkeletonPtr > | mSkeletons | 
| Skeleton list. | |
| std::vector< ContactConstraintPtr > | mContactConstraints | 
| Contact constraints those are automatically created. | |
| std::vector< SoftContactConstraintPtr > | mSoftContactConstraints | 
| Soft contact constraints those are automatically created. | |
| std::vector< JointLimitConstraintPtr > | mJointLimitConstraints | 
| Joint limit constraints those are automatically created. | |
| std::vector< ServoMotorConstraintPtr > | mServoMotorConstraints | 
| Servo motor constraints those are automatically created. | |
| std::vector< MimicMotorConstraintPtr > | mMimicMotorConstraints | 
| Mimic motor constraints those are automatically created. | |
| std::vector< JointCoulombFrictionConstraintPtr > | mJointCoulombFrictionConstraints | 
| Joint Coulomb friction constraints those are automatically created. | |
| std::vector< ConstraintBasePtr > | mManualConstraints | 
| Constraints that manually added. | |
| std::vector< ConstraintBasePtr > | mActiveConstraints | 
| Active constraints. | |
| std::vector< ConstrainedGroup > | mConstrainedGroups | 
| Constraint group list. | |
ConstraintSolver manages constraints and computes constraint impulses.
| 
 | protected | 
| 
 | explicit | 
Constructor.
| dart::constraint::ConstraintSolver::ConstraintSolver | ( | ) | 
Default constructor.
| 
 | delete | 
Copy constructor.
| 
 | virtualdefault | 
Destructor.
| void dart::constraint::ConstraintSolver::addConstraint | ( | const ConstraintBasePtr & | constraint | ) | 
Add a constraint.
| void dart::constraint::ConstraintSolver::addSkeleton | ( | const dynamics::SkeletonPtr & | skeleton | ) | 
Add single skeleton.
| void dart::constraint::ConstraintSolver::addSkeletons | ( | const std::vector< dynamics::SkeletonPtr > & | skeletons | ) | 
Add mutiple skeletons.
| 
 | protected | 
Build constrained groupsContact.
| 
 | protected | 
Add constraint if the constraint is not contained in this solver.
| 
 | protected | 
Add skeleton if the constraint is not contained in this solver.
| void dart::constraint::ConstraintSolver::clearLastCollisionResult | ( | ) | 
Clears the last collision result.
| 
 | protected | 
Check if the constraint is contained in this solver.
| 
 | protected | 
Check if the skeleton is contained in this solver.
| collision::CollisionDetectorPtr dart::constraint::ConstraintSolver::getCollisionDetector | ( | ) | 
Get collision detector.
| collision::ConstCollisionDetectorPtr dart::constraint::ConstraintSolver::getCollisionDetector | ( | ) | const | 
Get (const) collision detector.
| collision::CollisionGroupPtr dart::constraint::ConstraintSolver::getCollisionGroup | ( | ) | 
Return collision group of collision objects that are added to this ConstraintSolver.
| collision::ConstCollisionGroupPtr dart::constraint::ConstraintSolver::getCollisionGroup | ( | ) | const | 
Return (const) collision group of collision objects that are added to this ConstraintSolver.
| collision::CollisionOption & dart::constraint::ConstraintSolver::getCollisionOption | ( | ) | 
Returns collision option that is used for collision checkings in this ConstraintSolver to generate contact constraints.
| const collision::CollisionOption & dart::constraint::ConstraintSolver::getCollisionOption | ( | ) | const | 
Returns collision option that is used for collision checkings in this ConstraintSolver to generate contact constraints.
| ConstraintBasePtr dart::constraint::ConstraintSolver::getConstraint | ( | std::size_t | index | ) | 
Returns a constraint by index.
| ConstConstraintBasePtr dart::constraint::ConstraintSolver::getConstraint | ( | std::size_t | index | ) | const | 
Returns a constraint by index.
| std::vector< ConstraintBasePtr > dart::constraint::ConstraintSolver::getConstraints | ( | ) | 
Returns all the constraints added to this ConstraintSolver.
| std::vector< ConstConstraintBasePtr > dart::constraint::ConstraintSolver::getConstraints | ( | ) | const | 
Returns all the constraints added to this ConstraintSolver.
| collision::CollisionResult & dart::constraint::ConstraintSolver::getLastCollisionResult | ( | ) | 
Return the last collision checking result.
| const collision::CollisionResult & dart::constraint::ConstraintSolver::getLastCollisionResult | ( | ) | const | 
Return the last collision checking result.
| LCPSolver * dart::constraint::ConstraintSolver::getLCPSolver | ( | ) | const | 
Get LCP solver.
| std::size_t dart::constraint::ConstraintSolver::getNumConstraints | ( | ) | const | 
Returns the number of constraints that was manually added to this ConstraintSolver.
| const std::vector< SkeletonPtr > & dart::constraint::ConstraintSolver::getSkeletons | ( | ) | const | 
Returns all the skeletons added to this ConstraintSolver.
| double dart::constraint::ConstraintSolver::getTimeStep | ( | ) | const | 
Get time step.
| 
 | protected | 
Return true if at least one of colliding body is soft body.
| void dart::constraint::ConstraintSolver::removeAllConstraints | ( | ) | 
Remove all constraints.
| void dart::constraint::ConstraintSolver::removeAllSkeletons | ( | ) | 
Remove all skeletons in this constraint solver.
| void dart::constraint::ConstraintSolver::removeConstraint | ( | const ConstraintBasePtr & | constraint | ) | 
Remove a constraint.
| void dart::constraint::ConstraintSolver::removeSkeleton | ( | const dynamics::SkeletonPtr & | skeleton | ) | 
Remove single skeleton.
| void dart::constraint::ConstraintSolver::removeSkeletons | ( | const std::vector< dynamics::SkeletonPtr > & | skeletons | ) | 
Remove multiple skeletons.
| void dart::constraint::ConstraintSolver::setCollisionDetector | ( | collision::CollisionDetector * | collisionDetector | ) | 
Set collision detector.
This function acquires ownership of the CollisionDetector passed as an argument. This method is deprecated in favor of the overload that accepts a std::shared_ptr.
| void dart::constraint::ConstraintSolver::setCollisionDetector | ( | const std::shared_ptr< collision::CollisionDetector > & | collisionDetector | ) | 
Set collision detector.
| 
 | virtual | 
Sets this constraint solver using other constraint solver.
All the properties and registered skeletons and constraints will be copied over.
| void dart::constraint::ConstraintSolver::setLCPSolver | ( | std::unique_ptr< LCPSolver > | lcpSolver | ) | 
Set LCP solver.
| 
 | virtual | 
Set time step.
| void dart::constraint::ConstraintSolver::solve | ( | ) | 
Solve constraint impulses and apply them to the skeletons.
| 
 | protectedpure virtual | 
Implemented in dart::constraint::BoxedLcpConstraintSolver.
| 
 | protected | 
Solve constrained groups.
| 
 | protected | 
Update constraints.
| 
 | protected | 
Active constraints.
| 
 | protected | 
Collision detector.
| 
 | protected | 
Collision group.
| 
 | protected | 
Collision detection option.
| 
 | protected | 
Last collision checking result.
| 
 | protected | 
Constraint group list.
| 
 | protected | 
Contact constraints those are automatically created.
| 
 | protected | 
Joint Coulomb friction constraints those are automatically created.
| 
 | protected | 
Joint limit constraints those are automatically created.
| 
 | protected | 
Constraints that manually added.
| 
 | protected | 
Mimic motor constraints those are automatically created.
| 
 | protected | 
Servo motor constraints those are automatically created.
| 
 | protected | 
Skeleton list.
| 
 | protected | 
Soft contact constraints those are automatically created.
| 
 | protected | 
Time step.