00001 00013 #ifndef SPATIAL_TEMPORAL_LEARNING_WORLDLIB_WORLD_OBJECT_H_ 00014 #define SPATIAL_TEMPORAL_LEARNING_WORLDLIB_WORLD_OBJECT_H_ 00015 00016 // worldlib 00017 #include "../geometry/Pose.h" 00018 00019 // C++ Standard Library 00020 #include <string> 00021 #include <vector> 00022 00023 namespace rail 00024 { 00025 namespace spatial_temporal_learning 00026 { 00027 namespace worldlib 00028 { 00029 namespace world 00030 { 00031 00040 class Object 00041 { 00042 public: 00056 Object(const std::string &name = "", const std::string &frame_id = "", const geometry::Pose &pose = geometry::Pose(), 00057 const double width = 0, const double depth = 0, const double height = 0); 00058 00066 const std::string &getName() const; 00067 00075 void setName(const std::string &name); 00076 00084 const std::string &getFrameID() const; 00085 00093 void setFrameID(const std::string &frame_id); 00094 00102 const geometry::Pose &getPose() const; 00103 00111 geometry::Pose &getPose(); 00112 00120 void setPose(geometry::Pose &pose); 00121 00129 double getWidth() const; 00130 00138 void setWidth(const double width); 00139 00147 double getDepth() const; 00148 00156 void setDepth(const double depth); 00157 00165 double getHeight() const; 00166 00174 void setHeight(const double height); 00175 00183 const std::vector<std::string> &getAliases() const; 00184 00192 size_t getNumAliases() const; 00193 00203 const std::string &getAlias(const size_t index) const; 00204 00212 void addAlias(const std::string &alias); 00213 00222 void removeAlias(const size_t index); 00223 00232 bool checkName(const std::string &name) const; 00233 00243 geometry::Position fromParentFrame(const geometry::Position &position) const; 00244 00254 geometry::Pose fromParentFrame(const geometry::Pose &pose) const; 00255 00256 private: 00258 std::string name_, frame_id_; 00260 geometry::Pose pose_; 00262 double width_, depth_, height_; 00264 std::vector<std::string> aliases_; 00265 }; 00266 00267 } 00268 } 00269 } 00270 } 00271 00272 #endif