qnode.hpp
Go to the documentation of this file.
00001 
00008 /*****************************************************************************
00009 ** Ifdefs
00010 *****************************************************************************/
00011 
00012 #ifndef tibi_dabo_gui_QNODE_HPP_
00013 #define tibi_dabo_gui_QNODE_HPP_
00014 
00015 /*****************************************************************************
00016 ** Includes
00017 *****************************************************************************/
00018 
00019 #include <ros/ros.h>
00020 #include <string>
00021 #include <QThread>
00022 #include <QStringListModel>
00023 #include <QMutex>
00024 
00025 #include <sensor_msgs/Joy.h>
00026 #include <sensor_msgs/Image.h>
00027 #include <face_detector_mono/RectArray.h>
00028 #include <wiimote/State.h>
00029 
00030 #include <actionlib/client/simple_action_client.h>
00031 #include <actionlib/client/terminal_state.h>
00032 #include <tibi_dabo_msgs/sequenceAction.h>
00033 #include <tibi_dabo_msgs/haodAction.h>
00034 
00035 /*****************************************************************************
00036 ** Namespaces
00037 *****************************************************************************/
00038 
00039 namespace tibi_dabo_gui {
00040 
00041   struct qa_data
00042   {
00043     std::vector<std::string> question;
00044     std::vector<std::string> answer;
00045     std::vector<std::string> answer_hri;
00046   };
00047 
00048 /*****************************************************************************
00049 ** Class
00050 *****************************************************************************/
00051 
00052 class QNode : public QThread {
00053     Q_OBJECT
00054 public:
00055   QNode(int argc, char** argv );
00056   virtual ~QNode();
00057   bool initialize();
00058   void run();
00059 
00060   void buttonPressed(int button);
00061   bool getImage(uchar* & data, int & width, int & height, std::string & encoding);
00062   bool getImageDetect(uchar* & data, int & width, int & height, std::string & encoding);
00063   void setLanguage(int index);
00064   std::string processAnswer(int question);
00065   void setImagePoint(std::vector<int> point);
00066   void haodButtonPressed(int button);
00067   bool needAssistance();
00068   void cancelHri();
00069   bool haodRunning();
00070   std::vector<std::vector<int> > getRects();
00071   std::vector<struct qa_data> qas;
00072   //std::vector<std::vector<int> > rects;
00073 
00074 Q_SIGNALS:
00075   void rosShutdown();
00076 
00077 private:
00078   int init_argc;
00079   char** init_argv;
00080   QMutex mutex;
00081 
00082   ros::Publisher joy_publisher;
00083 
00084   void imageCallback(const sensor_msgs::Image::ConstPtr &msg);
00085   ros::Subscriber image_subscriber;
00086   void imageDetectCallback(const sensor_msgs::Image::ConstPtr &msg);
00087   ros::Subscriber imageDetect_subscriber;
00088   void facesCallback(const face_detector_mono::RectArray::ConstPtr &msg);
00089   ros::Subscriber faces_subscriber;
00090 
00091   //hri action client
00092   actionlib::SimpleActionClient<tibi_dabo_msgs::sequenceAction> hri_action;
00093   tibi_dabo_msgs::sequenceGoal hri_goal;
00094   void hriMakeActionRequest(std::vector<std::string> &xml_files);
00095   void hriDone(const actionlib::SimpleClientGoalState& state,  const tibi_dabo_msgs::sequenceResultConstPtr& result);
00096   void hriActive();
00097   void hriFeedback(const tibi_dabo_msgs::sequenceFeedbackConstPtr& feedback);
00098   bool hri_active;
00099 
00100   //haod action client
00101   actionlib::SimpleActionClient<tibi_dabo_msgs::haodAction> haod_action;
00102   tibi_dabo_msgs::haodGoal haod_goal;
00103   void haodMakeActionRequest(std::vector<int> &point);
00104   void haodDone(const actionlib::SimpleClientGoalState& state,  const tibi_dabo_msgs::haodResultConstPtr& result);
00105   void haodActive();
00106   void haodFeedback(const tibi_dabo_msgs::haodFeedbackConstPtr& feedback);
00107   bool haod_active;
00108 
00109   bool imageReady;
00110   sensor_msgs::Image image;
00111   bool imageDetectReady;
00112   sensor_msgs::Image imageDetect;
00113   std::vector< std::vector<std::string> > answers;
00114   std::vector< std::vector<std::string> > answers_hri;
00115   typedef enum {TTS_=0,LEDS_=1,HEAD_=2,LEFT_ARM_=3,RIGHT_ARM_=4} clients;
00116   static const int NUM_CLIENTS=RIGHT_ARM_-TTS_+1;
00117   std::vector<std::string> xml_files;
00118 
00119   int language;
00120   std::string hri_prefix;
00121   bool assistance;
00122 
00123   void setHriPrefix(int index);
00124   void loadQuestions();
00125   std::vector<std::vector<int> > rects;
00126 };
00127 
00128 }  // namespace tibi_dabo_gui
00129 
00130 #endif /* tibi_dabo_gui_QNODE_HPP_ */


tibi_dabo_gui
Author(s): fherrero
autogenerated on Fri Dec 6 2013 22:01:34