ARGoS  3
A parallel, multi-engine simulator for swarm robotics
dynamics2d_gripping.h
Go to the documentation of this file.
1 
7 #ifndef DYNAMICS2D_GRIPPING_H
8 #define DYNAMICS2D_GRIPPING_H
9 
10 namespace argos {
11  class CDynamics2DEngine;
12  class CDynamics2DGripper;
13  class CDynamics2DGrippable;
14  class CGripperEquippedEntity;
15 }
16 
17 #include <argos3/plugins/simulator/physics_engines/dynamics2d/chipmunk-physics/include/chipmunk.h>
18 #include <argos3/plugins/simulator/entities/gripper_equipped_entity.h>
19 #include <list>
20 
21 namespace argos {
22 
23  /****************************************/
24  /****************************************/
25 
27 
28  public:
29 
30  typedef std::list<CDynamics2DGripper*> TList;
31 
32  public:
33 
35  CGripperEquippedEntity& c_gripper_entity,
36  cpShape* pt_gripper_shape);
37 
39 
40  inline bool IsGripping() const {
41  return m_pcGrippee != NULL;
42  }
43 
44  inline bool IsLocked() const {
45  return m_cGripperEntity.IsLocked();
46  }
47 
49  return m_cGripperEntity;
50  }
51 
52  inline cpShape* GripperShape() {
53  return m_ptGripperShape;
54  }
55 
57  return m_pcGrippee;
58  }
59 
60  inline cpConstraint* GetConstraint() {
61  return m_tConstraint;
62  }
63 
64  void CalculateAnchor(cpArbiter* pt_arb);
65 
66  void Grip(CDynamics2DGrippable* pc_grippee);
67 
68  void Release();
69 
70  private:
71 
72  CDynamics2DEngine& m_cEngine;
73  CGripperEquippedEntity& m_cGripperEntity;
74  cpShape* m_ptGripperShape;
75  CDynamics2DGrippable* m_pcGrippee;
76  cpVect m_tAnchor;
77  cpConstraint* m_tConstraint;
78 
79  };
80 
81  /****************************************/
82  /****************************************/
83 
85 
86  public:
87 
89  cpShape* pt_shape);
90 
92 
94  return m_cEmbodiedEntity;
95  }
96 
97  inline cpShape* GetShape() {
98  return m_ptShape;
99  }
100 
101  inline bool HasGrippers() const {
102  return !m_listGrippers.empty();
103  }
104 
105  void Attach(CDynamics2DGripper& c_gripper);
106 
107  void Remove(CDynamics2DGripper& c_gripper);
108 
109  void Release(CDynamics2DGripper& c_gripper);
110 
111  void ReleaseAll();
112 
113  private:
114 
115  CEmbodiedEntity& m_cEmbodiedEntity;
116  cpShape* m_ptShape;
117  CDynamics2DGripper::TList m_listGrippers;
118 
119  };
120 
121  /****************************************/
122  /****************************************/
123 
124  extern int BeginCollisionBetweenGripperAndGrippable(cpArbiter* pt_arb,
125  cpSpace* pt_space,
126  void* p_data);
127 
128  extern int ManageCollisionBetweenGripperAndGrippable(cpArbiter* pt_arb,
129  cpSpace* pt_space,
130  void* p_data);
131 
132  extern void AddConstraintBetweenGripperAndGrippable(cpSpace* pt_space,
133  void* p_obj,
134  void* p_data);
135 
136  extern void RemoveConstraintBetweenGripperAndGrippable(cpSpace* pt_space,
137  void* p_obj,
138  void* p_data);
139 
140  /****************************************/
141  /****************************************/
142 
143 }
144 
145 #endif
argos::CDynamics2DGripper::GetGrippee
CDynamics2DGrippable * GetGrippee()
Definition: dynamics2d_gripping.h:56
argos::AddConstraintBetweenGripperAndGrippable
void AddConstraintBetweenGripperAndGrippable(cpSpace *pt_space, void *p_obj, void *p_data)
Definition: dynamics2d_gripping.cpp:199
argos::CDynamics2DGripper::IsGripping
bool IsGripping() const
Definition: dynamics2d_gripping.h:40
argos::CDynamics2DGrippable::HasGrippers
bool HasGrippers() const
Definition: dynamics2d_gripping.h:101
argos::CDynamics2DGrippable::GetShape
cpShape * GetShape()
Definition: dynamics2d_gripping.h:97
argos
The namespace containing all the ARGoS related code.
Definition: ci_actuator.h:12
argos::CDynamics2DGrippable::ReleaseAll
void ReleaseAll()
Definition: dynamics2d_gripping.cpp:134
argos::CDynamics2DGrippable
Definition: dynamics2d_gripping.h:84
argos::ManageCollisionBetweenGripperAndGrippable
int ManageCollisionBetweenGripperAndGrippable(cpArbiter *pt_arb, cpSpace *pt_space, void *p_data)
Definition: dynamics2d_gripping.cpp:159
argos::CGripperEquippedEntity::IsLocked
bool IsLocked() const
Returns true if the gripper is locked.
Definition: gripper_equipped_entity.h:187
argos::CDynamics2DGripper::~CDynamics2DGripper
~CDynamics2DGripper()
Definition: dynamics2d_gripping.cpp:36
argos::CDynamics2DEngine
Definition: dynamics2d_engine.h:42
argos::CEmbodiedEntity
This entity is a link to a body in the physics engine.
Definition: embodied_entity.h:48
argos::CDynamics2DGripper
Definition: dynamics2d_gripping.h:26
argos::CGripperEquippedEntity
An entity that stores the state of a robot gripper.
Definition: gripper_equipped_entity.h:37
argos::CDynamics2DGripper::GetConstraint
cpConstraint * GetConstraint()
Definition: dynamics2d_gripping.h:60
argos::RemoveConstraintBetweenGripperAndGrippable
void RemoveConstraintBetweenGripperAndGrippable(cpSpace *pt_space, void *p_obj, void *p_data)
Definition: dynamics2d_gripping.cpp:212
argos::BeginCollisionBetweenGripperAndGrippable
int BeginCollisionBetweenGripperAndGrippable(cpArbiter *pt_arb, cpSpace *pt_space, void *p_data)
Definition: dynamics2d_gripping.cpp:143
argos::CDynamics2DGrippable::Attach
void Attach(CDynamics2DGripper &c_gripper)
Definition: dynamics2d_gripping.cpp:105
argos::CDynamics2DGripper::Release
void Release()
Definition: dynamics2d_gripping.cpp:73
argos::CDynamics2DGripper::GetGripperEntity
CGripperEquippedEntity & GetGripperEntity()
Definition: dynamics2d_gripping.h:48
argos::CDynamics2DGripper::GripperShape
cpShape * GripperShape()
Definition: dynamics2d_gripping.h:52
argos::CDynamics2DGrippable::Remove
void Remove(CDynamics2DGripper &c_gripper)
Definition: dynamics2d_gripping.cpp:112
argos::CDynamics2DGrippable::~CDynamics2DGrippable
~CDynamics2DGrippable()
Definition: dynamics2d_gripping.cpp:98
argos::CDynamics2DGripper::IsLocked
bool IsLocked() const
Definition: dynamics2d_gripping.h:44
argos::CDynamics2DGrippable::Release
void Release(CDynamics2DGripper &c_gripper)
Definition: dynamics2d_gripping.cpp:123
argos::CDynamics2DGripper::CalculateAnchor
void CalculateAnchor(cpArbiter *pt_arb)
Definition: dynamics2d_gripping.cpp:43
argos::CDynamics2DGrippable::GetEmbodiedEntity
CEmbodiedEntity & GetEmbodiedEntity()
Definition: dynamics2d_gripping.h:93
argos::CDynamics2DGripper::Grip
void Grip(CDynamics2DGrippable *pc_grippee)
Definition: dynamics2d_gripping.cpp:56
argos::CDynamics2DGripper::TList
std::list< CDynamics2DGripper * > TList
Definition: dynamics2d_gripping.h:30
argos::CDynamics2DGripper::CDynamics2DGripper
CDynamics2DGripper(CDynamics2DEngine &c_engine, CGripperEquippedEntity &c_gripper_entity, cpShape *pt_gripper_shape)
Definition: dynamics2d_gripping.cpp:19
argos::CDynamics2DGrippable::CDynamics2DGrippable
CDynamics2DGrippable(CEmbodiedEntity &c_entity, cpShape *pt_shape)
Definition: dynamics2d_gripping.cpp:87