open-navigation/opennav_coverage
Nav2 Compatible Complete Cover Task Server, Navigator, & BT Utils
What it solves
This project provides a complete coverage path planning system for robots, allowing them to efficiently cover an entire area (like a field) without gaps. It solves the problem of generating paths for autonomous machines to perform tasks such as mowing, spraying, or harvesting, supporting both open-field polygons and pre-defined rows (e.g., in tree farms).
How it works
The system integrates the Fields2Cover library into the Nav2 framework as a set of Lifecycle-Component Task Servers. It processes input polygons or annotated rows and executes a multi-stage planning process:
- Swath Generation: Creates the parallel lines (swaths) the robot must follow.
- Headland Generation: Optionally removes a border area around the field.
- Route Generation: Determines the order in which swaths are visited (e.g., snake, spiral, or custom patterns).
- Path Planning: Computes the actual feasible paths (using Dubins or Reeds-Shepp curves) to connect these swaths.
It supports both GPS and Cartesian coordinates and exposes these capabilities via Nav2 action servers and Behavior Tree (BT) nodes.
Who it’s for
Robotics developers working with autonomous agricultural vehicles, industrial cleaning robots, or any machine that needs to systematically cover a defined area, particularly those already using the ROS 2 and Nav2 ecosystem.
Highlights
- Dual Coverage Modes: Supports both open-field polygon-based planning and row-based planning for irregular or pre-established rows.
- Nav2 Integration: Fully integrated as a Nav2 Task Server with corresponding Behavior Tree nodes and a Navigator plugin.
- Flexible Routing: Offers multiple routing patterns including Boustrophedon, Snake, and Spiral.
- Coordinate Flexibility: Handles both GPS and Cartesian coordinates for field definitions.
- Modular Design: Split into five specialized packages for messages, BT nodes, the main server, and a navigator plugin.
Related
- Project
- Project
- Project
- Project
- Project