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

Uploaded CPython 3.13Windows x86-64

nexat_trace-1.1.5-cp313-cp313-win32.whl (121.5 kB view details)

Uploaded CPython 3.13Windows x86

nexat_trace-1.1.5-cp313-cp313-musllinux_1_2_x86_64.whl (341.6 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

nexat_trace-1.1.5-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (343.1 kB view details)

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

nexat_trace-1.1.5-cp313-cp313-macosx_11_0_arm64.whl (130.2 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

nexat_trace-1.1.5-cp312-cp312-win_amd64.whl (125.8 kB view details)

Uploaded CPython 3.12Windows x86-64

nexat_trace-1.1.5-cp312-cp312-win32.whl (122.0 kB view details)

Uploaded CPython 3.12Windows x86

nexat_trace-1.1.5-cp312-cp312-musllinux_1_2_x86_64.whl (348.3 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

nexat_trace-1.1.5-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (350.7 kB view details)

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

nexat_trace-1.1.5-cp312-cp312-macosx_11_0_arm64.whl (131.0 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

nexat_trace-1.1.5-cp311-cp311-win_amd64.whl (125.2 kB view details)

Uploaded CPython 3.11Windows x86-64

nexat_trace-1.1.5-cp311-cp311-win32.whl (121.7 kB view details)

Uploaded CPython 3.11Windows x86

nexat_trace-1.1.5-cp311-cp311-musllinux_1_2_x86_64.whl (339.5 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

nexat_trace-1.1.5-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (340.1 kB view details)

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

nexat_trace-1.1.5-cp311-cp311-macosx_11_0_arm64.whl (130.9 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

nexat_trace-1.1.5-cp310-cp310-win_amd64.whl (125.0 kB view details)

Uploaded CPython 3.10Windows x86-64

nexat_trace-1.1.5-cp310-cp310-win32.whl (121.8 kB view details)

Uploaded CPython 3.10Windows x86

nexat_trace-1.1.5-cp310-cp310-musllinux_1_2_x86_64.whl (326.1 kB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

nexat_trace-1.1.5-cp310-cp310-musllinux_1_2_i686.whl (315.9 kB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ i686

nexat_trace-1.1.5-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (322.6 kB view details)

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

nexat_trace-1.1.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (304.9 kB view details)

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

nexat_trace-1.1.5-cp310-cp310-macosx_11_0_arm64.whl (130.9 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

File details

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

File metadata

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

File hashes

Hashes for nexat_trace-1.1.5-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 b2f7df482c1f85eb753305e3bfd878b3f34f8130c2665a83caf5889f189ac336
MD5 fd7947dc24e2e46fe4db9cad9b32c4df
BLAKE2b-256 7e6dbfb45653aa70da23996c880bc43b93917bf92457c84e01b3857fd94dc6da

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nexat_trace-1.1.5-cp313-cp313-win32.whl
  • Upload date:
  • Size: 121.5 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.5-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 1ab4584a7c2112707815f1495080f850b7cc5c26b84f0a8c5f2cf3c6704a2111
MD5 caf39e77950105095c9631cddb40f122
BLAKE2b-256 f70dd969a36b11ba9fbc7e8f044f30fe67685dd3a4071333ad6233197e3e4429

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nexat_trace-1.1.5-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 55456cfbcb470fd282346faeb195a76229da7f87552fb60a3009540bcd7e1289
MD5 2d4932d58748625a79c884bca281a7dc
BLAKE2b-256 2eaf64ba0d3d41811909f176e162e812b841dee6182c74934728c8b935712c55

See more details on using hashes here.

File details

Details for the file nexat_trace-1.1.5-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.5-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 f924162b07621741f6bbae69ba529517a54f8ef52cc1a2520c5f5eb4f3da9aeb
MD5 6f1d1031e21c3d52d3c5e5c0bee7ffdf
BLAKE2b-256 70a38c5f19c35470d8baef1ec0614d61c247b0cc8e7c599207d1cbf0e6edb9d8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nexat_trace-1.1.5-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ea5e14532991ca57e5fb195a9c32aeddfdd90d3967382d5e4ee4df92802ec136
MD5 0d4e2ad6f2cf9d31318d4528813257c4
BLAKE2b-256 df83b926a0d1dd248df094303dd8554dda241e5ba6928abecb02bd317c5363ee

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for nexat_trace-1.1.5-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 70c9fb6efd39e1c9cbc2c216185b8d22a64bac42f628048673c3f964fd6f3e38
MD5 89168ea513c1d0f52d5f555f618be043
BLAKE2b-256 05b4b2be19eef94a9fb75dd838b680c381a26fa68879f1f9c5da31345406fb4e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nexat_trace-1.1.5-cp312-cp312-win32.whl
  • Upload date:
  • Size: 122.0 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.5-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 9aad48479f891b5786fabd14ad076d018abc520d1d9d55d9ee42c4a6b4572bdd
MD5 e73ca7eb392dab6cba16de867dda38d5
BLAKE2b-256 9ec223ef9b97827255e21f7743625742447190bfa78f244c0577a2db893cb71a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nexat_trace-1.1.5-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 caef78c6f41f0aa7ef0d058eff77ea1be49f0a633a60f7c0d88a58696424d5dd
MD5 781b9345771f93db28f580bb60c799b5
BLAKE2b-256 89f915b8c2bc77e19172922be730cae9eeaf17f79be21b0539b6d86d17c52879

See more details on using hashes here.

File details

Details for the file nexat_trace-1.1.5-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.5-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 b7b2cd1c59104c84bc0451ff26427bc89fa8db4c99c42084e4076ad6b8550e61
MD5 bcee4ae306004cd80a07da4327fb7c78
BLAKE2b-256 ed1a0d7034a5be7ccccd7c5ae1de79fe32f5d198f8dceda82c88e462ec8f0e69

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nexat_trace-1.1.5-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9ec14e9cfbe95d5239aa0e6dfd860d5d6805a8fcb5d12d89f49cba05a2bd4bfc
MD5 9d08e73f37816c1029455a062e8718fb
BLAKE2b-256 2da9bbd2bae6f456b0ed5ae7023e1c3056033bb09dc063b46b7d12e0e1e52d89

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for nexat_trace-1.1.5-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 e72dfddf09351a946321855fd64167eb99cdeef4465226e4ba3744273288bfac
MD5 c97a47ba45c6b95c4b26f05afd387213
BLAKE2b-256 c231189e832d28cb4b2903b1bb0bfd1dc9ba70e922c490dff5b2018520a939f0

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nexat_trace-1.1.5-cp311-cp311-win32.whl
  • Upload date:
  • Size: 121.7 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.5-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 fb787a26bcf6bd69961c0265a852b3ac29180bf0d5d88f67414f08bdbcaec0b9
MD5 3d41a265f8d1bdabddeec728556e35b1
BLAKE2b-256 6acfaea130acef912232ff205bea622afc544b308274ec509de673e4bd990430

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nexat_trace-1.1.5-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 0d3d2c3faf682daa3604a5ffbdbdef2c32f295bffc4612cb6f136aa0c3255095
MD5 02458ad983baea8ac899ef0225549650
BLAKE2b-256 ae8778fbe82edb0eb336b59c0adba0f585f83ae5b48e110a6f3d3891230a92c6

See more details on using hashes here.

File details

Details for the file nexat_trace-1.1.5-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.5-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 f91d4fc1f301fac5ccefa1ab17d34d26e3a8d949ed0c916695823696aaf394f9
MD5 589db09bc5b82567559e8e16b9b49000
BLAKE2b-256 3f4027c7b961961e7ddca61c6fb82419059fcfaf9636c4ee943ed0b14dadb53d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nexat_trace-1.1.5-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ebf537cf518cb9941d9d141c4c4b05b1caecec6b20b0ab90932eff5192825529
MD5 be8d5372b851bb00e8972abfb994b7bc
BLAKE2b-256 51ee0d7892a4eadfd5f52edd6cad421ba946f7aa8a0e48fe63d028e1df11b1ff

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for nexat_trace-1.1.5-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 f6128b67b5085a9ed9c17053cfd707a02f071f5976693609bc892a7604fd24b5
MD5 3297abee28853a97857f1f48acd1902b
BLAKE2b-256 3f44b18cf86daa18cc62fdc59f9d2ddf13522ba902a04f4503337dfe4870c5ce

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nexat_trace-1.1.5-cp310-cp310-win32.whl
  • Upload date:
  • Size: 121.8 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.5-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 6c238bdceb9c7c0b6cf077e8564086dd7f3afec658e538391a985f21fb0f5a97
MD5 a4c0fcabe75a17735334d5953f3cfa14
BLAKE2b-256 24b79cc40d073a7c376afcbf4c9381e342afe641eaa7a1620e6acd34675c4921

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nexat_trace-1.1.5-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 ef871beecf379e5f33becd12cdaf73e98d7685239d03043a86c29929da1a5fe9
MD5 7745c6165d8154ce44f6bbda7657da26
BLAKE2b-256 bedccd14b484e35ac08ee975f30060e6840494380c5342db3b9e406406df268b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nexat_trace-1.1.5-cp310-cp310-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 1db0897a31f3834d50be52f17da181cd5be7192ec6710cee1940f387a581b779
MD5 15caceb420997ff8ec8328203a9f9930
BLAKE2b-256 37bbd702d35bca6a4420cb271f2cb9ea42b7abc912fcedcff996941da3294375

See more details on using hashes here.

File details

Details for the file nexat_trace-1.1.5-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.5-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a94adc3546ca32b0c3fdd30d661b11775816e71a65e896f768e768e7440f4238
MD5 df810aa4960fc82face870981c37ebe2
BLAKE2b-256 af80792ea049aff652116385e0b82f1608eaea38fe22f5290efd0a0be3bb1420

See more details on using hashes here.

File details

Details for the file nexat_trace-1.1.5-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.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 bde00791b6a013d3a57df74c93d0d4fa4c3f6da404c4dcff498aed5a63e44595
MD5 bdad72ef83895f3275da06a5d1332881
BLAKE2b-256 1052b027cbeeec55b2979b8249b77b8f482f31e02cbfffa3b6f3ec8e7784262a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nexat_trace-1.1.5-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ca7b9d69b1a011fd5e3f806cc88e19a10b0876a6f2b03509bffb206de4f9c0f1
MD5 4dfe5b95ddeaf976bfcfa08e624bc0e7
BLAKE2b-256 66b51d01c09b798007c145124dfbaa084485f5257b7ab59c0cb94ca8cacbe591

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