updating collision_map in planning_scene [closed]
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.
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!