@@ -86,50 +86,6 @@ SensorMap parseSensors(const std::string &xml_string, const SensorParserMap &par
86
86
return parseSensors (xml_doc, parsers);
87
87
}
88
88
89
-
90
- /* * retrieve list of sensor tags that are handled by given parser */
91
- static std::set<std::string>
92
- getSensorTags (pluginlib::ClassLoader<urdf::SensorParser> &loader,
93
- const std::string &class_id)
94
- {
95
- const std::string &manifest = loader.getPluginManifestPath (class_id);
96
-
97
- TiXmlDocument doc;
98
- doc.LoadFile (manifest);
99
- TiXmlElement *library = doc.RootElement ();
100
- if (!library)
101
- throw std::runtime_error (" Skipping manifest '" + manifest + " ' which failed to parse" );
102
-
103
- if (library->ValueStr () != " library" &&
104
- library->ValueStr () != " class_libraries" )
105
- throw std::runtime_error (" Expected \" library\" or \" class_libraries\" as the root tag."
106
- " Found: " + library->ValueStr ());
107
-
108
- if (library->ValueStr () == " class_libraries" )
109
- library = library->FirstChildElement (" library" );
110
-
111
- std::set<std::string> results;
112
- for (; library; library = library->FirstChildElement (" library" ))
113
- {
114
- for (TiXmlElement* class_element = library->FirstChildElement (" class" );
115
- class_element; class_element = class_element->NextSiblingElement ( " class" ))
116
- {
117
- // TODO: filter by class_id
118
- ROS_DEBUG_STREAM (" sensor parser: " << class_id);
119
- TiXmlElement* tags = class_element->FirstChildElement (" tags" );
120
- for (TiXmlElement* tag = tags ? tags->FirstChildElement () : NULL ;
121
- tag; tag = tag->NextSiblingElement ())
122
- {
123
- ROS_DEBUG_STREAM (" sensor tag: " << tag->Value ());
124
- results.insert (tag->Value ());
125
- }
126
- }
127
- }
128
- if (results.empty ())
129
- throw std::runtime_error (" plugin manifest misses valid sensor tags" );
130
- return results;
131
- }
132
-
133
89
const SensorParserMap& getDefaultSensorParserMap ()
134
90
{
135
91
static boost::mutex PARSER_PLUGIN_LOCK;
@@ -145,33 +101,14 @@ const SensorParserMap& getDefaultSensorParserMap()
145
101
const std::vector<std::string> &classes = PARSER_PLUGIN_LOADER->getDeclaredClasses ();
146
102
for (std::size_t i = 0 ; i < classes.size () ; ++i)
147
103
{
148
- std::set<std::string> sensor_tags;
149
- try {
150
- sensor_tags = getSensorTags (*PARSER_PLUGIN_LOADER, classes[i]);
151
- } catch (const std::runtime_error &e) {
152
- ROS_ERROR_STREAM (e.what ());
153
- continue ;
154
- }
155
-
156
104
urdf::SensorParserSharedPtr parser;
157
105
try {
158
106
parser = PARSER_PLUGIN_LOADER->createInstance (classes[i]);
159
107
} catch (const pluginlib::PluginlibException& ex) {
160
108
ROS_ERROR_STREAM (" Failed to create sensor parser: " << classes[i] << " \n " << ex.what ());
161
109
}
162
-
163
- for (std::set<std::string>::const_iterator
164
- it = sensor_tags.begin (), end=sensor_tags.end (); it != end; ++it)
165
- {
166
- if (defaultParserMap.find (*it) == defaultParserMap.end ())
167
- {
168
- defaultParserMap.insert (std::make_pair (*it, parser));
169
- }
170
- else
171
- {
172
- ROS_WARN (" ambiguous sensor parser for sensor %s" , it->c_str ());
173
- }
174
- }
110
+ defaultParserMap.insert (std::make_pair (classes[i], parser));
111
+ ROS_DEBUG_STREAM (" added sensor parser: " << classes[i]);
175
112
}
176
113
if (defaultParserMap.empty ())
177
114
ROS_WARN_STREAM (" No sensor parsers found" );
0 commit comments