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 
30  ENABLE_VTABLE();
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 
218  protected:
219 
222 
224  std::map<std::string, CSimulatedActuator*> m_mapActuators;
225 
227  std::map<std::string, CSimulatedSensor*> m_mapSensors;
228 
230  std::vector<std::pair<bool, CRay3> > m_vecCheckedRays;
231 
233  std::vector<CVector3> m_vecIntersectionPoints;
234 
235  };
236 
237 }
238 
239 #endif
An entity that contains a pointer to the user-defined controller.
A 3D vector class.
Definition: vector3.h:29
std::vector< std::pair< bool, CRay3 > > & GetCheckedRays()
Returns the list of checked rays.
float Real
Collects all ARGoS code.
Definition: datatypes.h:39
std::vector< std::pair< bool, CRay3 > > m_vecCheckedRays
The list of checked rays.
CControllableEntity(CComposableEntity *pc_parent)
Class constructor.
std::vector< CControllableEntity * > TVector
A vector of controllable entities.
The basic entity type.
Definition: entity.h:89
ticpp::Element TConfigurationNode
The ARGoS configuration XML node.
virtual void Sense()
Executes the CSimulatedSensor::Update() method for all associated sensors.
std::map< std::string, CSimulatedSensor * > m_mapSensors
The map of sensors, indexed by sensor type (not implementation!)
virtual void Reset()
Resets the state of the entity to whatever it was after Init() or one of the standalone constructors ...
std::vector< CVector3 > & GetIntersectionPoints()
Returns the list of intersection points.
void SetController(const std::string &str_controller_id)
Creates and assigns a controller with the given id.
virtual ~CControllableEntity()
Class destructor.
Basic class for an entity that contains other entities.
std::map< std::string, CSimulatedActuator * > m_mapActuators
The map of actuators, indexed by actuator type (not implementation!)
virtual std::string GetTypeDescription() const
Returns a string label for this class.
void AddIntersectionPoint(const CRay3 &c_ray, Real f_t_on_ray)
Adds an intersection point to the list.
CCI_Controller * m_pcController
The pointer to the associated controller.
virtual void ControlStep()
Executes CCI_Controller::ControlStep().
const CCI_Controller & GetController() const
Returns a reference to the associated controller.
virtual void Init(TConfigurationNode &t_tree)
Initializes the state of the entity from the XML configuration tree.
virtual void Destroy()
Destroys the entity, undoing whatever was done by Init() or by the standalone constructor.
void GetPoint(CVector3 &c_point, Real f_t) const
Definition: ray3.h:109
void AddCheckedRay(bool b_obstructed, const CRay3 &c_ray)
Adds a ray to the list of checked rays.
The namespace containing all the ARGoS related code.
Definition: ci_actuator.h:12
std::map< std::string, CControllableEntity * > TMap
A map of controllable entities, indexed by id.
virtual void Act()
Executes the CSimulatedActuator::Update() method for all associated actuators.
std::vector< CVector3 > m_vecIntersectionPoints
The list of intersection points.
The basic interface for a robot controller.
Definition: ci_controller.h:30