ARGoS 3
A parallel, multi-engine simulator for swarm robotics
quadrotor_speed_default_actuator.cpp
Go to the documentation of this file.
1
8#include <argos3/core/utility/logging/argos_log.h>
9
10namespace argos {
11
12 /****************************************/
13 /****************************************/
14
16 m_pcQuadRotorEntity(nullptr) {
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 speed control method */
32 }
33 else {
34 THROW_ARGOSEXCEPTION("Can't associate a quadrotor speed 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 speed 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 speed actuator.", ex);
52 }
53 }
54
55 /****************************************/
56 /****************************************/
57
61
62 /****************************************/
63 /****************************************/
64
68
69 /****************************************/
70 /****************************************/
71
75
76 /****************************************/
77 /****************************************/
78
84
85 /****************************************/
86 /****************************************/
87
88}
89
90REGISTER_ACTUATOR(CQuadRotorSpeedDefaultActuator,
91 "quadrotor_speed", "default",
92 "Carlo Pinciroli [ilpincy@gmail.com]",
93 "1.0",
94 "The quadrotor speed actuator.",
95
96 "This actuator controls the speed of a quadrotor robot. For a\n"
97 "complete description of its usage, refer to the\n"
98 "ci_quadrotor_speed_actuator.h file.\n\n"
99
100 "REQUIRED XML CONFIGURATION\n\n"
101
102 " <controllers>\n"
103 " ...\n"
104 " <my_controller ...>\n"
105 " ...\n"
106 " <actuators>\n"
107 " ...\n"
108 " <quadrotor_speed implementation=\"default\" />\n"
109 " ...\n"
110 " </actuators>\n"
111 " ...\n"
112 " </my_controller>\n"
113 " ...\n"
114 " </controllers>\n\n"
115
116 "OPTIONAL XML CONFIGURATION\n\n"
117
118 "None.\n\n"
119 ,
120 "Usable"
121 );
#define THROW_ARGOSEXCEPTION_NESTED(message, nested)
This macro throws an ARGoS exception with the passed message and nesting the passed exception.
#define THROW_ARGOSEXCEPTION(message)
This macro throws an ARGoS exception with the passed message.
#define REGISTER_ACTUATOR(CLASSNAME, LABEL, IMPLEMENTATION, AUTHOR, VERSION, BRIEF_DESCRIPTION, LONG_DESCRIPTION, STATUS)
Registers a new actuator model inside ARGoS.
Definition actuator.h:59
The namespace containing all the ARGoS related code.
Definition ci_actuator.h:12
ticpp::Element TConfigurationNode
The ARGoS configuration XML node.
virtual void Init(TConfigurationNode &t_node)
Initializes the actuator from the XML configuration tree.
Definition ci_actuator.h:54
Basic class for an entity that contains other entities.
CEntity & GetComponent(const std::string &str_component)
Returns the component with the passed string label.
This entity is a link to a body in the physics engine.
const std::string & GetId() const
Returns the id of this entity.
Definition entity.h:157
The exception that wraps all errors in ARGoS.
It defines the basic type CRadians, used to store an angle value in radians.
Definition angles.h:42
static const CRadians ZERO
Set to zero radians.
Definition angles.h:79
A 3D vector class.
Definition vector3.h:31
virtual void Reset()
Resets the actuator to the state it had just after Init().
virtual void Init(TConfigurationNode &t_tree)
Initializes the actuator from the XML configuration tree.
CQuadRotorEntity::SSpeedControlData m_sDesiredSpeedData
virtual void SetRobot(CComposableEntity &c_entity)
Sets the entity associated to this actuator.
virtual void SetLinearVelocity(const CVector3 &c_velocity)
Sets the linear velocity of the quadrotor.
virtual void SetRotationalSpeed(const CRadians &c_speed)
Sets the rotational velocity of the quadrotor around the local Z axis (yaw).
virtual void Update()
Updates the state of the entity associated to this actuator.
void SetControlMethod(EControlMethod e_control_method)
EControlMethod GetControlMethod() const
void SetSpeedControlData(const SSpeedControlData &s_data)