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  );
A 3D vector class.
Definition: vector3.h:29
void SetControlMethod(EControlMethod e_control_method)
virtual void SetRelativeYaw(const CRadians &c_yaw)
Sets the yaw of the robot in the environment relative to the current position and attitude...
#define THROW_ARGOSEXCEPTION(message)
This macro throws an ARGoS exception with the passed message.
CVector3 & Rotate(const CQuaternion &c_quaternion)
Rotates this vector by the given quaternion.
Definition: vector3.cpp:25
virtual void SetAbsolutePosition(const CVector3 &c_pos)
Sets the absolute position of the robot in the environment.
CQuaternion Orientation
The orientation of the anchor wrt the global coordinate system.
Definition: physics_model.h:53
ticpp::Element TConfigurationNode
The ARGoS configuration XML node.
This entity is a link to a body in the physics engine.
void SetPositionControlData(const SPositionControlData &s_data)
#define THROW_ARGOSEXCEPTION_NESTED(message, nested)
This macro throws an ARGoS exception with the passed message and nesting the passed exception...
virtual void Reset()
Resets the actuator to the state it had just after Init().
It defines the basic type CRadians, used to store an angle value in radians.
Definition: angles.h:42
CQuadRotorEntity::SPositionControlData m_sDesiredPosData
virtual void Init(TConfigurationNode &t_node)
Initializes the actuator from the XML configuration tree.
Definition: ci_actuator.h:54
virtual void SetRelativePosition(const CVector3 &c_pos)
Sets the position of the robot in the environment relative to the current position and attitude...
Basic class for an entity that contains other entities.
virtual void Update()
Updates the state of the entity associated to this actuator.
void ToEulerAngles(CRadians &c_z_angle, CRadians &c_y_angle, CRadians &c_x_angle) const
Definition: quaternion.h:172
The exception that wraps all errors in ARGoS.
CVector3 Position
The position of the anchor wrt the global coordinate system.
Definition: physics_model.h:51
const std::string & GetId() const
Returns the id of this entity.
Definition: entity.h:157
virtual void SetRobot(CComposableEntity &c_entity)
Sets the entity associated to this actuator.
virtual void Init(TConfigurationNode &t_tree)
Initializes the actuator from the XML configuration tree.
EControlMethod GetControlMethod() const
The namespace containing all the ARGoS related code.
Definition: ci_actuator.h:12
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")
virtual void SetAbsoluteYaw(const CRadians &c_yaw)
Sets the absolute yaw of the robot in the world.
const SAnchor & GetOriginAnchor() const
Returns a const reference to the origin anchor associated to this entity.
CEntity & GetComponent(const std::string &str_component)
Returns the component with the passed string label.