22 #include "ros/console.h"
23 #include "geometry_msgs/Point.h"
24 #include "geometry_msgs/Vector3.h"
25 #include "geometry_msgs/Twist.h"
26 #include "robot_game/rg_check_srv.h"
27 #include "robot_game/rg_get_target_srv.h"
28 #include "robot_game/rg_get_vel_srv.h"
35 #define TOLERANCE 0.1f
53 return sqrt( pow(P2.x-P1.x, 2.0) + pow(P2.y-P1.y, 2.0) + pow(P2.z-P1.z, 2.0) );
66 return min + (max - min)*( ((
double)rand()) / RAND_MAX );
95 return ( dist <= 0.1f );
135 vel.vel.linear.x =
K * ( initpos.xt.x - initpos.x.x );
136 vel.vel.linear.y =
K * ( initpos.xt.y - initpos.x.y );
137 vel.vel.linear.z = 0.f;
139 vel.vel.angular.x = 0.f;
140 vel.vel.angular.y = 0.f;
141 vel.vel.angular.z = 0.f;
159 int main(
int argc,
char** argv )
161 ros::init( argc, argv,
"rg_services" );
srv_check_target
Service entry point for checking if the target is reached.
srv_get_target
Service entry point for requiring a nwe random target.
geometry_msgs::Point target
int main(int argc, char **argv)
Ask for services, topics, and initialise the node.
double compute_eucledian_distance(geometry_msgs::Point P1, geometry_msgs::Point P2)
Eucledian distance between two points.
bool rg_get_velocity_callback(robot_game::rg_get_vel_srv::Request &initpos, robot_game::rg_get_vel_srv::Response &vel)
Service - generate a twist command.
double rand_range(double min, double max)
Generate a random value within a given range.
bool rg_get_target_callback(robot_game::rg_get_target_srv::Request &limits, robot_game::rg_get_target_srv::Response &target)
Service - get a new random target.
bool rg_check_target_callback(robot_game::rg_check_srv::Request &initpos, robot_game::rg_check_srv::Response &r)
Service - check target.