$search
00001 /* 00002 * ObjectModelParser.h 00003 * 00004 * Created on: Mar 6, 2012 00005 * Author: sdries 00006 */ 00007 00008 #ifndef OBJECTMODELPARSER_H_ 00009 #define OBJECTMODELPARSER_H_ 00010 00011 #include "wire/core/IStateEstimator.h" 00012 00013 // xml parser 00014 #include <tinyxml.h> 00015 00016 #include <pluginlib/class_loader.h> 00017 00018 #include <map> 00019 00020 namespace mhf { 00021 00022 class ClassModel; 00023 class KnowledgeDatabase; 00024 00025 class ObjectModelParser { 00026 00027 public: 00028 00029 ObjectModelParser(const std::string& filename); 00030 00031 virtual ~ObjectModelParser(); 00032 00033 bool parse(KnowledgeDatabase& obj_models); 00034 00035 std::string getErrorMessage() const; 00036 00037 protected: 00038 00039 std::string filename_; 00040 00041 std::stringstream parse_errors_; 00042 00043 pluginlib::ClassLoader<IStateEstimator>* object_model_loader_; 00044 00045 std::string getPropertyValue(const TiXmlElement* elem, std::string prop_name, double& value, std::stringstream& error, bool optional = false); 00046 00047 bool getAttributeValue(const TiXmlElement* elem, std::string att_name, std::string& att_value, std::stringstream& error); 00048 00049 bool getAttributeValue(const TiXmlElement* elem, std::string att_name, double& att_value, std::stringstream& error); 00050 00051 bool hasAttributeValue(const TiXmlElement* elem, std::string att_name, std::string att_value); 00052 00053 bool parseStateEstimator(ClassModel* obj_model, const TiXmlElement* elem, std::stringstream& error); 00054 00055 pbl::PDF* parsePDF(const TiXmlElement* elem, std::stringstream& error); 00056 00057 bool getStateEstimatorParameter(const TiXmlElement* elem, const std::string& param_name, double& value); 00058 00059 }; 00060 00061 } 00062 00063 #endif /* OBJECTMODELPARSER_H_ */