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:
- Headland generation: Creating the boundary paths for the field.
- Swath generation: Determining the parallel lines (swaths) the vehicle must follow.
- Route planning: Optimizing the order in which swaths are visited using tools like OR-tools or classic patterns (snake, spiral, boustrophedon).
- 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