Choreonoid  1.5
AISTSimulatorItem.h
Go to the documentation of this file.
1 
6 #ifndef CNOID_BODYPLUGIN_AIST_SIMULATOR_ITEM_H
7 #define CNOID_BODYPLUGIN_AIST_SIMULATOR_ITEM_H
8 
9 #include "SimulatorItem.h"
10 #include <cnoid/Collision>
11 #include "exportdecl.h"
12 
13 namespace cnoid {
14 
15 class ContactAttribute;
16 class AISTSimulatorItemImpl;
17 
19 {
20 public:
21  static void initializeClass(ExtensionManager* ext);
22 
25  virtual ~AISTSimulatorItem();
26 
27  virtual bool startSimulation(bool doReset = true);
28 
29  enum DynamicsMode { FORWARD_DYNAMICS = 0, HG_DYNAMICS, KINEMATICS, N_DYNAMICS_MODES };
30  enum IntegrationMode { EULER_INTEGRATION = 0, RUNGE_KUTTA_INTEGRATION, N_INTEGRATION_MODES };
31 
32  void setDynamicsMode(int mode);
33  void setIntegrationMode(int mode);
34  void setGravity(const Vector3& gravity);
35  const Vector3& gravity() const;
36  void setFriction(double staticFriction, double slipFriction);
37  void setContactCullingDistance(double value);
38  void setContactCullingDepth(double value);
39  void setErrorCriterion(double value);
40  void setMaxNumIterations(int value);
41  void setContactCorrectionDepth(double value);
42  void setContactCorrectionVelocityRatio(double value);
43  void setEpsilon(double epsilon);
44  void set2Dmode(bool on);
45  void setKinematicWalkingEnabled(bool on);
46  void setConstraintForceOutputEnabled(bool on);
47 
48  virtual void setForcedPosition(BodyItem* bodyItem, const Position& T);
49  virtual bool isForcedPositionActiveFor(BodyItem* bodyItem) const;
50  virtual void clearForcedPositions();
51 
52  // experimental functions
53  void setFriction(Link* link1, Link* link2, double staticFriction, double slipFriction);
54 
55  typedef boost::function<bool(Link* link1, Link* link2, const CollisionArray& collisions, const ContactAttribute& attribute)>
57  int registerCollisionHandler(const std::string& name, CollisionHandler handler);
58  void unregisterCollisionHandler(int handlerId);
59  int collisionHandlerId(const std::string& name) const;
60  void setCollisionHandler(Link* link1, Link* link2, int handlerId);
61 
62 protected:
63  virtual SimulationBody* createSimulationBody(Body* orgBody);
64  virtual bool initializeSimulation(const std::vector<SimulationBody*>& simBodies);
65  virtual bool stepSimulation(const std::vector<SimulationBody*>& activeSimBodies);
66  virtual void finalizeSimulation();
67  virtual CollisionLinkPairListPtr getCollisions();
68 
69  virtual Item* doDuplicate() const;
70  virtual void doPutProperties(PutPropertyFunction& putProperty);
71  virtual bool store(Archive& archive);
72  virtual bool restore(const Archive& archive);
73 #ifdef ENABLE_SIMULATION_PROFILING
74  virtual void getProfilingNames(std::vector<std::string>& profilingNames);
75  virtual void getProfilingTimes(std::vector<double>& profilingTimes);
76 #endif
77 
78 private:
79  AISTSimulatorItemImpl* impl;
80  friend class AISTSimulatorItemImpl;
81 };
82 
84 }
85 
86 #endif
Definition: SimulatorItem.h:80
Definition: Body.h:28
Definition: Archive.h:21
Definition: ExtensionManager.h:26
Definition: SimulatorItem.h:32
Definition: PutPropertyFunction.h:35
IntegrationMode
Definition: AISTSimulatorItem.h:30
Definition: Referenced.h:128
ref_ptr< AISTSimulatorItem > AISTSimulatorItemPtr
Definition: AISTSimulatorItem.h:83
Eigen::Transform< double, 3, Eigen::AffineCompact > Position
Definition: EigenTypes.h:73
Definition: Item.h:38
Definition: AISTSimulatorItem.h:30
Defines the minimum processing for performing pasing file for STL.
Definition: AbstractSceneLoader.h:9
Definition: AISTSimulatorItem.h:18
boost::function< bool(Link *link1, Link *link2, const CollisionArray &collisions, const ContactAttribute &attribute)> CollisionHandler
Definition: AISTSimulatorItem.h:56
Eigen::Vector3d Vector3
Definition: EigenTypes.h:58
boost::shared_ptr< CollisionLinkPairList > CollisionLinkPairListPtr
Definition: CollisionSeq.h:22
#define CNOID_EXPORT
Definition: Util/exportdecl.h:37
Definition: BodyItem.h:31
DynamicsMode
Definition: AISTSimulatorItem.h:29