Giter VIP home page Giter VIP logo

move_base_flex's Introduction

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

move_base_flex's People

Contributors

spuetz avatar corot avatar tonyrockrobo avatar dorezyuk avatar reinzor avatar timple avatar rayman avatar ipa-fez avatar alireza-hosseini avatar christofdubs avatar gavanderhoorn avatar howardcochran avatar yannickdehoop avatar nekrowyzx avatar cxy2020 avatar hcv1027 avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.