00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 
00025 
00026 
00033 #ifndef _COIMBRA_VISUALIZATION_RVIZ_H_
00034 #define _COIMBRA_VISUALIZATION_RVIZ_H_
00035 
00036 #include <vector>
00037 
00045 class Markers
00046 {
00047         public:         
00048                 void update(visualization_msgs::Marker& marker)
00049                 {
00050                         for(uint i=0;i<markers.size();++i)
00051                                 if(markers[i].ns==marker.ns && markers[i].id==marker.id)
00052                                 {
00053                                         markers.erase(markers.begin()+i);
00054                                         break;
00055                                 }
00056                                 
00057                         markers.push_back(marker);
00058                 }
00059                 
00060                 void decrement(void)
00061                 {
00062                         for(uint i=0;i<markers.size();++i)
00063                         {
00064                                 switch(markers[i].action)
00065                                 {
00066                                         case visualization_msgs::Marker::ADD:
00067                                                 markers[i].action = visualization_msgs::Marker::DELETE;
00068                                                 break;
00069                                         case visualization_msgs::Marker::DELETE:
00070                                                 markers[i].action = -1;
00071                                                 break;
00072                                 }
00073                         }
00074                 }
00075                 
00076                 void clean(void)
00077                 {
00078                         vector<visualization_msgs::Marker> new_markers;
00079 
00080                         for(uint i=0;i<markers.size();++i)
00081                                 if(markers[i].action!=-1)
00082                                         new_markers.push_back(markers[i]);
00083                                 
00084                         markers=new_markers;
00085                 }
00086 
00087                 vector<visualization_msgs::Marker> getOutgoingMarkers(void)
00088                 {
00089                         vector<visualization_msgs::Marker> m_out(markers);
00090                         return markers;
00091                 }
00092                 
00093         private:
00094                 
00095                 vector<visualization_msgs::Marker> markers;
00096 };
00097 
00098 
00114 vector<visualization_msgs::Marker> createTargetMarkers( vector<ClusterPtr>& clusters , vector<ClusterPtr>& clusters_Premebida ,  vector<ClusterPtr>& clusters_Dietmayer, vector<ClusterPtr>& clusters_Santos, vector<ClusterPtr>& clusters_ABD ,vector<ClusterPtr>& clusters_nn , vector<ClusterPtr>&  clusters_GT  );
00115 
00116 #endif
00117 
00118