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

Uploaded CPython 3.13Windows x86-64

nexat_trace-1.1.2-cp313-cp313-win32.whl (115.5 kB view details)

Uploaded CPython 3.13Windows x86

nexat_trace-1.1.2-cp313-cp313-musllinux_1_2_x86_64.whl (335.6 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

nexat_trace-1.1.2-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (337.1 kB view details)

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

nexat_trace-1.1.2-cp313-cp313-macosx_11_0_arm64.whl (124.2 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

nexat_trace-1.1.2-cp312-cp312-win_amd64.whl (119.7 kB view details)

Uploaded CPython 3.12Windows x86-64

nexat_trace-1.1.2-cp312-cp312-win32.whl (116.0 kB view details)

Uploaded CPython 3.12Windows x86

nexat_trace-1.1.2-cp312-cp312-musllinux_1_2_x86_64.whl (342.3 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

nexat_trace-1.1.2-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (344.7 kB view details)

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

nexat_trace-1.1.2-cp312-cp312-macosx_11_0_arm64.whl (125.0 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

nexat_trace-1.1.2-cp311-cp311-win_amd64.whl (119.1 kB view details)

Uploaded CPython 3.11Windows x86-64

nexat_trace-1.1.2-cp311-cp311-win32.whl (115.6 kB view details)

Uploaded CPython 3.11Windows x86

nexat_trace-1.1.2-cp311-cp311-musllinux_1_2_x86_64.whl (333.4 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

nexat_trace-1.1.2-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (334.0 kB view details)

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

nexat_trace-1.1.2-cp311-cp311-macosx_11_0_arm64.whl (124.9 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

nexat_trace-1.1.2-cp310-cp310-win_amd64.whl (119.0 kB view details)

Uploaded CPython 3.10Windows x86-64

nexat_trace-1.1.2-cp310-cp310-win32.whl (115.7 kB view details)

Uploaded CPython 3.10Windows x86

nexat_trace-1.1.2-cp310-cp310-musllinux_1_2_x86_64.whl (320.0 kB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

nexat_trace-1.1.2-cp310-cp310-musllinux_1_2_i686.whl (309.9 kB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ i686

nexat_trace-1.1.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (316.6 kB view details)

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

nexat_trace-1.1.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (298.8 kB view details)

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

nexat_trace-1.1.2-cp310-cp310-macosx_11_0_arm64.whl (124.9 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: nexat_trace-1.1.2-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 119.0 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.2-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 aeef065626127f84e523d5d6aca06cd952483dd80b448c97be7f8d88df594b3a
MD5 6f009ad8b06d044652e510474233838d
BLAKE2b-256 7a591c41ed10991d93cf84781eaad0740b5d1c2d0c7ceda131cd079307f11381

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nexat_trace-1.1.2-cp313-cp313-win32.whl
  • Upload date:
  • Size: 115.5 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.2-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 99f9f31d6fd84ce5c5bb4a771f3d595449bcb96fb089c7d4f01153119d913ed7
MD5 9b23d4459eaa3ea34427ee23f8736217
BLAKE2b-256 3c5b00cfffdc68647cd426b78d57bd84bbaca47c64db7e1797a66a9e9afae3b2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nexat_trace-1.1.2-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 8f15617382fb60287e689c25a76aa8df007f8cb166cacb13a9daea6a3c4bc465
MD5 3f3e25fc437c73a8cc632e07d92baaf8
BLAKE2b-256 6408491dfaa84a58b9fe1e19137341cee3a0d207ea12cc2789759f128841337f

See more details on using hashes here.

File details

Details for the file nexat_trace-1.1.2-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.2-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 7726d14ced74c87c62878fa58eb178379c776ae5cd355956751c22a13e2c4ba4
MD5 662f099ceaf9f31c4889ea635914d3c0
BLAKE2b-256 198f0c399491a457ce5b5e7c5313ca0205f89bfda57d27ab55277289f9b330e4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nexat_trace-1.1.2-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4e7fb17253f9b4f6e35f91f18911724e1d7517dd7e54f739885c98ad2991f2b3
MD5 b68e3c1960f6c1964f19ed4f36ac6f13
BLAKE2b-256 8fd3f6de1396506d1dc826ec90bd065cdc42c9012d44e4fd53ba9a7c7ab5ee2f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nexat_trace-1.1.2-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 119.7 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.2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 45c0eb7ecffaf97fdf4b3b0c67789fe87c8e018eed296515373b1c3d9d3dbfba
MD5 01ad69f37540e54710b1a9e9cdf386fa
BLAKE2b-256 9dd0828456a7f6f1d1d3ad69eaa030d6240cfbc877276c9e15922c7a1490e3ce

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nexat_trace-1.1.2-cp312-cp312-win32.whl
  • Upload date:
  • Size: 116.0 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.2-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 59160295e7a363860588098a9fd9bdca2956856256dbe069123b552cf4cd1b64
MD5 cac4be3fda7fd48131d8e8b5bb7113d1
BLAKE2b-256 c17acffaf157e5e4b97d3eca6a30da843165048534f7b4517f8b8bdda2c414f4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nexat_trace-1.1.2-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 0cee4f04b10eb9017e1ec6b3dc6367eb1d2f32bf2ae2b5d4124d8d159069b540
MD5 3684503858ba9bd273c525ad53f39f1a
BLAKE2b-256 adc90448cd6116b19da30efcea980d19e0f388487729214f14ba6420ee597ef8

See more details on using hashes here.

File details

Details for the file nexat_trace-1.1.2-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.2-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 c7bb203e8624ee4dc9a80a8388d44b078fcdc510ecae96dfa84d67773e8d37a6
MD5 2f8120fdd4f3ae0670c6d914428b9c5c
BLAKE2b-256 0f54ecc58066a8b59f821ebd1bcbffe25c4335e428496195704b2d4b7214398f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nexat_trace-1.1.2-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 98b837937696efa7cfc53c9d2260c5e2473743c9f041e07810a7b6152cbf03d0
MD5 662221a5bced0e5a838360544245c59c
BLAKE2b-256 ea5a406c6afe74ca6835851d1c9b6b811249a79608a7200fe01a04b0f545314f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nexat_trace-1.1.2-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 119.1 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.2-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 b7724293372de6475cc4e06e58e49525f3e58a04993154aeda74a73a3cfddbc8
MD5 f9aed39aa15bdf799dc56bf33fa74dbb
BLAKE2b-256 7debab37a05e9e4af98dde11c8690315f1b17511829d933f48868a77a220b0ba

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nexat_trace-1.1.2-cp311-cp311-win32.whl
  • Upload date:
  • Size: 115.6 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.2-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 2582be1a99d3a9568935ca5ce2ca527d539bea6c6588a65ab795fdc80c04c93c
MD5 04d18529437984c36c6a15fe011eb1ea
BLAKE2b-256 bdd245e916b9404d444074284f56da0a14e1b1917b9be7a837c03e232e4dfa2c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nexat_trace-1.1.2-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 e6e03aca9b2b8a4f41231198c1cae263a9e17bb137a1cf2768504bac475c2a11
MD5 52aa3f318865247b83452e019f9c982b
BLAKE2b-256 0d756d933ec145e5d777d6e42a6b5cd9c712aa6a8514a1245672f36b74ec3e4f

See more details on using hashes here.

File details

Details for the file nexat_trace-1.1.2-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.2-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 e79e6771e6cc7c060b924686ca1a16d38aaadca7d400018bce2aa52a9ec8f299
MD5 16fcc74562535827fbfc58d6e47e0695
BLAKE2b-256 20a5c2e492282cf69720a4a06232569cb7c7f193ea71ac6eb9f0ee1a1aa87805

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nexat_trace-1.1.2-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f8b64110bd77f920c456dff9fab3c7823d6a188730600b35a5a9db2188fe547a
MD5 60dc81d97fa917b82f223b620536c843
BLAKE2b-256 7eaf36d30cd1df7227d28a8018d53203a6923bb421470a5153bc11414e12fffb

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nexat_trace-1.1.2-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 119.0 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.2-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 5fb6e778128c9a881357387236652d5008667675766544cf4fd335366eca1760
MD5 88879757c5aa856ac791297fabe758d5
BLAKE2b-256 df7b688c6b9f1b928d8619e57912a342b00ebccd358ceb134558dd3350bf4cf2

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nexat_trace-1.1.2-cp310-cp310-win32.whl
  • Upload date:
  • Size: 115.7 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.2-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 dcb7a486b4a1a6d19460ce58ad6702511bf39a7fa58cde1919d5268e95fa1225
MD5 e78ec5589d1a2019b2610ae122802e52
BLAKE2b-256 0bed75912ee43dfc2e22041d2160b6bea3cd09494a39acc85ec759baa760a5c1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nexat_trace-1.1.2-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 ce0c3597001df63ff1ea2368175f691c584717b0d520d0bd86d4802d2f9f7a11
MD5 a3b233510fd9f63e9921e234f4663c10
BLAKE2b-256 6ba9d832af7901cfde13994bb52eb1f1d906ce9b2c0788c3cc1f7c8ddebf275f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nexat_trace-1.1.2-cp310-cp310-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 840d07b30cd43edb35a4a0942c69a89d6d3e08b7c7537577df2daaf389a151cf
MD5 b352faad4618d9f662f5dcd28dfe1061
BLAKE2b-256 5484dd5ac0e31157fcbab1a6910a8ab7a61d1e58ea7ea3baccfd51671a066760

See more details on using hashes here.

File details

Details for the file nexat_trace-1.1.2-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.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 66502d6186307963eef9cac865268bc4e337c024becb0706fe502335d4749ac2
MD5 f035f948a12f2f91271ea64cec914e56
BLAKE2b-256 410634a2fb7d63fc69fbb0d0d2838b218a14bd6a578dcddcef0a0803a25cec94

See more details on using hashes here.

File details

Details for the file nexat_trace-1.1.2-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.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 18c609305a7b00caa95e51d05c57e073ddb92782d77e0eba0596937e886d14c4
MD5 3f8b07878e8f19135f8d5ddf2cd52d38
BLAKE2b-256 7b6856d274450334aba83c16d25604a59171b91f85e371702a51554dc025ef45

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nexat_trace-1.1.2-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 539e093f753a012cdd64e5384844f841ce52d72865d769759d46262822ac78d4
MD5 1442c877290735e6520788bdcd2ce0cc
BLAKE2b-256 7346d00c3be4ccf09e79340e05fae5c0cd116c4a982525f0d8a7ad30ac94d266

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