Project

General

Profile

Revision dbe4fa43

IDdbe4fa43eb62609f4f461cdb5abc650337070025

Added by Leon over 12 years ago

Added CliffSensorControl to libscout with very basic functionality
that hopefully doesn't break anything.
(Please let me know if I did something wrong!)

View differences:

scout/libscout/src/CliffsensorControl.cpp
1
/**
2
 * Copyright (c) 2011 Colony Project
3
 * 
4
 * Permission is hereby granted, free of charge, to any person
5
 * obtaining a copy of this software and associated documentation
6
 * files (the "Software"), to deal in the Software without
7
 * restriction, including without limitation the rights to use,
8
 * copy, modify, merge, publish, distribute, sublicense, and/or sell
9
 * copies of the Software, and to permit persons to whom the
10
 * Software is furnished to do so, subject to the following
11
 * conditions:
12
 * 
13
 * The above copyright notice and this permission notice shall be
14
 * included in all copies or substantial portions of the Software.
15
 * 
16
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
18
 * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
20
 * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
21
 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
22
 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
23
 * OTHER DEALINGS IN THE SOFTWARE.
24
 **/
25

  
26
/**
27
 * @file CliffsensorControl.cpp
28
 * @brief Contains code to control the cliffsensor.
29
 *
30
 * Implementation of functions for cliffsensor use.
31
 *
32
 * @author Colony Project, CMU Robotics Club
33
 * @author Priyanka Deo
34
 * @author Leon Zhang
35
 **/
36

  
37
#include "ros/ros.h"
38
#include "CliffsensorControl.h"
39
#include <cstdlib>
40

  
41
/**
42
 * @defgroup cliffsensor Cliffsensor
43
 * @brief Functions for using the cliffsensors
44
 *
45
 * @{
46
 **/
47

  
48
/**
49
 * @brief Initializes the Cliffsensor module in libscout.
50
 *
51
 * This is the main function for the cliffsensors node. It is run when the node
52
 * starts and initializes the cliffsensors. It then subscribes to the
53
 * cliff_status_changed topics
54
 **/
55
CliffsensorControl::CliffsensorControl(const ros::NodeHandle& libscout_node) : node(libscout_node)
56
{
57
    /* Subscribe to the cliff_status_changed topic */
58
    cliff_status_changed_sub = node.subscribe("cliff_status_changed", 
59
                                        QUEUE_SIZE, changed_cliff_status);
60

  
61
    ros::spin();
62
}
63

  
64
/**
65
 * @brief Changes cliff sensor status
66
 *
67
 * Changes cliff sensor status based on subscription to topic cliff_status_changed
68
 *
69
 * @param msg The message from the cliff_status_changed topic, containing 
70
 * status of all cliff sensors.
71
 *
72
 */
73
void CliffsensorControl::changed_cliff_status(const cliffsensor::cliff_status_changed::ConstPtr& msg)
74
{
75
    front_raw = msg.front_raw;
76
    left_raw = msg.left_raw;
77
    right_raw = msg.right_raw;
78
    return;
79
}
80

  
81
/**
82
 * @brief get the current raw value of the front cliffsensor
83
 * @return the current raw value of the front cliffsensor
84
 */
85
int CliffsensorControl::get_front_raw()
86
{
87
    return front_raw;
88
}
89

  
90
/**
91
 * @brief get the current raw value of the left cliffsensor
92
 * @return the current raw value of the left cliffsensor
93
 */
94
int CliffsensorControl::get_left_raw()
95
{
96
    return left_raw;
97
}
98

  
99
/**
100
 * @brief get the current raw value of the right cliffsensor
101
 * @return the current raw value of the right cliffsensor
102
 */
103
int CliffsensorControl::get_right_raw()
104
{
105
    return right_raw;
106
}
107

  
108
/**
109
 * @brief check if a cliff is being detected
110
 * @return true if there is a cliff, otherwise
111
 */
112
bool CliffsensorControl::check_is_cliff()
113
{
114
    return (front_raw || left_raw || right_raw);
115
}
116

  
117
/** @} **/
scout/libscout/src/CliffsensorControl.h
1
/**
2
 * Copyright (c) 2011 Colony Project
3
 * 
4
 * Permission is hereby granted, free of charge, to any person
5
 * obtaining a copy of this software and associated documentation
6
 * files (the "Software"), to deal in the Software without
7
 * restriction, including without limitation the rights to use,
8
 * copy, modify, merge, publish, distribute, sublicense, and/or sell
9
 * copies of the Software, and to permit persons to whom the
10
 * Software is furnished to do so, subject to the following
11
 * conditions:
12
 * 
13
 * The above copyright notice and this permission notice shall be
14
 * included in all copies or substantial portions of the Software.
15
 * 
16
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
18
 * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
20
 * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
21
 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
22
 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
23
 * OTHER DEALINGS IN THE SOFTWARE.
24
 **/
25

  
26
/**
27
 * @file CliffsensorControl.h
28
 * @brief Contains cliffsensor declarations and functions.
29
 * 
30
 * Contains functions and definitions for the use of
31
 * cliffsensors.
32
 *
33
 * @author Colony Project, CMU Robotics Club
34
 * @author Priyanka Deo
35
 * @author Leon Zhang
36
 **/
37

  
38
#ifndef _CLIFFSENSOR_H_
39
#define _CLIFFSENSOR_H_
40

  
41
#include "cliffsensor/query_cliff.h"
42
#include "cliffsensor/cliff_status_changed.h"
43

  
44
#define CLIFF_DETECTED 0x0
45
#define NO_CLIFF 0x1
46

  
47
class CliffsensorControl
48
{
49
    public:
50
        CliffsensorControl::CliffsensorControl(const ros::NodeHandle& libscout_node) ;
51

  
52
        /** @brief Responds to topic to change cliff sensor status. **/
53
        void changed_cliff_status(const cliffsensor::cliff_status_changed::ConstPtr& msg);
54

  
55
        int get_front_raw();
56
        int get_left_raw();
57
        int get_right_raw();
58
        bool check_is_cliff();
59

  
60
    private:
61
        /* Cliffsensor state variables
62
         */
63
        int front_raw; /**< The current raw value data of the front cliffsensor. */
64
        int left_raw; /**< The current raw value data of the left cliffsensor. */
65
        int right_raw; /**< The current raw value data of the right cliffsensor. */
66

  
67
        ros::Subscriber cliff_status_changed_sub;
68

  
69
}
70

  
71
#endif

Also available in: Unified diff