ARGoS  3
A parallel, multi-engine simulator for swarm robotics
plugins/robots/foot-bot/simulator/footbot_distance_scanner_default_actuator.cpp
Go to the documentation of this file.
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 }