Hi!
I am working on autonomous exploration, and I am using **move_base** package for navigation tasks.
I wanted to use *make_plan* service of **move_base** package, but it's returning me an empty path even if the destination is reachable if you send it as a goal.
Has anyone faced with the same issue?
Here the code which calls *make_plan* service:
geometry_msgs::PoseStamped Start;
Start.header.seq = 0;
Start.header.stamp = Time(0);
Start.header.frame_id = "map";
Start.pose.position.x = x1;
Start.pose.position.y = y1;
Start.pose.position.z = 0.0;
Start.pose.orientation.x = 0.0;
Start.pose.orientation.y = 0.0;
Start.pose.orientation.w = 1.0;
geometry_msgs::PoseStamped Goal;
Goal.header.seq = 0;
Goal.header.stamp = Time(0);
Goal.header.frame_id = "map";
Goal.pose.position.x = x2;
Goal.pose.position.y = y2;
Goal.pose.position.z = 0.0;
Goal.pose.orientation.x = 0.0;
Goal.pose.orientation.y = 0.0;
Goal.pose.orientation.w = 1.0;
ServiceClient check_path = nh_.serviceClient("make_plan");
nav_msgs::GetPlan srv;
srv.request.start = Start;
srv.request.goal = Goal;
srv.request.tolerance = 1.5;
ROS_INFO("Make plan: %d", (check_path.call(srv) ? 1 : 0));
ROS_INFO("Plan size: %d", srv.response.plan.poses.size());
Here is the code to send *MoveBaseGoal* which works and robot moves to the same destination:
move_base_msgs::MoveBaseGoal move_goal;
move_goal.target_pose.header.frame_id = "map";
move_goal.target_pose.header.stamp = Time(0);
move_goal.target_pose.pose.position.x = x;
move_goal.target_pose.pose.position.y = y;
move_goal.target_pose.pose.position.z = 0.0;
move_goal.target_pose.pose.orientation.x = 0.0;
move_goal.target_pose.pose.orientation.y = 0.0;
move_goal.target_pose.pose.orientation.w = 1.0;
ROS_INFO("Sending goal");
ac_.sendGoal(move_goal,
boost::bind(&ExploreAction::doneCb, this, _1, _2));
↧