Choreonoid  1.5
ConstraintForceSolver.h
Go to the documentation of this file.
1 
5 #ifndef CNOID_BODY_CONSTRAINT_FORCE_SOLVER_H
6 #define CNOID_BODY_CONSTRAINT_FORCE_SOLVER_H
7 
8 #include <cnoid/CollisionDetector>
9 #include <cnoid/CollisionSeq>
10 #include "exportdecl.h"
11 
12 namespace cnoid {
13 
14 class Link;
15 class ConstraintForceSolverImpl;
16 class WorldBase;
17 class ContactAttribute;
18 
20 {
21  ConstraintForceSolverImpl* impl;
22 
23 public:
26 
27  void setCollisionDetector(CollisionDetectorPtr detector);
28  CollisionDetectorPtr collisionDetector();
29 
30  void setFriction(double staticFriction, double slipFliction);
31  double staticFriction() const;
32  double slipFriction() const;
33 
34  void setContactCullingDistance(double thresh);
35  double contactCullingDistance() const;
36 
37  void setContactCullingDepth(double depth);
38  double contactCullingDepth();
39 
40  void setCoefficientOfRestitution(double epsilon);
41  double coefficientOfRestitution() const;
42 
43  void setGaussSeidelErrorCriterion(double e);
44  double gaussSeidelErrorCriterion();
45 
46  void setGaussSeidelMaxNumIterations(int n);
47  int gaussSeidelMaxNumIterations();
48 
49  void setContactDepthCorrection(double depth, double velocityRatio);
50  double contactCorrectionDepth();
51  double contactCorrectionVelocityRatio();
52 
53  void set2Dmode(bool on);
54  void enableConstraintForceOutput(bool on);
55 
56  void initialize(void);
57  void solve();
58  void clearExternalForces();
59 
60  CollisionLinkPairListPtr getCollisions();
61 
62 #ifdef ENABLE_SIMULATION_PROFILING
63  double getCollisionTime();
64 #endif
65 
66  // experimental functions
67  void setFriction(Link* link1, Link* link2, double staticFriction, double slipFriction);
68  typedef boost::function<bool(Link* link1, Link* link2, const CollisionArray& collisions, const ContactAttribute& attribute)>
70  int registerCollisionHandler(const std::string& name, CollisionHandler handler);
71  void unregisterCollisionHandler(int handlerId);
72  int collisionHandlerId(const std::string& name) const;
73  void setCollisionHandler(Link* link1, Link* link2, int handlerId);
74 };
75 
76 };
77 
78 #endif
boost::shared_ptr< CollisionDetector > CollisionDetectorPtr
Definition: CollisionDetector.h:23
boost::function< bool(Link *link1, Link *link2, const CollisionArray &collisions, const ContactAttribute &attribute)> CollisionHandler
Definition: ConstraintForceSolver.h:69
Definition: ConstraintForceSolver.h:19
Defines the minimum processing for performing pasing file for STL.
Definition: AbstractSceneLoader.h:9
Definition: DyWorld.h:26
boost::shared_ptr< CollisionLinkPairList > CollisionLinkPairListPtr
Definition: CollisionSeq.h:22
#define CNOID_EXPORT
Definition: Util/exportdecl.h:37