From 4a2afe15a8b9bb90bf2a9ad97b745a3c36129ad0 Mon Sep 17 00:00:00 2001 From: Alexander Mock Date: Thu, 6 Nov 2025 08:14:47 +0100 Subject: [PATCH 1/7] first suggestion of a more modern readme --- README.md | 67 ++++++++++++++++++++++++++++++++++--------------------- 1 file changed, 42 insertions(+), 25 deletions(-) diff --git a/README.md b/README.md index 00e64583..1110d61e 100644 --- a/README.md +++ b/README.md @@ -1,37 +1,32 @@ -This is the active ROS2 branch of this repository. If your are looking for the ROS1 version, checkout the [noetic](https://github.com/naturerobots/move_base_flex/tree/noetic) or [master](https://github.com/naturerobots/move_base_flex/tree/master) branches. - [![Jazzy CI](https://github.com/naturerobots/move_base_flex/actions/workflows/jazzy.yaml/badge.svg)](https://github.com/naturerobots/move_base_flex/actions/workflows/jazzy.yaml) [![Humble CI](https://github.com/naturerobots/move_base_flex/actions/workflows/humble.yaml/badge.svg)](https://github.com/naturerobots/move_base_flex/actions/workflows/humble.yaml) -# Move Base Flex: A Highly Flexible Navigation Framework: +# Move Base Flex: A Highly Flexible Navigation Framework + +**Move Base Flex (MBF)** is a **modular, 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 **interface layer** that enables developers to design and integrate their own navigation systems using arbitrary map representations and custom plugin implementations. -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](https://www.magazino.eu/?lang=en) 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. +## Key Features -Please see also the [Move Base Flex Documentation and Tutorials](https://wiki.ros.org/move_base_flex) in the ROS wiki. And [this repository](https://github.com/Rayman/turtlebot3_mbf) contains a working minimal configuration for a turtlebot 3. +* **Map-Agnostic Interface Design** + + MBF's interfaces are independent of any particular map representation (e.g., 2D costmaps, [meshes](https://github.com/naturerobots/mesh_navigation), or voxel grids), enabling seamless integration, scientific comparison, and context-aware selection of both navigation implementations and map types. -## 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 +* **Modular Action-Based Architecture** + + Separate action servers for *path planning*, *control*, and *recovery* enable external [deliberation software](https://github.com/ros-wg-delib/awesome-ros-deliberation) (e.g., Behavior Trees, SMACH, or custom logic) to coordinate complex navigation strategies. -The ROS2 version comes with an additional package that helps with integration tests: -- mbf_test_utility (only a test dependency) +* **Extensible Plugin Framework** + + Multiple planners, controllers, and recovery behaviors can be loaded simultaneously, selected at runtime, or executed in parallel using different concurrency slots. -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. +* **Rich Feedback and Diagnostics** + + All actions expose detailed feedback, results, and error codes, providing transparent runtime information for better debugging and system supervision. -Note that [mesh_navigation](https://github.com/naturerobots/mesh_navigation) is also available for ROS2, now. It provides navigation components that utilize 3D mesh maps. +* **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 @@ -40,6 +35,20 @@ We have created Move Base Flex for a larger target group besides the standard de MBF architecture: ![MBF architecture](doc/images/move_base_flex.png) +## History + +MBF was originally developed for **ROS 1** by [Magazino](https://www.magazino.eu/en/) (see [noetic](https://github.com/naturerobots/move_base_flex/tree/noetic) or [master](https://github.com/naturerobots/move_base_flex/tree/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](https://www.magazino.eu/?lang=en)**, 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: @@ -59,3 +68,11 @@ Move Base Flex was initially developed at Magazino. ### [ Nature Robots](https://naturerobots.com/) The latest version (ROS2) is developed and maintained by Nature Robots. + +## Further Resources + +* [Move Base Flex Documentation and Tutorials](https://wiki.ros.org/move_base_flex) +* [Example TurtleBot3 Configuration](https://github.com/Rayman/turtlebot3_mbf) +* [MBF Deliberation Examples](https://github.com/amock/mbf_deliberation) +* [MBF Tutorials](https://github.com/naturerobots/mbf_tutorials) +* [Mesh Navigation](https://github.com/naturerobots/mesh_navigation) From 19bef5a1a4e2f1233b109c3ae64a1dd00af87c05 Mon Sep 17 00:00:00 2001 From: Alexander Mock Date: Thu, 6 Nov 2025 15:49:29 +0100 Subject: [PATCH 2/7] readded news. removed ROS 1 resources from 'Further Resources' --- README.md | 37 ++++++++++++++++++++++++++++++------- 1 file changed, 30 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 1110d61e..43da9d80 100644 --- a/README.md +++ b/README.md @@ -30,9 +30,9 @@ Rather than being a complete navigation stack, MBF serves as an **interface laye ## 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. +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:** ![MBF architecture](doc/images/move_base_flex.png) ## History @@ -69,10 +69,33 @@ Move Base Flex was initially developed at Magazino. ### [ Nature Robots](https://naturerobots.com/) The latest version (ROS2) is developed and maintained by Nature Robots. +Here’s a clearer and more polished rephrasing of your section — concise but professional: + ## Further Resources -* [Move Base Flex Documentation and Tutorials](https://wiki.ros.org/move_base_flex) -* [Example TurtleBot3 Configuration](https://github.com/Rayman/turtlebot3_mbf) -* [MBF Deliberation Examples](https://github.com/amock/mbf_deliberation) -* [MBF Tutorials](https://github.com/naturerobots/mbf_tutorials) -* [Mesh Navigation](https://github.com/naturerobots/mesh_navigation) +* [**Mesh Navigation**](https://github.com/naturerobots/mesh_navigation) + + Provides 3D navigation on **mesh surfaces**, implementing the **MBF interfaces** provided by this repository. + +* [**MBF Deliberation Examples**](https://github.com/amock/mbf_deliberation) + + 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](https://github.com/naturerobots/mesh_navigation) is also available for ROS2, now. It provides navigation components that utilize 3D mesh maps. From 9c9995eb86fa27a872819ee73a03e748f3f31ea3 Mon Sep 17 00:00:00 2001 From: Alexander Mock Date: Thu, 6 Nov 2025 15:53:28 +0100 Subject: [PATCH 3/7] removed some of the bold styles --- README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 43da9d80..6a9cdb23 100644 --- a/README.md +++ b/README.md @@ -3,8 +3,8 @@ # Move Base Flex: A Highly Flexible Navigation Framework -**Move Base Flex (MBF)** is a **modular, 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 **interface layer** that enables developers to design and integrate their own navigation systems using arbitrary map representations and custom plugin implementations. +Move Base Flex (MBF) is a modular, 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 interface layer that enables developers to design and integrate their own navigation systems using arbitrary map representations and custom plugin implementations. ## Key Features @@ -37,8 +37,8 @@ Since robot navigation can be separated into planning and controlling in many ca ## History -MBF was originally developed for **ROS 1** by [Magazino](https://www.magazino.eu/en/) (see [noetic](https://github.com/naturerobots/move_base_flex/tree/noetic) or [master](https://github.com/naturerobots/move_base_flex/tree/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](https://www.magazino.eu/?lang=en)**, to control **TORU robots** operating in dynamic warehouse scenarios. +MBF was originally developed for ROS 1 by [Magazino](https://www.magazino.eu/en/) (see [noetic](https://github.com/naturerobots/move_base_flex/tree/noetic) or [master](https://github.com/naturerobots/move_base_flex/tree/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](https://www.magazino.eu/?lang=en), to control TORU robots operating in dynamic warehouse scenarios. Compared to `move_base`, MBF introduced: @@ -47,7 +47,7 @@ Compared to `move_base`, MBF introduced: * 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. +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: From fae1ff44c2b3b74e5028dd4efcd7b35d8a6904fb Mon Sep 17 00:00:00 2001 From: Alexander Mock Date: Thu, 6 Nov 2025 16:10:38 +0100 Subject: [PATCH 4/7] merged key features section with overview --- README.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/README.md b/README.md index 6a9cdb23..bc2097f6 100644 --- a/README.md +++ b/README.md @@ -4,9 +4,7 @@ # Move Base Flex: A Highly Flexible Navigation Framework Move Base Flex (MBF) is a modular, 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 interface layer that enables developers to design and integrate their own navigation systems using arbitrary map representations and custom plugin implementations. - -## Key Features +Rather than being a complete navigation stack, MBF serves as an 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** From 88b285d72dd4a385f2a9a750d6b7edfa25b1941b Mon Sep 17 00:00:00 2001 From: Alexander Mock Date: Thu, 6 Nov 2025 16:14:57 +0100 Subject: [PATCH 5/7] added two words to descr for better block text --- README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/README.md b/README.md index bc2097f6..cd04e6ec 100644 --- a/README.md +++ b/README.md @@ -3,8 +3,7 @@ # Move Base Flex: A Highly Flexible Navigation Framework -Move Base Flex (MBF) is a modular, 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 interface layer that enables developers to design and integrate their own navigation systems using arbitrary map representations and custom plugin implementations. Key features are: +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** From acde33734c5fee0e700274d6d97e014fd2d60e9e Mon Sep 17 00:00:00 2001 From: Alexander Mock Date: Thu, 6 Nov 2025 16:17:06 +0100 Subject: [PATCH 6/7] cleanup --- README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/README.md b/README.md index cd04e6ec..c17e57f7 100644 --- a/README.md +++ b/README.md @@ -66,8 +66,6 @@ Move Base Flex was initially developed at Magazino. ### [ Nature Robots](https://naturerobots.com/) The latest version (ROS2) is developed and maintained by Nature Robots. -Here’s a clearer and more polished rephrasing of your section — concise but professional: - ## Further Resources * [**Mesh Navigation**](https://github.com/naturerobots/mesh_navigation) From fda124c1bfe695c990998c8bbc9c9b0f453797ac Mon Sep 17 00:00:00 2001 From: Alexander Mock Date: Thu, 6 Nov 2025 16:17:56 +0100 Subject: [PATCH 7/7] removed some more bold styles from words --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c17e57f7..b51a0d9a 100644 --- a/README.md +++ b/README.md @@ -70,7 +70,7 @@ The latest version (ROS2) is developed and maintained by Nature Robots. * [**Mesh Navigation**](https://github.com/naturerobots/mesh_navigation) - Provides 3D navigation on **mesh surfaces**, implementing the **MBF interfaces** provided by this repository. + Provides 3D navigation on mesh surfaces, implementing the MBF interfaces provided by this repository. * [**MBF Deliberation Examples**](https://github.com/amock/mbf_deliberation)