Skip to main content

Nexat Terrain Routing and Coverage Engine

Project description

Nexat Terrain Routing And Coverage Engine

A sophisticated complete coverage path planning library developed for controlled traffic farming applications. Specifically useful for vehicles with nonholonomic steering kinematics that have a similar turning radius to its track / working width.

Features

Complete coverage path planning

This library excels in robust & intelligent route optimization and curve planning for complex field geometries.

Flexible route / task specification

The route planner has a lot of options and parameters that change the way the route is planned and how the curves are calculated.

Planner parameters include:

  • Start / finish location
  • Variable working width (multiple of tack width e.g. for spraying applications)
  • Block working configuration (group sets of neighboring ab lines together)
  • Reusing existing paths on a track system to minimize soil compaction
  • Working corridor error avoidance
  • Multiple turning maneuvers
  • Weighted prioritization of overall distance vs overall coverage

Installation

Releases of this library are hosted on pip

pip install nexat-trace

Usage

When using this library, you should start with generating a track system. The TrackSystem class provides basic track system generation from an outer field border:

[!CAUTION] All geometry should be in a metric coordinate system e.g. UTM projection.

from nexat_trace import TrackSystem

track_system = TrackSystem.from_border(
    field_border,  # your outer field border as a shapely Polygon with holes as obstacles
    14.0,  # desired track width in meters
    reference_ab_line,  # reference LineString within your field border
    [0.5, 1.0, 1.0, 0.5]  # headland widths configuration
)

To use this library most effectively, you should generate your own specific track systems with field border, headlands, obstacles, AB lines and obstacle avoidance segments.

Now it is time to configure the planner parameters to match the desired task definition. Here is a basic example:

from nexat_trace import RoutePlanner, CorridorStrategy

planner = RoutePlanner()

# should be whole multiple of track width
planner.route_params.working_width = 14.0

# ignore working corridor errors for now
planner.route_params.corridor_strategy = CorridorStrategy.DRIVE_NONE

# neutral distance optimizing weights
planner.route_params.weights.headland_distance_factor = 1.0
planner.route_params.weights.headland_cost_exponent = 1.0

Now a route can be planned using the prepared track system and configured planner:

route = planner.plan_route_from_track_system(
    track_system,  # prepared track system instance
    5,  # time in s spent doing guided local search optimization
)
path = route.get_linestring()

The route can be plotted using the utility functions:

[!NOTE] For this you need to have the dev requirements installed. See dev_requirements.txt or setup_venv.sh for info

from nexat_trace.util import plot_geometry as pg
pg.plot_linestring_rainbow(path)
pg.show_plot()

Developing

When developing on linux you can use

source setup_venv.sh

to setup & activate a python venv with all development dependencies. The script also builds and installs the pydubins extension.

Now files in the root of the repo like example_basic.py or example_complex.py can be ran and debugged running code in this repo.

Credits

This library depends on shapely, ortools and numpy as well as pydubins.

The pydubins module is redistributed in the nexat-trace package. See THIRD_PARTY file for license info of the pydubins software.

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

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

nexat_trace-1.1.0-cp313-cp313-win_amd64.whl (118.8 kB view details)

Uploaded CPython 3.13Windows x86-64

nexat_trace-1.1.0-cp313-cp313-win32.whl (115.2 kB view details)

Uploaded CPython 3.13Windows x86

