ARGoS
3
A parallel, multi-engine simulator for swarm robotics
|
00001 00043 #ifndef CCI_FOOTBOT_TURRET_ACTUATOR_H 00044 #define CCI_FOOTBOT_TURRET_ACTUATOR_H 00045 00046 namespace argos { 00047 class CCI_FootBotTurretActuator; 00048 } 00049 00050 #include <argos3/core/control_interface/ci_actuator.h> 00051 #include <argos3/core/utility/math/angles.h> 00052 00053 namespace argos { 00054 00055 class CCI_FootBotTurretActuator : virtual public CCI_Actuator { 00056 00057 public: 00058 00060 enum ETurretModes { 00061 MODE_OFF, 00062 MODE_PASSIVE, 00063 MODE_SPEED_CONTROL, 00064 MODE_POSITION_CONTROL 00065 }; 00066 00067 public: 00068 00069 static const CRange<SInt32> SPEED_RANGE; 00070 static const CRange<Real> NORMALIZED_SPEED_RANGE; 00071 00072 public: 00073 00077 virtual ~CCI_FootBotTurretActuator() {} 00078 00089 virtual void SetRotation(const CRadians& c_angle) = 0; 00090 00101 virtual void SetRotationSpeed(SInt32 n_speed_pulses) = 0; 00102 00108 virtual void SetMode(ETurretModes e_mode) = 0; 00109 00118 inline void SetActiveWithRotation(const CRadians& c_angle) { 00119 SetPositionControlMode(); 00120 SetRotation(c_angle); 00121 } 00122 00127 inline void SetSpeedControlMode() { 00128 SetMode(MODE_SPEED_CONTROL); 00129 } 00130 00135 inline void SetPositionControlMode() { 00136 SetMode(MODE_POSITION_CONTROL); 00137 } 00138 00143 inline void SetPassiveMode() { 00144 SetMode(MODE_PASSIVE); 00145 } 00146 00147 #ifdef ARGOS_WITH_LUA 00148 virtual void CreateLuaState(lua_State* pt_lua_state); 00149 #endif 00150 }; 00151 00152 } 00153 00154 #endif