ARGoS
3
A parallel, multi-engine simulator for swarm robotics
|
00001 00007 #include "footbot_distance_scanner_default_actuator.h" 00008 00009 namespace argos { 00010 00011 const Real CFootBotDistanceScannerDefaultActuator::RPM_TO_RADIANS_PER_SEC = ARGOS_PI / 30.0f; 00012 00013 /****************************************/ 00014 /****************************************/ 00015 00016 CFootBotDistanceScannerDefaultActuator::CFootBotDistanceScannerDefaultActuator() : 00017 m_fDesiredRotationSpeed(0.0f), 00018 m_unDesiredMode(CFootBotDistanceScannerEquippedEntity::MODE_OFF) {} 00019 00020 /****************************************/ 00021 /****************************************/ 00022 00023 void CFootBotDistanceScannerDefaultActuator::SetRobot(CComposableEntity& c_entity) { 00024 m_pcDistanceScannerEquippedEntity = &(c_entity.GetComponent<CFootBotDistanceScannerEquippedEntity>("distance_scanner")); 00025 m_pcDistanceScannerEquippedEntity->SetCanBeEnabledIfDisabled(true); 00026 m_pcDistanceScannerEquippedEntity->Enable(); 00027 } 00028 00029 /****************************************/ 00030 /****************************************/ 00031 00032 void CFootBotDistanceScannerDefaultActuator::SetAngle(const CRadians& c_angle) { 00033 m_unDesiredMode = CFootBotDistanceScannerEquippedEntity::MODE_POSITION_CONTROL; 00034 m_cDesiredRotation = c_angle; 00035 } 00036 00037 /****************************************/ 00038 /****************************************/ 00039 00040 void CFootBotDistanceScannerDefaultActuator::SetRPM(Real f_rpm) { 00041 m_unDesiredMode = CFootBotDistanceScannerEquippedEntity::MODE_SPEED_CONTROL; 00042 m_fDesiredRotationSpeed = f_rpm * RPM_TO_RADIANS_PER_SEC; 00043 } 00044 00045 /****************************************/ 00046 /****************************************/ 00047 00048 void CFootBotDistanceScannerDefaultActuator::Enable() { 00049 m_unDesiredMode = CFootBotDistanceScannerEquippedEntity::MODE_POSITION_CONTROL; 00050 } 00051 00052 /****************************************/ 00053 /****************************************/ 00054 00055 void CFootBotDistanceScannerDefaultActuator::Disable() { 00056 m_unDesiredMode = CFootBotDistanceScannerEquippedEntity::MODE_OFF; 00057 } 00058 00059 /****************************************/ 00060 /****************************************/ 00061 00062 void CFootBotDistanceScannerDefaultActuator::Update() { 00063 m_pcDistanceScannerEquippedEntity->SetMode(m_unDesiredMode); 00064 if(m_unDesiredMode == CFootBotDistanceScannerEquippedEntity::MODE_POSITION_CONTROL) { 00065 m_pcDistanceScannerEquippedEntity->SetRotation(m_cDesiredRotation); 00066 } 00067 else if(m_unDesiredMode == CFootBotDistanceScannerEquippedEntity::MODE_SPEED_CONTROL) { 00068 m_pcDistanceScannerEquippedEntity->SetRotationSpeed(m_fDesiredRotationSpeed); 00069 } 00070 } 00071 00072 /****************************************/ 00073 /****************************************/ 00074 00075 void CFootBotDistanceScannerDefaultActuator::Reset() { 00076 m_cDesiredRotation = CRadians::ZERO; 00077 m_fDesiredRotationSpeed = 0.0f; 00078 m_unDesiredMode = CFootBotDistanceScannerEquippedEntity::MODE_OFF; 00079 } 00080 00081 /****************************************/ 00082 /****************************************/ 00083 00084 REGISTER_ACTUATOR(CFootBotDistanceScannerDefaultActuator, 00085 "footbot_distance_scanner", "default", 00086 "Carlo Pinciroli [ilpincy@gmail.com]", 00087 "1.0", 00088 "The foot-bot distance scanner actuator.", 00089 "This actuator controls the foot-bot distance scanner. For a complete\n" 00090 "description of its usage, refer to the ci_footbot_distance_scanner_actuator\n" 00091 "file.\n\n" 00092 "REQUIRED XML CONFIGURATION\n\n" 00093 " <controllers>\n" 00094 " ...\n" 00095 " <my_controller ...>\n" 00096 " ...\n" 00097 " <actuators>\n" 00098 " ...\n" 00099 " <footbot_distance_scanner implementation=\"default\" />\n" 00100 " ...\n" 00101 " </actuators>\n" 00102 " ...\n" 00103 " </my_controller>\n" 00104 " ...\n" 00105 " </controllers>\n\n" 00106 "OPTIONAL XML CONFIGURATION\n\n" 00107 "None for the time being.\n", 00108 "Usable" 00109 ); 00110 00111 }