00001 00018 #include <QMetaType> 00019 00020 00021 #include <QThread> 00022 #ifndef Q_MOC_RUN 00023 #include <asr_msgs/AsrObject.h> 00024 #include <Eigen/Core> 00025 #include <Eigen/Geometry> 00026 #include <ros/ros.h> 00027 #include <tf/transform_datatypes.h> 00028 #include <eigen_conversions/eigen_msg.h> 00029 #include <asr_aruco_marker_recognition/GetRecognizer.h> 00030 #include <asr_aruco_marker_recognition/ReleaseRecognizer.h> 00031 #endif 00032 00033 00034 00035 class Marker_Manager : public QThread 00036 { 00037 Q_OBJECT 00038 public: 00039 Marker_Manager(double timeout, double earlyabort_timeout, QObject *parent=0); 00040 void run(); 00041 void markerRecognitionCallback(const asr_msgs::AsrObject::ConstPtr object); 00042 00043 private: 00044 ros::ServiceClient client_ReleaseRecognizer; 00045 ros::ServiceClient client_GetRecognizer; 00046 ros::NodeHandle nh; 00047 00048 bool releaseRecognizer(); 00049 bool getRecognizer(); 00050 bool recognizedMarker; 00051 ros::Subscriber a; 00052 double timeout; 00053 double earlyabort_timeout; 00054 signals: 00055 void markerFound(std::string markerNumber, const Eigen::Matrix4d &transformation); 00056 }; 00057