Final Assignment  1.0
Research Track part 1 - Assignment 2 - RobEng A.A. 2020/2021
points_manager.py
Go to the documentation of this file.
1 #! /usr/bin/env python
2 
3 
19 
20 import rospy
21 from geometry_msgs.msg import Point
22 from final_assignment.srv import get_point, get_pointRequest, get_pointResponse
23 from final_assignment.srv import position_defined, position_definedRequest, position_definedResponse
24 import random
25 from datetime import datetime
26 
27 
28 
29 # --------------------------------- DATA
30 
31 
32 node_name = "points_manager"
33 
34 
35 positions = [ Point(-4,-3,0), Point(-4,2,0), Point(-4,7,0), Point(5,-7, 0), Point(5,-3,0), Point(5,1,0) ]
36 
37 
38 
39 # --------------------------------- SERVICES
40 
41 # server 'get_point'
42 name_get_point = "/get_point"
43 
44 # server 'position_defined'
45 name_position_defined = "/position_defined"
46 
47 
48 
49 
53 def cbk_get_point( req ):
54  global positions
55 
56  to_return = get_pointResponse( )
57  to_return.position = random.choice( positions )
58 
59  return to_return
60 
61 
62 
63 
67 def cbk_point_defined( req ):
68  global positions
69 
70  to_return = position_definedResponse( )
71  to_return.defined = True if ( req.position in positions ) else False
72 
73  return to_return
74 
75 
76 
77 # --------------------------------- NODE
78 
79 
80 def shut_msg():
81  rospy.loginfo( " [points_manager] shutdown" )
82 
83 
84 
85 if __name__ == "__main__":
86  rospy.init_node( node_name )
87  rospy.on_shutdown( shut_msg )
88 
89  random.seed( datetime.now( ) )
90 
91  # advertise the server 'get_point'
92  handler_get_point = rospy.Service( name_get_point, get_point, cbk_get_point )
93  rospy.loginfo( " [points_manager] %s ONLINE.", name_get_point )
94 
95  # advertise the server 'psition_defined'
96  handler_position_defined = rospy.Service( name_position_defined, position_defined, cbk_point_defined )
97  rospy.loginfo( " [points_manager] %s ONLINE.", name_position_defined )
98 
99  rospy.on_shutdown( shut_msg )
100  rospy.spin()
def shut_msg()
shutdown message
def cbk_get_point(req)
get one point randomly
def cbk_point_defined(req)
check is one given point is defined