move_base's obstacles don't match laser scan output
I have a (physical) robot with hokuyo laser mounted. I use rviz to see the raw scans. I also run move_base and subscribe to /move_base_node/local_costmap/obstacles on rviz to see the cells marked as obstacles by move_base.
One phenomenon I notice is that depending on the minimum obstacle height in costmap_common_params.yaml, move_base either sees no obstacles or sees obstacles in every cell. What I expect on rviz is that move_base marks a cell as an obstacle precisely when the laser scan indicates there's an obstacle on the cell. I have been trying to fine tune min_obstacle_height to this. Below 0.21 m, move_base marks every cell as an obstacle; above this, it sees no obstacle at all!
I don't know how to deal with this problem. My costmap_common_params file is:
map_type: costmap
transform_tolerance: 0.3
obstacle_range: 2.0
raytrace_range: 1.5
inflation_radius: 2.5 //has to fine tune the parameter
observation_sources: laser_scan_sensor
laser_scan_sensor: {sensor_frame: laser,
data_type: LaserScan,
topic: /scan,
expected_update_rate: 0.2,
observation_persistence: 2.0,
marking: true,
clearing: true,
min_obstacle_height: 0.20,
max_obstacle_height: 2.5}
Update after tfoote's comment
Screenshot of rviz with obst height = .21 m :http://tiny.cc/a96op
Screenshot of rviz with obst height = .20 m: http://tiny.cc/yv4k5
Please see the captions of the images for more detail.