updating collision_map in planning_scene [closed]

asked 2012-04-04 04:52:08 -0600

Felix Messmer gravatar image

updated 2014-01-28 17:11:51 -0600

ngrennan gravatar image

Hello everybody,

I used the planning description configuration wizard to set up an arm_navigation package for the care-o-bot. So far everything works fine with respect to self-collision-free motion planning.

But I experience some problems when using sensor data within the collision_map for the planning scene:

1) When starting the cob_arm_navigation cob_arm_navigation.launch I keep getting the message

[ INFO] [1333549692.022941254, 27.549000000]: Waiting for environment server planning scene registration service /register_planning_scene
[ INFO] [1333549692.024470289, 27.549000000]: waitForService: Service [/register_planning_scene] has not been advertised, waiting...

It seems that I can not start using arm_navigation until some sensor data falls within the "max_range" radius specified for the collider node within kinect_perception.launch. Only after the some sensor data falls within this radius the environment_server starts and the arm_navigation can be used. Why is that?

2) Once everything is successfully started, updating the collision_map (e.g. while moving the robot) is extremely slow, i.e. the sensor data updates quite promptly but the collision map still blocks some voxels where there is no more sensor data. How can this be sped up?

3) Also I experience that once some sensor data falls within the outermost layer of the collision_map, i.e. the hull with radius "max_range", the voxels become blocked but never become free again. Not even after a long time. They just stay occupied. See the screenshot.

image description

Does anybody have similar problems? Or even better: does anybody have a solution to these problems?

With best regards,

Felix


Update:

1) By increasing the max_range for the collider_node (kinect_perception.launch) I am able to get the environment_server started right from the beginning, i.e. the service /register_planning_scene is advertised without moving the robot closer to an obstacle because some sensor_data already falls within the max_range from the robot's initial position.

The /register_planning_scene service was not advertised because the collider_node did not receive a collision_map because no sensor_data fell within the max_range and thus the _have_map variable was still set to false.

But since the max_range parameter

directly influences the update speed

as it stands for the size of the collision_map to be updated, I want to keep it as small as possible, i.e. only set it to the actual workspace of the manipulator.

Thus, is there a way to advertise the /register_planning_scene service and therefore start the environment_server even without sensor_data being within the max_range?

2) As to speeding up the updating of the collision_map: What other options do I have to achieve a higher update rate (since the update of the collision_map is by far slower than the update of the sensor data!).

In what way can I use a static/dynamic collision_map? There are many parameters (dynamic_publish, static_publish, dynamic_until_static_publish, publish_static_over_dynamic_map), they are very confusing and there is only few documentation on their meaning. Can anyone give me some explanations on this?

What about the parameters sensor_model_hit, sensor_model_miss, sensor_model_min, sensor_model_max or the dynamic_buffer_size, static_buffer_size, dynamic_buffer_duration, static_buffer_duration? Does any of these parameters effect a faster collision_map update?

Thanks for your help!

edit retag flag offensive reopen merge delete

Closed for the following reason question is not relevant or outdated by tfoote
close date 2015-03-03 01:38:14.436212