31 from geometry_msgs.msg
import Point
32 from geometry_msgs.msg
import Twist
33 from robot_game.srv
import rg_get_target_srv, rg_get_target_srvResponse
34 from robot_game.srv
import rg_check_srv, rg_check_srvRequest, rg_check_srvResponse
35 from robot_game.srv
import rg_get_vel_srv, rg_get_vel_srvRequest, rg_get_vel_srvResponse
36 from robot_game
import rg_data
39 srv_check_target =
None
50 ret = rg_get_target_srvResponse()
52 ret.xt.x = limits.xmin + random.random() * (limits.xmax - limits.xmin)
53 ret.xt.y = limits.ymin + random.random() * (limits.ymax - limits.ymin)
66 x = data.x.x - data.xt.x
67 y = data.x.y - data.xt.y
69 return rg_check_srvResponse( reached=( math.sqrt(x*x + y*y) < rg_data.tolerance ) )
80 ret = rg_get_vel_srvResponse()
81 k = rg_data.twist_gain
83 ret.vel.linear.x = k * ( data.xt.x - data.x.x )
84 ret.vel.linear.y = k * ( data.xt.y - data.x.y )
85 ret.vel.linear.z = 0.0
87 ret.vel.angular.x = 0.0
88 ret.vel.angular.y = 0.0
89 ret.vel.angular.z = 0.0
97 rospy.loginfo(
"(Robot Game) Services node closed." )
99 if __name__ ==
"__main__":
100 random.seed( datetime.datetime.now() )
103 rospy.init_node(
"rg_services_py" )
106 srv_get_target = rospy.Service( rg_data.srv_name_get_target, rg_get_target_srv, rg_get_target_callback )
107 srv_check_target = rospy.Service( rg_data.srv_name_check_target, rg_check_srv, rg_check_target_callback )
108 srv_get_vel = rospy.Service( rg_data.srv_name_get_velocity, rg_get_vel_srv, rg_get_vel_callback )
111 rospy.on_shutdown( services_on_shutdown )
112 rospy.loginfo(
"(Robot Game) Services started! Spinning..." )
def rg_check_target_callback(data)
Check if the distance between two points is less than a given tolerance.
def rg_get_vel_callback(data)
Check if the distance between two points is less than a given tolerance.
def rg_get_target_callback(limits)
Generate a new random target.
def services_on_shutdown()
Called when shutdown signal is raised.