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

Uploaded CPython 3.13Windows x86-64

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

Uploaded CPython 3.13Windows x86

nexat_trace-1.1.3-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.3-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.3-cp313-cp313-macosx_11_0_arm64.whl (124.2 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

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

Uploaded CPython 3.12Windows x86-64

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

Uploaded CPython 3.12Windows x86

nexat_trace-1.1.3-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.3-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.3-cp312-cp312-macosx_11_0_arm64.whl (125.0 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

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

Uploaded CPython 3.11Windows x86-64

nexat_trace-1.1.3-cp311-cp311-win32.whl (115.7 kB view details)

Uploaded CPython 3.11Windows x86

nexat_trace-1.1.3-cp311-cp311-musllinux_1_2_x86_64.whl (333.5 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

nexat_trace-1.1.3-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (334.1 kB view details)

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

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

Uploaded CPython 3.11macOS 11.0+ ARM64

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

Uploaded CPython 3.10Windows x86-64

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

Uploaded CPython 3.10Windows x86

nexat_trace-1.1.3-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.3-cp310-cp310-musllinux_1_2_i686.whl (309.9 kB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ i686

nexat_trace-1.1.3-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.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (298.9 kB view details)

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

nexat_trace-1.1.3-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.3-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: nexat_trace-1.1.3-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.3-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 11547b46063f700bbaf38be897c404879c1284969cef09609a7d2eb783c28856
MD5 a96d3fb34282fb5b5fce2d7beca075da
BLAKE2b-256 f844be11a24f9b18e1cee24a0859035d5abb3c27505b69cc444ff5cea0d4a8d9

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nexat_trace-1.1.3-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.3-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 d0c65444b2efc7c9cb3bf792732ef32c2c8bd59ce05636e323bd57d89f638d7c
MD5 ef05299e535883922ac4fb2bf06c4b58
BLAKE2b-256 786604bfdb217582798fe034a42b93d8c3ffe5f36f8eb1444438dc77713dc3cf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nexat_trace-1.1.3-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 0a277322fcfa1e3125053d315145fc3f5b3156cbcfd67ca1ee2ff9b6f1abb81c
MD5 297d4735aa92d1aca13779da49dcf254
BLAKE2b-256 e8c78dc2c470284153e4b5d4f864b667d64184e91457912b27cc78151aaaf6ac

See more details on using hashes here.

File details

Details for the file nexat_trace-1.1.3-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.3-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 5528f591fe964e30012c4c1cdb073deddddd1b266606578da093a3b007c1ce5b
MD5 8620363a4b950b2b71e312b2b3a6b636
BLAKE2b-256 bad014f4c96499a00f54c81463cdd1ddbf536fe6bed287586c485509726c68b6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nexat_trace-1.1.3-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0319a776cf81204eae6fa896c38c676777e463a3b92002d732f9ba041c883589
MD5 e96655cc223cfab553405a2dd2d9ab10
BLAKE2b-256 fa308a48cca8a90d19a991a4845716e7d8a092940e72aa2b555b7521d04a20c7

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nexat_trace-1.1.3-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.3-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 d12e05e0e696fb32c108483864decb80975b75217acda0d8441980689a7e04c5
MD5 fa918c182039305e25bd785348b99d4d
BLAKE2b-256 996987d0a2913733bebcbd8b14835838ce07c86c22827f859bc2d9434e8373fa

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nexat_trace-1.1.3-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.3-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 385ca10d519023a44bb2df558583a1798e93eb0df9a78db74c1b046eaf36f86e
MD5 08355d606ed383b156b3a2fb83d3c580
BLAKE2b-256 161bfcb8a7d1e75f0d4526b2c97d6020b328627bb19c1acbd670e9ed93e5336d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nexat_trace-1.1.3-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 0c506c8533f4bd7ec4430c4e79b48e2a6a7c1323963a7a34225cc5838b292b79
MD5 02e97e2c0f7b63ebbe7780d176d51cc5
BLAKE2b-256 36c37b9cf694f64c565b379aeb7d1135ee9900e1bfb32b07933bfbdcecc422b7

See more details on using hashes here.

File details

Details for the file nexat_trace-1.1.3-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.3-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 e64eea77ec16232b9535bd11c020cc3963335f636922ce77ee363b1e5d03b6a7
MD5 ee31959143c756bba985cd3207b0320c
BLAKE2b-256 804753435ed6d37a0faca6c1dfc390c3d79684cf94e85c7506bf1c557381bec6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nexat_trace-1.1.3-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5584b6460cc9e4232d99a2ae025bb0a7d68a48b4d6c5c803de5a2cb190ee980a
MD5 a1c1127ee05bf26163e93c48111c1189
BLAKE2b-256 0217ea67d79463db120c85473442d83241eed08ec4589159666ddaf8ed645a17

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nexat_trace-1.1.3-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.3-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 b7257787d4a106bb8de462b71824761d2bfd2a476ea06c4fd2da54232b74fa39
MD5 9c25c2d65169f62b0930e1454d0dc09b
BLAKE2b-256 fde905f2371701f468d06c49f6bcd12841578e8b20700a44d4e4254eb2b15bf5

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nexat_trace-1.1.3-cp311-cp311-win32.whl
  • Upload date:
  • Size: 115.7 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.3-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 76fd7e2bbb831455d31271fb5a464db3e04e1f931a30fe1fd9ad912a98df661d
MD5 ab2042ac4ea4b09a9b6ad7ebc2f70d77
BLAKE2b-256 5e85232eb35e4daee20ea4a789c0c041e0bd7cc3da27fc3842f279acdc72f6e2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nexat_trace-1.1.3-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 ca14cf312b43f2bd28ea310fedc63ed384f7182a96427bff9b42a5946e34d8d9
MD5 9af7664f160361848e5464d92e1d7da5
BLAKE2b-256 c0810f6abe3987a671f11ab8ea7cb058a09a5adabcccf3f8519a8a7910c7f96e

See more details on using hashes here.

File details

Details for the file nexat_trace-1.1.3-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.3-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 346b4916d37ec55dd96a75c5c7068629e22c31d57925e46a8f8b51fe56bd9cfb
MD5 b6f01bceb07b5323db1b12818256ef97
BLAKE2b-256 91895d81ea7bac9d23e8169d88a68c5987ddaf8f699b995dd32636d18c1fde3e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nexat_trace-1.1.3-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4a3d5ce3da07cc13793719b1c61e876dd449526b84d2a68aafbe35e49e2ebaac
MD5 ecffbb6795e9a060614b0ece7218ac7a
BLAKE2b-256 e47642cd91148f11f148dedd785c1dfdc85b32332d3576bdb445c82a7a14e75e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nexat_trace-1.1.3-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.3-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 bf49853c4a5a8acf11fabd955bb812d833786061f2736c2778700da4613e70e8
MD5 c9a5f00a1189869e8ebced23ec127af6
BLAKE2b-256 10bbd72cbb53afa272895fcf145bfcb1c5689eda06a105fce5d36c98076c4879

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nexat_trace-1.1.3-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.3-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 6fc4f233d0088aa2b5b6c6a747e55987ba45de2840eb634273b227ea3c588e09
MD5 04b4f44f194c0146cee55ce64d20036e
BLAKE2b-256 30c5ef40c980b520c0fc3acad42ef9b78ae9ae5b330625cf89986a0796017cc8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nexat_trace-1.1.3-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 042a49c046e82b7639cef02804308f8ab52a8815b97fe620c9bbb7ac049465b3
MD5 64ea06582318e54ea406604879d8aab4
BLAKE2b-256 544fdcf13f2482d6abe48f262002e9257db19807dd0013b3b6c112be04ed5508

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nexat_trace-1.1.3-cp310-cp310-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 c3669d67fa115b7312a809540808642c2327f3434e57934fc03cfd057e55440c
MD5 84e40c426096747b59e598c49dff73f5
BLAKE2b-256 cab2e62d15f402e53c1777ccb673b69e071f9d4b2d5d6c51da85dabfc02309dc

See more details on using hashes here.

File details

Details for the file nexat_trace-1.1.3-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.3-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f85963bc6282fabcabee2cc65cdb5dc286864c9d7062add4e92fcb5446456125
MD5 bfa49217ea451d2c29cf79fdc0a6109b
BLAKE2b-256 f7a5923c1507477433ecaf9be7d759304ccf60414efa1dbb3c3f569f55d0358e

See more details on using hashes here.

File details

Details for the file nexat_trace-1.1.3-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.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 621fd5353f0d406fdc83cc3852caead08d3700c7006cff858cb07f93c31bdd54
MD5 3b7e4d226bbaf3b7ee159783aa2bb800
BLAKE2b-256 f36e2ad3301110d2cb84de1e9b39bb33752d5344c1e3be0197a5f66d6e8424c2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nexat_trace-1.1.3-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3d425932dccd0a4b02b4deeac7f2c87ca4724f2170255eeb2cac30c31775e8f1
MD5 3e8625d7bdbff70d9c0513c2b259d216
BLAKE2b-256 cbce907a5ae8f04bdb8dc728469ea07c5c7ef0eaa74b113892cb3a8dad84f8ad

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