33 LocalizationQuery::LocalizationQuery(
const std::string& queryName,
34 const std::string& objectClassName,
38 this->queryName = queryName;
39 this->className = objectClassName;
40 this->cycleTimeMS = cycleTimeMS;
41 this->priority = priority;
44 std::vector<LocalizationJobPtr>
45 LocalizationQuery::createJobs(
const ObjectClassMemorySegmentBasePtr& objectClassSegment)
47 std::scoped_lock lock(jobsMutex);
49 std::vector<LocalizationJobPtr> jobs;
51 ObjectClassList objectClasses = objectClassSegment->getClassWithSubclasses(className);
54 std::multimap<std::string, std::string> recognitionMethodMap;
55 std::set<std::string> recognitionMethods;
57 for (ObjectClassList::iterator iter = objectClasses.begin(); iter != objectClasses.end();
62 if (getLocalizableObjectClass(objectClass))
66 std::string recognitionMethod = recognitionWrapper->getRecognitionMethod();
68 recognitionMethodMap.insert(
69 std::make_pair(recognitionMethod, objectClass->getName()));
70 recognitionMethods.insert(recognitionMethod);
75 for (std::set<std::string>::iterator iter = recognitionMethods.begin();
76 iter != recognitionMethods.end();
79 std::string recognitionMethod = *iter;
81 std::pair<std::multimap<std::string, std::string>::iterator,
82 std::multimap<std::string, std::string>::iterator>
84 classesForMethod = recognitionMethodMap.equal_range(recognitionMethod);
86 std::vector<std::string> objectClassNames;
88 for (std::multimap<std::string, std::string>::iterator iter = classesForMethod.first;
89 iter != classesForMethod.second;
92 objectClassNames.push_back(iter->second);
100 job =
new LocalizationStrategyOnce();
104 job =
new LocalizationStrategyRepeated(cycleTimeMS);
107 job->init(
this, recognitionMethod, objectClassNames);
109 jobsFinished[recognitionMethod] =
false;
120 std::scoped_lock lock(jobsMutex);
122 if (jobsFinished.size() == 0)
127 bool finished =
true;
129 for (std::map<std::string, bool>::iterator iter = jobsFinished.begin();
130 iter != jobsFinished.end();
133 finished &= iter->second;
140 LocalizationQuery::setJobFinished(std::string recognitionMethod)
142 std::scoped_lock lock(jobsMutex);
143 jobsFinished[recognitionMethod] =
true;
147 LocalizationQuery::getLocalizableObjectClass(
const EntityBasePtr& entity)
155 objectClass->addWrapper(
new EntityWrappers::ObjectRecognitionWrapper());
156 std::string recognitionMethod = objectRecognitionWrapper->getRecognitionMethod();
159 if ((recognitionMethod !=
"") && (recognitionMethod !=
"<none>"))
165 if (objectClass->getName() !=
"all")
167 ARMARX_WARNING_S <<
"Recognition method for object " << objectClass->getName()
177 <<
" could not be casted to an ObjectClassPtr";