00001 #ifndef RANGESENSOR_H 00002 #define RANGESENSOR_H 00003 00004 #include <vector> 00005 #include <sensor/sensor_base/sensor.h> 00006 #include <utils/point.h> 00007 00008 namespace GMapping{ 00009 00010 class RangeSensor: public Sensor{ 00011 friend class Configuration; 00012 friend class CarmenConfiguration; 00013 friend class CarmenWrapper; 00014 public: 00015 struct Beam{ 00016 OrientedPoint pose; //pose relative to the center of the sensor 00017 double span; //spam=0 indicates a line-like beam 00018 double maxRange; //maximum range of the sensor 00019 double s,c; //sinus and cosinus of the beam (optimization); 00020 }; 00021 RangeSensor(std::string name); 00022 RangeSensor(std::string name, unsigned int beams, double res, const OrientedPoint& position=OrientedPoint(0,0,0), double span=0, double maxrange=89.0); 00023 inline const std::vector<Beam>& beams() const {return m_beams;} 00024 inline std::vector<Beam>& beams() {return m_beams;} 00025 inline OrientedPoint getPose() const {return m_pose;} 00026 void updateBeamsLookup(); 00027 bool newFormat; 00028 protected: 00029 OrientedPoint m_pose; 00030 std::vector<Beam> m_beams; 00031 }; 00032 00033 }; 00034 00035 #endif