RCL - RoboCLuedo  v1.0
Francesco Ganci - S4143910 - Experimental Robotics Lab - Assignment 1
cluedo_movement_controller.cpp
Go to the documentation of this file.
1 
2 
45 #include "ros/ros.h"
46 #include "robocluedo_msgs/GoTo.h"
47 #include "std_msgs/Empty.h"
48 #include <iostream>
49 #include <string>
50 
51 #define SERVICE_GO_TO "/go_to"
52 #define PUBLISHER_HINT_SIGNAL "/hint_signal"
53 
54 #define OUTLABEL "[cluedo_movement_controller]"
55 #define OUTLOG std::cout << OUTLABEL << " "
56 #define LOGSQUARE( str ) "[" << str << "] "
57 
58 
59 
61 ros::Publisher* pub_hint_signal;
62 
63 
64 
65 
79 bool GoToCallback( robocluedo_msgs::GoTo::Request& where, robocluedo_msgs::GoTo::Response& success )
80 {
81  // "go to" the given position
82  (ros::Duration(1)).sleep();
83  ROS_INFO( "%s position reached -> %s", OUTLABEL, where.where.c_str() );
84 
85  // signal the event to the oracle
86  ROS_INFO( "%s issuing signal to the Oracle...", OUTLABEL );
87  pub_hint_signal->publish( std_msgs::Empty( ) );
88 
89  // return success
90  success.success = true;
91  return true;
92 
93 }
94 
95 
96 
97 
104 int main( int argc, char* argv[] )
105 {
106  ros::init( argc, argv, "cluedo_movement_controller" );
107  ros::NodeHandle nh;
108 
109  // expose the service go_to
110  OUTLOG << "Advertising service " << LOGSQUARE( SERVICE_GO_TO ) << "..." << std::endl;
111  ros::ServiceServer srv_goto = nh.advertiseService( SERVICE_GO_TO, GoToCallback );
112  OUTLOG << "Advertising service " << LOGSQUARE( SERVICE_GO_TO ) << "... OK" << std::endl;
113 
114  // publisher to the Orace
115  OUTLOG << "Creating publisher " << LOGSQUARE( PUBLISHER_HINT_SIGNAL ) << "..." << std::endl;
116  ros::Publisher pub = nh.advertise<std_msgs::Empty>( PUBLISHER_HINT_SIGNAL, 1000 );
117  OUTLOG << "Creating publisher " << LOGSQUARE( PUBLISHER_HINT_SIGNAL ) << "... OK" << std::endl;
118  pub_hint_signal = &pub;
119 
120  // spin
121  OUTLOG << "ready!" << std::endl;
122  ros::spin( );
123 
124  return 0;
125 }
GoToCallback
bool GoToCallback(robocluedo_msgs::GoTo::Request &where, robocluedo_msgs::GoTo::Response &success)
implementation of service SERVICE_INTERFACE_FIND_CONSISTENT_HYP
Definition: cluedo_movement_controller.cpp:79
SERVICE_GO_TO
#define SERVICE_GO_TO
Definition: cluedo_movement_controller.cpp:51
LOGSQUARE
#define LOGSQUARE(str)
Definition: cluedo_movement_controller.cpp:56
OUTLABEL
#define OUTLABEL
Definition: cluedo_movement_controller.cpp:54
main
int main(int argc, char *argv[])
ROS node main - cluedo_movement_controller.
Definition: cluedo_movement_controller.cpp:104
OUTLOG
#define OUTLOG
Definition: cluedo_movement_controller.cpp:55
PUBLISHER_HINT_SIGNAL
#define PUBLISHER_HINT_SIGNAL
Definition: cluedo_movement_controller.cpp:52