00001 #ifndef __RECOGNITION_METHOD_H 00002 #define __RECOGNITION_METHOD_H 00003 00004 #include <boost/smart_ptr.hpp> 00005 #include <map> 00006 #include <mimas/mm_image.h> 00007 #include <mimas/mm_object.h> 00008 #include <mimas/mm_xml_reference.h> 00009 #include "calibration.hh" 00010 #include "match.hh" 00011 #include "mi_scene.hh" 00012 #include "vision_type.hh" 00013 00018 class recognition_method: public mimas::mm_object 00019 { 00020 public: 00031 recognition_method( const calibration_ptr &_calib, 00032 vision_type _type, 00033 const mimas::mm_xml_reference< XalanElement > 00034 &configuration, bool _verbose ); 00042 virtual std::vector< match > recognise 00043 ( const mimas::mm_image< unsigned char > &image, 00044 double timestamp, 00045 mi_scene_ptr scene ) const = 0; 00049 mi_pose convert_pose_to_external( const std::string &type, 00050 const mi_pose &pose ) const 00051 throw (mimas::mm_exception); 00055 mi_pose convert_pose_to_internal( const std::string &type, 00056 const mi_pose &pose ) const 00057 throw (mimas::mm_exception); 00059 vision_type get_type(void) const { return type; } 00060 protected: 00062 void custom_offset( const std::string &type, 00063 const mi_pose &pose ); 00065 calibration_ptr calib; 00067 std::map< std::string, mi_pose > offset; 00069 vision_type type; 00071 bool verbose; 00072 }; 00073 00075 typedef boost::shared_ptr< recognition_method > recognition_method_ptr; 00076 00077 #endif