0
$\begingroup$

Rosanswers logo

I'm using the costmap_2d implementation in a custom way (not the navigation stack). The costmap_2d provides the rolling_window parameter, but it not assures "a proper local-obstacle-representation". The rolling_window only assures that the robot will remain in the center of the costmap while the orientation may (and typically does) change.

I tried to set the costmap parameters ("global_frame" and "robot_base_frame") both to "base_link" frame. The execution looked to work more or less but the result was not as good as I expected. Old marked obstacles looks like they were moving and following the robot. They look how they should to have been cleared but they haven't been for some reason.

IMHO the clearing raytraces are too slim to remove old obstacles so they remain marked. Since we are working in the local frame obstacles looks like they were moving while the robot look stopped. My conclusions after the experiments is that the default costmap configuration does not look work so well for moving obstacles.

So I have some related questions:

  • Are there any way to clear all the marker obstacles in each sensor reading?
  • How can I improve the obstacle clearing when the scan resolution is poor regarding the costmap resolution?
  • Using ros costmaps as local obstacle world representation is not typical. So, any additional consideration for not to use the costmap as a local representation of the world obstacles?

Originally posted by Pablo Iñigo Blasco on ROS Answers with karma: 2982 on 2012-11-20

Post score: 0

$\endgroup$

1 Answer 1

0
$\begingroup$

Rosanswers logo

You should not set the global frame to the robot's base frame but a fixed frame. Normally, the rolling window is enabled for the local costmap and the global frame is odom. This will prevent obstacles from moving around. The way you are using the costmap is probably not really supported at all and it's just pure luck that it sort of works in your case.

Regarding your second question: Clearing of obstacles always done based on raycasting if the clearing parameter is set for your sensor.

If you want to clear your costmaps programmatically, you can use move_base's clear_costmaps service or implement the corresponding behavior for instance as a recovery behavior plugin. For an example, have a look at the source code of the clear_costmap_recovery service.


Originally posted by Lorenz with karma: 22731 on 2012-11-20

This answer was ACCEPTED on the original site

Post score: 0

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.