Ask Your Question

What is the difference between the global and local plan in AMCL navigataion?

asked 2020-01-29 03:42:13 -0600

kane_choigo gravatar image

updated 2020-01-29 03:44:48 -0600

Hello, I'm using ROS kinetic on ubuntu 16.04

Actually I'm trying to make the node that can execute navigate with its sensors.

As far as I've understood, when I point the goal, the global planner should make the safest plan to get there,

and it also would be published to local planner node to get the most appropriate cmd_vel.

And local planner also can detect some obstacles around the mobile robot, while the global planner can't.


  1. Is it possible to modify the global plan in the navigation process? Can I modify it by making the mobile robot go to a strange place? I have a feeling that it wouldn't be impossible..

  2. How does the local planner get the specific path plan when there are unexpected-DYNAMIC-obstacles, like people? Is this one of the cases in which local planner disobeys the global plan?

I would've thought I'm familiar with navigation on some levels, but it seems I was not.

Anyway, thanks in advance! :)

edit retag flag offensive close merge delete


There are also some similar questions in this site as #q288082 or #q10620.

Delb gravatar image Delb  ( 2020-01-29 04:29:04 -0600 )edit

1 Answer

Sort by ยป oldest newest most voted

answered 2020-01-29 04:18:35 -0600

Delb gravatar image

You are close to getting the point but indeed there are some misunderstandings I'll try to explain to you :

  1. First, it's not AMCL navigation, AMCL is used to localize the robot in a known map. Without AMCL (or any other localization package) you can't navigate a robot since sending coordinates to reach without knowing the position of the robot would be useless. The navigation is managed by the package move_base that requires to know the position of the robot, thus using the AMCL (or an other localization package).
  2. When you say :

    And local planner also can detect some obstacles around the mobile robot, while the global planner can't

    Here is your main misunderstanding. The global planner tries to find a path from the robot to the desired goal without colliding with the obstacles. The local planner will get the path from the global planner, a path is a succession of goals that the local planner will try to reach. If an obstacle is on the path of the robot (because it wasn't there when the global planner has calculated the path or if the path is too close from the obstacle) the local planner will change the current path to avoid it.

  3. To answer your first question : yes it's possible to modify the global planner, there are some tutorials available to learn how to do so. You could maybe expand on the go to a strange place but for example there are planners looking for the shortest path and others that would simply go in a straight line, you should have a look at the nav_core wiki that gives 3 differents global planners.

  4. Your second questions should have been answered in point 2.

To sum up, the global planner is used to calculate the full path from the map and the local planner will simply calculate the appropriate cmd_vel to follow the path and "correct" it if there is an obstacle detected.

Hope this answers your questions.

edit flag offensive delete link more


Thanks for your quick and helpful advice. So,

  1. When a robot gets the start and goal point, the global planner should output the full path plan before it runs.

  2. In the case of there are any other unexpected objects in its path, the local planner should modify the full path to prevent collision,

Do I understand correctly? Thank you so much!

kane_choigo gravatar image kane_choigo  ( 2020-01-29 22:51:24 -0600 )edit

Yes it's correct. I like the analogy with the rubik's cube used in #q288082.

Delb gravatar image Delb  ( 2020-01-30 01:46:22 -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



Asked: 2020-01-29 03:42:13 -0600

Seen: 395 times

Last updated: Jan 29 '20