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.7-cp313-cp313-win_amd64.whl (126.6 kB view details)

Uploaded CPython 3.13Windows x86-64

nexat_trace-1.1.7-cp313-cp313-win32.whl (123.8 kB view details)

Uploaded CPython 3.13Windows x86

nexat_trace-1.1.7-cp313-cp313-musllinux_1_2_x86_64.whl (341.9 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

nexat_trace-1.1.7-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (343.4 kB view details)

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

nexat_trace-1.1.7-cp313-cp313-macosx_11_0_arm64.whl (133.1 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

nexat_trace-1.1.7-cp312-cp312-win_amd64.whl (127.3 kB view details)

Uploaded CPython 3.12Windows x86-64

nexat_trace-1.1.7-cp312-cp312-win32.whl (124.3 kB view details)

Uploaded CPython 3.12Windows x86

nexat_trace-1.1.7-cp312-cp312-musllinux_1_2_x86_64.whl (349.1 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

nexat_trace-1.1.7-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (351.0 kB view details)

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

nexat_trace-1.1.7-cp312-cp312-macosx_11_0_arm64.whl (133.9 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

nexat_trace-1.1.7-cp311-cp311-win_amd64.whl (126.8 kB view details)

Uploaded CPython 3.11Windows x86-64

nexat_trace-1.1.7-cp311-cp311-win32.whl (123.9 kB view details)

Uploaded CPython 3.11Windows x86

nexat_trace-1.1.7-cp311-cp311-musllinux_1_2_x86_64.whl (341.6 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

nexat_trace-1.1.7-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (341.9 kB view details)

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

nexat_trace-1.1.7-cp311-cp311-macosx_11_0_arm64.whl (133.7 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

nexat_trace-1.1.7-cp310-cp310-win_amd64.whl (126.7 kB view details)

Uploaded CPython 3.10Windows x86-64

nexat_trace-1.1.7-cp310-cp310-win32.whl (124.0 kB view details)

Uploaded CPython 3.10Windows x86

nexat_trace-1.1.7-cp310-cp310-musllinux_1_2_x86_64.whl (327.2 kB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

nexat_trace-1.1.7-cp310-cp310-musllinux_1_2_i686.whl (314.4 kB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ i686

nexat_trace-1.1.7-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (324.4 kB view details)

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

nexat_trace-1.1.7-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (309.0 kB view details)

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

nexat_trace-1.1.7-cp310-cp310-macosx_11_0_arm64.whl (133.7 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

File details

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

File metadata

File hashes

Hashes for nexat_trace-1.1.7-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 6b8200cc7f0b608cdfc5665d2afbe4049f5fe3a8edee02ef7c586ec0fe43139c
MD5 48191c6a59ef250364cce8143b396e1c
BLAKE2b-256 929d9d92f39358138e2ac6e72e7b932c4e76be5585e41f2b664e461b0fc15dd8

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for nexat_trace-1.1.7-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 7bb427c5336e0435a230797b87faf5702353173f6443e64221cff98fdc3cd93e
MD5 ebe5e96b9892af9085e91b722b038eba
BLAKE2b-256 b60ec01b44949efbb22b72f79aa531a331ae1431586ddaeedb0759218a91dd74

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nexat_trace-1.1.7-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 f95108ecc5640c1d90748d807fc2617164a538b67e32cdc7bb30bdc09333a56b
MD5 a614d2d9556fa3d5734047ad2d47a4de
BLAKE2b-256 927e15e10d9d10073230c7fc7fcad01d6c2f20e8371a2b46b944a18611e5ed29

See more details on using hashes here.

File details

Details for the file nexat_trace-1.1.7-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.7-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 f1a8268d66adea9ad197c5becb9c1297643363a4f743d23004b0a18d2661aae9
MD5 82aea329ddbbe23b861f78bde5cf2df3
BLAKE2b-256 0b39f6c401513084fdee29743d2358f07c82ef61a236ed1415b593f2b2ed1aff

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nexat_trace-1.1.7-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7282ef02bc5c9784b19cbc43b31e30bc62ddca7d8d480fd4c7e4f8a18fdf4eb5
MD5 12d89cc8afcefe85e1050988d22b5f6b
BLAKE2b-256 6af9ad8034c1a557b0a81ec6d389bc0e45a63770df48a1f0cd7540a6ca198c16

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nexat_trace-1.1.7-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 8fa4404c688912281e6a36327c5f32b1505cd57ded74dcea20bbc752ebd7dacd
MD5 583b2bfff3c22d349e8f3194b1eee1b1
BLAKE2b-256 2f3d5ec50fff9f2b4f0de70d2e300f063a9654d35190e80ab1cfaab3016d1d0d

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for nexat_trace-1.1.7-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 420ff04f5605a3880b6b31c7ec4af9367d170fd052465e939a0faae427746bb4
MD5 4e053e17f4c65ec5bab5e352108c861a
BLAKE2b-256 0082845238d8bc63339528c43f1500266a4b48169e842ee27413c34aca6a3172

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nexat_trace-1.1.7-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 edf1a78590f3cecf572db5066c5b778409a0e00ce23d79312b91bde6e58a0774
MD5 6da9e8011cfbe93dd6b326a2677ba662
BLAKE2b-256 af985d85825e9a57b86eff268df1171b79e17e1a68f325fd8c7eda00860b6f72

See more details on using hashes here.

File details

Details for the file nexat_trace-1.1.7-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.7-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 c003ae1f521d4971734efd17e7f92b042d3adc0c27b0298704081803f5b9893c
MD5 d473aaf673f694ecd5b7278084a7e782
BLAKE2b-256 37e98e1a1c076cdf47aa2088c93998097bcfc84288ffae4f0b85089cf552eae9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nexat_trace-1.1.7-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b380c467fb6c0e7a4a5bcd98e3370b164f1dfee565b99806f48bd1686f651f28
MD5 39b78b814354b58d724c5edcc2ac152c
BLAKE2b-256 243c7c718fd008811f87333940d57e6a6e03aec9eb29918f8d0b6a80afe661d0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nexat_trace-1.1.7-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 b3c6d94e14b042aad6329212cd161471c7fdaad882a2848be0c775df1a8f90a1
MD5 75be9538d818804edea8552661cc2c52
BLAKE2b-256 445a9a72684beca35b0e56a1aa062e92b141b0f09098f79e451541fcf2b66ce0

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for nexat_trace-1.1.7-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 93f03cb15895c1c0df552ba5b773a30bc01f698218cbb8b224d0eb92ec2c10a3
MD5 7c075dd32ab3234ac4fc82c55521c154
BLAKE2b-256 17c389a3e2a0e0f6ad8321446287b8f7b30cb4ca4dd4c89dbed22e999f1269e2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nexat_trace-1.1.7-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 b5e71cd1baef8851071fd0ea34cf89b817ccbec7e4ffac4bd75cb96ac795c05a
MD5 ff55ee6ded9f88edd3040c14b1116a5e
BLAKE2b-256 7944c4f965962fd8a5ca957aed87ff273193e02427fe4f4e155f0fdc99fadcac

See more details on using hashes here.

File details

Details for the file nexat_trace-1.1.7-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.7-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 98bfd3c75e77b1ad84ae38e5653648c37eaf0563234af984e21656257dbfd101
MD5 571ab60954fe1b9b418d1e1e6225452a
BLAKE2b-256 ecaf4ecae69ccd141811524f51c0de14a2caf1f85674d1d8b4b0863a12a40389

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nexat_trace-1.1.7-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a751b36b9a5abd2de84009dd24984b02e669617316b63477d0b552108c4e9c3b
MD5 04134d2a7ee545d069ccee15e6fa31a3
BLAKE2b-256 a840762eff134e240794560d511456927b7839e38b8014973f0880aa1d669649

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nexat_trace-1.1.7-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 9e70241a5712505c94b7da21b021f4d6bf3540a29ee9bab7e2253e1bd6fbb4a0
MD5 b9e8c4b0b9a0e64027429eeeec59390f
BLAKE2b-256 5357848c4a2645dd6d21b89c8f8846d1df0bcc698f89296a6865daab1f6657d3

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for nexat_trace-1.1.7-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 7165fa3edf009c1953406085a4dee82c5bc8ebe25235b84f62008465b8fd8bff
MD5 afef49af888591aa1e1c24945f51cae4
BLAKE2b-256 bfdbaf641e490acef62a930c60729ed3914b9dbb1cd505a19e4355b9122cc864

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nexat_trace-1.1.7-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 fd30d332b30c7155f292d10a4eae28d3a9457dbd13e53424501bd88a9e83010c
MD5 2601bf47105785397f8ce96ec08056ca
BLAKE2b-256 38ecd43a5bc884005364889520e2963ed40541ab9d265fa5382dd250b5ed16cd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nexat_trace-1.1.7-cp310-cp310-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 a4835dc3406a39e367d24f138406ab7b56f9aedd7b60e6cf7af529ceb4cb275c
MD5 3c8b21478dcb29f960a11938d8502cbc
BLAKE2b-256 d68cf197976810bd7a647065739fc8b13b706dd5f1e80339fb506344acec206a

See more details on using hashes here.

File details

Details for the file nexat_trace-1.1.7-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.7-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6007c626229b81de466c3152ed0d814bff219fb478a060b4fea94746160548e2
MD5 dbbaa0e749e28a1541460e920a5b8b09
BLAKE2b-256 2c071a17ae5548734b3bb945b84f3b08e29906b9dc2bb22a8cb115b1f6feaf43

See more details on using hashes here.

File details

Details for the file nexat_trace-1.1.7-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.7-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 a963d3ad7d775931026032c3cdd3f8f6a3ff09b00b334acf9918f47c39cf510e
MD5 f3cac535aa06ebf0a83c57abe89619c2
BLAKE2b-256 13dff0b21e4c93a68eb5bb5b633714e7f29a7e4e12f1c1e7202a4a59d0ec883b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nexat_trace-1.1.7-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6ede4c55337b11d601c0b8f52a32edf8d234ce06ef78c1b857dc70b672ffd579
MD5 051e0cc4f85f3db816081b90ac3fc6b3
BLAKE2b-256 16477df6a92526d8610bac0563dad6a13ba47c30d71dc8e025914648db20aa48

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