0
$\begingroup$

I recently started using the NAV2 stack and I am still trying to understand basic concepts. As I understand it, obstacle avoidance and therefore local path re-planning should be done by the controller which theoretically works at higher frequencies that the planner. I was therefore wondering why one would add the obstacle layer in the global costmap. I understand that based on the configuration of the controller sometimes local re-planning is not possible (e.g., if a Regulated Pure Pursuit controller is used). Still, however, I cannot comprehend the intuition behind using an obstacle layer in the global costmap (i.e., why would someone completely avoid doing local re-planning and go directly to global re-planning). Similar questions to mine did not give any valuable insights in the intuition behind this choice: StackExchangeLink

$\endgroup$

1 Answer 1

0
$\begingroup$

Your StackExchange link is talking about a very specific case: slam. The optimizations and metrics for building a map (slam) and for efficiently navigating an existing map are not necessarily the same.

Here is an example. Imagine there are two long hallways that both lead to the goal, which is far away and not visible to the robot's sensors. The global planner has to choose one hallway, so it is useful to have the information that one hallway is obstructed. Of course, the system also needs some mechanism that eventually clears obstacles from the global costmap.

$\endgroup$
5
  • $\begingroup$ Thank you for the answer Mike. In your example the (global) planner selects one of the two hallways, and the controller performs (local) obstacle avoidance. However, by defining an obstacle layer in the global costmap, the global path will already take into account both the local and far away obstacles and therefore we have no need for an obstacle layer in the local costmap (i.e., obstacle avoidance for local objects is also done by the global planner). Isn't in that scenario redundant to add an obstacle layer in the local costmap as well? $\endgroup$ Oct 11, 2023 at 14:35
  • $\begingroup$ No, not redundant because the local costmap is assumed to include dynamic obstacles e.g. people or carts moving around. $\endgroup$
    – Mike973
    Oct 11, 2023 at 14:48
  • $\begingroup$ Your explanation makes sense Mike! However, the way the obstacle layers are defined in the NAV2 stack, there is no differentiation between a static and a dynamic obstacle and therefore the dynamic obstacles can be avoided by the (global) planner i.e., my Planner will adapt the global path regardless of the type of my obstacle (dynamic - static). Even if I want the global planner to only account for static obstacles, this is not possible! $\endgroup$ Oct 17, 2023 at 6:58
  • $\begingroup$ Historically the global planning is done only once, at the start of planning. The global path is meant to provide advice/guidance for the local planner on the assumption that it has higher-level information than what is available to the local planner. On the other hand, the local planner is assumed to have very recent nearby obstacle data (i.e. 10's of milliseconds old.) Do you have to do it this way? No. But it is my understanding that this is the canonical "reference design" for a path planning architecture. $\endgroup$
    – Mike973
    Oct 17, 2023 at 11:24
  • $\begingroup$ Alright thank you Mike! $\endgroup$ Oct 17, 2023 at 13:42

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.