rosNodeThread.h 2.39 KB
Newer Older
roangel's avatar
roangel committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//    Creates a thread that runs the ros node.
//
//    Copyright (C) 2017  Angel Romero
//
//    This program is free software: you can redistribute it and/or modify
//    it under the terms of the GNU General Public License as published by
//    the Free Software Foundation, either version 3 of the License, or
//    (at your option) any later version.
//
//    This program is distributed in the hope that it will be useful,
//    but WITHOUT ANY WARRANTY; without even the implied warranty of
//    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//    GNU General Public License for more details.
//
//    You should have received a copy of the GNU General Public License
//    along with this program.  If not, see <http://www.gnu.org/licenses/>.

18
19
20
21
22
23
24
25
26
27
28
29
30
#ifndef ___ROSNODETHREAD_H___
#define ___ROSNODETHREAD_H___

#include <QtCore>
#include <QThread>
#include <QStringList>
#include <stdlib.h>
#include <QMutex>
#include <iostream>
#include "assert.h"

#include <ros/ros.h>
#include <ros/network.h>
roangel's avatar
roangel committed
31
#include "d_fall_pps/UnlabeledMarker.h"
muelmarc's avatar
merging    
muelmarc committed
32
#include "d_fall_pps/CrazyflieData.h"
33
#include "d_fall_pps/CrazyfliePositionData.h"
muelmarc's avatar
merging    
muelmarc committed
34
#include "d_fall_pps/ViconData.h"
35

36
37
#include <std_msgs/Int32MultiArray.h>

38
39
using namespace d_fall_pps;

muelmarc's avatar
merging    
muelmarc committed
40
typedef ViconData::ConstPtr ptrToMessage;
41
42
43
44

Q_DECLARE_METATYPE(ptrToMessage)


45
46
47
class rosNodeThread : public QObject {
	Q_OBJECT
public:
48
    explicit rosNodeThread(int argc, char **pArgv, const char * node_name, QObject *parent = 0);
49
50
51
52
    virtual ~rosNodeThread();

    bool init();

roangel's avatar
roangel committed
53
    // void messageCallback(const ViconData& data);
muelmarc's avatar
merging    
muelmarc committed
54
    void messageCallback(const ptrToMessage& p_msg);
55
56
    void studentIDCallback(const std_msgs::Int32MultiArray &ids);
    void positionDataCallback(const CrazyfliePositionData& data);
57

58
    ros::ServiceClient m_read_db_client;
59
60
    ros::ServiceClient m_update_db_client;
    ros::ServiceClient m_command_db_client;
61

62
signals:
roangel's avatar
roangel committed
63

64
    void newViconData(const ptrToMessage& p_msg);
65
66
    void newStudentIDs(const std_msgs::Int32MultiArray &ids);
    void newPositionData(const CrazyfliePositionData& data);
67
68
69
70

public slots:
    void run();

71
72
73
private:
    int m_Init_argc;
    char** m_pInit_argv;
74
    const char * m_node_name;
75
76
77

    QThread * m_pThread;

78
79
    ViconData m_vicon_data;

tiagos's avatar
tiagos committed
80
    ros::NodeHandle* nh;
81
    ros::Subscriber m_vicon_subscriber;
82
83
    ros::Subscriber studentID_subscriber;
    ros::Subscriber positionData_subscriber;
84
85
86
87
    // ros::Publisher  sim_velocity;
};
#endif