updating collision_map in planning_scene
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 cobarmnavigation cobarmnavigation.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 armnavigation until some sensor data falls within the "maxrange" radius specified for the collider node within kinectperception.launch. Only after the some sensor data falls within this radius the environmentserver 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 collisionmap, i.e. the hull with radius "maxrange", 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 collidernode (kinectperception.launch) I am able to get the environmentserver started right from the beginning, i.e. the service /registerplanningscene is advertised without moving the robot closer to an obstacle because some sensordata already falls within the max_range from the robot's initial position.
The /registerplanningscene service was not advertised because the collidernode did not receive a collisionmap because no sensordata fell within the maxrange and thus the havemap 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 /registerplanningscene service and therefore start the environmentserver even without sensordata being within the max_range?
2) As to speeding up the updating of the collisionmap: What other options do I have to achieve a higher update rate (since the update of the collisionmap is by far slower than the update of the sensor data!).
In what way can I use a static/dynamic collisionmap? There are many parameters (dynamicpublish, staticpublish, dynamicuntilstaticpublish, publishstaticoverdynamicmap), 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 sensormodelhit, sensormodelmiss, sensormodelmin, sensormodelmax or the dynamicbuffersize, staticbuffersize, dynamicbufferduration, staticbufferduration? Does any of these parameters effect a faster collision_map update?
Thanks for your help!
Asked by Felix Messmer on 2012-04-04 04:52:08 UTC
Comments