Skip to content

dorezyuk/gpp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

51 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GlobalPlannerPipeline

The GlobalPlannerPipeline (gpp) is a pluginlib based "pipeline" for global planning within the ros-navigation-stack.

Core Features

The library allows you to

  • pre-process the inputs for your global planners,
  • chain multiple global planners together,
  • post-process the output form the global planners.

The goal is to separate auxiliary functions from the implementation of the global planners. Additionally the library allows you to create a "planner-chain" - a feature successfully used in the moveit framework.

The project consists of two components. The gpp_interface defines two additional plugin-types: PrePlanning and PostPlanning plugins. The gpp_plugin implements the pipeline which will load and run these pre- and post-planning plugins together with global-planner plugins.

Concept

Before going into the details how to use and configure this library, we will first define some terminology.

Since the naming may be already confusing (plugins, plugins, plugins), we will refer to the plugins loaded by the GppPlugin as its child-plugins.
Those child-plugins are grouped together accordingly to their interfaces. The pre-planning group contains child-plugins implementing the gpp_interface::PrePlanningInterface; The post-planning group contains child-plugins implementing the gpp_interface::PostPlanningInterface; The planning group accepts child-plugins implementing either the nav_core::BaseGlobalPlanner or mbf_costmap_core::CostmapPlanner interfaces.

image

The pipeline concept is illustrated above. When calling GppPlugin::makePlan, the GppPlugin will invoke its child-plugins. The execution of those child-plugins is sequentially, going from the pre- over the planning- to the post-planning group. The result from each child-plugin is passed on the the next.

Read on what you can do with the two additional interfaces, or how to configure the GppPlugin. Additionally have a look at the two example-plugins: GppUpdateMap and GppPrunePath.

Build or Install

ROS-noetic users can install the packages via apt:

sudo apt udpate
sudo apt install ros-noetic-gpp-interface ros-noetic-gpp-plugin

If you want to build the packages from source, then follow the standard-way for ros-packages and run:

cd ~catkin_ws/src
git clone https://github.com/dorezyuk/gpp.git
catkin build gpp_plugin

CI-Status

build-status