Ask Your Question
2

turtlebot fake obstacles

asked 2013-07-19 00:33:44 -0600

turtlebotnewbie gravatar image

Hi, While running the turtlebot in autonomous navigation mode, I want it to avoid a certain part of the environment. So I modified the map by drawing some lines using 'Inkscape Vector Graphics Editor', hoping that the turtlebot would not go into the unwanted areas. It works well sometimes, but I have noticed that most of the times, the turtlebot ignores these "fake" obstacles in the map and goes to the unwanted areas anyway.

Modifying the parameter occdist_scale in base_local_planner_params.yaml helped me to better account for local obstacles (if I am not mistaken, this yaml file is only concerned with the local map and not the global one). Is there any such parameter that I could modify so that that I can put a high penalty for hitting global obstacles that are seen in the map? Any other suggestions are welcome too. Thanks.

edit retag flag offensive close merge delete

2 Answers

Sort by » oldest newest most voted
2

answered 2013-07-21 22:06:08 -0600

jorge gravatar image

Hello, what is probably happening is that the update_frequency for global_costmap is not zero, so it gets updated with what the sensor sees. As it cannot see your fake obstacles, they get removed from the costmap. So some solutions:

  1. Use hydro navigation stack: with the new multi-layer costmaps, the static (already present in the bitmap) obstacles are never removed. Maybe the best you can do, if you are not forced to use groovy or an earlier version.

  2. Set update_frequency to 0: not a good idea because you don't incorporate new information into the map.

  3. Use a "virtual sensor" that can "see" obstacles with known global pose. Here is the one I did recently: https://github.com/yujinrobot/kobuki-x/tree/hydro-devel/virtual_sensor. Note that is very experimental code, and we have not even released on ros, so... don't expect it to work fine out of the box. You can provide columns and walls, but maybe I'll incorporate other shapes as we need them. I use to avoid horrible tables low enough to cut our robot's head but with only one leg in the center, far away from the border "blade".

Options 1 and 3 are not mutually exclusive: 1 is trivial to use, but not flexible, and makes you add "false" information to the map, what can be harmful in some cases (amcl for example uses just the bitmap, that contains fake obstacles that he cannot match with laser data). 3 requires extra effort, but is very flexible.

edit flag offensive delete link more
0

answered 2013-07-22 23:35:31 -0600

turtlebotnewbie gravatar image

Hi jorge, Thanks a lot for your response. I haven't tried the hydro navigation stack yet. Before that, I tried something else the other day, and it seems to have improved the turtlebot's ability to see "fake obstacles". In the base_local_planner_params.yaml file, I set the pdist_scale parameter to a high value. After this, the turtlebot seems to be accounting for the fake obstacles I drew into the map. According to the wiki page on base_local_planner, increasing pdist_scale basically makes the turtlebot stick to the path (I think they mean the global path) it was given. So what was probably happening earlier was that this parameter was set too low. So the local planner was not sticking to the global path so rigidly. Hence, it would often cut across the areas marked as obstacles on the map and pay attention only to the local obstacles. One problem with increasing this parameter is that when it sees a local obstacle, in most of the cases, instead of finding a way around the obstacle, it just stops and gets stuck (if my reasoning is correct, this is because it is stubborn about following the global path).

edit flag offensive delete link more

Comments

Yep, make sense. But check the global costmap when navigating: the fake obstacles don't get removed when the robot fails to see them? So even if once the robot makes a path that avoids them, the second time he will be happy to make a path crossing them, as they are not in the map anymore....

jorge gravatar imagejorge ( 2013-07-23 13:47:42 -0600 )edit

Yes, that's true. I checked the global costmap. So to prevent the global costmap from changing, I tried out what your suggestion #2 and set the update_frequency parameter to 0. Interestingly, the robot does not accept any navigation goals when I do this. It does not even generate a global trajectory (plan). Any idea why this is so?

turtlebotnewbie gravatar imageturtlebotnewbie ( 2013-07-24 22:30:05 -0600 )edit

No idea, sorry. I opened a question long time ago: http://answers.ros.org/question/62015/why-move_base-server-depends-on-global_costmap-update_frequency. According to the last comment there, with hydro navi maybe you can somehow avoid this, but I couldn´t by now.

jorge gravatar imagejorge ( 2013-07-25 05:19:22 -0600 )edit

@turtlebotnewbie im looking to acomplish the same as you, to add fake obstacles on to the map, could you manage to make it work or get a proper solution? I would really appreciate the help.

ctguell gravatar imagectguell ( 2013-11-02 20:07:21 -0600 )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

5 followers

Stats

Asked: 2013-07-19 00:33:44 -0600

Seen: 1,283 times

Last updated: Jul 22 '13