00001 00011 #ifndef SPATIAL_TEMPORAL_LEARNING_WORLDLIB_WORLD_SURFACE_H_ 00012 #define SPATIAL_TEMPORAL_LEARNING_WORLDLIB_WORLD_SURFACE_H_ 00013 00014 // worldlib 00015 #include "Object.h" 00016 #include "PlacementSurface.h" 00017 #include "PointOfInterest.h" 00018 00019 namespace rail 00020 { 00021 namespace spatial_temporal_learning 00022 { 00023 namespace worldlib 00024 { 00025 namespace world 00026 { 00027 00034 class Surface : public Object 00035 { 00036 public: 00050 Surface(const std::string &name = "", const std::string &frame_id = "", const geometry::Pose &pose = geometry::Pose(), 00051 const double width = 0, const double depth = 0, const double height = 0); 00052 00060 const std::vector<PlacementSurface> &getPlacementSurfaces() const; 00061 00069 std::vector<PlacementSurface> &getPlacementSurfaces(); 00070 00078 size_t getNumPlacementSurfaces() const; 00079 00089 const PlacementSurface &getPlacementSurface(const size_t index) const; 00090 00100 PlacementSurface &getPlacementSurface(const size_t index); 00101 00109 void addPlacementSurface(const PlacementSurface &placement_surface); 00110 00119 void removePlacementSurface(const size_t index); 00120 00130 bool placementSurfaceExists(const std::string &name) const; 00131 00141 const PlacementSurface &findPlacementSurface(const std::string &name) const; 00142 00152 PlacementSurface &findPlacementSurface(const std::string &name); 00153 00162 const PlacementSurface &findClosestPlacementSurface(const geometry::Position &position) const; 00163 00172 PlacementSurface &findClosestPlacementSurface(const geometry::Position &position); 00173 00184 size_t findClosestPlacementSurfaceIndex(const geometry::Position &position) const; 00185 00193 const std::vector<PointOfInterest> &getPointsOfInterest() const; 00194 00202 std::vector<PointOfInterest> &getPointsOfInterest(); 00203 00211 size_t getNumPointsOfInterest() const; 00212 00222 const PointOfInterest &getPointOfInterest(const size_t index) const; 00223 00233 PointOfInterest &getPointOfInterest(const size_t index); 00234 00242 void addPointOfInterest(const PointOfInterest &poi); 00243 00252 void removePointOfInterest(const size_t index); 00253 00263 bool pointOfInterestExists(const std::string &name) const; 00264 00274 const PointOfInterest &findPointOfInterest(const std::string &name) const; 00275 00285 PointOfInterest &findPointOfInterest(const std::string &name); 00286 00287 private: 00289 std::vector<PlacementSurface> placement_surfaces_; 00291 std::vector<PointOfInterest> pois_; 00292 }; 00293 00294 } 00295 } 00296 } 00297 } 00298 00299 #endif