00001 00021 #ifndef OBJECTDATABASE_H_ 00022 #define OBJECTDATABASE_H_ 00023 00024 #include <string> 00025 #include <boost/filesystem.hpp> 00026 #include <ros/ros.h> 00027 #include <ros/package.h> 00028 #include "typedef.h" 00029 #include "ObjectDatabaseConfig.h" 00030 #include "asr_object_database/RecognizerList.h" 00031 #include "asr_object_database/ObjectTypeList.h" 00032 #include "asr_object_database/ObjectMetaData.h" 00033 #include "asr_object_database/RecognizerListMeshes.h" 00034 #include "asr_object_database/ObjectTypeGenerator.h" 00035 00036 00037 namespace object_database 00038 { 00039 using namespace asr_object_database; 00040 00041 namespace fs = boost::filesystem; 00042 class ObjectDatabase 00043 { 00047 ros::NodeHandle mGlobalNodeHandle; 00048 00052 ros::ServiceServer mRecognizerListServiceHandle; 00053 00057 ros::ServiceServer mRecognizerListMeshesServiceHandle; 00058 00062 ros::ServiceServer mObjectTypeListServiceHandle; 00063 00067 ros::ServiceServer mObjectMetaDataServiceHandle; 00068 00072 ros::ServiceServer mObjectTypeGeneratorServiceHandle; 00073 00077 fs::path mConfigurationFilePath; 00078 00082 ObjectDatabaseConfig mConfig; 00083 public: 00088 ObjectDatabase(fs::path configurationFilePath); 00089 00093 virtual ~ObjectDatabase() 00094 {} 00095 00101 bool processRecognizerListRequest(RecognizerList::Request &req, RecognizerList::Response &res); 00102 00108 bool processObjectTypeListRequest(ObjectTypeList::Request &req, ObjectTypeList::Response &res); 00109 00115 bool processObjectMetaDataRequest(ObjectMetaData::Request &req, ObjectMetaData::Response &res); 00116 00122 bool processRecognizerListMeshesRequest(RecognizerListMeshes::Request &req, RecognizerListMeshes::Response &res); 00123 00130 bool processObjectTypeGeneratorRequest(ObjectTypeGenerator::Request &req, ObjectTypeGenerator::Response &res); 00131 00132 00137 void readAllObjectDatabaseRecognizers(); 00138 }; 00139 } 00140 00141 00142 #endif /* OBJECTDATABASE_H_ */