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

Uploaded CPython 3.13Windows x86-64

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

Uploaded CPython 3.13Windows x86

nexat_trace-1.1.1-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.1-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.1-cp313-cp313-macosx_11_0_arm64.whl (124.0 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

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

Uploaded CPython 3.12Windows x86-64

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

Uploaded CPython 3.12Windows x86

nexat_trace-1.1.1-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.1-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.1-cp312-cp312-macosx_11_0_arm64.whl (124.8 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

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

Uploaded CPython 3.11Windows x86-64

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

Uploaded CPython 3.11Windows x86

nexat_trace-1.1.1-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.1-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.1-cp311-cp311-macosx_11_0_arm64.whl (124.6 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

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

Uploaded CPython 3.10Windows x86-64

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

Uploaded CPython 3.10Windows x86

nexat_trace-1.1.1-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.1-cp310-cp310-musllinux_1_2_i686.whl (309.7 kB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ i686

nexat_trace-1.1.1-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.1-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.1-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.1-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: nexat_trace-1.1.1-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.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 924acfa334cf688c27bb2d28bf725cbdeb6098dde61f140676c2d46a96f3e381
MD5 6b33c524c8e06657163263183f021732
BLAKE2b-256 79285e92b6cf364010b95b1359fd264fced6b22cc5df8b22ac8cda6f1996a6fc

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nexat_trace-1.1.1-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.1-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 fdb22f444f3135569757fc9e2b943826aa174596e3d374d67c3d60e373778333
MD5 20f1e0df010be0ee948edabfc99042f7
BLAKE2b-256 65ec08cd51aa2be0e5e0c085165322390de5349e140eee6cc06c7fa28319212e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nexat_trace-1.1.1-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 3b7fb5eca54a27c4cf3d6c125dd829aa23b0a51645405c5674144e5e54584584
MD5 9180fc9fb5199614ce73f1a786380459
BLAKE2b-256 63789e3d5c3849d9b309323ddaadef7d2bf1d476a741e87a859017ffba86d8df

See more details on using hashes here.

File details

Details for the file nexat_trace-1.1.1-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.1-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 56e96b7a8e747c0c7f6e8b418e589f1421e884eda034597ac1abbc729db2dcdf
MD5 f0b41db98d9f8add6cb3a7cb018a80ff
BLAKE2b-256 4f65f9338a87d2f220087d13f71f558b0c3ae40b3d393b43390fed14529a7f6f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nexat_trace-1.1.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 602fa9129ff9fd82e022f87f3f368780e1c721bd0f584802bd5f828833da4f92
MD5 577d8e7853205243824167bcabca2231
BLAKE2b-256 ea1b4a683070e045edacfb960515ca3e93c93e95e0009f6d3a523bbde9856273

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nexat_trace-1.1.1-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.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 7f54430335c3955ce5f990d254621f6f0d8c202cca8f6ba4dcd405ca717779a2
MD5 076df480adb969bcf690adbd72b33301
BLAKE2b-256 30235986e7aab9edc8ce78d600e3c5b54d4586ddd974c80d91dd01c1d8d1cad0

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nexat_trace-1.1.1-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.1-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 affa9c368f5f5a1b00450fb72c0b520e13fd749b752b70885e30c9fbb1adfbfd
MD5 d30ed28a75d99a4ba09877f3f9de4937
BLAKE2b-256 ffbe0c8907a5cd22b9c8cd20e26dae0865d7ce620b02adb48f8d4641eb19edb6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nexat_trace-1.1.1-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 a8361ce9331aaf93988af249a31d1d6aea22e3d2703cb29bea26aec76309479f
MD5 ca1b3a4731a3ca2da4fe6d637fb97364
BLAKE2b-256 78954468ee74c304885d72cf3ff9732e260445efaa6b40573c8f47f36c442988

See more details on using hashes here.

File details

Details for the file nexat_trace-1.1.1-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.1-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 ed43e607eaf01e39038bb2ecbe4f7cbb5f3e303e2902bbcfccd3a41a54335da8
MD5 d23a435382dce839fdc8f03763ba5fd0
BLAKE2b-256 7d984266b3ef983a9b3447c4018e9976dd73b37c67ef0fff65f54ecfa08aa23e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nexat_trace-1.1.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 eb881c04a045bf9a73dd944a9f9ded05ce1b91ae8baa5c688d4e18bb0996aaf4
MD5 4e72303a975fdbda7c55c8af7640ad82
BLAKE2b-256 e74bdbe6285ab7af5354626e34ca2a084089630769d8f5f5d67d6f6c33eb5a9d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nexat_trace-1.1.1-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.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 aeadce79e79db1783c779cf58f8a77cb43f7824f7713c471ae9689e26e156875
MD5 400bc83da96a359bef78236f3cbe77ee
BLAKE2b-256 389ea72775b7f59bc2e5b9f42b6f4ac31f59774368cab7e9e04bde2b690bbf12

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nexat_trace-1.1.1-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.1-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 170bf035f327e5231090df0a2b3a9058f77454eb22d13c9ab0e4aed8cc977d06
MD5 6f0b186f186b038f9a74fa53430c6971
BLAKE2b-256 265dc3b93852927cd795b7733ba6df098a2c593e0a9eae9843293518f6074a56

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nexat_trace-1.1.1-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 aefd50ed2586acfe0ce6cb799f461697db2f2d1057d1a23862fc04a357898514
MD5 7e41bd7b7110915aa8aebf087d74d8aa
BLAKE2b-256 432be81c19ee82641f70ac1ae903ec27eb33e1f5bc13940151430136b458a30c

See more details on using hashes here.

File details

Details for the file nexat_trace-1.1.1-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.1-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 9aa9f476654bc84864906eb1bd25ab388a90fef21ef01bcedd9ea44b13318a12
MD5 7d1c282090f8d94a5f6015f382055cd9
BLAKE2b-256 89e3ca16643e46b1090690643ae2659962d64a41a7a21604785f7103cf4ab862

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nexat_trace-1.1.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 10dabb8b4b3c194b27d64ae1f9f81e58c481980803d4a89733355895ce94f166
MD5 0aace35d6763f2b59a64e18f22c81b18
BLAKE2b-256 0b38df7aa3b12264aea6026d6be9d9c7cba617a7eb4fd4f97bd6ed439e765071

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nexat_trace-1.1.1-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.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 ba9abfecec23c5c7f77090eec5eb531780091980b4e31e10e74e96b820f0f1be
MD5 1abc1336340b712e6e6d2baae8167e64
BLAKE2b-256 523654371e1e1838f7d782ca3837c9227cb3399e813e22f85955de16abae7485

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nexat_trace-1.1.1-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.1-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 4f41be43a85906d6b7d8aa486a337e8c95871f40adb0d3dfd62e213cdf83eeba
MD5 25bb335a8cf9c17e3dc13959fd6f99c0
BLAKE2b-256 b99113ce18351ffcfd7d1ea804c1f5dc9a74525cae8b511ae984217124770d87

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nexat_trace-1.1.1-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 cd95390876f76af1b24ba5ab9f5dc8758e66f3390743832cfcc287d431e0afe2
MD5 e95b5308eae75bfb221eb9dfb26d904c
BLAKE2b-256 d9b361756504130b94a873fefd9038769428649911ed65909a4549186a21e1ca

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nexat_trace-1.1.1-cp310-cp310-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 da3919aaf81580036a0dd0bdd72588f8a7948e3f18f4a1c325485c4289d422f7
MD5 bed77378935c8df0c12db3a3943dd77c
BLAKE2b-256 aa0387409a036dd3e7b8eff0501b15e4bc08c069ce2048209a31c528326b519f

See more details on using hashes here.

File details

Details for the file nexat_trace-1.1.1-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.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6964f0f0d0057cb0e4ab2caab28fc5e5a90f0b1cb6d6c96594a223c0fbbb1433
MD5 6a6fd29f4a922e4e29a78e86c171ef43
BLAKE2b-256 02e145f350c470d8bf747395e780e46fd853d791e776c29431d9a0df0d013e6f

See more details on using hashes here.

File details

Details for the file nexat_trace-1.1.1-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.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 fbeaba4768959165173c0316bf41fae5449975b316d4fbf5810d3137a733a30f
MD5 45357cee6c9af3c84bde94c0aa2dc92d
BLAKE2b-256 d4f256e3a008902f17c42eb1f75091d8fd52f339f601e87f2e3cac9fe82c3ae3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nexat_trace-1.1.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3466faf4146def29bf2295e3af166a950ac5f7ba4c3af7a71f3a17be32918d05
MD5 27b92cbeaee52ca7d2f44f9006ba5990
BLAKE2b-256 c885e3500b88d29d5eff0392ee576c6061f4e34deee6f6796d35582c4a264f34

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