ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | Q&A
Ask Your Question

how to update the static global map only when needed?

asked 2018-10-16 07:51:06 -0500

mzWang gravatar image


I try to navigate the robot in an environment with movable obstacles. Instead of making the robot avoid all the obstacles it found, I want the robot to test if an obstacle is movable first. If the robot finds an obstacle is movable, I don't want the robot to register that obstacle on the global map.

To be more specific, I have a pre-define static global map, which only records those unmovable obstacles. I want to use this global map to plan the path for the robot. When the robot find a new obstacle using its sensors, the robot can first tell if the obstacle is movable. If the obstacle is defined as movable, the global map shouldn't be changed and robot will just assume there is no such an obstacle. In other case, when an obstacle is defined as movable, the location and corresponding inflation area of the obstacle should be updated on the global map. Then the robot can use the new map to plan a path. Meanwhile, the local costmap should behave just as normal.

Hope I expressed myself clearly. Is this achievable with costmap_2d? What should I look into to achieve this? Thanks in advance!!!

edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted

answered 2018-10-16 11:58:59 -0500

Sure, what you describe sounds possible, but there's not much out in the community that's going to help you out of the box. One off-the-cuff strategy I might try would be to detect obstacles in a new costmap_2d layer you create, and then check to see if the projection of that 3D obstacle onto the 2D map overlays a known obstacle in the static map. If so, then leave that blob marked. If not, run your test of movability through a behavior, and then if it is/isn't add/subtract the blob from the costmap.

It basically boils down to blob tracking.

edit flag offensive delete link more


Thank you for your reply! I think I got the idea of how to use a costmap layer to update as I need. The next problem is how to find the corresponding area of the obstacle to mark. Can you give me more details about the blob tracking?

mzWang gravatar image mzWang  ( 2018-10-17 06:53:39 -0500 )edit

If you do some leg work, you'll find a variety of different algorithms and methods for doing blob detection / tracking. I wouldn't want to give you one off the cuff as it might not be appropriate for your application.

stevemacenski gravatar image stevemacenski  ( 2018-10-17 12:42:30 -0500 )edit

Thanks again! Although I didn't find a perfect answer to the original problem, I do figure out a way to work around. Since I have the point cloud of the detected obstacle, I'm thinking that I can just update the global map use the verified point cloud. This brings up another question though.

mzWang gravatar image mzWang  ( 2018-10-17 12:58:25 -0500 )edit
mzWang gravatar image mzWang  ( 2018-10-17 12:58:43 -0500 )edit

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools



Asked: 2018-10-16 07:51:06 -0500

Seen: 955 times

Last updated: Oct 16 '18