ARGoS 3
A parallel, multi-engine simulator for swarm robotics
controllable_entity.h
Go to the documentation of this file.
1
7#ifndef CONTROLLABLE_ENTITY_H
8#define CONTROLLABLE_ENTITY_H
9
10namespace 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
20namespace argos {
21
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.
Basic class for an entity that contains other entities.
An entity that contains a pointer to the user-defined controller.
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.
virtual void Sense()
Executes the CSimulatedSensor::Update() method for all associated sensors.
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.
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.
std::vector< CControllableEntity * > TVector
A vector of controllable entities.
std::vector< std::pair< bool, CRay3 > > & GetCheckedRays()
Returns the list of checked rays.
const std::map< std::string, CSimulatedActuator * > & GetActuators() const
Returns a map of actuators indexed by actuator type.
const std::map< std::string, CSimulatedSensor * > & GetSensors() const
Returns a map of sensors indexed by sensor type.
virtual void Init(TConfigurationNode &t_tree)
Initializes the state of the entity from the XML configuration tree.
std::vector< CVector3 > & GetIntersectionPoints()
Returns the list of intersection points.
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.
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.
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