ARGoS  3
A parallel, multi-engine simulator for swarm robotics
quadrotor_position_default_actuator.cpp
Go to the documentation of this file.
1 
8 #include <argos3/core/utility/logging/argos_log.h>
9 
10 namespace argos {
11 
12  /****************************************/
13  /****************************************/
14 
16  m_pcQuadRotorEntity(NULL) {
17  }
18 
19  /****************************************/
20  /****************************************/
21 
23  try {
24  /* Get the quadrotor component */
25  m_pcQuadRotorEntity = &(c_entity.GetComponent<CQuadRotorEntity>("quadrotor"));
26  /* Check whether the control methods is unset - only one is allowed */
28  /* Get the robot body */
29  m_pcEmbodiedEntity = &(c_entity.GetComponent<CEmbodiedEntity>("body"));
30  /* Set the position control method */
32  }
33  else {
34  THROW_ARGOSEXCEPTION("Can't associate a quadrotor position actuator to entity \"" << c_entity.GetId() << "\" because it conflicts with a previously associated quadrotor actuator.");
35  }
36  }
37  catch(CARGoSException& ex) {
38  THROW_ARGOSEXCEPTION_NESTED("Error setting quadrotor position actuator to entity \"" << c_entity.GetId() << "\"", ex);
39  }
40  }
41 
42  /****************************************/
43  /****************************************/
44 
46  try {
48  Reset();
49  }
50  catch(CARGoSException& ex) {
51  THROW_ARGOSEXCEPTION_NESTED("Initialization error in quadrotor position actuator.", ex);
52  }
53  }
54 
55  /****************************************/
56  /****************************************/
57 
60  }
61 
62  /****************************************/
63  /****************************************/
64 
69  }
70 
71  /****************************************/
72  /****************************************/
73 
75  m_sDesiredPosData.Yaw = c_yaw;
76  }
77 
78  /****************************************/
79  /****************************************/
80 
82  CRadians cYAngle, cXAngle;
84  m_sDesiredPosData.Yaw += c_yaw;
85  }
86 
87  /****************************************/
88  /****************************************/
89 
92  }
93 
94  /****************************************/
95  /****************************************/
96 
99  CRadians cYAngle, cXAngle;
101  Update();
102  }
103 
104  /****************************************/
105  /****************************************/
106 
107 }
108 
109 REGISTER_ACTUATOR(CQuadRotorPositionDefaultActuator,
110  "quadrotor_position", "default",
111  "Carlo Pinciroli [ilpincy@gmail.com]",
112  "1.0",
113  "The quadrotor position actuator.",
114  "This actuator controls the position of a quadrotor robot. For a\n"
115  "complete description of its usage, refer to the\n"
116  "ci_quadrotor_position_actuator.h file.\n\n"
117  "REQUIRED XML CONFIGURATION\n\n"
118  " <controllers>\n"
119  " ...\n"
120  " <my_controller ...>\n"
121  " ...\n"
122  " <actuators>\n"
123  " ...\n"
124  " <quadrotor_position implementation=\"default\" />\n"
125  " ...\n"
126  " </actuators>\n"
127  " ...\n"
128  " </my_controller>\n"
129  " ...\n"
130  " </controllers>\n\n"
131  "OPTIONAL XML CONFIGURATION\n\n"
132  "None for the time being.\n\n"
133  ,
134  "Usable"
135  );
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::SAnchor::Orientation
CQuaternion Orientation
The orientation of the anchor wrt the global coordinate system.
Definition: physics_model.h:53
argos::CQuadRotorPositionDefaultActuator::Reset
virtual void Reset()
Resets the actuator to the state it had just after Init().
Definition: quadrotor_position_default_actuator.cpp:97
argos::CQuadRotorPositionDefaultActuator::SetRobot
virtual void SetRobot(CComposableEntity &c_entity)
Sets the entity associated to this actuator.
Definition: quadrotor_position_default_actuator.cpp:22
argos::CEntity::GetId
const std::string & GetId() const
Returns the id of this entity.
Definition: entity.h:157
argos
The namespace containing all the ARGoS related code.
Definition: ci_actuator.h:12
argos::CVector3
A 3D vector class.
Definition: vector3.h:29
REGISTER_ACTUATOR
REGISTER_ACTUATOR(CQuadRotorPositionDefaultActuator, "quadrotor_position", "default", "Carlo Pinciroli [ilpincy@gmail.com]", "1.0", "The quadrotor position actuator.", "This actuator controls the position of a quadrotor robot. For a\n" "complete description of its usage, refer to the\n" "ci_quadrotor_position_actuator.h file.\n\n" "REQUIRED XML CONFIGURATION\n\n" " <controllers>\n" " ...\n" " <my_controller ...>\n" " ...\n" " <actuators>\n" " ...\n" " <quadrotor_position implementation=\"default\" />\n" " ...\n" " </actuators>\n" " ...\n" " </my_controller>\n" " ...\n" " </controllers>\n\n" "OPTIONAL XML CONFIGURATION\n\n" "None for the time being.\n\n", "Usable")
argos::CRadians
It defines the basic type CRadians, used to store an angle value in radians.
Definition: angles.h:42
argos::CComposableEntity
Basic class for an entity that contains other entities.
Definition: composable_entity.h:32
quadrotor_position_default_actuator.h
argos::CARGoSException
The exception that wraps all errors in ARGoS.
Definition: argos_exception.h:61
argos::CComposableEntity::GetComponent
CEntity & GetComponent(const std::string &str_component)
Returns the component with the passed string label.
Definition: composable_entity.cpp:109
argos::CQuadRotorEntity::POSITION_CONTROL
@ POSITION_CONTROL
Definition: quadrotor_entity.h:25
argos::CEmbodiedEntity
This entity is a link to a body in the physics engine.
Definition: embodied_entity.h:48
argos::CQuadRotorPositionDefaultActuator::m_sDesiredPosData
CQuadRotorEntity::SPositionControlData m_sDesiredPosData
Definition: quadrotor_position_default_actuator.h:49
argos::TConfigurationNode
ticpp::Element TConfigurationNode
The ARGoS configuration XML node.
Definition: argos_configuration.h:27
argos::CQuaternion::ToEulerAngles
void ToEulerAngles(CRadians &c_z_angle, CRadians &c_y_angle, CRadians &c_x_angle) const
Definition: quaternion.h:171
argos::CQuadRotorEntity::SetPositionControlData
void SetPositionControlData(const SPositionControlData &s_data)
Definition: quadrotor_entity.h:70
argos::CQuadRotorEntity::SetControlMethod
void SetControlMethod(EControlMethod e_control_method)
Definition: quadrotor_entity.h:62
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
THROW_ARGOSEXCEPTION
#define THROW_ARGOSEXCEPTION(message)
This macro throws an ARGoS exception with the passed message.
Definition: argos_exception.h:111
argos::CQuadRotorPositionDefaultActuator::SetAbsolutePosition
virtual void SetAbsolutePosition(const CVector3 &c_pos)
Sets the absolute position of the robot in the environment.
Definition: quadrotor_position_default_actuator.cpp:58
argos::CQuadRotorPositionDefaultActuator::Init
virtual void Init(TConfigurationNode &t_tree)
Initializes the actuator from the XML configuration tree.
Definition: quadrotor_position_default_actuator.cpp:45
argos::CQuadRotorEntity::SPositionControlData::Yaw
CRadians Yaw
Definition: quadrotor_entity.h:31
argos::CQuadRotorPositionDefaultActuator::SetRelativeYaw
virtual void SetRelativeYaw(const CRadians &c_yaw)
Sets the yaw of the robot in the environment relative to the current position and attitude.
Definition: quadrotor_position_default_actuator.cpp:81
argos::CQuadRotorPositionDefaultActuator::Update
virtual void Update()
Updates the state of the entity associated to this actuator.
Definition: quadrotor_position_default_actuator.cpp:90
argos::CQuadRotorEntity::NO_CONTROL
@ NO_CONTROL
Definition: quadrotor_entity.h:24
argos::CQuadRotorEntity
Definition: quadrotor_entity.h:15
argos::CVector3::Rotate
CVector3 & Rotate(const CQuaternion &c_quaternion)
Rotates this vector by the given quaternion.
Definition: vector3.cpp:25
argos::CQuadRotorPositionDefaultActuator::SetRelativePosition
virtual void SetRelativePosition(const CVector3 &c_pos)
Sets the position of the robot in the environment relative to the current position and attitude.
Definition: quadrotor_position_default_actuator.cpp:65
argos::CQuadRotorPositionDefaultActuator::m_pcEmbodiedEntity
CEmbodiedEntity * m_pcEmbodiedEntity
Definition: quadrotor_position_default_actuator.h:48
argos::CQuadRotorEntity::SPositionControlData::Position
CVector3 Position
Definition: quadrotor_entity.h:30
argos::CQuadRotorPositionDefaultActuator::SetAbsoluteYaw
virtual void SetAbsoluteYaw(const CRadians &c_yaw)
Sets the absolute yaw of the robot in the world.
Definition: quadrotor_position_default_actuator.cpp:74
argos::SAnchor::Position
CVector3 Position
The position of the anchor wrt the global coordinate system.
Definition: physics_model.h:51
argos::CQuadRotorPositionDefaultActuator::m_pcQuadRotorEntity
CQuadRotorEntity * m_pcQuadRotorEntity
Definition: quadrotor_position_default_actuator.h:47
argos::CQuadRotorEntity::GetControlMethod
EControlMethod GetControlMethod() const
Definition: quadrotor_entity.h:58
argos::CCI_Actuator::Init
virtual void Init(TConfigurationNode &t_node)
Initializes the actuator from the XML configuration tree.
Definition: ci_actuator.h:54
argos::CQuadRotorPositionDefaultActuator::CQuadRotorPositionDefaultActuator
CQuadRotorPositionDefaultActuator()
Definition: quadrotor_position_default_actuator.cpp:15