Repository Summary

Checkout URI https://github.com/naturerobots/move_base_flex.git
VCS Type git
VCS Version ros2
Last Updated 2026-01-09
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

README

Jazzy CI Humble CI

Move Base Flex: A Highly Flexible Navigation Framework

Move Base Flex (MBF) is a modular and map-agnostic navigation framework for ROS that provides well-defined interfaces and action servers for path planning, control, and recovery behaviors. Rather than being a complete navigation stack, MBF serves as an adaptable interface layer that enables developers to design and integrate their own navigation systems using arbitrary map representations and custom plugin implementations. Key features are:

  • Map-Agnostic Interface Design

    MBF’s interfaces are independent of any particular map representation (e.g., 2D costmaps, meshes, or voxel grids), enabling seamless integration, scientific comparison, and context-aware selection of both navigation implementations and map types.

  • Modular Action-Based Architecture

    Separate action servers for path planning, control, and recovery enable external deliberation software (e.g., Behavior Trees, SMACH, or custom logic) to coordinate complex navigation strategies.

  • Extensible Plugin Framework

    Multiple planners, controllers, and recovery behaviors can be loaded simultaneously, selected at runtime, or executed in parallel using different concurrency slots.

  • Rich Feedback and Diagnostics

    All actions expose detailed feedback, results, and error codes, providing transparent runtime information for better debugging and system supervision.

  • Clear Separation of Interfaces and Implementations

    MBF’s design facilitates reuse, experimentation, and the rapid development of new navigation approaches independent of any particular mapping or planning framework.

Concepts & Architecture

Since robot navigation can be separated into planning and controlling in many cases, even for outdoor scenarios without the benefits of flat terrain, we designed MBF based on abstract planner-, controller- and recovery behavior-execution classes. To accomplish this goal, we created abstract base classes for the nav core BaseLocalPlanner, BaseGlobalPlanner and RecoveryBehavior plugin interfaces, extending the API to provide a rich and expressive interface. The abstract interfaces allow plugins to return valuable information in each execution cycle, e.g. why a valid plan or a velocity command could not be computed. This information is then passed to the external executive logic through MBF planning, navigation or recovering actions’ feedback and result. The planner, controller and recovery behavior execution is implemented in the abstract execution classes without binding the software implementation to 2D costmaps. In our framework, SimpleNav (or MeshNav) is just a particular implementation of a navigation system: its execution classes implement the abstract ones, bind the system to the costmaps. Thereby, the system can easily be used for other approaches, e.g. navigation on meshes or 3D occupancy grid maps. However, we provide a SimpleNavigationServer class without a binding to costmaps.

MBF architecture: MBF architecture

History

MBF was originally developed for ROS 1 by Magazino (see noetic or master branch) as a backwards-compatible replacement for move_base, providing a more flexible and transparent architecture when no modular alternative was available. It has been successfully deployed in production environments, for example at Magazino, to control TORU robots operating in dynamic warehouse scenarios.

Compared to move_base, MBF introduced:

  • Separate action servers for path planning, control, and recovery
  • Detailed feedback and error reporting
  • Runtime selection of multiple plugin implementations
  • Map-agnostic interface definitions

With the advent of ROS 2 and newer navigation frameworks such as Nav2, MBF continues to serve as a lightweight, interface-oriented foundation for research, prototyping, and customized navigation systems.

Future Work

