manager.h
Go to the documentation of this file.
1 /**************************************************************************************************
2  Software License Agreement (BSD License)
3 
4  Copyright (c) 2011-2013, LAR toolkit developers - University of Aveiro - http://lars.mec.ua.pt
5  All rights reserved.
6 
7  Redistribution and use in source and binary forms, with or without modification, are permitted
8  provided that the following conditions are met:
9 
10  *Redistributions of source code must retain the above copyright notice, this list of
11  conditions and the following disclaimer.
12  *Redistributions in binary form must reproduce the above copyright notice, this list of
13  conditions and the following disclaimer in the documentation and/or other materials provided
14  with the distribution.
15  *Neither the name of the University of Aveiro nor the names of its contributors may be used to
16  endorse or promote products derived from this software without specific prior written permission.
17 
18  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
19  IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
20  FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
21  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
24  IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
25  OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 ***************************************************************************************************/
27 #ifndef _MANAGER_H_
28 #define _MANAGER_H_
29 
35 #include <ros/ros.h>
36 #include <iostream>
37 
38 #include <atlascar_base/ManagerStatus.h>
39 #include <atlascar_base/ManagerCommand.h>
40 
41 #include <atlascar_base/GearboxStatus.h>
42 #include <atlascar_base/GearboxCommand.h>
43 
44 #include <human_driver_monitor/HumanDriverMonitorStatus.h>
45 #include <odometer/OdometerStatus.h>
46 
47 #include <atlascar_base/ThrottleStatus.h>
48 #include <atlascar_base/ThrottleCommand.h>
49 
50 #include <atlascar_base/PlcStatus.h>
51 #include <atlascar_base/PlcCommand.h>
52 
53 #include <topic_priority/topic_priority.h>
54 
55 using namespace std;
56 
57 namespace atlascar_base
58 {
59 
72 class Manager
73 {
74  public:
95  Manager(const ros::NodeHandle& nh);
96 
102  ~Manager();
103 
109  void init();
110 
117  void setupMessaging();
118 
124  void loop();
134  typedef enum
135  {
138 
142  MOVING_TO_STOPPED
143  } CarState;
144 
150  typedef enum
151  {
154  THIRD
155  } sequentialState;
156 
157 
158  private:
159 
165  void commandCallback(const atlascar_base::ManagerCommandPtr& command);
166 
172  CarState getCurrentState();
173 
179  void plcStatusCallback(const atlascar_base::PlcStatusPtr& status);
180 
186  void driverStatusCallback(const human_driver_monitor::HumanDriverMonitorStatusPtr& status);
187 
193  void odometerStatusCallback(const odometer::OdometerStatusPtr& status);
194 
200  void gearboxStatusCallback(const atlascar_base::GearboxStatusPtr& status);
201 
207  void throttleStatusCallback(const atlascar_base::ThrottleStatusPtr& status);
208 
214  void toOutgoingMessages(const atlascar_base::ManagerCommandPtr& command);
215 
221  void stateManager(const atlascar_base::ManagerCommandPtr& command);
222 
228  void stoppedToMoving();
229 
235  void movingToStopped();
236 
237 
244 
247  ros::NodeHandle nh_;
249  ros::Subscriber command_sub_;
251  ros::Subscriber status_plc_sub_;
253  ros::Subscriber status_driver_sub_;
255  ros::Subscriber status_odometer_sub_;
257  ros::Subscriber status_gearbox_sub_;
259  ros::Subscriber status_throttle_sub_;
261  ros::Publisher status_pub_;
263  ros::Publisher command_plc_pub_;
265  ros::Publisher command_gearbox_pub_;
267  ros::Publisher command_throttle_pub_;
269  TopicQueuePriority<atlascar_base::ManagerCommandPtr> command_queue_;
271  bool verbose_;
273  atlascar_base::ManagerCommandPtr command_;
275  atlascar_base::ManagerCommandPtr safety_command_;
277  atlascar_base::ManagerStatus status_;
279  atlascar_base::GearboxCommand gearbox_command_;
281  atlascar_base::GearboxStatus gearbox_status_;
283  atlascar_base::PlcCommand plc_command_;
285  atlascar_base::PlcStatus plc_status_;
287  human_driver_monitor::HumanDriverMonitorStatus driver_status_;
289  atlascar_base::ThrottleCommand throttle_command_;
291  atlascar_base::ThrottleStatus throttle_status_;
293  odometer::OdometerStatus odometer_status_;
294 };
295 
296 }
297 
298 #endif
bool verbose_
Verbose mode.
Definition: manager.h:271
atlascar_base::GearboxCommand gearbox_command_
Gearbox command message.
Definition: manager.h:279
CarState
Car state machine status.
Definition: manager.h:134
odometer::OdometerStatus odometer_status_
Velocity status message.
Definition: manager.h:293
ros::Publisher command_throttle_pub_
Throttle command publisher.
Definition: manager.h:267
ros::Subscriber command_sub_
Ros command subscriber.
Definition: manager.h:249
atlascar_base::PlcCommand plc_command_
Plc command message.
Definition: manager.h:283
CarState current_state
Current state of state machine.
Definition: manager.h:243
ros::Publisher command_plc_pub_
Plc command publisher.
Definition: manager.h:263
atlascar_base::ManagerStatus status_
Status message.
Definition: manager.h:277
ros::Publisher command_gearbox_pub_
Gearbox command publisher.
Definition: manager.h:265
ros::Subscriber status_gearbox_sub_
Gearbox status subscriber.
Definition: manager.h:257
atlascar_base::ThrottleStatus throttle_status_
Throttle status message.
Definition: manager.h:291
atlascar_base::ThrottleCommand throttle_command_
Throttle command message.
Definition: manager.h:289
TopicQueuePriority< atlascar_base::ManagerCommandPtr > command_queue_
Command queue holding class.
Definition: manager.h:269
sequentialState
Car stages.
Definition: manager.h:150
ros::Subscriber status_odometer_sub_
Velocity status subscriber.
Definition: manager.h:255
ros::Subscriber status_driver_sub_
Driver status subscriber.
Definition: manager.h:253
ros::Subscriber status_plc_sub_
Plc status subscriber.
Definition: manager.h:251
human_driver_monitor::HumanDriverMonitorStatus driver_status_
Driver status message.
Definition: manager.h:287
ros::Publisher status_pub_
Ros status publisher.
Definition: manager.h:261
ros::NodeHandle nh_
Ros node handler.
Definition: manager.h:247
sequentialState mts_state
Moving to stopped state.
Definition: manager.h:241
atlascar_base::ManagerCommandPtr safety_command_
Safety command message pointer.
Definition: manager.h:275
sequentialState stm_state
Stopped to moving state.
Definition: manager.h:239
atlascar_base::ManagerCommandPtr command_
Command message pointer.
Definition: manager.h:273
atlascar_base::PlcStatus plc_status_
Plc status message.
Definition: manager.h:285
Global management and control class.
Definition: manager.h:72
atlascar_base::GearboxStatus gearbox_status_
Gearbox status message.
Definition: manager.h:281
ros::Subscriber status_throttle_sub_
Throttle status subscriber.
Definition: manager.h:259


atlascar_base
Author(s): Jorge Almeida, Sérgio Pinho, Miguel Oliveira, Pedro Salvado, Andre Oliveira and Pedro Pinheiro
autogenerated on Mon Mar 2 2015 01:31:23