3D Obstacles "forgotten" if there is a gap between 3d camera FoV and the robot base
What's an algorithm or technique that doesn't forget about obstacles in the following situation?
I've observed obstacles mistakenly cleared using the VoxelLayer costmap_2d plugin on ROS Jade. This happens when there is a blindspot on the floor between what the 3d camera sees and the robot due to the camera's position.
Here's a side view of a ToF camera with a 90 degree field of view. The red dots are points in the point cloud sensed by the camera. The doted lines are rays from the points to the camera.
Here's a view of how VoxelLayer marks the voxels. Voxels can be free (green), occupied (yellow), or unknown (white). Voxels are cleared (set to free) when a ray passes through them. Voxels are marked (set to occupied) when a point is inside them only if the point is higher than the parameter min_obstacle_height.
Now imagine the depth camera has moved left about two cells. The rays for the points on the ground pass through the previously marked voxels and clear them. The robot has effectively forgotten about the box in front of it.
The robot then attempts to crush the box. Ideas?