MBF is an ongoing project. Some of the improvements that we have planned for the near future are:

  • Release MBF Mesh Navigation, see mesh_navigation.
  • Auto select the active controller when having concurrently running controllers
  • Add Ackermann steering API
  • Multi Goal API + Action
  • Add new navigation server and core packages using grid_map.
  • Constraints-based goal (see issue https://github.com/naturerobots/move_base_flex/issues/8)

But, of course you are welcome to propose new fancy features and help make them a reality! Pull Requests are always welcome!

Credit

Magazino

Move Base Flex was initially developed at Magazino.

Nature Robots

The latest version (ROS2) is developed and maintained by Nature Robots.

Further Resources

  • Mesh Navigation

    Provides 3D navigation on mesh surfaces, implementing the MBF interfaces provided by this repository.

  • MBF Nav2 Connector

    Provides 2D navigation on 2D costmaps by translating actions to nav2.

  • MBF Deliberation Examples

    Demonstrates how to invoke MBF actions using popular deliberation frameworks such as BehaviorTree.CPP and SMACH. These examples work independently of the chosen map representation.

Announcements & News

16.10.2024 First ROS2 Version of Move Base Flex

The first working ROS2 version of Move Base Flex has been published. It targets the ROS2 distro humble and includes most components you know from ROS1:

  • mbf_abstract_core & mbf_abstract_nav
  • mbf_simple_core & mbf_simple_nav (for navigation components that need no map representation)
  • mbf_utility
  • mbf_msgs

The ROS2 version comes with an additional package that helps with integration tests:

  • mbf_test_utility (only a test dependency)

These two packages not migrated:

  • mbf_costmap_core & mbf_costmap_nav (for navigation components that utilize a 2D costmap). Nav2, which hosts the 2D costmap equivalent to the one from ROS1, and ROS1’s move_base are quite different, so interfaces do not easily fit anymore. This makes migration hard. PRs are welcome for this. However, we might integrate another 2D grid map planning module soon.

Note that mesh_navigation is also available for ROS2, now. It provides navigation components that utilize 3D mesh maps.

Repository Summary

Checkout URI https://github.com/naturerobots/move_base_flex.git
VCS Type git
VCS Version ros2
Last Updated 2026-01-09
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

README

Jazzy CI Humble CI

Move Base Flex: A Highly Flexible Navigation Framework

Move Base Flex (MBF) is a modular and map-agnostic navigation framework for ROS that provides well-defined interfaces and action servers for path planning, control, and recovery behaviors. Rather than being a complete navigation stack, MBF serves as an adaptable interface layer that enables developers to design and integrate their own navigation systems using arbitrary map representations and custom plugin implementations. Key features are:

  • Map-Agnostic Interface Design

    MBF’s interfaces are independent of any particular map representation (e.g., 2D costmaps, meshes, or voxel grids), enabling seamless integration, scientific comparison, and context-aware selection of both navigation implementations and map types.

  • Modular Action-Based Architecture

    Separate action servers for path planning, control, and recovery enable external deliberation software (e.g., Behavior Trees, SMACH, or custom logic) to coordinate complex navigation strategies.

  • Extensible Plugin Framework

    Multiple planners, controllers, and recovery behaviors can be loaded simultaneously, selected at runtime, or executed in parallel using different concurrency slots.

  • Rich Feedback and Diagnostics

    All actions expose detailed feedback, results, and error codes, providing transparent runtime information for better debugging and system supervision.

  • Clear Separation of Interfaces and Implementations

    MBF’s design facilitates reuse, experimentation, and the rapid development of new navigation approaches independent of any particular mapping or planning framework.

Concepts & Architecture

Since robot navigation can be separated into planning and controlling in many cases, even for outdoor scenarios without the benefits of flat terrain, we designed MBF based on abstract planner-, controller- and recovery behavior-execution classes. To accomplish this goal, we created abstract base classes for the nav core BaseLocalPlanner, BaseGlobalPlanner and RecoveryBehavior plugin interfaces, extending the API to provide a rich and expressive interface. The abstract interfaces allow plugins to return valuable information in each execution cycle, e.g. why a valid plan or a velocity command could not be computed. This information is then passed to the external executive logic through MBF planning, navigation or recovering actions’ feedback and result. The planner, controller and recovery behavior execution is implemented in the abstract execution classes without binding the software implementation to 2D costmaps. In our framework, SimpleNav (or MeshNav) is just a particular implementation of a navigation system: its execution classes implement the abstract ones, bind the system to the costmaps. Thereby, the system can easily be used for other approaches, e.g. navigation on meshes or 3D occupancy grid maps. However, we provide a SimpleNavigationServer class without a binding to costmaps.

MBF architecture: MBF architecture

History

MBF was originally developed for ROS 1 by Magazino (see noetic or master branch) as a backwards-compatible replacement for move_base, providing a more flexible and transparent architecture when no modular alternative was available. It has been successfully deployed in production environments, for example at Magazino, to control TORU robots operating in dynamic warehouse scenarios.

Compared to move_base, MBF introduced:

  • Separate action servers for path planning, control, and recovery
  • Detailed feedback and error reporting
  • Runtime selection of multiple plugin implementations
  • Map-agnostic interface definitions

With the advent of ROS 2 and newer navigation frameworks such as Nav2, MBF continues to serve as a lightweight, interface-oriented foundation for research, prototyping, and customized navigation systems.

Future Work

MBF is an ongoing project. Some of the improvements that we have planned for the near future are:

  • Release MBF Mesh Navigation, see mesh_navigation.
  • Auto select the active controller when having concurrently running controllers
  • Add Ackermann steering API
  • Multi Goal API + Action
  • Add new navigation server and core packages using grid_map.
  • Constraints-based goal (see issue https://github.com/naturerobots/move_base_flex/issues/8)

But, of course you are welcome to propose new fancy features and help make them a reality! Pull Requests are always welcome!

Credit

Magazino

Move Base Flex was initially developed at Magazino.

Nature Robots

The latest version (ROS2) is developed and maintained by Nature Robots.

Further Resources

  • Mesh Navigation

    Provides 3D navigation on mesh surfaces, implementing the MBF interfaces provided by this repository.

  • MBF Nav2 Connector

    Provides 2D navigation on 2D costmaps by translating actions to nav2.

  • MBF Deliberation Examples

    Demonstrates how to invoke MBF actions using popular deliberation frameworks such as BehaviorTree.CPP and SMACH. These examples work independently of the chosen map representation.

Announcements & News

16.10.2024 First ROS2 Version of Move Base Flex

The first working ROS2 version of Move Base Flex has been published. It targets the ROS2 distro humble and includes most components you know from ROS1:

  • mbf_abstract_core & mbf_abstract_nav
  • mbf_simple_core & mbf_simple_nav (for navigation components that need no map representation)
  • mbf_utility
  • mbf_msgs

The ROS2 version comes with an additional package that helps with integration tests:

  • mbf_test_utility (only a test dependency)

These two packages not migrated:

  • mbf_costmap_core & mbf_costmap_nav (for navigation components that utilize a 2D costmap). Nav2, which hosts the 2D costmap equivalent to the one from ROS1, and ROS1’s move_base are quite different, so interfaces do not easily fit anymore. This makes migration hard. PRs are welcome for this. However, we might integrate another 2D grid map planning module soon.

Note that mesh_navigation is also available for ROS2, now. It provides navigation components that utilize 3D mesh maps.

No version for distro kilted showing humble. Known supported distros are highlighted in the buttons above.

Repository Summary

Checkout URI https://github.com/naturerobots/move_base_flex.git
VCS Type git
VCS Version ros2
Last Updated 2026-01-09
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

README

Jazzy CI Humble CI

Move Base Flex: A Highly Flexible Navigation Framework

Move Base Flex (MBF) is a modular and map-agnostic navigation framework for ROS that provides well-defined interfaces and action servers for path planning, control, and recovery behaviors. Rather than being a complete navigation stack, MBF serves as an adaptable interface layer that enables developers to design and integrate their own navigation systems using arbitrary map representations and custom plugin implementations. Key features are:

  • Map-Agnostic Interface Design

    MBF’s interfaces are independent of any particular map representation (e.g., 2D costmaps, meshes, or voxel grids), enabling seamless integration, scientific comparison, and context-aware selection of both navigation implementations and map types.

  • Modular Action-Based Architecture

    Separate action servers for path planning, control, and recovery enable external deliberation software (e.g., Behavior Trees, SMACH, or custom logic) to coordinate complex navigation strategies.

  • Extensible Plugin Framework

    Multiple planners, controllers, and recovery behaviors can be loaded simultaneously, selected at runtime, or executed in parallel using different concurrency slots.

  • Rich Feedback and Diagnostics

    All actions expose detailed feedback, results, and error codes, providing transparent runtime information for better debugging and system supervision.

  • Clear Separation of Interfaces and Implementations

    MBF’s design facilitates reuse, experimentation, and the rapid development of new navigation approaches independent of any particular mapping or planning framework.

Concepts & Architecture

Since robot navigation can be separated into planning and controlling in many cases, even for outdoor scenarios without the benefits of flat terrain, we designed MBF based on abstract planner-, controller- and recovery behavior-execution classes. To accomplish this goal, we created abstract base classes for the nav core BaseLocalPlanner, BaseGlobalPlanner and RecoveryBehavior plugin interfaces, extending the API to provide a rich and expressive interface. The abstract interfaces allow plugins to return valuable information in each execution cycle, e.g. why a valid plan or a velocity command could not be computed. This information is then passed to the external executive logic through MBF planning, navigation or recovering actions’ feedback and result. The planner, controller and recovery behavior execution is implemented in the abstract execution classes without binding the software implementation to 2D costmaps. In our framework, SimpleNav (or MeshNav) is just a particular implementation of a navigation system: its execution classes implement the abstract ones, bind the system to the costmaps. Thereby, the system can easily be used for other approaches, e.g. navigation on meshes or 3D occupancy grid maps. However, we provide a SimpleNavigationServer class without a binding to costmaps.

MBF architecture: MBF architecture

History

MBF was originally developed for ROS 1 by Magazino (see noetic or master branch) as a backwards-compatible replacement for move_base, providing a more flexible and transparent architecture when no modular alternative was available. It has been successfully deployed in production environments, for example at Magazino, to control TORU robots operating in dynamic warehouse scenarios.

Compared to move_base, MBF introduced:

  • Separate action servers for path planning, control, and recovery
  • Detailed feedback and error reporting
  • Runtime selection of multiple plugin implementations
  • Map-agnostic interface definitions

With the advent of ROS 2 and newer navigation frameworks such as Nav2, MBF continues to serve as a lightweight, interface-oriented foundation for research, prototyping, and customized navigation systems.

Future Work

MBF is an ongoing project. Some of the improvements that we have planned for the near future are:

  • Release MBF Mesh Navigation, see mesh_navigation.
  • Auto select the active controller when having concurrently running controllers
  • Add Ackermann steering API
  • Multi Goal API + Action
  • Add new navigation server and core packages using grid_map.
  • Constraints-based goal (see issue https://github.com/naturerobots/move_base_flex/issues/8)

But, of course you are welcome to propose new fancy features and help make them a reality! Pull Requests are always welcome!

Credit

Magazino

Move Base Flex was initially developed at Magazino.

Nature Robots

The latest version (ROS2) is developed and maintained by Nature Robots.

Further Resources

  • Mesh Navigation

    Provides 3D navigation on mesh surfaces, implementing the MBF interfaces provided by this repository.

  • MBF Nav2 Connector

    Provides 2D navigation on 2D costmaps by translating actions to nav2.

  • MBF Deliberation Examples

    Demonstrates how to invoke MBF actions using popular deliberation frameworks such as BehaviorTree.CPP and SMACH. These examples work independently of the chosen map representation.

Announcements & News

16.10.2024 First ROS2 Version of Move Base Flex

The first working ROS2 version of Move Base Flex has been published. It targets the ROS2 distro humble and includes most components you know from ROS1:

  • mbf_abstract_core & mbf_abstract_nav
  • mbf_simple_core & mbf_simple_nav (for navigation components that need no map representation)
  • mbf_utility
  • mbf_msgs

The ROS2 version comes with an additional package that helps with integration tests:

  • mbf_test_utility (only a test dependency)

These two packages not migrated:

  • mbf_costmap_core & mbf_costmap_nav (for navigation components that utilize a 2D costmap). Nav2, which hosts the 2D costmap equivalent to the one from ROS1, and ROS1’s move_base are quite different, so interfaces do not easily fit anymore. This makes migration hard. PRs are welcome for this. However, we might integrate another 2D grid map planning module soon.

Note that mesh_navigation is also available for ROS2, now. It provides navigation components that utilize 3D mesh maps.

No version for distro rolling showing humble. Known supported distros are highlighted in the buttons above.

Repository Summary

Checkout URI https://github.com/naturerobots/move_base_flex.git
VCS Type git
VCS Version ros2
Last Updated 2026-01-09
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

README

Jazzy CI Humble CI

Move Base Flex: A Highly Flexible Navigation Framework

Move Base Flex (MBF) is a modular and map-agnostic navigation framework for ROS that provides well-defined interfaces and action servers for path planning, control, and recovery behaviors. Rather than being a complete navigation stack, MBF serves as an adaptable interface layer that enables developers to design and integrate their own navigation systems using arbitrary map representations and custom plugin implementations. Key features are:

  • Map-Agnostic Interface Design

    MBF’s interfaces are independent of any particular map representation (e.g., 2D costmaps, meshes, or voxel grids), enabling seamless integration, scientific comparison, and context-aware selection of both navigation implementations and map types.

  • Modular Action-Based Architecture

    Separate action servers for path planning, control, and recovery enable external deliberation software (e.g., Behavior Trees, SMACH, or custom logic) to coordinate complex navigation strategies.

  • Extensible Plugin Framework

    Multiple planners, controllers, and recovery behaviors can be loaded simultaneously, selected at runtime, or executed in parallel using different concurrency slots.

  • Rich Feedback and Diagnostics

    All actions expose detailed feedback, results, and error codes, providing transparent runtime information for better debugging and system supervision.

  • Clear Separation of Interfaces and Implementations

    MBF’s design facilitates reuse, experimentation, and the rapid development of new navigation approaches independent of any particular mapping or planning framework.

Concepts & Architecture

Since robot navigation can be separated into planning and controlling in many cases, even for outdoor scenarios without the benefits of flat terrain, we designed MBF based on abstract planner-, controller- and recovery behavior-execution classes. To accomplish this goal, we created abstract base classes for the nav core BaseLocalPlanner, BaseGlobalPlanner and RecoveryBehavior plugin interfaces, extending the API to provide a rich and expressive interface. The abstract interfaces allow plugins to return valuable information in each execution cycle, e.g. why a valid plan or a velocity command could not be computed. This information is then passed to the external executive logic through MBF planning, navigation or recovering actions’ feedback and result. The planner, controller and recovery behavior execution is implemented in the abstract execution classes without binding the software implementation to 2D costmaps. In our framework, SimpleNav (or MeshNav) is just a particular implementation of a navigation system: its execution classes implement the abstract ones, bind the system to the costmaps. Thereby, the system can easily be used for other approaches, e.g. navigation on meshes or 3D occupancy grid maps. However, we provide a SimpleNavigationServer class without a binding to costmaps.

MBF architecture: MBF architecture

History

MBF was originally developed for ROS 1 by Magazino (see noetic or master branch) as a backwards-compatible replacement for move_base, providing a more flexible and transparent architecture when no modular alternative was available. It has been successfully deployed in production environments, for example at Magazino, to control TORU robots operating in dynamic warehouse scenarios.

Compared to move_base, MBF introduced:

  • Separate action servers for path planning, control, and recovery
  • Detailed feedback and error reporting
  • Runtime selection of multiple plugin implementations
  • Map-agnostic interface definitions

With the advent of ROS 2 and newer navigation frameworks such as Nav2, MBF continues to serve as a lightweight, interface-oriented foundation for research, prototyping, and customized navigation systems.

Future Work

MBF is an ongoing project. Some of the improvements that we have planned for the near future are:

  • Release MBF Mesh Navigation, see mesh_navigation.
  • Auto select the active controller when having concurrently running controllers
  • Add Ackermann steering API
  • Multi Goal API + Action
  • Add new navigation server and core packages using grid_map.
  • Constraints-based goal (see issue https://github.com/naturerobots/move_base_flex/issues/8)

But, of course you are welcome to propose new fancy features and help make them a reality! Pull Requests are always welcome!

Credit

Magazino

Move Base Flex was initially developed at Magazino.

Nature Robots

The latest version (ROS2) is developed and maintained by Nature Robots.

Further Resources

  • Mesh Navigation

    Provides 3D navigation on mesh surfaces, implementing the MBF interfaces provided by this repository.

  • MBF Nav2 Connector

    Provides 2D navigation on 2D costmaps by translating actions to nav2.

  • MBF Deliberation Examples

    Demonstrates how to invoke MBF actions using popular deliberation frameworks such as BehaviorTree.CPP and SMACH. These examples work independently of the chosen map representation.

Announcements & News

16.10.2024 First ROS2 Version of Move Base Flex

The first working ROS2 version of Move Base Flex has been published. It targets the ROS2 distro humble and includes most components you know from ROS1:

  • mbf_abstract_core & mbf_abstract_nav
  • mbf_simple_core & mbf_simple_nav (for navigation components that need no map representation)
  • mbf_utility
  • mbf_msgs

The ROS2 version comes with an additional package that helps with integration tests:

  • mbf_test_utility (only a test dependency)

These two packages not migrated:

  • mbf_costmap_core & mbf_costmap_nav (for navigation components that utilize a 2D costmap). Nav2, which hosts the 2D costmap equivalent to the one from ROS1, and ROS1’s move_base are quite different, so interfaces do not easily fit anymore. This makes migration hard. PRs are welcome for this. However, we might integrate another 2D grid map planning module soon.

Note that mesh_navigation is also available for ROS2, now. It provides navigation components that utilize 3D mesh maps.

No version for distro ardent showing humble. Known supported distros are highlighted in the buttons above.

Repository Summary

Checkout URI https://github.com/naturerobots/move_base_flex.git
VCS Type git
VCS Version ros2
Last Updated 2026-01-09
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

README

Jazzy CI Humble CI

Move Base Flex: A Highly Flexible Navigation Framework

Move Base Flex (MBF) is a modular and map-agnostic navigation framework for ROS that provides well-defined interfaces and action servers for path planning, control, and recovery behaviors. Rather than being a complete navigation stack, MBF serves as an adaptable interface layer that enables developers to design and integrate their own navigation systems using arbitrary map representations and custom plugin implementations. Key features are:

  • Map-Agnostic Interface Design

    MBF’s interfaces are independent of any particular map representation (e.g., 2D costmaps, meshes, or voxel grids), enabling seamless integration, scientific comparison, and context-aware selection of both navigation implementations and map types.

  • Modular Action-Based Architecture

    Separate action servers for path planning, control, and recovery enable external deliberation software (e.g., Behavior Trees, SMACH, or custom logic) to coordinate complex navigation strategies.

  • Extensible Plugin Framework

    Multiple planners, controllers, and recovery behaviors can be loaded simultaneously, selected at runtime, or executed in parallel using different concurrency slots.

  • Rich Feedback and Diagnostics

    All actions expose detailed feedback, results, and error codes, providing transparent runtime information for better debugging and system supervision.

  • Clear Separation of Interfaces and Implementations

    MBF’s design facilitates reuse, experimentation, and the rapid development of new navigation approaches independent of any particular mapping or planning framework.

Concepts & Architecture

Since robot navigation can be separated into planning and controlling in many cases, even for outdoor scenarios without the benefits of flat terrain, we designed MBF based on abstract planner-, controller- and recovery behavior-execution classes. To accomplish this goal, we created abstract base classes for the nav core BaseLocalPlanner, BaseGlobalPlanner and RecoveryBehavior plugin interfaces, extending the API to provide a rich and expressive interface. The abstract interfaces allow plugins to return valuable information in each execution cycle, e.g. why a valid plan or a velocity command could not be computed. This information is then passed to the external executive logic through MBF planning, navigation or recovering actions’ feedback and result. The planner, controller and recovery behavior execution is implemented in the abstract execution classes without binding the software implementation to 2D costmaps. In our framework, SimpleNav (or MeshNav) is just a particular implementation of a navigation system: its execution classes implement the abstract ones, bind the system to the costmaps. Thereby, the system can easily be used for other approaches, e.g. navigation on meshes or 3D occupancy grid maps. However, we provide a SimpleNavigationServer class without a binding to costmaps.

MBF architecture: MBF architecture

History

MBF was originally developed for ROS 1 by Magazino (see noetic or master branch) as a backwards-compatible replacement for move_base, providing a more flexible and transparent architecture when no modular alternative was available. It has been successfully deployed in production environments, for example at Magazino, to control TORU robots operating in dynamic warehouse scenarios.

Compared to move_base, MBF introduced:

  • Separate action servers for path planning, control, and recovery
  • Detailed feedback and error reporting
  • Runtime selection of multiple plugin implementations
  • Map-agnostic interface definitions

With the advent of ROS 2 and newer navigation frameworks such as Nav2, MBF continues to serve as a lightweight, interface-oriented foundation for research, prototyping, and customized navigation systems.

Future Work

MBF is an ongoing project. Some of the improvements that we have planned for the near future are:

  • Release MBF Mesh Navigation, see mesh_navigation.
  • Auto select the active controller when having concurrently running controllers
  • Add Ackermann steering API
  • Multi Goal API + Action
  • Add new navigation server and core packages using grid_map.
  • Constraints-based goal (see issue https://github.com/naturerobots/move_base_flex/issues/8)

But, of course you are welcome to propose new fancy features and help make them a reality! Pull Requests are always welcome!

Credit

Magazino

Move Base Flex was initially developed at Magazino.

Nature Robots

The latest version (ROS2) is developed and maintained by Nature Robots.

Further Resources

  • Mesh Navigation

    Provides 3D navigation on mesh surfaces, implementing the MBF interfaces provided by this repository.

  • MBF Nav2 Connector

    Provides 2D navigation on 2D costmaps by translating actions to nav2.

  • MBF Deliberation Examples

    Demonstrates how to invoke MBF actions using popular deliberation frameworks such as BehaviorTree.CPP and SMACH. These examples work independently of the chosen map representation.

Announcements & News

16.10.2024 First ROS2 Version of Move Base Flex

The first working ROS2 version of Move Base Flex has been published. It targets the ROS2 distro humble and includes most components you know from ROS1:

  • mbf_abstract_core & mbf_abstract_nav
  • mbf_simple_core & mbf_simple_nav (for navigation components that need no map representation)
  • mbf_utility
  • mbf_msgs

The ROS2 version comes with an additional package that helps with integration tests:

  • mbf_test_utility (only a test dependency)

These two packages not migrated:

  • mbf_costmap_core & mbf_costmap_nav (for navigation components that utilize a 2D costmap). Nav2, which hosts the 2D costmap equivalent to the one from ROS1, and ROS1’s move_base are quite different, so interfaces do not easily fit anymore. This makes migration hard. PRs are welcome for this. However, we might integrate another 2D grid map planning module soon.

Note that mesh_navigation is also available for ROS2, now. It provides navigation components that utilize 3D mesh maps.

No version for distro bouncy showing humble. Known supported distros are highlighted in the buttons above.

Repository Summary

Checkout URI https://github.com/naturerobots/move_base_flex.git
VCS Type git
VCS Version ros2
Last Updated 2026-01-09
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

README

Jazzy CI Humble CI

Move Base Flex: A Highly Flexible Navigation Framework

Move Base Flex (MBF) is a modular and map-agnostic navigation framework for ROS that provides well-defined interfaces and action servers for path planning, control, and recovery behaviors. Rather than being a complete navigation stack, MBF serves as an adaptable interface layer that enables developers to design and integrate their own navigation systems using arbitrary map representations and custom plugin implementations. Key features are:

  • Map-Agnostic Interface Design

    MBF’s interfaces are independent of any particular map representation (e.g., 2D costmaps, meshes, or voxel grids), enabling seamless integration, scientific comparison, and context-aware selection of both navigation implementations and map types.

  • Modular Action-Based Architecture

    Separate action servers for path planning, control, and recovery enable external deliberation software (e.g., Behavior Trees, SMACH, or custom logic) to coordinate complex navigation strategies.

  • Extensible Plugin Framework

    Multiple planners, controllers, and recovery behaviors can be loaded simultaneously, selected at runtime, or executed in parallel using different concurrency slots.

  • Rich Feedback and Diagnostics

    All actions expose detailed feedback, results, and error codes, providing transparent runtime information for better debugging and system supervision.

  • Clear Separation of Interfaces and Implementations

    MBF’s design facilitates reuse, experimentation, and the rapid development of new navigation approaches independent of any particular mapping or planning framework.

Concepts & Architecture

Since robot navigation can be separated into planning and controlling in many cases, even for outdoor scenarios without the benefits of flat terrain, we designed MBF based on abstract planner-, controller- and recovery behavior-execution classes. To accomplish this goal, we created abstract base classes for the nav core BaseLocalPlanner, BaseGlobalPlanner and RecoveryBehavior plugin interfaces, extending the API to provide a rich and expressive interface. The abstract interfaces allow plugins to return valuable information in each execution cycle, e.g. why a valid plan or a velocity command could not be computed. This information is then passed to the external executive logic through MBF planning, navigation or recovering actions’ feedback and result. The planner, controller and recovery behavior execution is implemented in the abstract execution classes without binding the software implementation to 2D costmaps. In our framework, SimpleNav (or MeshNav) is just a particular implementation of a navigation system: its execution classes implement the abstract ones, bind the system to the costmaps. Thereby, the system can easily be used for other approaches, e.g. navigation on meshes or 3D occupancy grid maps. However, we provide a SimpleNavigationServer class without a binding to costmaps.

MBF architecture: MBF architecture

History

MBF was originally developed for ROS 1 by Magazino (see noetic or master branch) as a backwards-compatible replacement for move_base, providing a more flexible and transparent architecture when no modular alternative was available. It has been successfully deployed in production environments, for example at Magazino, to control TORU robots operating in dynamic warehouse scenarios.

Compared to move_base, MBF introduced:

  • Separate action servers for path planning, control, and recovery
  • Detailed feedback and error reporting
  • Runtime selection of multiple plugin implementations
  • Map-agnostic interface definitions

With the advent of ROS 2 and newer navigation frameworks such as Nav2, MBF continues to serve as a lightweight, interface-oriented foundation for research, prototyping, and customized navigation systems.

Future Work

MBF is an ongoing project. Some of the improvements that we have planned for the near future are:

  • Release MBF Mesh Navigation, see mesh_navigation.
  • Auto select the active controller when having concurrently running controllers
  • Add Ackermann steering API
  • Multi Goal API + Action
  • Add new navigation server and core packages using grid_map.
  • Constraints-based goal (see issue https://github.com/naturerobots/move_base_flex/issues/8)

But, of course you are welcome to propose new fancy features and help make them a reality! Pull Requests are always welcome!

Credit

Magazino

Move Base Flex was initially developed at Magazino.

Nature Robots

The latest version (ROS2) is developed and maintained by Nature Robots.

Further Resources

  • Mesh Navigation

    Provides 3D navigation on mesh surfaces, implementing the MBF interfaces provided by this repository.

  • MBF Nav2 Connector

    Provides 2D navigation on 2D costmaps by translating actions to nav2.

  • MBF Deliberation Examples

    Demonstrates how to invoke MBF actions using popular deliberation frameworks such as BehaviorTree.CPP and SMACH. These examples work independently of the chosen map representation.

Announcements & News

16.10.2024 First ROS2 Version of Move Base Flex

The first working ROS2 version of Move Base Flex has been published. It targets the ROS2 distro humble and includes most components you know from ROS1:

  • mbf_abstract_core & mbf_abstract_nav
  • mbf_simple_core & mbf_simple_nav (for navigation components that need no map representation)
  • mbf_utility
  • mbf_msgs

The ROS2 version comes with an additional package that helps with integration tests:

  • mbf_test_utility (only a test dependency)

These two packages not migrated:

  • mbf_costmap_core & mbf_costmap_nav (for navigation components that utilize a 2D costmap). Nav2, which hosts the 2D costmap equivalent to the one from ROS1, and ROS1’s move_base are quite different, so interfaces do not easily fit anymore. This makes migration hard. PRs are welcome for this. However, we might integrate another 2D grid map planning module soon.

Note that mesh_navigation is also available for ROS2, now. It provides navigation components that utilize 3D mesh maps.

No version for distro crystal showing humble. Known supported distros are highlighted in the buttons above.

Repository Summary

Checkout URI https://github.com/naturerobots/move_base_flex.git
VCS Type git
VCS Version ros2
Last Updated 2026-01-09
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

README

Jazzy CI Humble CI

Move Base Flex: A Highly Flexible Navigation Framework

Move Base Flex (MBF) is a modular and map-agnostic navigation framework for ROS that provides well-defined interfaces and action servers for path planning, control, and recovery behaviors. Rather than being a complete navigation stack, MBF serves as an adaptable interface layer that enables developers to design and integrate their own navigation systems using arbitrary map representations and custom plugin implementations. Key features are:

  • Map-Agnostic Interface Design

    MBF’s interfaces are independent of any particular map representation (e.g., 2D costmaps, meshes, or voxel grids), enabling seamless integration, scientific comparison, and context-aware selection of both navigation implementations and map types.

  • Modular Action-Based Architecture

    Separate action servers for path planning, control, and recovery enable external deliberation software (e.g., Behavior Trees, SMACH, or custom logic) to coordinate complex navigation strategies.

  • Extensible Plugin Framework

    Multiple planners, controllers, and recovery behaviors can be loaded simultaneously, selected at runtime, or executed in parallel using different concurrency slots.

  • Rich Feedback and Diagnostics

    All actions expose detailed feedback, results, and error codes, providing transparent runtime information for better debugging and system supervision.

  • Clear Separation of Interfaces and Implementations

    MBF’s design facilitates reuse, experimentation, and the rapid development of new navigation approaches independent of any particular mapping or planning framework.

Concepts & Architecture

Since robot navigation can be separated into planning and controlling in many cases, even for outdoor scenarios without the benefits of flat terrain, we designed MBF based on abstract planner-, controller- and recovery behavior-execution classes. To accomplish this goal, we created abstract base classes for the nav core BaseLocalPlanner, BaseGlobalPlanner and RecoveryBehavior plugin interfaces, extending the API to provide a rich and expressive interface. The abstract interfaces allow plugins to return valuable information in each execution cycle, e.g. why a valid plan or a velocity command could not be computed. This information is then passed to the external executive logic through MBF planning, navigation or recovering actions’ feedback and result. The planner, controller and recovery behavior execution is implemented in the abstract execution classes without binding the software implementation to 2D costmaps. In our framework, SimpleNav (or MeshNav) is just a particular implementation of a navigation system: its execution classes implement the abstract ones, bind the system to the costmaps. Thereby, the system can easily be used for other approaches, e.g. navigation on meshes or 3D occupancy grid maps. However, we provide a SimpleNavigationServer class without a binding to costmaps.

MBF architecture: MBF architecture

History

MBF was originally developed for ROS 1 by Magazino (see noetic or master branch) as a backwards-compatible replacement for move_base, providing a more flexible and transparent architecture when no modular alternative was available. It has been successfully deployed in production environments, for example at Magazino, to control TORU robots operating in dynamic warehouse scenarios.

Compared to move_base, MBF introduced:

  • Separate action servers for path planning, control, and recovery
  • Detailed feedback and error reporting
  • Runtime selection of multiple plugin implementations
  • Map-agnostic interface definitions

With the advent of ROS 2 and newer navigation frameworks such as Nav2, MBF continues to serve as a lightweight, interface-oriented foundation for research, prototyping, and customized navigation systems.

Future Work

MBF is an ongoing project. Some of the improvements that we have planned for the near future are:

  • Release MBF Mesh Navigation, see mesh_navigation.
  • Auto select the active controller when having concurrently running controllers
  • Add Ackermann steering API
  • Multi Goal API + Action
  • Add new navigation server and core packages using grid_map.
  • Constraints-based goal (see issue https://github.com/naturerobots/move_base_flex/issues/8)

But, of course you are welcome to propose new fancy features and help make them a reality! Pull Requests are always welcome!

Credit

Magazino

Move Base Flex was initially developed at Magazino.

Nature Robots

The latest version (ROS2) is developed and maintained by Nature Robots.

Further Resources

  • Mesh Navigation

    Provides 3D navigation on mesh surfaces, implementing the MBF interfaces provided by this repository.

  • MBF Nav2 Connector

    Provides 2D navigation on 2D costmaps by translating actions to nav2.

  • MBF Deliberation Examples

    Demonstrates how to invoke MBF actions using popular deliberation frameworks such as BehaviorTree.CPP and SMACH. These examples work independently of the chosen map representation.

Announcements & News

16.10.2024 First ROS2 Version of Move Base Flex

The first working ROS2 version of Move Base Flex has been published. It targets the ROS2 distro humble and includes most components you know from ROS1:

  • mbf_abstract_core & mbf_abstract_nav
  • mbf_simple_core & mbf_simple_nav (for navigation components that need no map representation)
  • mbf_utility
  • mbf_msgs

The ROS2 version comes with an additional package that helps with integration tests:

  • mbf_test_utility (only a test dependency)

These two packages not migrated:

  • mbf_costmap_core & mbf_costmap_nav (for navigation components that utilize a 2D costmap). Nav2, which hosts the 2D costmap equivalent to the one from ROS1, and ROS1’s move_base are quite different, so interfaces do not easily fit anymore. This makes migration hard. PRs are welcome for this. However, we might integrate another 2D grid map planning module soon.

Note that mesh_navigation is also available for ROS2, now. It provides navigation components that utilize 3D mesh maps.

No version for distro eloquent showing humble. Known supported distros are highlighted in the buttons above.

Repository Summary

Checkout URI https://github.com/naturerobots/move_base_flex.git
VCS Type git
VCS Version ros2
Last Updated 2026-01-09
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

README

Jazzy CI Humble CI

Move Base Flex: A Highly Flexible Navigation Framework

Move Base Flex (MBF) is a modular and map-agnostic navigation framework for ROS that provides well-defined interfaces and action servers for path planning, control, and recovery behaviors. Rather than being a complete navigation stack, MBF serves as an adaptable interface layer that enables developers to design and integrate their own navigation systems using arbitrary map representations and custom plugin implementations. Key features are:

  • Map-Agnostic Interface Design

    MBF’s interfaces are independent of any particular map representation (e.g., 2D costmaps, meshes, or voxel grids), enabling seamless integration, scientific comparison, and context-aware selection of both navigation implementations and map types.

  • Modular Action-Based Architecture

    Separate action servers for path planning, control, and recovery enable external deliberation software (e.g., Behavior Trees, SMACH, or custom logic) to coordinate complex navigation strategies.

  • Extensible Plugin Framework

    Multiple planners, controllers, and recovery behaviors can be loaded simultaneously, selected at runtime, or executed in parallel using different concurrency slots.

  • Rich Feedback and Diagnostics

    All actions expose detailed feedback, results, and error codes, providing transparent runtime information for better debugging and system supervision.

  • Clear Separation of Interfaces and Implementations

    MBF’s design facilitates reuse, experimentation, and the rapid development of new navigation approaches independent of any particular mapping or planning framework.

Concepts & Architecture

Since robot navigation can be separated into planning and controlling in many cases, even for outdoor scenarios without the benefits of flat terrain, we designed MBF based on abstract planner-, controller- and recovery behavior-execution classes. To accomplish this goal, we created abstract base classes for the nav core BaseLocalPlanner, BaseGlobalPlanner and RecoveryBehavior plugin interfaces, extending the API to provide a rich and expressive interface. The abstract interfaces allow plugins to return valuable information in each execution cycle, e.g. why a valid plan or a velocity command could not be computed. This information is then passed to the external executive logic through MBF planning, navigation or recovering actions’ feedback and result. The planner, controller and recovery behavior execution is implemented in the abstract execution classes without binding the software implementation to 2D costmaps. In our framework, SimpleNav (or MeshNav) is just a particular implementation of a navigation system: its execution classes implement the abstract ones, bind the system to the costmaps. Thereby, the system can easily be used for other approaches, e.g. navigation on meshes or 3D occupancy grid maps. However, we provide a SimpleNavigationServer class without a binding to costmaps.

MBF architecture: MBF architecture

History

MBF was originally developed for ROS 1 by Magazino (see noetic or master branch) as a backwards-compatible replacement for move_base, providing a more flexible and transparent architecture when no modular alternative was available. It has been successfully deployed in production environments, for example at Magazino, to control TORU robots operating in dynamic warehouse scenarios.

Compared to move_base, MBF introduced:

  • Separate action servers for path planning, control, and recovery
  • Detailed feedback and error reporting
  • Runtime selection of multiple plugin implementations
  • Map-agnostic interface definitions

With the advent of ROS 2 and newer navigation frameworks such as Nav2, MBF continues to serve as a lightweight, interface-oriented foundation for research, prototyping, and customized navigation systems.

Future Work

MBF is an ongoing project. Some of the improvements that we have planned for the near future are:

  • Release MBF Mesh Navigation, see mesh_navigation.
  • Auto select the active controller when having concurrently running controllers
  • Add Ackermann steering API
  • Multi Goal API + Action
  • Add new navigation server and core packages using grid_map.
  • Constraints-based goal (see issue https://github.com/naturerobots/move_base_flex/issues/8)

But, of course you are welcome to propose new fancy features and help make them a reality! Pull Requests are always welcome!

Credit

Magazino

Move Base Flex was initially developed at Magazino.

Nature Robots

The latest version (ROS2) is developed and maintained by Nature Robots.

Further Resources

  • Mesh Navigation

    Provides 3D navigation on mesh surfaces, implementing the MBF interfaces provided by this repository.

  • MBF Nav2 Connector

    Provides 2D navigation on 2D costmaps by translating actions to nav2.

  • MBF Deliberation Examples

    Demonstrates how to invoke MBF actions using popular deliberation frameworks such as BehaviorTree.CPP and SMACH. These examples work independently of the chosen map representation.

Announcements & News

16.10.2024 First ROS2 Version of Move Base Flex

The first working ROS2 version of Move Base Flex has been published. It targets the ROS2 distro humble and includes most components you know from ROS1:

  • mbf_abstract_core & mbf_abstract_nav
  • mbf_simple_core & mbf_simple_nav (for navigation components that need no map representation)
  • mbf_utility
  • mbf_msgs

The ROS2 version comes with an additional package that helps with integration tests:

  • mbf_test_utility (only a test dependency)

These two packages not migrated:

  • mbf_costmap_core & mbf_costmap_nav (for navigation components that utilize a 2D costmap). Nav2, which hosts the 2D costmap equivalent to the one from ROS1, and ROS1’s move_base are quite different, so interfaces do not easily fit anymore. This makes migration hard. PRs are welcome for this. However, we might integrate another 2D grid map planning module soon.

Note that mesh_navigation is also available for ROS2, now. It provides navigation components that utilize 3D mesh maps.

No version for distro dashing showing humble. Known supported distros are highlighted in the buttons above.

Repository Summary

Checkout URI https://github.com/naturerobots/move_base_flex.git
VCS Type git
VCS Version ros2
Last Updated 2026-01-09
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

README

Jazzy CI Humble CI

Move Base Flex: A Highly Flexible Navigation Framework

Move Base Flex (MBF) is a modular and map-agnostic navigation framework for ROS that provides well-defined interfaces and action servers for path planning, control, and recovery behaviors. Rather than being a complete navigation stack, MBF serves as an adaptable interface layer that enables developers to design and integrate their own navigation systems using arbitrary map representations and custom plugin implementations. Key features are:

  • Map-Agnostic Interface Design

    MBF’s interfaces are independent of any particular map representation (e.g., 2D costmaps, meshes, or voxel grids), enabling seamless integration, scientific comparison, and context-aware selection of both navigation implementations and map types.

  • Modular Action-Based Architecture

    Separate action servers for path planning, control, and recovery enable external deliberation software (e.g., Behavior Trees, SMACH, or custom logic) to coordinate complex navigation strategies.

  • Extensible Plugin Framework

    Multiple planners, controllers, and recovery behaviors can be loaded simultaneously, selected at runtime, or executed in parallel using different concurrency slots.

  • Rich Feedback and Diagnostics

    All actions expose detailed feedback, results, and error codes, providing transparent runtime information for better debugging and system supervision.

  • Clear Separation of Interfaces and Implementations

    MBF’s design facilitates reuse, experimentation, and the rapid development of new navigation approaches independent of any particular mapping or planning framework.

Concepts & Architecture

Since robot navigation can be separated into planning and controlling in many cases, even for outdoor scenarios without the benefits of flat terrain, we designed MBF based on abstract planner-, controller- and recovery behavior-execution classes. To accomplish this goal, we created abstract base classes for the nav core BaseLocalPlanner, BaseGlobalPlanner and RecoveryBehavior plugin interfaces, extending the API to provide a rich and expressive interface. The abstract interfaces allow plugins to return valuable information in each execution cycle, e.g. why a valid plan or a velocity command could not be computed. This information is then passed to the external executive logic through MBF planning, navigation or recovering actions’ feedback and result. The planner, controller and recovery behavior execution is implemented in the abstract execution classes without binding the software implementation to 2D costmaps. In our framework, SimpleNav (or MeshNav) is just a particular implementation of a navigation system: its execution classes implement the abstract ones, bind the system to the costmaps. Thereby, the system can easily be used for other approaches, e.g. navigation on meshes or 3D occupancy grid maps. However, we provide a SimpleNavigationServer class without a binding to costmaps.

MBF architecture: MBF architecture

History

MBF was originally developed for ROS 1 by Magazino (see noetic or master branch) as a backwards-compatible replacement for move_base, providing a more flexible and transparent architecture when no modular alternative was available. It has been successfully deployed in production environments, for example at Magazino, to control TORU robots operating in dynamic warehouse scenarios.

Compared to move_base, MBF introduced:

  • Separate action servers for path planning, control, and recovery
  • Detailed feedback and error reporting
  • Runtime selection of multiple plugin implementations
  • Map-agnostic interface definitions

With the advent of ROS 2 and newer navigation frameworks such as Nav2, MBF continues to serve as a lightweight, interface-oriented foundation for research, prototyping, and customized navigation systems.

Future Work

MBF is an ongoing project. Some of the improvements that we have planned for the near future are:

  • Release MBF Mesh Navigation, see mesh_navigation.
  • Auto select the active controller when having concurrently running controllers
  • Add Ackermann steering API
  • Multi Goal API + Action
  • Add new navigation server and core packages using grid_map.
  • Constraints-based goal (see issue https://github.com/naturerobots/move_base_flex/issues/8)

But, of course you are welcome to propose new fancy features and help make them a reality! Pull Requests are always welcome!

Credit

Magazino

Move Base Flex was initially developed at Magazino.

Nature Robots

The latest version (ROS2) is developed and maintained by Nature Robots.

Further Resources

  • Mesh Navigation

    Provides 3D navigation on mesh surfaces, implementing the MBF interfaces provided by this repository.

  • MBF Nav2 Connector

    Provides 2D navigation on 2D costmaps by translating actions to nav2.

  • MBF Deliberation Examples

    Demonstrates how to invoke MBF actions using popular deliberation frameworks such as BehaviorTree.CPP and SMACH. These examples work independently of the chosen map representation.

Announcements & News

16.10.2024 First ROS2 Version of Move Base Flex

The first working ROS2 version of Move Base Flex has been published. It targets the ROS2 distro humble and includes most components you know from ROS1:

  • mbf_abstract_core & mbf_abstract_nav
  • mbf_simple_core & mbf_simple_nav (for navigation components that need no map representation)
  • mbf_utility
  • mbf_msgs

The ROS2 version comes with an additional package that helps with integration tests:

  • mbf_test_utility (only a test dependency)

These two packages not migrated:

  • mbf_costmap_core & mbf_costmap_nav (for navigation components that utilize a 2D costmap). Nav2, which hosts the 2D costmap equivalent to the one from ROS1, and ROS1’s move_base are quite different, so interfaces do not easily fit anymore. This makes migration hard. PRs are welcome for this. However, we might integrate another 2D grid map planning module soon.

Note that mesh_navigation is also available for ROS2, now. It provides navigation components that utilize 3D mesh maps.

No version for distro galactic showing humble. Known supported distros are highlighted in the buttons above.

Repository Summary

Checkout URI https://github.com/naturerobots/move_base_flex.git
VCS Type git
VCS Version ros2
Last Updated 2026-01-09
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

README

Jazzy CI Humble CI

Move Base Flex: A Highly Flexible Navigation Framework

Move Base Flex (MBF) is a modular and map-agnostic navigation framework for ROS that provides well-defined interfaces and action servers for path planning, control, and recovery behaviors. Rather than being a complete navigation stack, MBF serves as an adaptable interface layer that enables developers to design and integrate their own navigation systems using arbitrary map representations and custom plugin implementations. Key features are:

  • Map-Agnostic Interface Design

    MBF’s interfaces are independent of any particular map representation (e.g., 2D costmaps, meshes, or voxel grids), enabling seamless integration, scientific comparison, and context-aware selection of both navigation implementations and map types.

  • Modular Action-Based Architecture

    Separate action servers for path planning, control, and recovery enable external deliberation software (e.g., Behavior Trees, SMACH, or custom logic) to coordinate complex navigation strategies.

  • Extensible Plugin Framework

    Multiple planners, controllers, and recovery behaviors can be loaded simultaneously, selected at runtime, or executed in parallel using different concurrency slots.

  • Rich Feedback and Diagnostics

    All actions expose detailed feedback, results, and error codes, providing transparent runtime information for better debugging and system supervision.

  • Clear Separation of Interfaces and Implementations

    MBF’s design facilitates reuse, experimentation, and the rapid development of new navigation approaches independent of any particular mapping or planning framework.

Concepts & Architecture

Since robot navigation can be separated into planning and controlling in many cases, even for outdoor scenarios without the benefits of flat terrain, we designed MBF based on abstract planner-, controller- and recovery behavior-execution classes. To accomplish this goal, we created abstract base classes for the nav core BaseLocalPlanner, BaseGlobalPlanner and RecoveryBehavior plugin interfaces, extending the API to provide a rich and expressive interface. The abstract interfaces allow plugins to return valuable information in each execution cycle, e.g. why a valid plan or a velocity command could not be computed. This information is then passed to the external executive logic through MBF planning, navigation or recovering actions’ feedback and result. The planner, controller and recovery behavior execution is implemented in the abstract execution classes without binding the software implementation to 2D costmaps. In our framework, SimpleNav (or MeshNav) is just a particular implementation of a navigation system: its execution classes implement the abstract ones, bind the system to the costmaps. Thereby, the system can easily be used for other approaches, e.g. navigation on meshes or 3D occupancy grid maps. However, we provide a SimpleNavigationServer class without a binding to costmaps.

MBF architecture: MBF architecture

History

MBF was originally developed for ROS 1 by Magazino (see noetic or master branch) as a backwards-compatible replacement for move_base, providing a more flexible and transparent architecture when no modular alternative was available. It has been successfully deployed in production environments, for example at Magazino, to control TORU robots operating in dynamic warehouse scenarios.

Compared to move_base, MBF introduced:

  • Separate action servers for path planning, control, and recovery
  • Detailed feedback and error reporting
  • Runtime selection of multiple plugin implementations
  • Map-agnostic interface definitions

With the advent of ROS 2 and newer navigation frameworks such as Nav2, MBF continues to serve as a lightweight, interface-oriented foundation for research, prototyping, and customized navigation systems.

Future Work

MBF is an ongoing project. Some of the improvements that we have planned for the near future are:

  • Release MBF Mesh Navigation, see mesh_navigation.
  • Auto select the active controller when having concurrently running controllers
  • Add Ackermann steering API
  • Multi Goal API + Action
  • Add new navigation server and core packages using grid_map.
  • Constraints-based goal (see issue https://github.com/naturerobots/move_base_flex/issues/8)

But, of course you are welcome to propose new fancy features and help make them a reality! Pull Requests are always welcome!

Credit

Magazino

Move Base Flex was initially developed at Magazino.

Nature Robots

The latest version (ROS2) is developed and maintained by Nature Robots.

Further Resources

  • Mesh Navigation

    Provides 3D navigation on mesh surfaces, implementing the MBF interfaces provided by this repository.

  • MBF Nav2 Connector

    Provides 2D navigation on 2D costmaps by translating actions to nav2.

  • MBF Deliberation Examples

    Demonstrates how to invoke MBF actions using popular deliberation frameworks such as BehaviorTree.CPP and SMACH. These examples work independently of the chosen map representation.

Announcements & News

16.10.2024 First ROS2 Version of Move Base Flex

The first working ROS2 version of Move Base Flex has been published. It targets the ROS2 distro humble and includes most components you know from ROS1:

  • mbf_abstract_core & mbf_abstract_nav
  • mbf_simple_core & mbf_simple_nav (for navigation components that need no map representation)
  • mbf_utility
  • mbf_msgs

The ROS2 version comes with an additional package that helps with integration tests:

  • mbf_test_utility (only a test dependency)

These two packages not migrated:

  • mbf_costmap_core & mbf_costmap_nav (for navigation components that utilize a 2D costmap). Nav2, which hosts the 2D costmap equivalent to the one from ROS1, and ROS1’s move_base are quite different, so interfaces do not easily fit anymore. This makes migration hard. PRs are welcome for this. However, we might integrate another 2D grid map planning module soon.

Note that mesh_navigation is also available for ROS2, now. It provides navigation components that utilize 3D mesh maps.

No version for distro foxy showing humble. Known supported distros are highlighted in the buttons above.

Repository Summary

Checkout URI https://github.com/naturerobots/move_base_flex.git
VCS Type git
VCS Version ros2
Last Updated 2026-01-09
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

README

Jazzy CI Humble CI

Move Base Flex: A Highly Flexible Navigation Framework

Move Base Flex (MBF) is a modular and map-agnostic navigation framework for ROS that provides well-defined interfaces and action servers for path planning, control, and recovery behaviors. Rather than being a complete navigation stack, MBF serves as an adaptable interface layer that enables developers to design and integrate their own navigation systems using arbitrary map representations and custom plugin implementations. Key features are:

  • Map-Agnostic Interface Design

    MBF’s interfaces are independent of any particular map representation (e.g., 2D costmaps, meshes, or voxel grids), enabling seamless integration, scientific comparison, and context-aware selection of both navigation implementations and map types.

  • Modular Action-Based Architecture

    Separate action servers for path planning, control, and recovery enable external deliberation software (e.g., Behavior Trees, SMACH, or custom logic) to coordinate complex navigation strategies.

  • Extensible Plugin Framework

    Multiple planners, controllers, and recovery behaviors can be loaded simultaneously, selected at runtime, or executed in parallel using different concurrency slots.

  • Rich Feedback and Diagnostics

    All actions expose detailed feedback, results, and error codes, providing transparent runtime information for better debugging and system supervision.

  • Clear Separation of Interfaces and Implementations

    MBF’s design facilitates reuse, experimentation, and the rapid development of new navigation approaches independent of any particular mapping or planning framework.

Concepts & Architecture

Since robot navigation can be separated into planning and controlling in many cases, even for outdoor scenarios without the benefits of flat terrain, we designed MBF based on abstract planner-, controller- and recovery behavior-execution classes. To accomplish this goal, we created abstract base classes for the nav core BaseLocalPlanner, BaseGlobalPlanner and RecoveryBehavior plugin interfaces, extending the API to provide a rich and expressive interface. The abstract interfaces allow plugins to return valuable information in each execution cycle, e.g. why a valid plan or a velocity command could not be computed. This information is then passed to the external executive logic through MBF planning, navigation or recovering actions’ feedback and result. The planner, controller and recovery behavior execution is implemented in the abstract execution classes without binding the software implementation to 2D costmaps. In our framework, SimpleNav (or MeshNav) is just a particular implementation of a navigation system: its execution classes implement the abstract ones, bind the system to the costmaps. Thereby, the system can easily be used for other approaches, e.g. navigation on meshes or 3D occupancy grid maps. However, we provide a SimpleNavigationServer class without a binding to costmaps.

MBF architecture: MBF architecture

History

MBF was originally developed for ROS 1 by Magazino (see noetic or master branch) as a backwards-compatible replacement for move_base, providing a more flexible and transparent architecture when no modular alternative was available. It has been successfully deployed in production environments, for example at Magazino, to control TORU robots operating in dynamic warehouse scenarios.

Compared to move_base, MBF introduced:

  • Separate action servers for path planning, control, and recovery
  • Detailed feedback and error reporting
  • Runtime selection of multiple plugin implementations
  • Map-agnostic interface definitions

With the advent of ROS 2 and newer navigation frameworks such as Nav2, MBF continues to serve as a lightweight, interface-oriented foundation for research, prototyping, and customized navigation systems.

Future Work

MBF is an ongoing project. Some of the improvements that we have planned for the near future are:

  • Release MBF Mesh Navigation, see mesh_navigation.
  • Auto select the active controller when having concurrently running controllers
  • Add Ackermann steering API
  • Multi Goal API + Action
  • Add new navigation server and core packages using grid_map.
  • Constraints-based goal (see issue https://github.com/naturerobots/move_base_flex/issues/8)

But, of course you are welcome to propose new fancy features and help make them a reality! Pull Requests are always welcome!

Credit

Magazino

Move Base Flex was initially developed at Magazino.

Nature Robots

The latest version (ROS2) is developed and maintained by Nature Robots.

Further Resources

  • Mesh Navigation

    Provides 3D navigation on mesh surfaces, implementing the MBF interfaces provided by this repository.

  • MBF Nav2 Connector

    Provides 2D navigation on 2D costmaps by translating actions to nav2.

  • MBF Deliberation Examples

    Demonstrates how to invoke MBF actions using popular deliberation frameworks such as BehaviorTree.CPP and SMACH. These examples work independently of the chosen map representation.

Announcements & News

16.10.2024 First ROS2 Version of Move Base Flex

The first working ROS2 version of Move Base Flex has been published. It targets the ROS2 distro humble and includes most components you know from ROS1:

  • mbf_abstract_core & mbf_abstract_nav
  • mbf_simple_core & mbf_simple_nav (for navigation components that need no map representation)
  • mbf_utility
  • mbf_msgs

The ROS2 version comes with an additional package that helps with integration tests:

  • mbf_test_utility (only a test dependency)

These two packages not migrated:

  • mbf_costmap_core & mbf_costmap_nav (for navigation components that utilize a 2D costmap). Nav2, which hosts the 2D costmap equivalent to the one from ROS1, and ROS1’s move_base are quite different, so interfaces do not easily fit anymore. This makes migration hard. PRs are welcome for this. However, we might integrate another 2D grid map planning module soon.

Note that mesh_navigation is also available for ROS2, now. It provides navigation components that utilize 3D mesh maps.

No version for distro iron showing humble. Known supported distros are highlighted in the buttons above.

Repository Summary

Checkout URI https://github.com/naturerobots/move_base_flex.git
VCS Type git
VCS Version ros2
Last Updated 2026-01-09
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

README

Jazzy CI Humble CI

Move Base Flex: A Highly Flexible Navigation Framework

Move Base Flex (MBF) is a modular and map-agnostic navigation framework for ROS that provides well-defined interfaces and action servers for path planning, control, and recovery behaviors. Rather than being a complete navigation stack, MBF serves as an adaptable interface layer that enables developers to design and integrate their own navigation systems using arbitrary map representations and custom plugin implementations. Key features are:

  • Map-Agnostic Interface Design

    MBF’s interfaces are independent of any particular map representation (e.g., 2D costmaps, meshes, or voxel grids), enabling seamless integration, scientific comparison, and context-aware selection of both navigation implementations and map types.

  • Modular Action-Based Architecture

    Separate action servers for path planning, control, and recovery enable external deliberation software (e.g., Behavior Trees, SMACH, or custom logic) to coordinate complex navigation strategies.

  • Extensible Plugin Framework

    Multiple planners, controllers, and recovery behaviors can be loaded simultaneously, selected at runtime, or executed in parallel using different concurrency slots.

  • Rich Feedback and Diagnostics

    All actions expose detailed feedback, results, and error codes, providing transparent runtime information for better debugging and system supervision.

  • Clear Separation of Interfaces and Implementations

    MBF’s design facilitates reuse, experimentation, and the rapid development of new navigation approaches independent of any particular mapping or planning framework.

Concepts & Architecture

Since robot navigation can be separated into planning and controlling in many cases, even for outdoor scenarios without the benefits of flat terrain, we designed MBF based on abstract planner-, controller- and recovery behavior-execution classes. To accomplish this goal, we created abstract base classes for the nav core BaseLocalPlanner, BaseGlobalPlanner and RecoveryBehavior plugin interfaces, extending the API to provide a rich and expressive interface. The abstract interfaces allow plugins to return valuable information in each execution cycle, e.g. why a valid plan or a velocity command could not be computed. This information is then passed to the external executive logic through MBF planning, navigation or recovering actions’ feedback and result. The planner, controller and recovery behavior execution is implemented in the abstract execution classes without binding the software implementation to 2D costmaps. In our framework, SimpleNav (or MeshNav) is just a particular implementation of a navigation system: its execution classes implement the abstract ones, bind the system to the costmaps. Thereby, the system can easily be used for other approaches, e.g. navigation on meshes or 3D occupancy grid maps. However, we provide a SimpleNavigationServer class without a binding to costmaps.

MBF architecture: MBF architecture

History

MBF was originally developed for ROS 1 by Magazino (see noetic or master branch) as a backwards-compatible replacement for move_base, providing a more flexible and transparent architecture when no modular alternative was available. It has been successfully deployed in production environments, for example at Magazino, to control TORU robots operating in dynamic warehouse scenarios.

Compared to move_base, MBF introduced:

  • Separate action servers for path planning, control, and recovery
  • Detailed feedback and error reporting
  • Runtime selection of multiple plugin implementations
  • Map-agnostic interface definitions

With the advent of ROS 2 and newer navigation frameworks such as Nav2, MBF continues to serve as a lightweight, interface-oriented foundation for research, prototyping, and customized navigation systems.

Future Work

MBF is an ongoing project. Some of the improvements that we have planned for the near future are:

  • Release MBF Mesh Navigation, see mesh_navigation.
  • Auto select the active controller when having concurrently running controllers
  • Add Ackermann steering API
  • Multi Goal API + Action
  • Add new navigation server and core packages using grid_map.
  • Constraints-based goal (see issue https://github.com/naturerobots/move_base_flex/issues/8)

But, of course you are welcome to propose new fancy features and help make them a reality! Pull Requests are always welcome!

Credit

Magazino

Move Base Flex was initially developed at Magazino.

Nature Robots

The latest version (ROS2) is developed and maintained by Nature Robots.

Further Resources

  • Mesh Navigation

    Provides 3D navigation on mesh surfaces, implementing the MBF interfaces provided by this repository.

  • MBF Nav2 Connector

    Provides 2D navigation on 2D costmaps by translating actions to nav2.

  • MBF Deliberation Examples

    Demonstrates how to invoke MBF actions using popular deliberation frameworks such as BehaviorTree.CPP and SMACH. These examples work independently of the chosen map representation.

Announcements & News

16.10.2024 First ROS2 Version of Move Base Flex

The first working ROS2 version of Move Base Flex has been published. It targets the ROS2 distro humble and includes most components you know from ROS1:

  • mbf_abstract_core & mbf_abstract_nav
  • mbf_simple_core & mbf_simple_nav (for navigation components that need no map representation)
  • mbf_utility
  • mbf_msgs

The ROS2 version comes with an additional package that helps with integration tests:

  • mbf_test_utility (only a test dependency)

These two packages not migrated:

  • mbf_costmap_core & mbf_costmap_nav (for navigation components that utilize a 2D costmap). Nav2, which hosts the 2D costmap equivalent to the one from ROS1, and ROS1’s move_base are quite different, so interfaces do not easily fit anymore. This makes migration hard. PRs are welcome for this. However, we might integrate another 2D grid map planning module soon.

Note that mesh_navigation is also available for ROS2, now. It provides navigation components that utilize 3D mesh maps.

Repository Summary

Checkout URI https://github.com/magazino/move_base_flex.git
VCS Type git
VCS Version lunar
Last Updated 2019-10-11
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

README

Move Base Flex: A Highly Flexible Navigation Framework:

This repository contains Move Base Flex (MBF), a backwards-compatible replacement for move_base. MBF can use existing plugins for move_base, and provides an enhanced version of the same ROS interface. It exposes action servers for planning, controlling and recovering, providing detailed information of the current state and the plugin’s feedback. An external executive logic can use MBF and its actions to perform smart and flexible navigation strategies. For example, at Magazino we have successfully deployed MBF at customer facilities to control TORU robots in highly dynamical environments. Furthermore, MBF enables the use of other map representations, e.g. meshes. The core features are:

  • Fully backwards-compatible with current ROS navigation.
  • Actions for the submodules planning, controlling and recovering, and services to query the costmaps are provided. This interface allows external executives, e.g. SMACH, or Behavior Trees, to run highly flexible and complex navigation strategies.
  • Comprehensive result and feedback information on all actions, including error codes and messages from the loaded plugins. For users still relying on a unique navigation interface, we have extended move_base action with detailed result and feedback information (though we still provide the current one).
  • Separation between an abstract navigation framework and concrete implementations, allowing faster development of new applications, e.g. 3D navigation.
  • Load multiple planners and controllers, selectable at runtime by setting one of the loaded plugin names in the action goal.
  • Concurrency: Parallel planning, recovering, controlling by selecting different concurrency slots when defining the action goal. Only different plugins instances can run in parallel.

Please see also the Move Base Flex Documentation and Tutorials in the ROS wiki.

Concepts & Architecture

We have created Move Base Flex for a larger target group besides the standard developers and users of move_base and 2D navigation based on costmaps, as well as addressed move_base’s limitations. Since robot navigation can be separated into planning and controlling in many cases, even for outdoor scenarios without the benefits of flat terrain, we designed MBF based on abstract planner-, controller- and recovery behavior-execution classes. To accomplish this goal, we created abstract base classes for the nav core BaseLocalPlanner, BaseGlobalPlanner and RecoveryBehavior plugin interfaces, extending the API to provide a richer and more expressive interface without breaking the current move_base plugin API. The new abstract interfaces allow plugins to return valuable information in each execution cycle, e.g. why a valid plan or a velocity command could not be computed. This information is then passed to the external executive logic through MBF planning, navigation or recovering actions’ feedback and result. The planner, controller and recovery behavior execution is implemented in the abstract execution classes without binding the software implementation to 2D costmaps. In our framework, MoveBase is just a particular implementation of a navigation system: its execution classes implement the abstract ones, bind the system to the costmaps. Thereby, the system can easily be used for other approaches, e.g. navigation on meshes or 3D occupancy grid maps. However, we provide a SimpleNavigationServer class without a binding to costmaps.

MBF architecture: MBF architecture

Future Work

MBF is an ongoing project; some of the improvements we we have planned for the near future are:

  • Auto select the active controller when having concurrently running controllers
  • Add Ackermann steering API
  • Multi Goal API + Action
  • Add new navigation server and core packages using grid_map.
  • Add pause/resume interface for the controller, for example to recover from a bumper, or an emergency stop button hit
  • Constraints-based goal (see issue #8)

But of course your are welcome to propose new fancy features and help make them a reality! Pull Requests are always welcome!

Build Status

  Master Indigo Kinetic Lunar Melodic
Travis Build Status Build Status Build Status Build Status Build Status
Binary Deb   Build Status Build Status Build Status Build Status
Source Deb   Build Status Build Status Build Status Build Status
Develop   Build Status Build Status Build Status Build Status
Documentation   Build Status Build Status Build Status Build Status
No version for distro jade showing humble. Known supported distros are highlighted in the buttons above.

Repository Summary

Checkout URI https://github.com/naturerobots/move_base_flex.git
VCS Type git
VCS Version ros2
Last Updated 2026-01-09
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

README

Jazzy CI Humble CI

Move Base Flex: A Highly Flexible Navigation Framework

Move Base Flex (MBF) is a modular and map-agnostic navigation framework for ROS that provides well-defined interfaces and action servers for path planning, control, and recovery behaviors. Rather than being a complete navigation stack, MBF serves as an adaptable interface layer that enables developers to design and integrate their own navigation systems using arbitrary map representations and custom plugin implementations. Key features are:

  • Map-Agnostic Interface Design

    MBF’s interfaces are independent of any particular map representation (e.g., 2D costmaps, meshes, or voxel grids), enabling seamless integration, scientific comparison, and context-aware selection of both navigation implementations and map types.

  • Modular Action-Based Architecture

    Separate action servers for path planning, control, and recovery enable external deliberation software (e.g., Behavior Trees, SMACH, or custom logic) to coordinate complex navigation strategies.

  • Extensible Plugin Framework

    Multiple planners, controllers, and recovery behaviors can be loaded simultaneously, selected at runtime, or executed in parallel using different concurrency slots.

  • Rich Feedback and Diagnostics

    All actions expose detailed feedback, results, and error codes, providing transparent runtime information for better debugging and system supervision.

  • Clear Separation of Interfaces and Implementations

    MBF’s design facilitates reuse, experimentation, and the rapid development of new navigation approaches independent of any particular mapping or planning framework.

Concepts & Architecture

Since robot navigation can be separated into planning and controlling in many cases, even for outdoor scenarios without the benefits of flat terrain, we designed MBF based on abstract planner-, controller- and recovery behavior-execution classes. To accomplish this goal, we created abstract base classes for the nav core BaseLocalPlanner, BaseGlobalPlanner and RecoveryBehavior plugin interfaces, extending the API to provide a rich and expressive interface. The abstract interfaces allow plugins to return valuable information in each execution cycle, e.g. why a valid plan or a velocity command could not be computed. This information is then passed to the external executive logic through MBF planning, navigation or recovering actions’ feedback and result. The planner, controller and recovery behavior execution is implemented in the abstract execution classes without binding the software implementation to 2D costmaps. In our framework, SimpleNav (or MeshNav) is just a particular implementation of a navigation system: its execution classes implement the abstract ones, bind the system to the costmaps. Thereby, the system can easily be used for other approaches, e.g. navigation on meshes or 3D occupancy grid maps. However, we provide a SimpleNavigationServer class without a binding to costmaps.

MBF architecture: MBF architecture

History

MBF was originally developed for ROS 1 by Magazino (see noetic or master branch) as a backwards-compatible replacement for move_base, providing a more flexible and transparent architecture when no modular alternative was available. It has been successfully deployed in production environments, for example at Magazino, to control TORU robots operating in dynamic warehouse scenarios.

Compared to move_base, MBF introduced:

  • Separate action servers for path planning, control, and recovery
  • Detailed feedback and error reporting
  • Runtime selection of multiple plugin implementations
  • Map-agnostic interface definitions

With the advent of ROS 2 and newer navigation frameworks such as Nav2, MBF continues to serve as a lightweight, interface-oriented foundation for research, prototyping, and customized navigation systems.

Future Work

MBF is an ongoing project. Some of the improvements that we have planned for the near future are:

  • Release MBF Mesh Navigation, see mesh_navigation.
  • Auto select the active controller when having concurrently running controllers
  • Add Ackermann steering API
  • Multi Goal API + Action
  • Add new navigation server and core packages using grid_map.
  • Constraints-based goal (see issue https://github.com/naturerobots/move_base_flex/issues/8)

But, of course you are welcome to propose new fancy features and help make them a reality! Pull Requests are always welcome!

Credit

Magazino

Move Base Flex was initially developed at Magazino.

Nature Robots

The latest version (ROS2) is developed and maintained by Nature Robots.

Further Resources

  • Mesh Navigation

    Provides 3D navigation on mesh surfaces, implementing the MBF interfaces provided by this repository.

  • MBF Nav2 Connector

    Provides 2D navigation on 2D costmaps by translating actions to nav2.

  • MBF Deliberation Examples

    Demonstrates how to invoke MBF actions using popular deliberation frameworks such as BehaviorTree.CPP and SMACH. These examples work independently of the chosen map representation.

Announcements & News

16.10.2024 First ROS2 Version of Move Base Flex

The first working ROS2 version of Move Base Flex has been published. It targets the ROS2 distro humble and includes most components you know from ROS1:

  • mbf_abstract_core & mbf_abstract_nav
  • mbf_simple_core & mbf_simple_nav (for navigation components that need no map representation)
  • mbf_utility
  • mbf_msgs

The ROS2 version comes with an additional package that helps with integration tests:

  • mbf_test_utility (only a test dependency)

These two packages not migrated:

  • mbf_costmap_core & mbf_costmap_nav (for navigation components that utilize a 2D costmap). Nav2, which hosts the 2D costmap equivalent to the one from ROS1, and ROS1’s move_base are quite different, so interfaces do not easily fit anymore. This makes migration hard. PRs are welcome for this. However, we might integrate another 2D grid map planning module soon.

Note that mesh_navigation is also available for ROS2, now. It provides navigation components that utilize 3D mesh maps.

No version for distro indigo showing humble. Known supported distros are highlighted in the buttons above.

Repository Summary

Checkout URI https://github.com/naturerobots/move_base_flex.git
VCS Type git
VCS Version ros2
Last Updated 2026-01-09
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

README

Jazzy CI Humble CI

Move Base Flex: A Highly Flexible Navigation Framework

Move Base Flex (MBF) is a modular and map-agnostic navigation framework for ROS that provides well-defined interfaces and action servers for path planning, control, and recovery behaviors. Rather than being a complete navigation stack, MBF serves as an adaptable interface layer that enables developers to design and integrate their own navigation systems using arbitrary map representations and custom plugin implementations. Key features are:

  • Map-Agnostic Interface Design

    MBF’s interfaces are independent of any particular map representation (e.g., 2D costmaps, meshes, or voxel grids), enabling seamless integration, scientific comparison, and context-aware selection of both navigation implementations and map types.

  • Modular Action-Based Architecture

    Separate action servers for path planning, control, and recovery enable external deliberation software (e.g., Behavior Trees, SMACH, or custom logic) to coordinate complex navigation strategies.

  • Extensible Plugin Framework

    Multiple planners, controllers, and recovery behaviors can be loaded simultaneously, selected at runtime, or executed in parallel using different concurrency slots.

  • Rich Feedback and Diagnostics

    All actions expose detailed feedback, results, and error codes, providing transparent runtime information for better debugging and system supervision.

  • Clear Separation of Interfaces and Implementations

    MBF’s design facilitates reuse, experimentation, and the rapid development of new navigation approaches independent of any particular mapping or planning framework.

Concepts & Architecture

Since robot navigation can be separated into planning and controlling in many cases, even for outdoor scenarios without the benefits of flat terrain, we designed MBF based on abstract planner-, controller- and recovery behavior-execution classes. To accomplish this goal, we created abstract base classes for the nav core BaseLocalPlanner, BaseGlobalPlanner and RecoveryBehavior plugin interfaces, extending the API to provide a rich and expressive interface. The abstract interfaces allow plugins to return valuable information in each execution cycle, e.g. why a valid plan or a velocity command could not be computed. This information is then passed to the external executive logic through MBF planning, navigation or recovering actions’ feedback and result. The planner, controller and recovery behavior execution is implemented in the abstract execution classes without binding the software implementation to 2D costmaps. In our framework, SimpleNav (or MeshNav) is just a particular implementation of a navigation system: its execution classes implement the abstract ones, bind the system to the costmaps. Thereby, the system can easily be used for other approaches, e.g. navigation on meshes or 3D occupancy grid maps. However, we provide a SimpleNavigationServer class without a binding to costmaps.

MBF architecture: MBF architecture

History

MBF was originally developed for ROS 1 by Magazino (see noetic or master branch) as a backwards-compatible replacement for move_base, providing a more flexible and transparent architecture when no modular alternative was available. It has been successfully deployed in production environments, for example at Magazino, to control TORU robots operating in dynamic warehouse scenarios.

Compared to move_base, MBF introduced:

  • Separate action servers for path planning, control, and recovery
  • Detailed feedback and error reporting
  • Runtime selection of multiple plugin implementations
  • Map-agnostic interface definitions

With the advent of ROS 2 and newer navigation frameworks such as Nav2, MBF continues to serve as a lightweight, interface-oriented foundation for research, prototyping, and customized navigation systems.

Future Work

MBF is an ongoing project. Some of the improvements that we have planned for the near future are:

  • Release MBF Mesh Navigation, see mesh_navigation.
  • Auto select the active controller when having concurrently running controllers
  • Add Ackermann steering API
  • Multi Goal API + Action
  • Add new navigation server and core packages using grid_map.
  • Constraints-based goal (see issue https://github.com/naturerobots/move_base_flex/issues/8)

But, of course you are welcome to propose new fancy features and help make them a reality! Pull Requests are always welcome!

Credit

Magazino

Move Base Flex was initially developed at Magazino.

Nature Robots

The latest version (ROS2) is developed and maintained by Nature Robots.

Further Resources

  • Mesh Navigation

    Provides 3D navigation on mesh surfaces, implementing the MBF interfaces provided by this repository.

  • MBF Nav2 Connector

    Provides 2D navigation on 2D costmaps by translating actions to nav2.

  • MBF Deliberation Examples

    Demonstrates how to invoke MBF actions using popular deliberation frameworks such as BehaviorTree.CPP and SMACH. These examples work independently of the chosen map representation.

Announcements & News

16.10.2024 First ROS2 Version of Move Base Flex

The first working ROS2 version of Move Base Flex has been published. It targets the ROS2 distro humble and includes most components you know from ROS1:

  • mbf_abstract_core & mbf_abstract_nav
  • mbf_simple_core & mbf_simple_nav (for navigation components that need no map representation)
  • mbf_utility
  • mbf_msgs

The ROS2 version comes with an additional package that helps with integration tests:

  • mbf_test_utility (only a test dependency)

These two packages not migrated:

  • mbf_costmap_core & mbf_costmap_nav (for navigation components that utilize a 2D costmap). Nav2, which hosts the 2D costmap equivalent to the one from ROS1, and ROS1’s move_base are quite different, so interfaces do not easily fit anymore. This makes migration hard. PRs are welcome for this. However, we might integrate another 2D grid map planning module soon.

Note that mesh_navigation is also available for ROS2, now. It provides navigation components that utilize 3D mesh maps.

No version for distro hydro showing humble. Known supported distros are highlighted in the buttons above.

Repository Summary

Checkout URI https://github.com/naturerobots/move_base_flex.git
VCS Type git
VCS Version ros2
Last Updated 2026-01-09
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

README

Jazzy CI Humble CI

Move Base Flex: A Highly Flexible Navigation Framework

Move Base Flex (MBF) is a modular and map-agnostic navigation framework for ROS that provides well-defined interfaces and action servers for path planning, control, and recovery behaviors. Rather than being a complete navigation stack, MBF serves as an adaptable interface layer that enables developers to design and integrate their own navigation systems using arbitrary map representations and custom plugin implementations. Key features are:

  • Map-Agnostic Interface Design

    MBF’s interfaces are independent of any particular map representation (e.g., 2D costmaps, meshes, or voxel grids), enabling seamless integration, scientific comparison, and context-aware selection of both navigation implementations and map types.

  • Modular Action-Based Architecture

    Separate action servers for path planning, control, and recovery enable external deliberation software (e.g., Behavior Trees, SMACH, or custom logic) to coordinate complex navigation strategies.

  • Extensible Plugin Framework

    Multiple planners, controllers, and recovery behaviors can be loaded simultaneously, selected at runtime, or executed in parallel using different concurrency slots.

  • Rich Feedback and Diagnostics

    All actions expose detailed feedback, results, and error codes, providing transparent runtime information for better debugging and system supervision.

  • Clear Separation of Interfaces and Implementations

    MBF’s design facilitates reuse, experimentation, and the rapid development of new navigation approaches independent of any particular mapping or planning framework.

Concepts & Architecture

Since robot navigation can be separated into planning and controlling in many cases, even for outdoor scenarios without the benefits of flat terrain, we designed MBF based on abstract planner-, controller- and recovery behavior-execution classes. To accomplish this goal, we created abstract base classes for the nav core BaseLocalPlanner, BaseGlobalPlanner and RecoveryBehavior plugin interfaces, extending the API to provide a rich and expressive interface. The abstract interfaces allow plugins to return valuable information in each execution cycle, e.g. why a valid plan or a velocity command could not be computed. This information is then passed to the external executive logic through MBF planning, navigation or recovering actions’ feedback and result. The planner, controller and recovery behavior execution is implemented in the abstract execution classes without binding the software implementation to 2D costmaps. In our framework, SimpleNav (or MeshNav) is just a particular implementation of a navigation system: its execution classes implement the abstract ones, bind the system to the costmaps. Thereby, the system can easily be used for other approaches, e.g. navigation on meshes or 3D occupancy grid maps. However, we provide a SimpleNavigationServer class without a binding to costmaps.

MBF architecture: MBF architecture

History

MBF was originally developed for ROS 1 by Magazino (see noetic or master branch) as a backwards-compatible replacement for move_base, providing a more flexible and transparent architecture when no modular alternative was available. It has been successfully deployed in production environments, for example at Magazino, to control TORU robots operating in dynamic warehouse scenarios.

Compared to move_base, MBF introduced:

  • Separate action servers for path planning, control, and recovery
  • Detailed feedback and error reporting
  • Runtime selection of multiple plugin implementations
  • Map-agnostic interface definitions

With the advent of ROS 2 and newer navigation frameworks such as Nav2, MBF continues to serve as a lightweight, interface-oriented foundation for research, prototyping, and customized navigation systems.

Future Work

MBF is an ongoing project. Some of the improvements that we have planned for the near future are:

  • Release MBF Mesh Navigation, see mesh_navigation.
  • Auto select the active controller when having concurrently running controllers
  • Add Ackermann steering API
  • Multi Goal API + Action
  • Add new navigation server and core packages using grid_map.
  • Constraints-based goal (see issue https://github.com/naturerobots/move_base_flex/issues/8)

But, of course you are welcome to propose new fancy features and help make them a reality! Pull Requests are always welcome!

Credit

Magazino

Move Base Flex was initially developed at Magazino.

Nature Robots

The latest version (ROS2) is developed and maintained by Nature Robots.

Further Resources

  • Mesh Navigation

    Provides 3D navigation on mesh surfaces, implementing the MBF interfaces provided by this repository.

  • MBF Nav2 Connector

    Provides 2D navigation on 2D costmaps by translating actions to nav2.

  • MBF Deliberation Examples

    Demonstrates how to invoke MBF actions using popular deliberation frameworks such as BehaviorTree.CPP and SMACH. These examples work independently of the chosen map representation.

Announcements & News

16.10.2024 First ROS2 Version of Move Base Flex

The first working ROS2 version of Move Base Flex has been published. It targets the ROS2 distro humble and includes most components you know from ROS1:

  • mbf_abstract_core & mbf_abstract_nav
  • mbf_simple_core & mbf_simple_nav (for navigation components that need no map representation)
  • mbf_utility
  • mbf_msgs

The ROS2 version comes with an additional package that helps with integration tests:

  • mbf_test_utility (only a test dependency)

These two packages not migrated:

  • mbf_costmap_core & mbf_costmap_nav (for navigation components that utilize a 2D costmap). Nav2, which hosts the 2D costmap equivalent to the one from ROS1, and ROS1’s move_base are quite different, so interfaces do not easily fit anymore. This makes migration hard. PRs are welcome for this. However, we might integrate another 2D grid map planning module soon.

Note that mesh_navigation is also available for ROS2, now. It provides navigation components that utilize 3D mesh maps.

Repository Summary

Checkout URI https://github.com/magazino/move_base_flex.git
VCS Type git
VCS Version kinetic
Last Updated 2020-12-02
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

README

Move Base Flex: A Highly Flexible Navigation Framework:

This repository contains Move Base Flex (MBF), a backwards-compatible replacement for move_base. MBF can use existing plugins for move_base, and provides an enhanced version of the same ROS interface. It exposes action servers for planning, controlling and recovering, providing detailed information of the current state and the plugin’s feedback. An external executive logic can use MBF and its actions to perform smart and flexible navigation strategies. For example, at Magazino we have successfully deployed MBF at customer facilities to control TORU robots in highly dynamical environments. Furthermore, MBF enables the use of other map representations, e.g. meshes. The core features are:

  • Fully backwards-compatible with current ROS navigation.
  • Actions for the submodules planning, controlling and recovering, and services to query the costmaps are provided. This interface allows external executives, e.g. SMACH, or Behavior Trees, to run highly flexible and complex navigation strategies.
  • Comprehensive result and feedback information on all actions, including error codes and messages from the loaded plugins. For users still relying on a unique navigation interface, we have extended move_base action with detailed result and feedback information (though we still provide the current one).
  • Separation between an abstract navigation framework and concrete implementations, allowing faster development of new applications, e.g. 3D navigation.
  • Load multiple planners and controllers, selectable at runtime by setting one of the loaded plugin names in the action goal.
  • Concurrency: Parallel planning, recovering, controlling by selecting different concurrency slots when defining the action goal. Only different plugins instances can run in parallel.

Please see also the Move Base Flex Documentation and Tutorials in the ROS wiki. And this repository contains a working minimal configuration for a turtlebot 3.

Concepts & Architecture

We have created Move Base Flex for a larger target group besides the standard developers and users of move_base and 2D navigation based on costmaps, as well as addressed move_base’s limitations. Since robot navigation can be separated into planning and controlling in many cases, even for outdoor scenarios without the benefits of flat terrain, we designed MBF based on abstract planner-, controller- and recovery behavior-execution classes. To accomplish this goal, we created abstract base classes for the nav core BaseLocalPlanner, BaseGlobalPlanner and RecoveryBehavior plugin interfaces, extending the API to provide a richer and more expressive interface without breaking the current move_base plugin API. The new abstract interfaces allow plugins to return valuable information in each execution cycle, e.g. why a valid plan or a velocity command could not be computed. This information is then passed to the external executive logic through MBF planning, navigation or recovering actions’ feedback and result. The planner, controller and recovery behavior execution is implemented in the abstract execution classes without binding the software implementation to 2D costmaps. In our framework, MoveBase is just a particular implementation of a navigation system: its execution classes implement the abstract ones, bind the system to the costmaps. Thereby, the system can easily be used for other approaches, e.g. navigation on meshes or 3D occupancy grid maps. However, we provide a SimpleNavigationServer class without a binding to costmaps.

MBF architecture: MBF architecture

Future Work

MBF is an ongoing project. Some of the improvements that we have planned for the near future are:

  • Release MBF Mesh Navigation, see mesh_navigation.
  • Auto select the active controller when having concurrently running controllers
  • Add Ackermann steering API
  • Multi Goal API + Action
  • Add new navigation server and core packages using grid_map.
  • Constraints-based goal (see issue https://github.com/magazino/move_base_flex/issues/8)

But, of course you are welcome to propose new fancy features and help make them a reality! Pull Requests are always welcome!

Build Status

  Master Kinetic Lunar Melodic Noetic
Travis Build Status Build Status Build Status Build Status Build Status
Binary Deb   Build Status Build Status Build Status Build Status
Source Deb   Build Status Build Status Build Status Build Status
Develop   Build Status Build Status Build Status Build Status
Documentation   Build Status Build Status Build Status Build Status

Repository Summary

Checkout URI https://github.com/magazino/move_base_flex.git
VCS Type git
VCS Version melodic
Last Updated 2021-10-26
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

README

Move Base Flex: A Highly Flexible Navigation Framework:

This repository contains Move Base Flex (MBF), a backwards-compatible replacement for move_base. MBF can use existing plugins for move_base, and provides an enhanced version of the same ROS interface. It exposes action servers for planning, controlling and recovering, providing detailed information of the current state and the plugin’s feedback. An external executive logic can use MBF and its actions to perform smart and flexible navigation strategies. For example, at Magazino we have successfully deployed MBF at customer facilities to control TORU robots in highly dynamical environments. Furthermore, MBF enables the use of other map representations, e.g. meshes. The core features are:

  • Fully backwards-compatible with current ROS navigation.
  • Actions for the submodules planning, controlling and recovering, and services to query the costmaps are provided. This interface allows external executives, e.g. SMACH, or Behavior Trees, to run highly flexible and complex navigation strategies.
  • Comprehensive result and feedback information on all actions, including error codes and messages from the loaded plugins. For users still relying on a unique navigation interface, we have extended move_base action with detailed result and feedback information (though we still provide the current one).
  • Separation between an abstract navigation framework and concrete implementations, allowing faster development of new applications, e.g. 3D navigation.
  • Load multiple planners and controllers, selectable at runtime by setting one of the loaded plugin names in the action goal.
  • Concurrency: Parallel planning, recovering, controlling by selecting different concurrency slots when defining the action goal. Only different plugins instances can run in parallel.

Please see also the Move Base Flex Documentation and Tutorials in the ROS wiki. And this repository contains a working minimal configuration for a turtlebot 3.

Concepts & Architecture

We have created Move Base Flex for a larger target group besides the standard developers and users of move_base and 2D navigation based on costmaps, as well as addressed move_base’s limitations. Since robot navigation can be separated into planning and controlling in many cases, even for outdoor scenarios without the benefits of flat terrain, we designed MBF based on abstract planner-, controller- and recovery behavior-execution classes. To accomplish this goal, we created abstract base classes for the nav core BaseLocalPlanner, BaseGlobalPlanner and RecoveryBehavior plugin interfaces, extending the API to provide a richer and more expressive interface without breaking the current move_base plugin API. The new abstract interfaces allow plugins to return valuable information in each execution cycle, e.g. why a valid plan or a velocity command could not be computed. This information is then passed to the external executive logic through MBF planning, navigation or recovering actions’ feedback and result. The planner, controller and recovery behavior execution is implemented in the abstract execution classes without binding the software implementation to 2D costmaps. In our framework, MoveBase is just a particular implementation of a navigation system: its execution classes implement the abstract ones, bind the system to the costmaps. Thereby, the system can easily be used for other approaches, e.g. navigation on meshes or 3D occupancy grid maps. However, we provide a SimpleNavigationServer class without a binding to costmaps.

MBF architecture: MBF architecture

Future Work

MBF is an ongoing project. Some of the improvements that we have planned for the near future are:

  • Release MBF Mesh Navigation, see mesh_navigation.
  • Auto select the active controller when having concurrently running controllers
  • Add Ackermann steering API
  • Multi Goal API + Action
  • Add new navigation server and core packages using grid_map.
  • Constraints-based goal (see issue https://github.com/magazino/move_base_flex/issues/8)

But, of course you are welcome to propose new fancy features and help make them a reality! Pull Requests are always welcome!

Build Status

ROS Distro GitHub CI Develop Documentation Source Deb Binary Deb
Kinetic Kinetic CI Build Dev Status Build Doc Status Build Src Status Build Bin Status
Melodic Melodic CI Build Dev Status Build Doc Status Build Src Status Build Bin Status
Noetic Noetic CI Build Dev Status Build Doc Status Build Src Status Build Bin Status

Repository Summary

Checkout URI https://github.com/magazino/move_base_flex.git
VCS Type git
VCS Version noetic
Last Updated 2021-10-26
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

README

Move Base Flex: A Highly Flexible Navigation Framework:

This repository contains Move Base Flex (MBF), a backwards-compatible replacement for move_base. MBF can use existing plugins for move_base, and provides an enhanced version of the same ROS interface. It exposes action servers for planning, controlling and recovering, providing detailed information of the current state and the plugin’s feedback. An external executive logic can use MBF and its actions to perform smart and flexible navigation strategies. For example, at Magazino we have successfully deployed MBF at customer facilities to control TORU robots in highly dynamical environments. Furthermore, MBF enables the use of other map representations, e.g. meshes. The core features are:

  • Fully backwards-compatible with current ROS navigation.
  • Actions for the submodules planning, controlling and recovering, and services to query the costmaps are provided. This interface allows external executives, e.g. SMACH, or Behavior Trees, to run highly flexible and complex navigation strategies.
  • Comprehensive result and feedback information on all actions, including error codes and messages from the loaded plugins. For users still relying on a unique navigation interface, we have extended move_base action with detailed result and feedback information (though we still provide the current one).
  • Separation between an abstract navigation framework and concrete implementations, allowing faster development of new applications, e.g. 3D navigation.
  • Load multiple planners and controllers, selectable at runtime by setting one of the loaded plugin names in the action goal.
  • Concurrency: Parallel planning, recovering, controlling by selecting different concurrency slots when defining the action goal. Only different plugins instances can run in parallel.

Please see also the Move Base Flex Documentation and Tutorials in the ROS wiki. And this repository contains a working minimal configuration for a turtlebot 3.

Concepts & Architecture

We have created Move Base Flex for a larger target group besides the standard developers and users of move_base and 2D navigation based on costmaps, as well as addressed move_base’s limitations. Since robot navigation can be separated into planning and controlling in many cases, even for outdoor scenarios without the benefits of flat terrain, we designed MBF based on abstract planner-, controller- and recovery behavior-execution classes. To accomplish this goal, we created abstract base classes for the nav core BaseLocalPlanner, BaseGlobalPlanner and RecoveryBehavior plugin interfaces, extending the API to provide a richer and more expressive interface without breaking the current move_base plugin API. The new abstract interfaces allow plugins to return valuable information in each execution cycle, e.g. why a valid plan or a velocity command could not be computed. This information is then passed to the external executive logic through MBF planning, navigation or recovering actions’ feedback and result. The planner, controller and recovery behavior execution is implemented in the abstract execution classes without binding the software implementation to 2D costmaps. In our framework, MoveBase is just a particular implementation of a navigation system: its execution classes implement the abstract ones, bind the system to the costmaps. Thereby, the system can easily be used for other approaches, e.g. navigation on meshes or 3D occupancy grid maps. However, we provide a SimpleNavigationServer class without a binding to costmaps.

MBF architecture: MBF architecture

Future Work

MBF is an ongoing project. Some of the improvements that we have planned for the near future are:

  • Release MBF Mesh Navigation, see mesh_navigation.
  • Auto select the active controller when having concurrently running controllers
  • Add Ackermann steering API
  • Multi Goal API + Action
  • Add new navigation server and core packages using grid_map.
  • Constraints-based goal (see issue https://github.com/magazino/move_base_flex/issues/8)

But, of course you are welcome to propose new fancy features and help make them a reality! Pull Requests are always welcome!

Build Status

ROS Distro GitHub CI Develop Documentation Source Deb Binary Deb
Kinetic Kinetic CI Build Dev Status Build Doc Status Build Src Status Build Bin Status
Melodic Melodic CI Build Dev Status Build Doc Status Build Src Status Build Bin Status
Noetic Noetic CI Build Dev Status Build Doc Status Build Src Status Build Bin Status