obstacle_layer updates areas out of sight
This question is partly related to an earlier post of mine but is worth its own question. So I am getting the problem, that obviously occluded areas are getting updated through the obstacle_layer
-plugin of the costmap_2d
package. Since I do not have enough of these precious karma points I cannot post any screen shots but I can try to explain the situation in words.
To my understanding, the ObstacleLayer::updateBounds
function in the mentioned plugin handles the area to be updated. This area is designed to be rectangular. In my case the laser scan reaches a bit behind the robot but far from an all around view (screen shot would help here). So the extreme points of the laser scan extend this update rectangle so far that the obstacle_layer
updates areas behind the robot which he has never observed. It updates this area with the values of the prerecorded map but since the situation could have changed since then this behavior is not desirable.
Another strange behavior of this ObstacleLayer::updateBounds
function is that it does not updates as far as the most far away laser scan recorded. It stops somewhere halfway and does update occluded regions but not the region I expect it to update.
Is there a way of cropping the ObstacleLayer::updateBounds
to a meaningful frame without messing with the source code of the obstacle_layer
? Or am I totally misunderstanding the concept of the obstacle_layer
? Any help is appreciated. Thanks!
UPDATE
Now I can provide a screen shot. The rectangular represents the area, which the obstacle_layer
updates the layered_costmap_
(aka. master costmap) with. The occluded room to the robot's right should clearly not be updated with either LETHAL_OBSTACLE
nor FREE_SPACE
since we simply do not know.
If relevant: I use Hydro on an Ubuntu 12.04 LTS.
Are you using the packaged debian for Nav, or did you compile it yourself?
Also, is the robot's right our right? It looks the costmap should be updated on our right.
Yes, packaged debian for Nav. And the robot's right is also our right. But I would like to avoid updating the occluded region behind the wall to the robot's right.
Is your problem that the occluded region shouldn't be updated at all, or that it should have a different value than is shown in your costmap?
It should not be updated at all. To my understanding the obstacle_layer updates the layered_costmap_ in this region with either previously received data or, if never seen before, with values from the initialized map from the static_layer. Neither behavior is desirable in my eyes...