Statistics
| Branch: | Revision:

root / scout / libscout / src / behaviors / Odometry.h @ d7e1b0d8

History | View | Annotate | Download (1.54 KB)

1
#ifndef _ODOMETRY_H_
2
#define _ODOMETRY_H_
3

    
4
#include "../Behavior.h"
5
#include "../Sensors.h"
6
#include "messages/ScoutPosition.h"
7
#include "../helper_classes/ScoutPosition.h"
8

    
9
#define WHEEL_RADIUS  .2
10
#define WHEEL_CIRCUM  (2*M_PI*WHEEL_RADIUS)
11
#define WHEEL_BASE    1.2
12
#define ENCODER_COUNT (2*WHEEL_RADIUS*350*M_PI/WHEEL_BASE)
13
#define DIST_PER_TICK (WHEEL_CIRCUM/ENCODER_COUNT)
14

    
15
class Odometry : public Behavior {
16

    
17
    public:
18

    
19
        /** Set up the odometry node and prepare communcations over ROS */
20
        Odometry(std::string scoutname, Sensors* sensors);
21

    
22
        /** Set up the odometry node and prepare communcations over ROS */
23
        Odometry(std::string scoutname, std::string behavior_name, Sensors* sensors);
24

    
25
        /** Query encoders and estimate position based on encoder reading */
26
        void get_position();
27

    
28
        /** Gets scout position and prints to screen */
29
        void run();
30

    
31
    protected:
32

    
33
        virtual void wait(float duration);
34
        pos* scout_pos;
35

    
36
    private:
37

    
38
        /** ROS publisher and client declaration */
39
        ros::NodeHandle node;
40
        ros::Publisher scout_position;
41
        ros::ServiceClient query_encoders_client;
42
        messages::ScoutPosition position;
43

    
44
        std::string name;
45

    
46
        float msg_time_in;
47

    
48
        int motor_fl_dist;
49
        int motor_fr_dist;
50
        int motor_bl_dist;
51
        int motor_br_dist;
52

    
53
        unsigned int motor_fl_ticks;
54
        unsigned int motor_fr_ticks;
55
        unsigned int motor_bl_ticks;
56
        unsigned int motor_br_ticks;
57
        float scout_theta;
58
};
59

    
60
#endif