I am having some trouble understanding Global/local costmap and planner and would need some info pls.

I am using a Regulated Pure Pursuit controller and the Path is created via the planner server using the navnplanner plugin

From what i understand the path is created using the global costmap and then the controller creates a local path using the global path and the local costmap that is the one the robot follows.

My problem is that the robot only follow the global path and does not take into account any obstacles that appear on the local costmap.

Here are a few points that concern me :

  • my controller's local path (lookahead_collision_arc) is never published. It seems like the controller only follows the global path.

  • even if i give a goal that is inside the local_costmap, which means obstacles that are only on the local costmap are know when creating the path, they are not taken into account

  • I tried using a smoother server to help but it doesn't even subscribe to the global path, which seems really weird, it doesn't publish on the plan_smoothed topic.

What i really don't understand is who should subscribe/publish to which topic (global/local costmap/path). Is it normal for my controller to not subscribe to the local costmap ?

  • 1
    $\begingroup$ could you show us the behavior-tree you are using? $\endgroup$
    – Scoeerg
    Commented Jun 11 at 16:53

1 Answer 1


The nav2 github issue: velocity smoother deadband velocity as an interval #4384

The reason why the local_costmap's dynamic obstacles are not taken intro account is because the RPP is designed to purely follow the global path (hence "pure pursuit") - Other controller will use theses obstacles without need to subscribe to the local_costmap because the controller server hosts it.


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.