Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef BLOB_H
00020 #define BLOB_H
00021
00022 #include "Descriptor.h"
00023 #include <sensor_msgs/PointCloud.h>
00024
00025 #define XML_NODE_SEGMENTPROTOTYPE "SegmentPrototype"
00026
00027 namespace cop
00028 {
00029
00030 sensor_msgs::PointCloud cloud_trans (LocatedObjectID_t swissranger_jlo_id, LocatedObjectID_t ptu_base_jlo_id, const sensor_msgs::PointCloud& cloud_in);
00031
00032 class SegmentPrototype :
00033 public Descriptor
00034 {
00035 public:
00036 SegmentPrototype();
00037 SegmentPrototype(std::string sensor_frame, const sensor_msgs::PointCloud& pcd, std::string classname, ObjectID_t id, ObjectID_t class_id);
00038
00039
00040 void SaveTo(XMLTag* tag);
00041 virtual void Show(RelPose* pose, Sensor* cam);
00042
00043 virtual std::string GetNodeName() const{return XML_NODE_SEGMENTPROTOTYPE;}
00044 virtual ElemType_t GetType() const{return DESCRIPTOR_SEGMPROTO;}
00045
00046 LocatedObjectID_t GetFrameId();
00047 LocatedObjectID_t GetSensorFrameId(const LocatedObjectID_t &id);
00048 void UpdateRefFrame();
00049
00053
00054
00055
00056
00057
00058
00059 void SetTable(const LocatedObjectID_t &id, const sensor_msgs::PointCloud &pcd){m_LastTableID = id; m_mapPCD[id] = pcd;}
00060
00061
00062
00063
00064
00065
00066 std::pair<LocatedObjectID_t, sensor_msgs::PointCloud> GetTable()
00067 {
00068 std::pair<LocatedObjectID_t, sensor_msgs::PointCloud> pair;
00069 pair.first = m_LastTableID;
00070 pair.second = m_mapPCD[m_LastTableID];
00071 return pair;}
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081 void SetPointCloud(const LocatedObjectID_t &id, const sensor_msgs::PointCloud &pcd, const LocatedObjectID_t &sensor_id);
00086 sensor_msgs::PointCloud GetPointCloud(LocatedObjectID_t id){if(m_mapPCD.find(id) != m_mapPCD.end())return m_mapPCD[id]; else return sensor_msgs::PointCloud();}
00087
00091 void ClearPointClouds(){m_mapPCD.clear();}
00095 virtual bool GetShape(GeometricShape &objectShape) const;
00096
00097
00098 virtual Elem* Duplicate(bool bStaticCopy);
00099 virtual void PropagatePose(RelPose* pose);
00100 protected:
00101 virtual void SetData(XMLTag* tag);
00102 public:
00103 ~SegmentPrototype(void);
00104
00105 private:
00106 std::map<LocatedObjectID_t, sensor_msgs::PointCloud> m_mapPCD;
00107 LocatedObjectID_t m_LastTableID;
00108
00109 std::string m_relFrame;
00110 LocatedObjectID_t m_frameID;
00111 RelPose* m_relPoseOfRefFrame;
00112
00113 std::map<LocatedObjectID_t, LocatedObjectID_t> m_sensorFrameID;
00114 public:
00115 double m_covRotX;
00116 double m_covRotY;
00117 double m_covRotZ;
00118 bool m_parallel;
00119 };
00120 }
00121 #endif