0
$\begingroup$

Rosanswers logo

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.


Originally posted by John Hoare on ROS Answers with karma: 765 on 2011-09-20

Post score: 0

$\endgroup$

1 Answer 1

0
$\begingroup$

Rosanswers logo

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;
  }

Originally posted by egiljones with karma: 2031 on 2011-09-20

This answer was ACCEPTED on the original site

Post score: 2


Original comments

Comment by John Hoare on 2011-09-20:
Thanks, I have read that link before, but somewhat forgot about that information once I was in the thick of things.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.