gripper_equipped_entity.cpp
Go to the documentation of this file.
1 
8 #include <argos3/core/simulator/space/space.h>
9 
10 namespace argos {
11 
12  /****************************************/
13  /****************************************/
14 
15  CRange<Real> UNIT(0.0f, 1.0f);
16 
17  /****************************************/
18  /****************************************/
19 
21  CEntity(pc_parent),
22  m_fLockState(0.0f),
23  m_fLockThreshold(0.5f),
24  m_pcGrippedEntity(nullptr) {
25  Disable();
26  }
27 
28  /****************************************/
29  /****************************************/
30 
32  const std::string& str_id,
33  const CVector3& c_offset,
34  const CVector3& c_direction,
35  Real f_lock_threshold) :
36  CEntity(pc_parent,
37  str_id),
38  m_cOffset(c_offset),
39  m_cInitOffset(c_offset),
40  m_cDirection(c_direction),
41  m_cInitDirection(c_direction),
42  m_fLockState(0.0f),
43  m_fLockThreshold(f_lock_threshold),
44  m_pcGrippedEntity(nullptr) {
45  Disable();
46  }
47 
48  /****************************************/
49  /****************************************/
50 
52  try {
53  /* Parse id */
54  CEntity::Init(t_tree);
55  /* Parse gripper attributes */
56  GetNodeAttribute(t_tree, "offset", m_cOffset);
57  m_cInitOffset = m_cOffset;
58  GetNodeAttribute(t_tree, "direction", m_cDirection);
59  m_cInitDirection = m_cDirection;
60  GetNodeAttributeOrDefault(t_tree, "lock_threshold", m_fLockThreshold, m_fLockThreshold);
61  }
62  catch(CARGoSException& ex) {
63  THROW_ARGOSEXCEPTION_NESTED("Error while initializing the gripper entity \"" << GetId() << "\"", ex);
64  }
65  }
66 
67  /****************************************/
68  /****************************************/
69 
71  m_fLockState = 0.0f;
72  m_cOffset = m_cInitOffset;
73  m_cDirection = m_cInitDirection;
75  }
76 
77  /****************************************/
78  /****************************************/
79 
81  UNIT.TruncValue(f_lock_state);
82  m_fLockState = f_lock_state;
83  }
84 
85  /****************************************/
86  /****************************************/
87 
89  UNIT.TruncValue(f_lock_threshold);
90  m_fLockThreshold = f_lock_threshold;
91  }
92 
93  /****************************************/
94  /****************************************/
95 
97  if(m_pcGrippedEntity != nullptr) {
98  return *m_pcGrippedEntity;
99  }
100  else {
101  THROW_ARGOSEXCEPTION("Entity \"" << GetId() << "\" is not gripping anything.");
102  }
103  }
104 
105  /****************************************/
106  /****************************************/
107 
109 
110  /****************************************/
111  /****************************************/
112 
113 }
#define THROW_ARGOSEXCEPTION_NESTED(message, nested)
This macro throws an ARGoS exception with the passed message and nesting the passed exception.
#define THROW_ARGOSEXCEPTION(message)
This macro throws an ARGoS exception with the passed message.
float Real
Collects all ARGoS code.
Definition: datatypes.h:39
The namespace containing all the ARGoS related code.
Definition: ci_actuator.h:12
void GetNodeAttributeOrDefault(TConfigurationNode &t_node, const std::string &str_attribute, T &t_buffer, const T &t_default)
Returns the value of a node's attribute, or the passed default value.
ticpp::Element TConfigurationNode
The ARGoS configuration XML node.
REGISTER_STANDARD_SPACE_OPERATIONS_ON_ENTITY(CEntity)
void GetNodeAttribute(TConfigurationNode &t_node, const std::string &str_attribute, T &t_buffer)
Returns the value of a node's attribute.
Basic class for an entity that contains other entities.
This entity is a link to a body in the physics engine.
The basic entity type.
Definition: entity.h:90
void Disable()
Disables the entity.
Definition: entity.h:275
const std::string & GetId() const
Returns the id of this entity.
Definition: entity.h:157
virtual void Init(TConfigurationNode &t_tree)
Initializes the state of the entity from the XML configuration tree.
Definition: entity.cpp:40
The exception that wraps all errors in ARGoS.
A 3D vector class.
Definition: vector3.h:31
An entity that stores the state of a robot gripper.
virtual void Reset()
Resets the state of the entity to whatever it was after Init() or one of the standalone constructors ...
CEmbodiedEntity & GetGrippedEntity()
Returns the embodied entity currently gripped by this gripper.
virtual void Init(TConfigurationNode &t_tree)
Initializes the state of the entity from the XML configuration tree.
void SetLockState(Real f_lock_state)
Sets the lock state of the gripper.
void SetLockThreshold(Real f_lock_threshold)
Sets the lock threshold of the gripper.
void ClearGrippedEntity()
Clears the reference to the embodied entity currently gripped by this gripper.
CGripperEquippedEntity(CComposableEntity *pc_parent)
Class constructor.