The Navigation Stack Rewrite Nobody Warned You About
ROS2 Nav2 is not a drop-in replacement for ROS1 move_base. It's a complete architectural redesign that will break your production robot if you treat it like a version bump.
I learned this the hard way migrating a warehouse AMR fleet from ROS1 Noetic to ROS2 Humble. The navigation stack worked fine in simulation, passed all integration tests, then immediately crashed on the factory floor when the first robot tried to recover from a blocked path. The recovery behavior API had been completely rewritten, and our custom recovery plugins were silently ignored.
This post walks through the 8 breaking changes that actually matter in production — not the ones mentioned in migration guides, but the ones that only surface when your robot is live.
Parameter Namespaces: bt_navigator vs move_base
ROS1 move_base used flat parameter namespaces. You configured everything under /move_base/:
yaml
# ROS1 move_base
move_base:
controller_frequency: 10.0
---
*Continue reading the full article on [TildAlice](https://tildalice.io/ros1-movebase-vs-ros2-nav2-migration-checklist/)*

Top comments (0)