ARGoS  3
A parallel, multi-engine simulator for swarm robotics
plugins/robots/foot-bot/simulator/footbot_entity.h
Go to the documentation of this file.
00001 
00007 #ifndef FOOTBOT_ENTITY_H
00008 #define FOOTBOT_ENTITY_H
00009 
00010 namespace argos {
00011    class CControllableEntity;
00012    class CFootBotDistanceScannerEquippedEntity;
00013    class CEmbodiedEntity;
00014    class CFootBotEntity;
00015    class CFootBotTurretEntity;
00016    class CGripperEquippedEntity;
00017    class CGroundSensorEquippedEntity;
00018    class CLEDEquippedEntity;
00019    class CLightSensorEquippedEntity;
00020    class COmnidirectionalCameraEquippedEntity;
00021    class CProximitySensorEquippedEntity;
00022    class CRABEquippedEntity;
00023    class CWiFiEquippedEntity;
00024 }
00025 
00026 #include <argos3/core/simulator/entity/composable_entity.h>
00027 #include <argos3/plugins/simulator/entities/wheeled_entity.h>
00028 
00029 namespace argos {
00030 
00031    class CFootBotEntity : public CComposableEntity {
00032 
00033    public:
00034 
00035       ENABLE_VTABLE();
00036 
00037    public:
00038 
00039       CFootBotEntity();
00040 
00041       CFootBotEntity(const std::string& str_id,
00042                      const std::string& str_controller_id,
00043                      const CVector3& c_position = CVector3(),
00044                      const CQuaternion& c_orientation = CQuaternion(),
00045                      Real f_rab_range = 3.0f,
00046                      const CRadians& c_aperture = ToRadians(CDegrees(70.0f)));
00047 
00048       virtual void Init(TConfigurationNode& t_tree);
00049       virtual void Reset();
00050       virtual void Destroy();
00051 
00052       virtual void UpdateComponents();
00053       
00054       inline CControllableEntity& GetControllableEntity() {
00055          return *m_pcControllableEntity;
00056       }
00057 
00058       inline CFootBotDistanceScannerEquippedEntity& GetDistanceScannerEquippedEntity() {
00059          return *m_pcDistanceScannerEquippedEntity;
00060       }
00061 
00062       inline CFootBotTurretEntity& GetTurretEntity() {
00063          return *m_pcTurretEntity;
00064       }
00065 
00066       inline CEmbodiedEntity& GetEmbodiedEntity() {
00067          return *m_pcEmbodiedEntity;
00068       }
00069 
00070       inline CGripperEquippedEntity& GetGripperEquippedEntity() {
00071          return *m_pcGripperEquippedEntity;
00072       }
00073 
00074       inline CGroundSensorEquippedEntity& GetGroundSensorEquippedEntity() {
00075          return *m_pcGroundSensorEquippedEntity;
00076       }
00077 
00078       inline CLEDEquippedEntity& GetLEDEquippedEntity() {
00079          return *m_pcLEDEquippedEntity;
00080       }
00081 
00082       inline CLightSensorEquippedEntity& GetLightSensorEquippedEntity() {
00083          return *m_pcLightSensorEquippedEntity;
00084       }
00085 
00086       inline COmnidirectionalCameraEquippedEntity& GetOmnidirectionalCameraEquippedEntity() {
00087          return *m_pcOmnidirectionalCameraEquippedEntity;
00088       }
00089 
00090       inline CProximitySensorEquippedEntity& GetProximitySensorEquippedEntity() {
00091          return *m_pcProximitySensorEquippedEntity;
00092       }
00093 
00094       inline CRABEquippedEntity& GetRABEquippedEntity() {
00095          return *m_pcRABEquippedEntity;
00096       }
00097 
00098       inline CWheeledEntity& GetWheeledEntity() {
00099          return *m_pcWheeledEntity;
00100       }
00101 
00102       inline CWiFiEquippedEntity& GetWiFiEquippedEntity() {
00103          return *m_pcWiFiEquippedEntity;
00104       }
00105 
00106       virtual std::string GetTypeDescription() const {
00107          return "foot-bot";
00108       }
00109 
00110    private:
00111 
00112       void SetLEDPosition();
00113 
00114    private:
00115 
00116       CControllableEntity*                   m_pcControllableEntity;
00117       CFootBotDistanceScannerEquippedEntity* m_pcDistanceScannerEquippedEntity;
00118       CFootBotTurretEntity*                  m_pcTurretEntity;
00119       CEmbodiedEntity*                       m_pcEmbodiedEntity;
00120       CGripperEquippedEntity*                m_pcGripperEquippedEntity;
00121       CGroundSensorEquippedEntity*           m_pcGroundSensorEquippedEntity;
00122       CLEDEquippedEntity*                    m_pcLEDEquippedEntity;
00123       CLightSensorEquippedEntity*            m_pcLightSensorEquippedEntity;
00124       COmnidirectionalCameraEquippedEntity*  m_pcOmnidirectionalCameraEquippedEntity;
00125       CProximitySensorEquippedEntity*        m_pcProximitySensorEquippedEntity;
00126       CRABEquippedEntity*                    m_pcRABEquippedEntity;
00127       CWheeledEntity*                        m_pcWheeledEntity;
00128       CWiFiEquippedEntity*                   m_pcWiFiEquippedEntity;
00129    };
00130 
00131 }
00132 
00133 #endif