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

Costmap 2D Kinect/Laser clearing problem when encountering objects with thin legs (e.g. tables or chairs)

asked 2012-04-25 10:19:58 -0500

Rob Janssen gravatar image

updated 2016-10-24 08:33:21 -0500

ngrennan gravatar image

Hi, I have noticed a conceptual problem while navigating with a static, forward facing Kinect in combination with a 270degrees laserscanner. When I encounter a table with thin legs, the Kinect will put the top of the table as a pointcloud in the costmap. This way, my robot will successfully replan a path around the table instead of through it. HOWEVER, when my robot turns to go around the table, my LASERSCANNER will clear the top of the table again, hence allowing a replan through the table again! With this my robot seems to get in a deadlock situation when encountering a table (or anything with thin legs). I do need both sensors to 'mark' and to 'clear' obstacles. Is there any way I can circumvent this problem with the current implementation (i.e. by using just the .yaml configuration files for move_base), or do I really need to make a whole new implementation for this? My solution would be to have each sensor ONLY clear their own obstacles, and NOT the ones detected by the other sensor. But this doesn't seem possible with the current implementation. Any ideas would be --> very welcome!!



edit retag flag offensive close merge delete

2 Answers

Sort by ยป oldest newest most voted

answered 2012-11-05 22:03:55 -0500

Rob Janssen gravatar image

Hi Dariush, currently we are using an octomap to combine our measurements. However, back then we've also tried setting the map_type to 'voxel'. This didn't solve our problem then. However, maybe we should have investigated more, as indeed, setting the map_type to 'voxel' should be the solution.

edit flag offensive delete link more

answered 2012-07-31 10:40:16 -0500

Dariush gravatar image

What map_type do you use in your costmap? It sounds as you are using "costmap", which is a 2D model of the world. With your sensor configuration you might want to model your world in 3D. Using "voxel" as the map_type will achieve that.

The problem you're observing is related to the raytracing the costmap is doing. When receiving a new observation, the costmap is clearing all fields/voxels between the camera origin and each observed obstacle. A 2D costmap contains no height information, however, and therefor cannot know that the laserscanner is in fact not able to see the top of the chair.

See for details.

Using two costmaps, one for each sensor, might also work. However you would have to modify move_base and/or the local and global planners to do this.

cheers Dariush

edit flag offensive delete link more

Question Tools



Asked: 2012-04-25 10:19:58 -0500

Seen: 1,497 times

Last updated: Jul 31 '12