GAMS  1.4.0
VREPQuadLaser.h
Go to the documentation of this file.
1 
54 #ifndef _GAMS_PLATFORM_VREP_QUAD_LASER_H_
55 #define _GAMS_PLATFORM_VREP_QUAD_LASER_H_
56 
60 #include "gams/variables/Self.h"
61 #include "gams/variables/Sensor.h"
63 #include "madara/knowledge/KnowledgeBase.h"
64 #include "madara/threads/Threader.h"
65 #include "madara/threads/BaseThread.h"
66 #include "madara/knowledge/containers/NativeDoubleVector.h"
67 
68 extern "C" {
69 #include "extApi.h"
70 }
71 
72 #ifdef _GAMS_VREP_
73 
74 namespace gams
75 {
76  namespace platforms
77  {
78  class GAMS_EXPORT HasRangeSensor
79  {
80  public:
81  virtual double get_range() const = 0;
82  virtual ~HasRangeSensor() = default;
83  };
84 
85  class GAMS_EXPORT HasAltitudeSensor
86  {
87  public:
88  virtual double get_altitude() const = 0;
89  virtual ~HasAltitudeSensor() = default;
90  };
91 
92  class GAMS_EXPORT HasColorSensor
93  {
94  public:
95  virtual uint32_t get_color() const = 0;
96  virtual ~HasColorSensor() = default;
97  };
98 
99  class GAMS_EXPORT HasColor
100  {
101  public:
102  virtual void set_color(uint32_t color) const = 0;
103  virtual ~HasColor() = default;
104  };
105 
109  class GAMS_EXPORT VREPQuadLaser : public VREPQuad, public HasRangeSensor,
110  public HasAltitudeSensor, public HasColorSensor, public HasColor
111  {
112  public:
113  const static std::string DEFAULT_MODEL;
114 
124  VREPQuadLaser(
125  std::string model_file,
126  simxUChar is_client_side,
127  madara::knowledge::KnowledgeBase * knowledge,
128  variables::Sensors * sensors,
129  variables::Platforms * platforms,
130  variables::Self * self);
131 
137  virtual std::string get_id() const;
138 
142  virtual std::string get_name() const;
143 
144  virtual double get_range() const;
145  virtual uint32_t get_color() const;
146  virtual void set_color(uint32_t color) const;
147  virtual double get_altitude() const;
148 
149  protected:
150  void get_sensor_handles();
151  double read_sensor(simxInt handle, double range) const;
152 
156  virtual void add_model_to_environment(const std::string& file,
157  const simxUChar client_side);
158 
159  simxInt laser_sensor_;
160  simxInt sonar_sensor_;
161  }; // class VREPQuad
162 
166  class GAMS_EXPORT VREPQuadLaserFactory : public VREPQuadFactory
167  {
168  protected:
169  virtual std::string get_default_model();
170  using VREPQuadFactory::get_default_model;
171 
182  virtual VREPQuadLaser *create_quad(
183  std::string model_file,
184  simxUChar is_client_side,
185  madara::knowledge::KnowledgeBase * knowledge,
186  variables::Sensors * sensors,
187  variables::Platforms * platforms,
188  variables::Self * self);
189  };
190  } // namespace platform
191 } // namespace gams
192 
193 #endif // _GAMS_VREP_
194 
195 #endif // _GAMS_PLATFORM_VREP_QUAD_LASER_H_
#define GAMS_EXPORT
Definition: GamsExport.h:20
Copyright(c) 2014 Carnegie Mellon University.
Copyright(c) 2014 Carnegie Mellon University.
Copyright(c) 2014 Carnegie Mellon University.
Copyright(c) 2014 Carnegie Mellon University.
Copyright(c) 2014 Carnegie Mellon University.
Copyright(c) 2014 Carnegie Mellon University.
std::map< std::string, PlatformStatus > Platforms
a map of sensor names to the sensor information
std::map< std::string, Sensor * > Sensors
a map of sensor names to the sensor information
Definition: Sensor.h:238
Contains all GAMS-related tools, classes and code.