39 std::vector<boost::shared_ptr<TreeNode> > clusters;
49 while(clusters.size() > 1)
58 for(
unsigned int i = 0; i < clusters.size(); i++)
60 if(clusters[i]->mObjectSet->mIdentifier == cluster->mObjectSet->mIdentifier)
62 clusters.erase(clusters.begin() + i);
70 for(
unsigned int i = 0; i < clusters.size(); i++)
72 if(clusters[i]->mObjectSet->mIdentifier == child->mObjectSet->mIdentifier)
74 clusters.erase(clusters.begin() + i);
81 clusters.push_back(cluster);
95 std::vector<boost::shared_ptr<TreeNode> > clusters;
107 if(objectSet->objects[0]->type.compare(pType) == 0)
110 pRoot.reset(
new TreeNode(objectSet));
122 while(clusters.size() > 0)
125 std::vector<boost::shared_ptr<TreeNode> > assignedNodes;
128 std::queue<boost::shared_ptr<TreeNode> > nodesToVisit;
129 nodesToVisit.push(pRoot);
131 while(nodesToVisit.size() > 0)
137 nodesToVisit.push(child);
139 assignedNodes.push_back(node);
144 clusters.erase(clusters.begin());
156 std::queue<boost::shared_ptr<TreeNode> > nodesToVisitAgain;
157 nodesToVisitAgain.push(pRoot);
159 while(nodesToVisitAgain.size() > 0)
162 nodesToVisitAgain.pop();
166 node->addChild(nodeToAssign);
171 nodesToVisitAgain.push(child);
174 pRoot->addChild(nodeToAssign);
175 ROS_INFO(
"Scene tree: No matching candidate found. Appended to root node.");
194 heuristic->apply(pClusters);
211 heuristic->apply(pClusters, pChild);
221 for(
unsigned int i = 0; i < pObjectSets.
mObjectSets.size(); i++)
223 if (pObjectSets.
mObjectSets[i]->objects.size() == 0 )
void buildTree(ObjectSetList pObjectSets, boost::shared_ptr< TreeNode > &pRoot)
HeuristicalTreeGenerator()
std::vector< boost::shared_ptr< ISM::ObjectSet > > mObjectSets
std::vector< boost::shared_ptr< AbstractHeuristic > > mHeuristics
void deleteEmptyObjectSets(ObjectSetList &pObjectSets)
void addHeuristic(boost::shared_ptr< AbstractHeuristic > pHeuristic)
void evaluateHeuristics(std::vector< boost::shared_ptr< TreeNode > > pClusters)
~HeuristicalTreeGenerator()