Skip to main content

Pathfinding for autonomous robots

Project description

Louis Cutteridge FYP: Coverage Path Planning for Agricultural Fields


Abstract

Coverage path planning addresses the problem of finding a route that traverses every point within an environment. In applications such as agricultural seeding, coverage is destructive; subsequent passes to the same point undo the result of the first, making revisits undesirable. I formalise this as an optimisation problem: find a path that covers every cell in the grid while minimising the total number of revisits and turns. I present a systematic evaluation of my algorithm and evaluate its performance. This is followed by the creation of a web-app (AuTo-mato) which generates coverage paths for agricultural fields in the UK.


Key Contributions

  • Formalising CPP as a GTSP problem
  • Rigorously proving the algorithm for complete coverage
  • Solving the optimisation problem
  • Creating the AuTo-mato web-app, which uses the algorithm as a backend

Repository Structure

Directory Contents
docs/ Diagrams and documentation assets
field_coverage/ Backend
field_coverage_ui/ Frontend
results/ Experiments, CSV files, and graphs
data/ GeoJSON files

Setup

Note, this docker image has not been tested on a non arm CPU. Results and setup may differ.

1. Docker Container

Build the image from the root of field_coverage/:

docker build -f decomp/dockerfile -t fields2cover-api:v3 --platform linux/arm64 .

Run the container:

docker run -d -p 8000:8000 --platform linux/arm64 fields2cover-api:v3

2. Install Dependencies

Install uv, then:

uv pip install -e .

If this does not download field_coverage as well:

uv pip install field_coverage

3. Start the Backend

From the root of field_coverage/:

uvicorn coverage_api:app --reload --port 8000

4. Start the Frontend

From the root of field_coverage_ui/:

npm run dev

Running Tests

pytest

To view the coverage report, open the following in your browser:

file:///<path-to-repo>/htmlcov/index.html

Architecture

The entire OOP architecture of the project:

Backend UML

Flowcharts

ACO

Flowchart for parallel ACO:

ACO Flowchart

SA

Flowchart for SA:

SA Flowchart

Pipeline

High level pipeline of field_coverage:

Pipeline

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

field_coverage-0.1.0.tar.gz (68.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

field_coverage-0.1.0-py3-none-any.whl (74.3 kB view details)

Uploaded Python 3

File details

Details for the file field_coverage-0.1.0.tar.gz.

File metadata

  • Download URL: field_coverage-0.1.0.tar.gz
  • Upload date:
  • Size: 68.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.14

File hashes

Hashes for field_coverage-0.1.0.tar.gz
Algorithm Hash digest
SHA256 0e2523f3a7b214ac87fb5c4d11243c407c4b317bbb07b603aa5f88ba441c9bbd
MD5 4c32b8046a898f12e8e300c580440ae4
BLAKE2b-256 6299fdfae3590ab27d8ccb0020a26c7f2adf666cbd648151986ce1ff9bcb33ba

See more details on using hashes here.

File details

Details for the file field_coverage-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: field_coverage-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 74.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.14

File hashes

Hashes for field_coverage-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9bd16f70324a25d647c00d28a609a3242dbd9c53f7ce0d379a362152c693e970
MD5 61b09d67b34746acb3bbea9ef27dff5e
BLAKE2b-256 ae02789feed6df8db01b2259a524ca7e32fb32f9ae2d164dd83499648a5cd416

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page