controllable_entity.h
Go to the documentation of this file.
1 
7 #ifndef CONTROLLABLE_ENTITY_H
8 #define CONTROLLABLE_ENTITY_H
9 
10 namespace argos {
11  class CControllableEntity;
12  class CSimulatedActuator;
13  class CSimulatedSensor;
14 }
15 
16 #include <argos3/core/simulator/entity/entity.h>
17 #include <argos3/core/control_interface/ci_controller.h>
18 #include <argos3/core/utility/math/ray3.h>
19 
20 namespace argos {
21 
26  class CControllableEntity : public CEntity {
27 
28  public:
29 
31 
33  typedef std::vector<CControllableEntity*> TVector;
34 
36  typedef std::map<std::string, CControllableEntity*> TMap;
37 
38  public:
39 
48 
62  const std::string& str_id);
63 
67  virtual ~CControllableEntity();
68 
77  virtual void Init(TConfigurationNode& t_tree);
78 
82  virtual void Reset();
83 
87  virtual void Destroy();
88 
95  const CCI_Controller& GetController() const;
96 
104 
120  void SetController(const std::string& str_controller_id);
121 
138  void SetController(const std::string& str_controller_id,
139  TConfigurationNode& t_controller_config);
140 
148  virtual void Sense();
149 
155  virtual void ControlStep();
156 
161  virtual void Act();
162 
163  virtual std::string GetTypeDescription() const {
164  return "controller";
165  }
166 
178  inline void AddCheckedRay(bool b_obstructed,
179  const CRay3& c_ray) {
180  m_vecCheckedRays.push_back(std::make_pair(b_obstructed, c_ray));
181  }
182 
191  inline void AddIntersectionPoint(const CRay3& c_ray,
192  Real f_t_on_ray) {
193  CVector3 cPoint;
194  c_ray.GetPoint(cPoint, f_t_on_ray);
195  m_vecIntersectionPoints.push_back(cPoint);
196  }
197 
204  inline std::vector<std::pair<bool, CRay3> >& GetCheckedRays() {
205  return m_vecCheckedRays;
206  }
207 
214  inline std::vector<CVector3>& GetIntersectionPoints() {
216  }
217 
222  inline const std::map<std::string, CSimulatedActuator*>& GetActuators() const {
223  return m_mapActuators;
224  }
225 
230  inline const std::map<std::string, CSimulatedSensor*>& GetSensors() const {
231  return m_mapSensors;
232  }
233 
234  protected:
235 
238 
240  std::map<std::string, CSimulatedActuator*> m_mapActuators;
241 
243  std::map<std::string, CSimulatedSensor*> m_mapSensors;
244 
246  std::vector<std::pair<bool, CRay3> > m_vecCheckedRays;
247 
249  std::vector<CVector3> m_vecIntersectionPoints;
250 
251  };
252 
253 }
254 
255 #endif
float Real
Collects all ARGoS code.
Definition: datatypes.h:39
The namespace containing all the ARGoS related code.
Definition: ci_actuator.h:12
ticpp::Element TConfigurationNode
The ARGoS configuration XML node.
The basic interface for a robot controller.
Definition: ci_controller.h:30
Basic class for an entity that contains other entities.
An entity that contains a pointer to the user-defined controller.
std::map< std::string, CControllableEntity * > TMap
A map of controllable entities, indexed by id.
std::vector< CVector3 > & GetIntersectionPoints()
Returns the list of intersection points.
std::map< std::string, CSimulatedActuator * > m_mapActuators
The map of actuators, indexed by actuator type (not implementation!)
std::vector< std::pair< bool, CRay3 > > m_vecCheckedRays
The list of checked rays.
virtual void Destroy()
Destroys the entity, undoing whatever was done by Init() or by the standalone constructor.
std::vector< std::pair< bool, CRay3 > > & GetCheckedRays()
Returns the list of checked rays.
virtual void Sense()
Executes the CSimulatedSensor::Update() method for all associated sensors.
std::vector< CControllableEntity * > TVector
A vector of controllable entities.
void SetController(const std::string &str_controller_id)
Creates and assigns a controller with the given id.
void AddIntersectionPoint(const CRay3 &c_ray, Real f_t_on_ray)
Adds an intersection point to the list.
const std::map< std::string, CSimulatedActuator * > & GetActuators() const
Returns a map of actuators indexed by actuator type.
virtual void ControlStep()
Executes CCI_Controller::ControlStep().
virtual void Reset()
Resets the state of the entity to whatever it was after Init() or one of the standalone constructors ...
virtual std::string GetTypeDescription() const
Returns a string label for this class.
const CCI_Controller & GetController() const
Returns a reference to the associated controller.
CCI_Controller * m_pcController
The pointer to the associated controller.
virtual void Init(TConfigurationNode &t_tree)
Initializes the state of the entity from the XML configuration tree.
std::vector< CVector3 > m_vecIntersectionPoints
The list of intersection points.
std::map< std::string, CSimulatedSensor * > m_mapSensors
The map of sensors, indexed by sensor type (not implementation!)
virtual ~CControllableEntity()
Class destructor.
virtual void Act()
Executes the CSimulatedActuator::Update() method for all associated actuators.
const std::map< std::string, CSimulatedSensor * > & GetSensors() const
Returns a map of sensors indexed by sensor type.
CControllableEntity(CComposableEntity *pc_parent)
Class constructor.
void AddCheckedRay(bool b_obstructed, const CRay3 &c_ray)
Adds a ray to the list of checked rays.
The basic entity type.
Definition: entity.h:90
void GetPoint(CVector3 &c_point, Real f_t) const
Definition: ray3.h:109
A 3D vector class.
Definition: vector3.h:31