ARGoS
3
A parallel, multi-engine simulator for swarm robotics
|
00001 00007 #ifndef CI_RANGE_AND_BEARING_SENSOR_H 00008 #define CI_RANGE_AND_BEARING_SENSOR_H 00009 00010 namespace argos { 00011 class CCI_RangeAndBearingSensor; 00012 } 00013 00014 #include <argos3/core/control_interface/ci_sensor.h> 00015 #include <argos3/core/utility/datatypes/datatypes.h> 00016 #include <argos3/core/utility/datatypes/byte_array.h> 00017 #include <argos3/core/utility/math/quaternion.h> 00018 00019 namespace argos { 00020 00021 /****************************************/ 00022 /****************************************/ 00023 00024 class CCI_RangeAndBearingSensor : public CCI_Sensor { 00025 00026 public: 00027 00028 struct SPacket { 00029 Real Range; 00030 CRadians HorizontalBearing; 00031 CRadians VerticalBearing; 00032 CByteArray Data; 00033 00034 SPacket(); 00035 }; 00036 00037 typedef std::vector<SPacket> TReadings; 00038 00039 public: 00040 00041 virtual ~CCI_RangeAndBearingSensor() {} 00042 00043 inline const TReadings& GetReadings() const { 00044 return m_tReadings; 00045 } 00046 00047 #ifdef ARGOS_WITH_LUA 00048 virtual void CreateLuaState(lua_State* pt_lua_state); 00049 00050 virtual void ReadingsToLuaState(lua_State* pt_lua_state); 00051 #endif 00052 00053 protected: 00054 00055 TReadings m_tReadings; 00056 00057 }; 00058 00059 /****************************************/ 00060 /****************************************/ 00061 00062 } 00063 00064 #endif