nexat_trace-1.1.0-cp313-cp313-musllinux_1_2_x86_64.whl (335.3 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

nexat_trace-1.1.0-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (336.9 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64manylinux: glibc 2.5+ x86-64

nexat_trace-1.1.0-cp313-cp313-macosx_11_0_arm64.whl (124.0 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

nexat_trace-1.1.0-cp312-cp312-win_amd64.whl (119.5 kB view details)

Uploaded CPython 3.12Windows x86-64

nexat_trace-1.1.0-cp312-cp312-win32.whl (115.7 kB view details)

Uploaded CPython 3.12Windows x86

nexat_trace-1.1.0-cp312-cp312-musllinux_1_2_x86_64.whl (342.1 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

nexat_trace-1.1.0-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (344.5 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64manylinux: glibc 2.5+ x86-64

nexat_trace-1.1.0-cp312-cp312-macosx_11_0_arm64.whl (124.8 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

nexat_trace-1.1.0-cp311-cp311-win_amd64.whl (118.9 kB view details)

Uploaded CPython 3.11Windows x86-64

nexat_trace-1.1.0-cp311-cp311-win32.whl (115.4 kB view details)

Uploaded CPython 3.11Windows x86

nexat_trace-1.1.0-cp311-cp311-musllinux_1_2_x86_64.whl (333.2 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

nexat_trace-1.1.0-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (333.8 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64manylinux: glibc 2.5+ x86-64

nexat_trace-1.1.0-cp311-cp311-macosx_11_0_arm64.whl (124.6 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

nexat_trace-1.1.0-cp310-cp310-win_amd64.whl (118.7 kB view details)

Uploaded CPython 3.10Windows x86-64

nexat_trace-1.1.0-cp310-cp310-win32.whl (115.4 kB view details)

Uploaded CPython 3.10Windows x86

nexat_trace-1.1.0-cp310-cp310-musllinux_1_2_x86_64.whl (319.8 kB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

nexat_trace-1.1.0-cp310-cp310-musllinux_1_2_i686.whl (309.7 kB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ i686

nexat_trace-1.1.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (316.4 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64manylinux: glibc 2.5+ x86-64

nexat_trace-1.1.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (298.6 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ i686manylinux: glibc 2.5+ i686

nexat_trace-1.1.0-cp310-cp310-macosx_11_0_arm64.whl (124.7 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

File details

Details for the file nexat_trace-1.1.0-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: nexat_trace-1.1.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 118.8 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.14

File hashes

Hashes for nexat_trace-1.1.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 8cd5e800e2dce41772268ecad10ad9c686426f799c79525a02296f92ccb09fb0
MD5 8cb8f029b150fc0cb7cb1a4bce17dd1d
BLAKE2b-256 7c1bbd87338627fdb21bc5dc2e4b6ebfccac0044498aceb82b935b39708b1e04

See more details on using hashes here.

File details

Details for the file nexat_trace-1.1.0-cp313-cp313-win32.whl.

File metadata

  • Download URL: nexat_trace-1.1.0-cp313-cp313-win32.whl
  • Upload date:
  • Size: 115.2 kB
  • Tags: CPython 3.13, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.14

File hashes

Hashes for nexat_trace-1.1.0-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 d16cb88f1ed0f5e8a6a5c826f4166e57a834948d771ac6453075c6c3433f3052
MD5 1a8d66f835ad8551a2cf83ae36cf8d26
BLAKE2b-256 e6d53406746f1084ffb53b00f3d526980ec22781e22aa5ca3d97cec5c759224f

See more details on using hashes here.

File details

Details for the file nexat_trace-1.1.0-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for nexat_trace-1.1.0-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 ff97b12687482d9af3c77816e65e8d1fbc66a1ffade83028093a2b51b4551ebc
MD5 550dc0c45951d2a4b87866e80a1225fa
BLAKE2b-256 7110801a3616da91e77b2c57c7fd3bef1900bb9b56d07cd02b5fdc09227b1ae3

See more details on using hashes here.

File details

Details for the file nexat_trace-1.1.0-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl.

File metadata

File hashes

Hashes for nexat_trace-1.1.0-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 aba1f5e106d87b4d6efe69a7db998c72c28e856ed4c7ed4a3e0c7b29a10490e1
MD5 0ea9b185a023adbb58c8cbea3a91b380
BLAKE2b-256 226001fc0bb0c4f27f3685bc0349aafc62a07ed9bea4eeb7e95a3731ffd33a41

See more details on using hashes here.

File details

Details for the file nexat_trace-1.1.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for nexat_trace-1.1.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d6a88ae95b1687afbe84269dde7081ac68efceb326e75569d02d18fd63131369
MD5 e3aa60e4b35db8a3144852a7dc383700
BLAKE2b-256 2349564d7b8e40842410d6f6e8f540df77caea39f734e630d2babc1c13bd984c

See more details on using hashes here.

File details

Details for the file nexat_trace-1.1.0-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: nexat_trace-1.1.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 119.5 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.14

File hashes

Hashes for nexat_trace-1.1.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 44cac51e55f95e5093021605e4861501474e544e61b36d435b009d8621437cc7
MD5 bb1a9cc9419ab9ba9c4ea929bed51cc7
BLAKE2b-256 7f90ec6bfc13834a4626b24a131b3a8b94e23389c84ddadeb7eb9586ed5d6e83

See more details on using hashes here.

File details

Details for the file nexat_trace-1.1.0-cp312-cp312-win32.whl.

File metadata

  • Download URL: nexat_trace-1.1.0-cp312-cp312-win32.whl
  • Upload date:
  • Size: 115.7 kB
  • Tags: CPython 3.12, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.14

File hashes

Hashes for nexat_trace-1.1.0-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 d7594a0b9c54b4f7bd58c639b316d22a2cbfdc49f2789dd5c29366ec1a776c27
MD5 47cf7c1b2c2b5f621d1fb855911436eb
BLAKE2b-256 7ac97904c6b93599a1ab446e9711f8c01e9f37f5dc897d318d41a9494d69ac19

See more details on using hashes here.

File details

Details for the file nexat_trace-1.1.0-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for nexat_trace-1.1.0-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 6485c2f6661dc7341da6a67618f64d237f218a54f39e8f9a421240b167adfa67
MD5 99b347aed4f0b5db221a930b362a434d
BLAKE2b-256 4b7519efd9775759d69941cc95678782e864fa88c31d94600ceadfa2731ef74e

See more details on using hashes here.

File details

Details for the file nexat_trace-1.1.0-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl.

File metadata

File hashes

Hashes for nexat_trace-1.1.0-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 b2d9ed7b02c4ab667c57aceba20d4c70a185497149b30c6be975743c1f24a5b8
MD5 3e781840da506ac5e5d4f2b5c7a806cf
BLAKE2b-256 dad22729fac45481dbedb3fbd6b718c0a723d19d0998fccde798a0ba2ab85a2c

See more details on using hashes here.

File details

Details for the file nexat_trace-1.1.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for nexat_trace-1.1.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0671d20000cc129a68dadb7f666b3d168fa4de4ab59b7800d7447032ee6c5368
MD5 4dbf74d54da5011dcb12a4f4d3a82834
BLAKE2b-256 0d046748896b34ba2bf71ebc0be9b1bacc072133495b5c4d68255f26d4e81019

See more details on using hashes here.

File details

Details for the file nexat_trace-1.1.0-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: nexat_trace-1.1.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 118.9 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.14

File hashes

Hashes for nexat_trace-1.1.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 15426bad1a8a4649e72776075c25ed1c1313fe3117f6e542e87b3ce2b02603e7
MD5 121e732ebe20dcd9dec20f2d49876137
BLAKE2b-256 34089214874bc3ad29bd4f4457fd691014a9d0ddd232127c7375aae3c4094906

See more details on using hashes here.

File details

Details for the file nexat_trace-1.1.0-cp311-cp311-win32.whl.

File metadata

  • Download URL: nexat_trace-1.1.0-cp311-cp311-win32.whl
  • Upload date:
  • Size: 115.4 kB
  • Tags: CPython 3.11, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.14

File hashes

Hashes for nexat_trace-1.1.0-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 cde8c0af943d5a516c3799799b320d3cbef723d801c16f906e784ccd368985ea
MD5 edd90a559f7faec27337d5921ddceba2
BLAKE2b-256 5d7a5475c7e1dfa1c648a8894b989429fd67e13be9925cedb710b4476251e2d5

See more details on using hashes here.

File details

Details for the file nexat_trace-1.1.0-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for nexat_trace-1.1.0-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 8587e00ef7fd1b1e4dfc8e3369f070b9ba28014a286435358e4113db1a8100bd
MD5 c675bdbb4957974076eb16fcc96ea121
BLAKE2b-256 1621369ce222327695273e8e1259ba69f9c28ac7680a2a45eb4c64c1f9b12ef4

See more details on using hashes here.

File details

Details for the file nexat_trace-1.1.0-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl.

File metadata

File hashes

Hashes for nexat_trace-1.1.0-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 dd4d6a5ac0ed257892d65c77435a916764be326c89aac279bfd92bc0867728b5
MD5 a23effbe347e3d7f812ed235fe856884
BLAKE2b-256 c34ed6f1df380a2b0fa2b958c525aa709d15795a5be85944c07d8b671725993c

See more details on using hashes here.

File details

Details for the file nexat_trace-1.1.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for nexat_trace-1.1.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d4f02b4c57de47b62231c81d16f5799cbebe66ede12a5bb9b243322f9ae94ecd
MD5 34964dd6ef1d236dc2c0704f41bd9920
BLAKE2b-256 61364f6c12b499ab7717e193a50d043c6f35fae12bf7418b0faaa970d3ae6a42

See more details on using hashes here.

File details

Details for the file nexat_trace-1.1.0-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: nexat_trace-1.1.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 118.7 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.14

File hashes

Hashes for nexat_trace-1.1.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 c11beea2d30db76111485a8cbfaf4c43f18afc657796308990226fa8c761cd16
MD5 e9f9d9a925a22bdd510cacf7e3f64b6e
BLAKE2b-256 9e6d564a43c6d3d6a6c807927228de050a4b9fec7af2a0f491e92bd0e8f9efa7

See more details on using hashes here.

File details

Details for the file nexat_trace-1.1.0-cp310-cp310-win32.whl.

File metadata

  • Download URL: nexat_trace-1.1.0-cp310-cp310-win32.whl
  • Upload date:
  • Size: 115.4 kB
  • Tags: CPython 3.10, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.14

File hashes

Hashes for nexat_trace-1.1.0-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 a3ef01f85fdfc3206bdd9a410d083e30b4ba8fbf4f09428ca825493fd619428c
MD5 37ec6bc49124ef035a101f47d534c9e8
BLAKE2b-256 3e60175a637e17d8a64e472710041a9633a8fed573e08864efee7f15cb5e6ec2

See more details on using hashes here.

File details

Details for the file nexat_trace-1.1.0-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for nexat_trace-1.1.0-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 734e1226407231fdfee2cd3b8023185cbfafd14fa6f3d9956074b06671b739a3
MD5 228c47f2cbae10f2012fd6d5620af246
BLAKE2b-256 36ba5ee3d5f2b6867edab9512eeecc9c5874467afc2bced8563fef2dd6e796d0

See more details on using hashes here.

File details

Details for the file nexat_trace-1.1.0-cp310-cp310-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for nexat_trace-1.1.0-cp310-cp310-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 c95e10a1718bd255e547b35b80bb55b513fb5d339212b8b85d6d279150c37da0
MD5 f4071d35aee015d290e6d63a9791594f
BLAKE2b-256 b7160b13d20287bc0f94df975303f14667bdbdca345304700219552333a6d1de

See more details on using hashes here.

File details

Details for the file nexat_trace-1.1.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for nexat_trace-1.1.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c0cf556a96b127c8292dd510d3feb394f095aaf9a90feb4e89c5674a7814d286
MD5 1bf92d2a721d9d4ceaa982e674074908
BLAKE2b-256 3fe2b9cd0f8a537589713f8f10a0bf8ef64cfa3e974ec772dcdcf584ee5e0774

See more details on using hashes here.

File details

Details for the file nexat_trace-1.1.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for nexat_trace-1.1.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 93e68938e0286b483f9752ba34eaf7a2f27339294dd62f91f4c23e9c58827ab5
MD5 343a8b1676e917f1eed1e66b02157f90
BLAKE2b-256 ea52f05ee833faf68dc4899c9f6d910dd34beabfae26dc547b2b1eb04d40c6d1

See more details on using hashes here.

File details

Details for the file nexat_trace-1.1.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for nexat_trace-1.1.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8f5f141b39aff1a48b610be99cca93df7f7422bed39dd407365077c741f6dd79
MD5 3ae9133f10f876bbdf7e01cd27b0b86c
BLAKE2b-256 f2394a003cdf535cbbf2a6622afdbdc07ef34dbe13f87457b6a8133f61549d86

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