ARGoS  3
A parallel, multi-engine simulator for swarm robotics
epuck_entity.cpp
Go to the documentation of this file.
1 
7 #include "epuck_entity.h"
8 
9 #include <argos3/core/utility/math/matrix/rotationmatrix3.h>
10 #include <argos3/core/simulator/space/space.h>
11 #include <argos3/core/simulator/entity/controllable_entity.h>
12 #include <argos3/core/simulator/entity/embodied_entity.h>
13 #include <argos3/plugins/simulator/entities/rab_equipped_entity.h>
14 #include <argos3/plugins/simulator/entities/ground_sensor_equipped_entity.h>
15 #include <argos3/plugins/simulator/entities/led_equipped_entity.h>
16 #include <argos3/plugins/simulator/entities/light_sensor_equipped_entity.h>
17 #include <argos3/plugins/simulator/entities/proximity_sensor_equipped_entity.h>
18 
19 namespace argos {
20 
21  /****************************************/
22  /****************************************/
23 
24  static const Real BODY_RADIUS = 0.035f;
25  static const Real BODY_HEIGHT = 0.086f;
26 
27  static const Real INTERWHEEL_DISTANCE = 0.053f;
28  static const Real HALF_INTERWHEEL_DISTANCE = INTERWHEEL_DISTANCE * 0.5f;
29  static const Real WHEEL_RADIUS = 0.0205f;
30 
31  static const Real PROXIMITY_SENSOR_RING_ELEVATION = 0.06f;
32  static const Real PROXIMITY_SENSOR_RING_RADIUS = BODY_RADIUS;
33  static const CRadians PROXIMITY_SENSOR_RING_START_ANGLE = CRadians((2 * ARGOS_PI / 8.0f) * 0.5f);
34  static const Real PROXIMITY_SENSOR_RING_RANGE = 0.1f;
35 
36  static const CRadians LED_RING_START_ANGLE = CRadians((ARGOS_PI / 8.0f) * 0.5f);
37  static const Real LED_RING_RADIUS = BODY_RADIUS + 0.007;
38  static const Real LED_RING_ELEVATION = 0.086f;
39  static const Real RAB_ELEVATION = LED_RING_ELEVATION;
40 
41  /****************************************/
42  /****************************************/
43 
45  CComposableEntity(NULL),
46  m_pcControllableEntity(NULL),
47  m_pcEmbodiedEntity(NULL),
48  m_pcGroundSensorEquippedEntity(NULL),
49  m_pcLEDEquippedEntity(NULL),
50  m_pcLightSensorEquippedEntity(NULL),
51  m_pcProximitySensorEquippedEntity(NULL),
52  m_pcRABEquippedEntity(NULL),
53  m_pcWheeledEntity(NULL) {
54  }
55 
56  /****************************************/
57  /****************************************/
58 
59  CEPuckEntity::CEPuckEntity(const std::string& str_id,
60  const std::string& str_controller_id,
61  const CVector3& c_position,
62  const CQuaternion& c_orientation,
63  Real f_rab_range,
64  size_t un_rab_data_size) :
65  CComposableEntity(NULL, str_id),
66  m_pcControllableEntity(NULL),
67  m_pcEmbodiedEntity(NULL),
68  m_pcGroundSensorEquippedEntity(NULL),
69  m_pcLEDEquippedEntity(NULL),
70  m_pcLightSensorEquippedEntity(NULL),
71  m_pcProximitySensorEquippedEntity(NULL),
72  m_pcRABEquippedEntity(NULL),
73  m_pcWheeledEntity(NULL) {
74  try {
75  /*
76  * Create and init components
77  */
78  /* Embodied entity */
79  m_pcEmbodiedEntity = new CEmbodiedEntity(this, "body_0", c_position, c_orientation);
80  AddComponent(*m_pcEmbodiedEntity);
81  /* Wheeled entity and wheel positions (left, right) */
82  m_pcWheeledEntity = new CWheeledEntity(this, "wheels_0", 2);
83  AddComponent(*m_pcWheeledEntity);
84  m_pcWheeledEntity->SetWheel(0, CVector3(0.0f, HALF_INTERWHEEL_DISTANCE, 0.0f), WHEEL_RADIUS);
85  m_pcWheeledEntity->SetWheel(1, CVector3(0.0f, -HALF_INTERWHEEL_DISTANCE, 0.0f), WHEEL_RADIUS);
86  /* LED equipped entity */
87  m_pcLEDEquippedEntity = new CLEDEquippedEntity(this, "leds_0");
88  AddComponent(*m_pcLEDEquippedEntity);
89  m_pcLEDEquippedEntity->AddLEDRing(
90  CVector3(0.0f, 0.0f, LED_RING_ELEVATION),
91  LED_RING_RADIUS,
92  LED_RING_START_ANGLE,
93  8,
94  m_pcEmbodiedEntity->GetOriginAnchor());
95  /* Proximity sensor equipped entity */
96  m_pcProximitySensorEquippedEntity =
98  "proximity_0");
99  AddComponent(*m_pcProximitySensorEquippedEntity);
100  m_pcProximitySensorEquippedEntity->AddSensorRing(
101  CVector3(0.0f, 0.0f, PROXIMITY_SENSOR_RING_ELEVATION),
102  PROXIMITY_SENSOR_RING_RADIUS,
103  PROXIMITY_SENSOR_RING_START_ANGLE,
104  PROXIMITY_SENSOR_RING_RANGE,
105  8,
106  m_pcEmbodiedEntity->GetOriginAnchor());
107  /* Light sensor equipped entity */
108  m_pcLightSensorEquippedEntity =
110  "light_0");
111  AddComponent(*m_pcLightSensorEquippedEntity);
112  m_pcLightSensorEquippedEntity->AddSensorRing(
113  CVector3(0.0f, 0.0f, PROXIMITY_SENSOR_RING_ELEVATION),
114  PROXIMITY_SENSOR_RING_RADIUS,
115  PROXIMITY_SENSOR_RING_START_ANGLE,
116  PROXIMITY_SENSOR_RING_RANGE,
117  8,
118  m_pcEmbodiedEntity->GetOriginAnchor());
119  /* Ground sensor equipped entity */
120  m_pcGroundSensorEquippedEntity =
122  "ground_0");
123  AddComponent(*m_pcGroundSensorEquippedEntity);
124  m_pcGroundSensorEquippedEntity->AddSensor(CVector2(0.03f, -0.009f),
126  m_pcEmbodiedEntity->GetOriginAnchor());
127  m_pcGroundSensorEquippedEntity->AddSensor(CVector2(0.03f, 0.0f),
129  m_pcEmbodiedEntity->GetOriginAnchor());
130  m_pcGroundSensorEquippedEntity->AddSensor(CVector2(0.03f, 0.009f),
132  m_pcEmbodiedEntity->GetOriginAnchor());
133  /* RAB equipped entity */
134  m_pcRABEquippedEntity = new CRABEquippedEntity(this,
135  "rab_0",
136  un_rab_data_size,
137  f_rab_range,
138  m_pcEmbodiedEntity->GetOriginAnchor(),
139  *m_pcEmbodiedEntity,
140  CVector3(0.0f, 0.0f, RAB_ELEVATION));
141  AddComponent(*m_pcRABEquippedEntity);
142  /* Controllable entity
143  It must be the last one, for actuators/sensors to link to composing entities correctly */
144  m_pcControllableEntity = new CControllableEntity(this, "controller_0");
145  AddComponent(*m_pcControllableEntity);
146  m_pcControllableEntity->SetController(str_controller_id);
147  /* Update components */
149  }
150  catch(CARGoSException& ex) {
151  THROW_ARGOSEXCEPTION_NESTED("Failed to initialize entity \"" << GetId() << "\".", ex);
152  }
153  }
154 
155  /****************************************/
156  /****************************************/
157 
159  try {
160  /*
161  * Init parent
162  */
163  CComposableEntity::Init(t_tree);
164  /*
165  * Create and init components
166  */
167  /* Embodied entity */
168  m_pcEmbodiedEntity = new CEmbodiedEntity(this);
169  AddComponent(*m_pcEmbodiedEntity);
170  m_pcEmbodiedEntity->Init(GetNode(t_tree, "body"));
171  /* Wheeled entity and wheel positions (left, right) */
172  m_pcWheeledEntity = new CWheeledEntity(this, "wheels_0", 2);
173  AddComponent(*m_pcWheeledEntity);
174  m_pcWheeledEntity->SetWheel(0, CVector3(0.0f, HALF_INTERWHEEL_DISTANCE, 0.0f), WHEEL_RADIUS);
175  m_pcWheeledEntity->SetWheel(1, CVector3(0.0f, -HALF_INTERWHEEL_DISTANCE, 0.0f), WHEEL_RADIUS);
176  /* LED equipped entity, with LEDs [0-11] and beacon [12] */
177  m_pcLEDEquippedEntity = new CLEDEquippedEntity(this, "leds_0");
178  AddComponent(*m_pcLEDEquippedEntity);
179  m_pcLEDEquippedEntity->AddLEDRing(
180  CVector3(0.0f, 0.0f, LED_RING_ELEVATION),
181  LED_RING_RADIUS,
182  LED_RING_START_ANGLE,
183  8,
184  m_pcEmbodiedEntity->GetOriginAnchor());
185  /* Proximity sensor equipped entity */
186  m_pcProximitySensorEquippedEntity =
188  "proximity_0");
189  AddComponent(*m_pcProximitySensorEquippedEntity);
190  m_pcProximitySensorEquippedEntity->AddSensorRing(
191  CVector3(0.0f, 0.0f, PROXIMITY_SENSOR_RING_ELEVATION),
192  PROXIMITY_SENSOR_RING_RADIUS,
193  PROXIMITY_SENSOR_RING_START_ANGLE,
194  PROXIMITY_SENSOR_RING_RANGE,
195  8,
196  m_pcEmbodiedEntity->GetOriginAnchor());
197  /* Light sensor equipped entity */
198  m_pcLightSensorEquippedEntity =
200  "light_0");
201  AddComponent(*m_pcLightSensorEquippedEntity);
202  m_pcLightSensorEquippedEntity->AddSensorRing(
203  CVector3(0.0f, 0.0f, PROXIMITY_SENSOR_RING_ELEVATION),
204  PROXIMITY_SENSOR_RING_RADIUS,
205  PROXIMITY_SENSOR_RING_START_ANGLE,
206  PROXIMITY_SENSOR_RING_RANGE,
207  8,
208  m_pcEmbodiedEntity->GetOriginAnchor());
209  /* Ground sensor equipped entity */
210  m_pcGroundSensorEquippedEntity =
212  "ground_0");
213  AddComponent(*m_pcGroundSensorEquippedEntity);
214  m_pcGroundSensorEquippedEntity->AddSensor(CVector2(0.03f, -0.009f),
216  m_pcEmbodiedEntity->GetOriginAnchor());
217  m_pcGroundSensorEquippedEntity->AddSensor(CVector2(0.03f, 0.0f),
219  m_pcEmbodiedEntity->GetOriginAnchor());
220  m_pcGroundSensorEquippedEntity->AddSensor(CVector2(0.03f, 0.009f),
222  m_pcEmbodiedEntity->GetOriginAnchor());
223  /* RAB equipped entity */
224  Real fRange = 0.8f;
225  GetNodeAttributeOrDefault(t_tree, "rab_range", fRange, fRange);
226  UInt32 unDataSize = 2;
227  GetNodeAttributeOrDefault(t_tree, "rab_data_size", unDataSize, unDataSize);
228  m_pcRABEquippedEntity = new CRABEquippedEntity(this,
229  "rab_0",
230  unDataSize,
231  fRange,
232  m_pcEmbodiedEntity->GetOriginAnchor(),
233  *m_pcEmbodiedEntity,
234  CVector3(0.0f, 0.0f, RAB_ELEVATION));
235  AddComponent(*m_pcRABEquippedEntity);
236  /* Controllable entity
237  It must be the last one, for actuators/sensors to link to composing entities correctly */
238  m_pcControllableEntity = new CControllableEntity(this);
239  AddComponent(*m_pcControllableEntity);
240  m_pcControllableEntity->Init(GetNode(t_tree, "controller"));
241  /* Update components */
243  }
244  catch(CARGoSException& ex) {
245  THROW_ARGOSEXCEPTION_NESTED("Failed to initialize entity \"" << GetId() << "\".", ex);
246  }
247  }
248 
249  /****************************************/
250  /****************************************/
251 
253  /* Reset all components */
255  /* Update components */
257  }
258 
259  /****************************************/
260  /****************************************/
261 
264  }
265 
266  /****************************************/
267  /****************************************/
268 
269 #define UPDATE(COMPONENT) if(COMPONENT->IsEnabled()) COMPONENT->Update();
270 
272  UPDATE(m_pcRABEquippedEntity);
273  UPDATE(m_pcLEDEquippedEntity);
274  }
275 
276  /****************************************/
277  /****************************************/
278 
280  "e-puck",
281  "Carlo Pinciroli [ilpincy@gmail.com]",
282  "1.0",
283  "The e-puck robot.",
284  "The e-puck is a open-hardware, extensible robot intended for education. In its\n"
285  "simplest form, it is a two-wheeled robot equipped with proximity sensors,\n"
286  "ground sensors, light sensors, a microphone, a frontal camera, and a ring of\n"
287  "red LEDs. More information is available at http://www.epuck.org\n\n"
288  "REQUIRED XML CONFIGURATION\n\n"
289  " <arena ...>\n"
290  " ...\n"
291  " <e-puck id=\"eb0\">\n"
292  " <body position=\"0.4,2.3,0.25\" orientation=\"45,90,0\" />\n"
293  " <controller config=\"mycntrl\" />\n"
294  " </e-puck>\n"
295  " ...\n"
296  " </arena>\n\n"
297  "The 'id' attribute is necessary and must be unique among the entities. If two\n"
298  "entities share the same id, initialization aborts.\n"
299  "The 'body/position' attribute specifies the position of the pucktom point of the\n"
300  "e-puck in the arena. When the robot is untranslated and unrotated, the\n"
301  "pucktom point is in the origin and it is defined as the middle point between\n"
302  "the two wheels on the XY plane and the lowest point of the robot on the Z\n"
303  "axis, that is the point where the wheels touch the floor. The attribute values\n"
304  "are in the X,Y,Z order.\n"
305  "The 'body/orientation' attribute specifies the orientation of the e-puck. All\n"
306  "rotations are performed with respect to the pucktom point. The order of the\n"
307  "angles is Z,Y,X, which means that the first number corresponds to the rotation\n"
308  "around the Z axis, the second around Y and the last around X. This reflects\n"
309  "the internal convention used in ARGoS, in which rotations are performed in\n"
310  "that order. Angles are expressed in degrees. When the robot is unrotated, it\n"
311  "is oriented along the X axis.\n"
312  "The 'controller/config' attribute is used to assign a controller to the\n"
313  "e-puck. The value of the attribute must be set to the id of a previously\n"
314  "defined controller. Controllers are defined in the <controllers> XML subtree.\n\n"
315  "OPTIONAL XML CONFIGURATION\n\n"
316  "You can set the emission range of the range-and-bearing system. By default, a\n"
317  "message sent by an e-puck can be received up to 80cm. By using the 'rab_range'\n"
318  "attribute, you can change it to, i.e., 4m as follows:\n\n"
319  " <arena ...>\n"
320  " ...\n"
321  " <e-puck id=\"eb0\" rab_range=\"4\">\n"
322  " <body position=\"0.4,2.3,0.25\" orientation=\"45,90,0\" />\n"
323  " <controller config=\"mycntrl\" />\n"
324  " </e-puck>\n"
325  " ...\n"
326  " </arena>\n\n"
327  "You can also set the data sent at each time step through the range-and-bearing"
328  "system. By default, a message sent by an e-puck is 2 bytes long. By using the"
329  "'rab_data_size' attribute, you can change it to, i.e., 20 bytes as follows:\n\n"
330  " <arena ...>\n"
331  " ...\n"
332  " <e-puck id=\"eb0\" rab_data_size=\"20\">\n"
333  " <body position=\"0.4,2.3,0.25\" orientation=\"45,90,0\" />\n"
334  " <controller config=\"mycntrl\" />\n"
335  " </e-puck>\n"
336  " ...\n"
337  " </arena>\n\n",
338  "Under development"
339  );
340 
341  /****************************************/
342  /****************************************/
343 
345 
346  /****************************************/
347  /****************************************/
348 
349 }
ARGOS_PI
#define ARGOS_PI
To be used when initializing static variables.
Definition: angles.h:32
argos::CEmbodiedEntity::GetOriginAnchor
const SAnchor & GetOriginAnchor() const
Returns a const reference to the origin anchor associated to this entity.
Definition: embodied_entity.h:119
argos::CLEDEquippedEntity::AddLEDRing
void AddLEDRing(const CVector3 &c_center, Real f_radius, const CRadians &c_start_angle, UInt32 un_num_leds, SAnchor &s_anchor, const CColor &c_color=CColor::BLACK)
Adds a ring of LEDs to this entity.
Definition: led_equipped_entity.cpp:144
argos::CGroundSensorEquippedEntity::TYPE_GRAYSCALE
@ TYPE_GRAYSCALE
Definition: ground_sensor_equipped_entity.h:29
argos::CEntity::GetId
const std::string & GetId() const
Returns the id of this entity.
Definition: entity.h:157
argos::CEPuckEntity::Destroy
virtual void Destroy()
Destroys the entity, undoing whatever was done by Init() or by the standalone constructor.
Definition: epuck_entity.cpp:262
argos
The namespace containing all the ARGoS related code.
Definition: ci_actuator.h:12
argos::CVector3
A 3D vector class.
Definition: vector3.h:29
argos::CComposableEntity
Basic class for an entity that contains other entities.
Definition: composable_entity.h:32
UPDATE
#define UPDATE(COMPONENT)
Definition: epuck_entity.cpp:269
argos::GetNode
TConfigurationNode & GetNode(TConfigurationNode &t_node, const std::string &str_tag)
Given a tree root node, returns the first of its child nodes with the wanted name.
Definition: argos_configuration.h:63
argos::CLightSensorEquippedEntity
Definition: light_sensor_equipped_entity.h:21
argos::CARGoSException
The exception that wraps all errors in ARGoS.
Definition: argos_exception.h:61
argos::CWheeledEntity
Definition: wheeled_entity.h:15
argos::CComposableEntity::Reset
virtual void Reset()
Resets the state of the entity to whatever it was after Init() or the standalone constructor was call...
Definition: composable_entity.cpp:29
argos::CEmbodiedEntity
This entity is a link to a body in the physics engine.
Definition: embodied_entity.h:48
argos::CEntity::Destroy
virtual void Destroy()
Destroys the entity, undoing whatever was done by Init() or by the standalone constructor.
Definition: entity.h:151
argos::CGroundSensorEquippedEntity::AddSensor
void AddSensor(const CVector2 &c_offset, ESensorType e_type, SAnchor &s_anchor)
Definition: ground_sensor_equipped_entity.cpp:130
argos::TConfigurationNode
ticpp::Element TConfigurationNode
The ARGoS configuration XML node.
Definition: argos_configuration.h:27
argos::CEPuckEntity
Definition: epuck_entity.h:26
argos::CRABEquippedEntity
Definition: rab_equipped_entity.h:25
argos::CComposableEntity::AddComponent
void AddComponent(CEntity &c_component)
Adds a component to this composable entity.
Definition: composable_entity.cpp:72
argos::CLEDEquippedEntity
A container of CLEDEntity.
Definition: led_equipped_entity.h:36
argos::CControllableEntity::Init
virtual void Init(TConfigurationNode &t_tree)
Initializes the state of the entity from the XML configuration tree.
Definition: controllable_entity.cpp:44
argos::CQuaternion
Definition: quaternion.h:14
THROW_ARGOSEXCEPTION_NESTED
#define THROW_ARGOSEXCEPTION_NESTED(message, nested)
This macro throws an ARGoS exception with the passed message and nesting the passed exception.
Definition: argos_exception.h:115
argos::REGISTER_STANDARD_SPACE_OPERATIONS_ON_COMPOSABLE
REGISTER_STANDARD_SPACE_OPERATIONS_ON_COMPOSABLE(CComposableEntity)
argos::CProximitySensorEquippedEntity::AddSensorRing
void AddSensorRing(const CVector3 &c_center, Real f_radius, const CRadians &c_start_angle, Real f_range, UInt32 un_num_sensors, SAnchor &s_anchor)
Definition: proximity_sensor_equipped_entity.cpp:154
argos::CEPuckEntity::CEPuckEntity
CEPuckEntity()
Definition: epuck_entity.cpp:44
argos::CVector2
A 2D vector class.
Definition: vector2.h:25
argos::CControllableEntity::SetController
void SetController(const std::string &str_controller_id)
Creates and assigns a controller with the given id.
Definition: controllable_entity.cpp:139
argos::CWheeledEntity::SetWheel
void SetWheel(UInt32 un_index, const CVector3 &c_position, Real f_radius)
Definition: wheeled_entity.cpp:64
argos::CProximitySensorEquippedEntity
Definition: proximity_sensor_equipped_entity.h:21
argos::REGISTER_ENTITY
REGISTER_ENTITY(CFloorEntity, "floor", "Carlo Pinciroli [ilpincy@gmail.com]", "1.0", "It contains the properties of the arena floor.", "The floor entity contains the properties of the arena floor. In the current\n" "implementation, it contains only the color of the floor. The floor color is\n" "detected by the robots' ground sensors.\n\n" "REQUIRED XML CONFIGURATION\n\n" " <arena ...>\n" " ...\n" " <floor id=\"floor\"\n" " source=\"SOURCE\" />\n" " ...\n" " </arena>\n\n" "The 'id' attribute is necessary and must be unique among the entities. If two\n" "entities share the same id, initialization aborts.\n" "The 'source' attribute specifies where to get the color of the floor from. Its\n" "value, here denoted as SOURCE, can assume the following values:\n\n" " image The color is calculated from the passed image file\n" " loop_functions The color is calculated calling the loop functions\n\n" "When 'source' is set to 'image', as showed in the following example, you have\n" "to specify the image path in the additional attribute 'path':\n\n" " <arena ...>\n" " ...\n" " <floor id=\"floor\"\n" " source=\"image\"\n" " path=\"/path/to/imagefile.ext\" />\n" " ...\n" " </arena>\n\n" "Many image formats are available, such as PNG, JPG, BMP, GIF and many more.\n" "Refer to the FreeImage webpage for a complete list of supported image formats\n" "(http://freeimage.sourceforge.net/features.html).\n\n" "When 'source' is set to 'loop_functions', as showed in the following example,\n" "an image is implicitly created to be used as texture for graphical\n" "visualizations. The algorithm that creates the texture needs to convert from\n" "meters (in the arena) to pixels (of the texture). You control how many pixels\n" "per meter are used with the attribute 'pixels_per_meter'. Clearly, the higher\n" "value, the higher the quality, but also the slower the algorithm and the bigger\n" "the texture. The algorithm is called only once at init time, so the fact that\n" "it is slow is not so important. However, the image size is limited by OpenGL.\n" "Every implementation has its own limit, and you should check yours if any\n" "texture-related problem arises. Now for the example:\n\n" " <arena ...>\n" " ...\n" " <floor id=\"floor\"\n" " source=\"loop_functions\"\n" " pixels_per_meter=\"100\" />\n" " ...\n" " </arena>\n\n" "OPTIONAL XML CONFIGURATION\n\n" "None for the time being.\n", "Usable")
argos::CLightSensorEquippedEntity::AddSensorRing
void AddSensorRing(const CVector3 &c_center, Real f_radius, const CRadians &c_start_angle, Real f_range, UInt32 un_num_sensors, SAnchor &s_anchor)
Definition: light_sensor_equipped_entity.cpp:154
UInt32
unsigned int UInt32
32-bit unsigned integer.
Definition: datatypes.h:97
argos::GetNodeAttributeOrDefault
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.
Definition: argos_configuration.h:318
argos::CEPuckEntity::Init
virtual void Init(TConfigurationNode &t_tree)
Initializes the state of the entity from the XML configuration tree.
Definition: epuck_entity.cpp:158
epuck_entity.h
argos::CGroundSensorEquippedEntity
Definition: ground_sensor_equipped_entity.h:21
argos::CEPuckEntity::UpdateComponents
virtual void UpdateComponents()
Calls the Update() method on all the components.
Definition: epuck_entity.cpp:271
argos::CEmbodiedEntity::Init
virtual void Init(TConfigurationNode &t_tree)
Initializes the state of the entity from the XML configuration tree.
Definition: embodied_entity.cpp:68
argos::CControllableEntity
An entity that contains a pointer to the user-defined controller.
Definition: controllable_entity.h:26
Real
float Real
Collects all ARGoS code.
Definition: datatypes.h:39
argos::CEntity::Init
virtual void Init(TConfigurationNode &t_tree)
Initializes the state of the entity from the XML configuration tree.
Definition: entity.cpp:36
argos::CEPuckEntity::Reset
virtual void Reset()
Resets the state of the entity to whatever it was after Init() or the standalone constructor was call...
Definition: epuck_entity.cpp:252