ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question
0

OMPL: Planning scene hasn't been set

asked 2011-09-20 09:16:43 -0500

John Hoare gravatar image

When trying to do an example OMPL IK plan (like that in the tutorial) the service call returns with an error code of '0' and the OMPL Planner outputs the error "Planning scene hasn't been set"

Node: /ompl_planning
Time: 1316551688.465001943
Severity: Error
Location: /tmp/buildd/ros-electric-arm-navigation-1.0.5/debian/ros-electric-arm-navigation  /opt/ros/electric/stacks/arm_navigation/ompl_ros_interface /src/ompl_ros_planning_group.cpp:OmplRosPlanningGroup::computePlan:415
Published Topics: /rosout, /ompl_planning/sync_planning_scene/result, /ompl_planning/sync_planning_scene/feedback, /ompl_planning/sync_planning_scene/status

Planning scene hasn't been set

Why is my planning scene not set? I'm using mostly the stock output from the arm wizard (ros electric). I can call the constraint aware IK solver directly without issue.

edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted
2

answered 2011-09-20 09:59:24 -0500

egiljones gravatar image

John,

If you are calling the planner directly (not using move_arm or the planning components visualizer) you'll need to call a service that gets the planning scene to all the arm navigation components - this tutorial offers an explanation of the current system design: http://www.ros.org/wiki/arm_navigation/Tutorials/Understanding%20the%20Planning%20Scene%20architecture

A lot of the diamondback tutorials haven't been updated for this.

Just add this to the tutorial code (I can also give python if that's easier), which will get the current scene from the monitor and pass it to the components:

//above your main
static const std::string SET_PLANNING_SCENE_DIFF_NAME = "/environment_server/set_planning_scene_diff";

  //in your main or some other function
  ros::service::waitForService(SET_PLANNING_SCENE_DIFF_NAME);

  arm_navigation_msgs::SetPlanningSceneDiff::Request planning_scene_req;
  arm_navigation_msgs::SetPlanningSceneDiff::Response planning_scene_res;

  if(!set_planning_scene_diff_client.call(planning_scene_req, planning_scene_res)) {
    ROS_WARN("Can't get planning scene");
    return;
  }
edit flag offensive delete link more

Comments

Thanks, I have read that link before, but somewhat forgot about that information once I was in the thick of things.
John Hoare gravatar image John Hoare  ( 2011-09-20 10:34:00 -0500 )edit

Question Tools

Stats

Asked: 2011-09-20 09:16:43 -0500

Seen: 818 times

Last updated: Sep 20 '11