Skip to content

iCey-git/voronoi_planner

 
 

Repository files navigation

voronoi_planner

voronoi_planner is a ROS 1 nav_core::BaseGlobalPlanner plugin that searches for global paths on a generalized Voronoi diagram (GVD) generated from a costmap_2d occupancy grid.

The planner is intended for mobile robots that benefit from obstacle-clearance aware routes, such as indoor robots, service robots, and RoboMaster-style navigation stacks where a path should prefer the medial axis of free space instead of hugging obstacle boundaries.

Project Status

This repository is a maintained public package for the ROS 1 navigation stack. The current focus is documentation, build reproducibility, and practical integration examples for downstream robotics projects.

The implementation is intentionally small:

  • A ROS global planner plugin exported through pluginlib.
  • Dynamic reconfigure parameters for path smoothing and Voronoi grid publishing.
  • A make_plan service wrapper compatible with nav_msgs/GetPlan.
  • Optional Voronoi grid publication for debugging in RViz.

Features

  • Computes a path from robot pose to goal pose using a Voronoi diagram built on top of the active costmap.
  • Implements the nav_core::BaseGlobalPlanner interface used by move_base.
  • Publishes the generated nav_msgs/Path for visualization.
  • Can publish an occupancy-grid view of the Voronoi graph for debugging.
  • Provides dynamic reconfigure controls for path smoothing behavior.

Repository Layout

.
+-- cfg/                         # dynamic_reconfigure parameters
+-- docs/                        # installation, usage, and maintenance notes
+-- examples/                    # move_base integration snippets
+-- include/                     # planner and DynamicVoronoi headers
+-- src/                         # planner implementation
+-- bgp_plugin.xml               # pluginlib export
+-- CMakeLists.txt               # catkin build file
+-- package.xml                  # ROS package metadata

Requirements

  • ROS 1 with catkin
  • navigation stack packages, especially nav_core and costmap_2d
  • dynamic_reconfigure
  • A dynamicvoronoi package/library available in the catkin workspace
  • C++11 compiler

The package was originally written for ROS 1 style catkin workspaces. Newer ROS 1 distributions such as Melodic and Noetic are the most practical targets for maintenance work.

Quick Start

Clone the package into a catkin workspace:

mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
git clone https://github.com/iCey-git/voronoi_planner.git

Install ROS dependencies from the workspace root:

cd ~/catkin_ws
rosdep update
rosdep install --from-paths src --ignore-src -r -y

Build the workspace:

catkin_make
source devel/setup.bash

Configure move_base to use the plugin:

base_global_planner: "voronoi_planner/VoronoiPlanner"

See docs/installation.md and docs/usage.md for a fuller setup guide.

Configuration

Dynamic reconfigure parameters are defined in cfg/VoronoiPlanner.cfg.

Parameter Default Description
weight_data 0.5 Data term weight used by path smoothing.
weight_smooth 0.3 Smoothness term weight used by path smoothing.
publish_voronoi_grid true Publishes a grid view of Voronoi cells for debugging.
smooth_path true Enables path smoothing after graph search.

Example configuration snippets are available in examples/move_base_global_planner.yaml.

Documentation

Citation

The planner is based on the generalized Voronoi diagram planning approach described in:

@inproceedings{Fedorenkoa2016LocalAG,
  title={Local and Global Motion Planning for Unmanned Surface Vehicle},
  author={Roman Fedorenko},
  year={2016}
}

Paper: Local and Global Motion Planning for Unmanned Surface Vehicle

Contributing

Bug reports, integration notes, and small focused patches are welcome. Please see CONTRIBUTING.md before opening a pull request.

License

This package declares a BSD license in package.xml. See LICENSE for the repository license text.

About

ROS global planner plugin based on generalized Voronoi diagrams for obstacle-clearance-aware navigation.

Topics

Resources

License

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors

Languages

  • C++ 94.1%
  • CMake 4.3%
  • Python 1.6%