8 #include <argos3/core/simulator/simulator.h>
9 #include <argos3/core/simulator/space/space.h>
10 #include <argos3/core/simulator/space/positional_indices/grid.h>
11 #include <argos3/core/utility/configuration/argos_exception.h>
12 #include <argos3/core/utility/logging/argos_log.h>
23 std::string strPosIndexMethod(
"grid");
32 if(strPosIndexMethod ==
"grid") {
33 size_t punGridSize[3];
35 punGridSize[0] = cArenaSize.
GetX();
36 punGridSize[1] = cArenaSize.
GetY();
37 punGridSize[2] = cArenaSize.
GetZ();
40 std::string strPosGridSize;
42 ParseValues<size_t>(strPosGridSize, 3, punGridSize,
',');
45 cArenaCenter - cArenaSize * 0.5f, cArenaCenter + cArenaSize * 0.5f,
46 punGridSize[0], punGridSize[1], punGridSize[2]);
49 m_pcRadioEntityIndex = pcGrid;
52 THROW_ARGOSEXCEPTION(
"Unknown method \"" << strPosIndexMethod <<
"\" for the positional index.");
71 m_pcRadioEntityIndex->Reset();
78 delete m_pcRadioEntityIndex;
79 if(m_pcRadioEntityGridUpdateOperation !=
nullptr) {
80 delete m_pcRadioEntityGridUpdateOperation;
89 m_pcRadioEntityIndex->Update();
96 m_pcRadioEntityIndex->AddEntity(c_entity);
103 m_pcRadioEntityIndex->RemoveEntity(c_entity);
111 "Michael Allwright [allsey87@gmail.com]",
113 "Enables communication between a radio actuator and radio sensor.",
114 "This medium indexes the radio entities in the space and allows\n"
115 "transmitting radios to find nearby receiving radios.\n\n"
116 "REQUIRED XML CONFIGURATION\n\n"
117 "<radio id=\"radios\" />\n\n"
118 "OPTIONAL XML CONFIGURATION\n\n"
119 "None for the time being\n",
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.
void RemoveEntity(CRadioEntity &c_entity)
Removes the specified entity from the list of managed entities.
#define THROW_ARGOSEXCEPTION(message)
This macro throws an ARGoS exception with the passed message.
Real GetX() const
Returns the x coordinate of this vector.
virtual void Destroy()
Undoes whatever was done by Init().
Real GetY() const
Returns the y coordinate of this vector.
void SetUpdateEntityOperation(CEntityOperation *pc_operation)
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.
ticpp::Element TConfigurationNode
The ARGoS configuration XML node.
virtual void PostSpaceInit()
Executes extra initialization activities after the space has been initialized.
#define THROW_ARGOSEXCEPTION_NESTED(message, nested)
This macro throws an ARGoS exception with the passed message and nesting the passed exception...
virtual void Init(TConfigurationNode &t_tree)
Initialized the medium.
void AddEntity(CRadioEntity &c_entity)
Adds the specified entity to the list of managed entities.
virtual void Init(TConfigurationNode &t_tree)
Initialized the medium.
bool NodeAttributeExists(TConfigurationNode &t_node, const std::string &str_attribute)
Returns true if the specified attribute of a node exists.
void GetNodeAttribute(TConfigurationNode &t_node, const std::string &str_attribute, T &t_buffer)
Returns the value of a node's attribute.
The exception that wraps all errors in ARGoS.
REGISTER_MEDIUM(CDirectionalLEDMedium,"directional_led","Michael Allwright [allsey87@gmail.com]","1.0","Manages directional LED entities.","This medium is required to manage the directional LED entities, so that\n""the associated camera sensors can find them. If you use a camera sensor,\n""you must add this medium the sensors XML configuration.\n\n""REQUIRED XML CONFIGURATION\n\n""<directional_led id=\"led\" />\n\n""OPTIONAL XML CONFIGURATION\n\n""None for the time being\n","Under development")
The namespace containing all the ARGoS related code.
Real GetZ() const
Returns the z coordinate of this vector.
static CSimulator & GetInstance()
Returns the instance to the CSimulator class.
virtual void Update()
Updates the state of this medium.
virtual void Reset()
Resets the resource.