Fields2Cover/Fields2Cover

Robust and efficient coverage paths for autonomous agricultural vehicles. A modular and extensible Coverage Path Planning library

What it solves

Fields2Cover is designed to solve the Coverage Path Planning (CPP) problem for autonomous agricultural vehicles. It ensures that a vehicle can cover every part of a field while minimizing inefficiency and ensuring the paths are actually drivable by the robot's physical constraints.

How it works

The library uses a modular pipeline to transform a field definition and vehicle specifications into a complete path. This process involves several interchangeable modules:

  1. Headland generation: Creating the boundary paths for the field.
  2. Swath generation: Determining the parallel lines (swaths) the vehicle must follow.
  3. Route planning: Optimizing the order in which swaths are visited using tools like OR-tools or classic patterns (snake, spiral, boustrophedon).
  4. Path planning: Generating the final drivable path, including kinematically feasible turns using Dubins and Reeds-Shepp curves.

It handles complex, non-convex fields and obstacles using trapezoidal and boustrophedon decomposition.

Who it’s for

It is primarily aimed at researchers and developers working on autonomous farming equipment and agricultural robotics, providing a standardized framework to implement and compare different coverage path planning algorithms.

Highlights

  • Modular Architecture: All steps from headland to path planning are interchangeable modules.
  • Kinematic Feasibility: Uses Dubins and Reeds-Shepp curves to ensure turns are physically possible for the vehicle.
  • Multi-language Support: Written in C++17 with Python bindings for ease of use.
  • Complex Field Handling: Supports non-convex fields and obstacles through geometric decomposition.
  • ROS 2 Integration: Compatible with ROS 2 via the opennav_coverage server.

Related

  • Project
  • Project
  • Project
  • Project
  • Project