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

Uploaded CPython 3.13Windows x86-64

nexat_trace-1.1.6-cp313-cp313-win32.whl (122.0 kB view details)

Uploaded CPython 3.13Windows x86

nexat_trace-1.1.6-cp313-cp313-musllinux_1_2_x86_64.whl (339.6 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

nexat_trace-1.1.6-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (341.1 kB view details)

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

nexat_trace-1.1.6-cp313-cp313-macosx_11_0_arm64.whl (130.8 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

nexat_trace-1.1.6-cp312-cp312-win_amd64.whl (126.3 kB view details)

Uploaded CPython 3.12Windows x86-64

nexat_trace-1.1.6-cp312-cp312-win32.whl (122.5 kB view details)

Uploaded CPython 3.12Windows x86

nexat_trace-1.1.6-cp312-cp312-musllinux_1_2_x86_64.whl (346.8 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

nexat_trace-1.1.6-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (348.7 kB view details)

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

nexat_trace-1.1.6-cp312-cp312-macosx_11_0_arm64.whl (131.7 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

nexat_trace-1.1.6-cp311-cp311-win_amd64.whl (125.7 kB view details)

Uploaded CPython 3.11Windows x86-64

nexat_trace-1.1.6-cp311-cp311-win32.whl (122.2 kB view details)

Uploaded CPython 3.11Windows x86

nexat_trace-1.1.6-cp311-cp311-musllinux_1_2_x86_64.whl (339.3 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

nexat_trace-1.1.6-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (339.6 kB view details)

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

nexat_trace-1.1.6-cp311-cp311-macosx_11_0_arm64.whl (131.4 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

nexat_trace-1.1.6-cp310-cp310-win_amd64.whl (125.5 kB view details)

Uploaded CPython 3.10Windows x86-64

nexat_trace-1.1.6-cp310-cp310-win32.whl (122.3 kB view details)

Uploaded CPython 3.10Windows x86

nexat_trace-1.1.6-cp310-cp310-musllinux_1_2_x86_64.whl (325.0 kB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

nexat_trace-1.1.6-cp310-cp310-musllinux_1_2_i686.whl (312.1 kB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ i686

nexat_trace-1.1.6-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (322.2 kB view details)

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

nexat_trace-1.1.6-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (306.7 kB view details)

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

nexat_trace-1.1.6-cp310-cp310-macosx_11_0_arm64.whl (131.5 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: nexat_trace-1.1.6-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 125.6 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.6-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 d19a83622d79e7d6904c40b8220425f7f2a0e6eb1121e4480fc9529051e03cf8
MD5 5497df1a0395f6ac3a328083088f0d41
BLAKE2b-256 8088ecb223f40b3d0c64c3cfd43538b061d61a7200dba7532b2aa8ff5f0e941d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nexat_trace-1.1.6-cp313-cp313-win32.whl
  • Upload date:
  • Size: 122.0 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.6-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 9e3955e68f0d35efce62dcc55ad231a6847e5e312f8958372b42c327304e8e2e
MD5 8242b38f782dc77e3b889e909881dffe
BLAKE2b-256 43bf9bc5f891d7307cbc3e42671889b68e7add895a02bf212f7e78317b09e211

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nexat_trace-1.1.6-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 0a07e86bc6a1be84bb56b259a8a3cd2edac522caa2fbb07b1c60b4b4832c9a73
MD5 4b341d7480d2be88652033e2d6e7eabb
BLAKE2b-256 9d7136ce7456c7445443a88a70896e08b431271f7cade37c9ae0a95e98c23708

See more details on using hashes here.

File details

Details for the file nexat_trace-1.1.6-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.6-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 3ec1e174ceeb0394f4a1f4ba90ca8d3cadb60c1f612150ee0fdd3cd4606dea16
MD5 5be16aa87f31c1609643a47b11237b63
BLAKE2b-256 064108e36c48d5f6cab9ac1e8d83f781a7783f43426e3ad8b2fc848dec004889

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nexat_trace-1.1.6-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 81c54b4b0ff116e2136a86e5717d5a64934b4424aafdd64e115f015f725b69a4
MD5 6f1a47be351632977b38e854b3484b53
BLAKE2b-256 096f34421fb0acda3e75e03fe89f44f9defce684fdc6a96faf35c92a8b61a59d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nexat_trace-1.1.6-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 126.3 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.6-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 49e7e616be7035ca6a19c8e710dd3b48a7c2dc076d129ecca3f6e3ac980392e9
MD5 cd0027d5927fc08ca1d3de8c3ff433a2
BLAKE2b-256 979d4c73364f31177254710e6c88cacb28a0f6346c12e1719d053dbdc713227c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nexat_trace-1.1.6-cp312-cp312-win32.whl
  • Upload date:
  • Size: 122.5 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.6-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 a746764c3e4a3099d5d3df79f5db86b226c2e8a6b71a53a17fab8af2cf647aaa
MD5 8f57f0c6539183bd9015a43af80e2e60
BLAKE2b-256 087ccd11e5c551cec58f2d2172e27afd11c8456d7bd9e0e45e9f71a59e6105cb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nexat_trace-1.1.6-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 f428d2b6cd4e33a3d06ae90cbb16949a0378d04936434d41facdee0ae1378930
MD5 4ec759744fac54e201583d49605c7264
BLAKE2b-256 d6a6c5be60f13d03907f21d8130514c9686d640ce3ddef17869622f7fd327da6

See more details on using hashes here.

File details

Details for the file nexat_trace-1.1.6-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.6-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 96a9db65382ebcfb2b239e04605b0748535170c3d7afb975f1c08fc949a8e8c2
MD5 c4ee1dd4f4f4beb9cacff395aaf47c9b
BLAKE2b-256 560a3f94be87bacdaff3e2ffd2615dee81371eb864a8d74906f6e662dbb59622

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nexat_trace-1.1.6-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 afec0b510d2a6c3e9079a8e711d311119b2aed911eff1d01ed4a8b05a8937d47
MD5 3173f776744a5c3013449d70d4db41cf
BLAKE2b-256 9c65ad59e421f4b9232982f15f5e8c1528f7ce306bb73a1878875b2de78cda41

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nexat_trace-1.1.6-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 125.7 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.6-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 dfaff312bf4c8e961e99f359e53dddf3ddf38bcc3896cfdcd137b52b9af02359
MD5 cbc7baa5dde8ae44b667746f93a1324c
BLAKE2b-256 3f58b4ebe26c39897d55517d80f8edce1955eab70c42df69f3692272a48e8b9a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nexat_trace-1.1.6-cp311-cp311-win32.whl
  • Upload date:
  • Size: 122.2 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.6-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 4bd7969aa0c73e6403fc0e7020feeca1fae31a7e5a9679930c972a78d83b6805
MD5 d7cfd98c2f9ec5702a954979c6118a55
BLAKE2b-256 b0eedb46c3209c77473d3daa6a3577d2fa186035bcac3acf5fa78256c5af5439

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nexat_trace-1.1.6-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 39b88a9bca60cd866e12b0d65c12971350029b02e08165a5ddc3cfa959cd2581
MD5 3fecee69da1f42a2f4949e83432f9934
BLAKE2b-256 28d845ef287ad76d947f7bfa2f60e21a193fbf4beb2160b8ceffcdde75a058c4

See more details on using hashes here.

File details

Details for the file nexat_trace-1.1.6-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.6-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 4dea8da6ebfc97c1aab892684fa50fbe4aa5cfe3edc319c0ec5a60d37e897752
MD5 0494197885eff7de479dc273c2432d7a
BLAKE2b-256 b917704e4ae0c1e2679c6d18d1e64fa64488058db39233def1b68f0d0f2d4b64

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nexat_trace-1.1.6-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 aeb1056c7e9d260f77f8ea42b8bfb32e4000b1af821bbe5a8be151d75447a85f
MD5 d1ae87b1590dd032d4be42bb14ae29ab
BLAKE2b-256 4beb0f15fb6c3000e6ec82f51a909328ec480d95d51f556931c381ce7b86dd2a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nexat_trace-1.1.6-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 125.5 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.6-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 907f4b626092a3709bca78e0d9777fd12ce1cbf774704257e5bb5a7a40a736fb
MD5 5b3da2369b8bfc8128108c8f8866fab1
BLAKE2b-256 217359834fe8ff9ba910d08ee7f00d44f23abbf86abcbf67a565a811b350283e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nexat_trace-1.1.6-cp310-cp310-win32.whl
  • Upload date:
  • Size: 122.3 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.6-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 062ccc1f377f69ebfc35b8631f18090e9653383f082a4bec4bb92cbe217c338e
MD5 05483b43b92a779dc5e2a2d78ebfbfa2
BLAKE2b-256 e45feadf9fd555a3625818df429ecdda332f4e21a1e61d46b24bc0cbeba8fda3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nexat_trace-1.1.6-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 3b39a6a9bce9a7a40772cc5bb620a5e93c4652ca2bcf2b74c558c6710a15aafd
MD5 c4c23d5c91a2b79389b25cd753ed4806
BLAKE2b-256 825e0c4dfe669f70ed7ed4f18112b3d45c4a8c2b9c7ee52d308ff36965a9beaa

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nexat_trace-1.1.6-cp310-cp310-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 9787aab7c528f038681dea440eb423cc469197e900a1ddbd23a006533d4b5ac4
MD5 03c6b043ee342a7b4e0264e57864640a
BLAKE2b-256 4813dbc83f6153a3e7ca746fefcafc26d5c31ee26efa425b638514232ded6e2d

See more details on using hashes here.

File details

Details for the file nexat_trace-1.1.6-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.6-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2d41ab5d017f751a12021003b788a9c3056c2f740e56037e1d12df8c6dd9753d
MD5 a8e85927c43f3bec5667dccf6ac16927
BLAKE2b-256 de2ff6ea45ad4436e4848206432b4abc59e725f59957537c25e986e062940086

See more details on using hashes here.

File details

Details for the file nexat_trace-1.1.6-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.6-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 327ab900902648a1874119a68b35d1cbfbb8be790d562900b2e3548db1962a74
MD5 05f9f375c779b1bca85375111d265c2d
BLAKE2b-256 42b05cacf259af0742c3e8bfbc92668b3816701e5d49f8e4c1583581e5694006

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nexat_trace-1.1.6-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1f21edc8033dcd7b124ce51003aeec4be2e623a3a415e0ec8d329313d6d5dbae
MD5 94bc97c9a78407018b2623487625ce8e
BLAKE2b-256 eebdbea29a59c337ac89c46713814e84f4ab32666ec63fab0d50528506844521

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