Warning: include(php/utility.php): Failed to open stream: No such file or directory in /home/argos/argos3/doc/api/embedded/a00834_source.php on line 2

Warning: include(): Failed opening 'php/utility.php' for inclusion (include_path='.:/usr/lib64/php') in /home/argos/argos3/doc/api/embedded/a00834_source.php on line 2
The ARGoS Website

dynamics3d_multi_body_object_model.h
Go to the documentation of this file.
1 
7 #ifndef DYNAMICS3D_MULTI_BODY_OBJECT_MODEL_H
8 #define DYNAMICS3D_MULTI_BODY_OBJECT_MODEL_H
9 
10 namespace argos {
11  class CDynamics3DMultiBodyObjectModel;
12 }
13 
14 #include <argos3/plugins/simulator/physics_engines/dynamics3d/dynamics3d_model.h>
15 #include <argos3/plugins/simulator/physics_engines/dynamics3d/bullet/BulletDynamics/Featherstone/btMultiBody.h>
16 #include <argos3/plugins/simulator/physics_engines/dynamics3d/bullet/BulletDynamics/Featherstone/btMultiBodyLink.h>
17 #include <argos3/plugins/simulator/physics_engines/dynamics3d/bullet/BulletDynamics/Featherstone/btMultiBodyLinkCollider.h>
18 
19 namespace argos {
20 
22 
23  public:
24 
25  class CLink : public CAbstractBody {
26 
27  public:
28 
30  UInt32 un_link_index,
31  SAnchor& s_anchor,
32  std::shared_ptr<btCollisionShape>& ptr_shape,
33  const SData& s_data);
34 
35  virtual ~CLink() {}
36 
37  virtual void Reset();
38 
39  virtual void AddToWorld(btMultiBodyDynamicsWorld& c_world);
40 
41  virtual void RemoveFromWorld(btMultiBodyDynamicsWorld& c_world);
42 
43  virtual void ApplyForce(const btVector3& c_force);
44 
45  virtual void ApplyForce(const btVector3& c_force,
46  const btVector3& c_offset);
47 
48  virtual void ApplyTorque(const btVector3& c_torque);
49 
50  virtual btTransform& GetTransform();
51 
52  UInt32 GetIndex() const;
53 
54  protected:
55 
58  btMultiBodyLinkCollider m_cMultiBodyLink;
59  };
60 
61  class CBase : public CLink {
62 
63  public:
64 
66  SAnchor& s_anchor,
67  std::shared_ptr<btCollisionShape>& ptr_shape,
68  const SData& s_data);
69 
70  virtual ~CBase() {}
71 
72  virtual void Reset();
73 
74  virtual void ApplyForce(const btVector3& c_force);
75 
76  virtual void ApplyForce(const btVector3& c_force,
77  const btVector3& c_offset);
78 
79  virtual void ApplyTorque(const btVector3& c_torque);
80  };
81 
83  CComposableEntity& c_entity,
84  UInt32 un_num_links,
85  bool b_fixed_base);
86 
88 
89  virtual void Reset();
90 
91  virtual void MoveTo(const CVector3& c_position,
92  const CQuaternion& c_orientation);
93 
94  virtual void CalculateBoundingBox();
95 
96  virtual void AddToWorld(btMultiBodyDynamicsWorld& c_world);
97 
98  virtual void RemoveFromWorld(btMultiBodyDynamicsWorld& c_world);
99 
100  btMultiBody& GetMultiBody() {
101  return m_cMultiBody;
102  }
103 
104  virtual void UpdateOriginAnchor(SAnchor& s_anchor);
105 
106  protected:
107 
108  btMultiBody m_cMultiBody;
111  };
112 
113 }
114 
115 #endif
A 3D vector class.
Definition: vector3.h:29
virtual void CalculateBoundingBox()
Calculates the axis-aligned box that contains the entire physics model.
virtual void RemoveFromWorld(btMultiBodyDynamicsWorld &c_world)
virtual void AddToWorld(btMultiBodyDynamicsWorld &c_world)
unsigned int UInt32
32-bit unsigned integer.
Definition: datatypes.h:97
Basic class for an entity that contains other entities.
An anchor related to the body of an entity.
Definition: physics_model.h:38
virtual void RemoveFromWorld(btMultiBodyDynamicsWorld &c_world)
virtual void AddToWorld(btMultiBodyDynamicsWorld &c_world)
virtual void MoveTo(const CVector3 &c_position, const CQuaternion &c_orientation)
The namespace containing all the ARGoS related code.
Definition: ci_actuator.h:12
CDynamics3DMultiBodyObjectModel(CDynamics3DEngine &c_engine, CComposableEntity &c_entity, UInt32 un_num_links, bool b_fixed_base)
CLink(CDynamics3DMultiBodyObjectModel &c_model, UInt32 un_link_index, SAnchor &s_anchor, std::shared_ptr< btCollisionShape > &ptr_shape, const SData &s_data)
CBase(CDynamics3DMultiBodyObjectModel &c_model, SAnchor &s_anchor, std::shared_ptr< btCollisionShape > &ptr_shape, const SData &s_data)