Navigation conversations often collapse mapping, localisation and planning into one feature. They are different system states with different failure modes.
SLAM constructs a representation of the environment while estimating motion. Localisation places the robot inside an existing map. Planning chooses a route from the current pose to a goal while respecting the costmap and controller constraints.
Why separation matters
A valid map does not guarantee a valid pose. A valid pose does not guarantee a reachable goal. A generated path does not guarantee that the local controller can execute it safely.
The retail-robot stack used gmapping for map construction and move_base with localisation for navigation. Debugging becomes clearer when each layer publishes its own state instead of reporting one generic navigation failure.