Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008 #ifndef OBJECTMODELPARSER_H_
00009 #define OBJECTMODELPARSER_H_
00010
00011 #include "wire/core/IStateEstimator.h"
00012
00013
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