0
$\begingroup$

Rosanswers logo

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.

So...

  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! :)


Originally posted by kane_choigo on ROS Answers with karma: 195 on 2020-01-29

Post score: 2


Original comments

Comment by Delb on 2020-01-29:
There are also some similar questions in this site as #q288082 or #q10620.

$\endgroup$

1 Answer 1

0
$\begingroup$

Rosanswers logo

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.
  1. 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.

  2. 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.


Originally posted by Delb with karma: 3907 on 2020-01-29

This answer was ACCEPTED on the original site

Post score: 3


Original comments

Comment by kane_choigo on 2020-01-29:
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!

Comment by Delb on 2020-01-30:
Yes it's correct. I like the analogy with the rubik's cube used in #q288082.

$\endgroup$

Your Answer

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