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

Uploaded CPython 3.13Windows x86-64

nexat_trace-1.1.4-cp313-cp313-win32.whl (117.6 kB view details)

Uploaded CPython 3.13Windows x86

nexat_trace-1.1.4-cp313-cp313-musllinux_1_2_x86_64.whl (337.7 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

nexat_trace-1.1.4-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (339.2 kB view details)

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

nexat_trace-1.1.4-cp313-cp313-macosx_11_0_arm64.whl (126.4 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

nexat_trace-1.1.4-cp312-cp312-win_amd64.whl (121.9 kB view details)

Uploaded CPython 3.12Windows x86-64

nexat_trace-1.1.4-cp312-cp312-win32.whl (118.1 kB view details)

Uploaded CPython 3.12Windows x86

nexat_trace-1.1.4-cp312-cp312-musllinux_1_2_x86_64.whl (344.5 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

nexat_trace-1.1.4-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (346.9 kB view details)

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

nexat_trace-1.1.4-cp312-cp312-macosx_11_0_arm64.whl (127.2 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

nexat_trace-1.1.4-cp311-cp311-win_amd64.whl (121.3 kB view details)

Uploaded CPython 3.11Windows x86-64

nexat_trace-1.1.4-cp311-cp311-win32.whl (117.8 kB view details)

Uploaded CPython 3.11Windows x86

nexat_trace-1.1.4-cp311-cp311-musllinux_1_2_x86_64.whl (335.6 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

nexat_trace-1.1.4-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (336.2 kB view details)

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

nexat_trace-1.1.4-cp311-cp311-macosx_11_0_arm64.whl (127.0 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

nexat_trace-1.1.4-cp310-cp310-win_amd64.whl (121.2 kB view details)

Uploaded CPython 3.10Windows x86-64

nexat_trace-1.1.4-cp310-cp310-win32.whl (117.9 kB view details)

Uploaded CPython 3.10Windows x86

nexat_trace-1.1.4-cp310-cp310-musllinux_1_2_x86_64.whl (322.2 kB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

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

Uploaded CPython 3.10musllinux: musl 1.2+ i686

nexat_trace-1.1.4-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (318.8 kB view details)

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

nexat_trace-1.1.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (301.0 kB view details)

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

nexat_trace-1.1.4-cp310-cp310-macosx_11_0_arm64.whl (127.1 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: nexat_trace-1.1.4-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 121.2 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.4-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 8bdcff73d32b7ab95ed3a30e368be302102e1829932b1693fffe3a2d32a82b58
MD5 a4d8fa7c696e2fe8aa0de2b9362cb6a5
BLAKE2b-256 d08099a7106d2b6114de7bd725b59aa16385bc8a0f82ff24a8e2d2d49a8fa65e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nexat_trace-1.1.4-cp313-cp313-win32.whl
  • Upload date:
  • Size: 117.6 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.4-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 cfabc3656d8a4b68a8bc8b5e0d24dfa9a67b67d439af262ecb811258f3f2e420
MD5 c8d53233ec8298ccbe11d25c24c6d2e0
BLAKE2b-256 416af4ea871f432851a08bfafb5f20054c27655a3b98534f8a1cf0a7a6a123bc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nexat_trace-1.1.4-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 4dcae6b4b896502c367beabf46596b7c99cf272ec08e7a2bc38c7337f0300b30
MD5 70abecaef088aa7c4b369568c520d223
BLAKE2b-256 26c724634368b6b3e40a4d8eb9e99a0ed7cc4ba95ecc4610483571e4cc4f3e2c

See more details on using hashes here.

File details

Details for the file nexat_trace-1.1.4-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.4-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 5514ac8174314a123f05ee8eafe19a006b763719ed48dfa085d7baf762309741
MD5 bca36373a998705815e9ad94673e94f1
BLAKE2b-256 e3388326f0cbf39baaf613746087c65cf5c65dc78781de4639a9dc797939775e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nexat_trace-1.1.4-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a0f4f82e680366944cc5608c30ae92ca923c3397f15b575a1cb5b8b8a936b963
MD5 4110e606a3818aaaab89874c4bfea8fd
BLAKE2b-256 bdcf809b7e176febe9f76dff37daca5bedf2de036e0529feb00bd3fb62e8438f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nexat_trace-1.1.4-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 121.9 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.4-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 ad3874d73037931ddca878873bc1698bc66664ce1bd687211da71ae5703d0a95
MD5 386d46abeb1bcc81f8daf1c12eabb085
BLAKE2b-256 b7c346a479af0f2244b735c441d789f5a4d69bfd266e3a5549437dfc43e5e8f1

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nexat_trace-1.1.4-cp312-cp312-win32.whl
  • Upload date:
  • Size: 118.1 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.4-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 bc354872c72fd06874576c64b14245a2aafd85a5202d2a6644522f00530688c2
MD5 b277a76a0c4ae60c55e8bd42fdb85e15
BLAKE2b-256 19417eae0561d6b40f851457909ed28a91d87a07d2bff259bfc3266b55e6e455

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nexat_trace-1.1.4-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 d401aec359806f64f763c30bda6f1fe445026eff1ec990cc6680e4b1ca994976
MD5 57dbbe5b5e3caef6761866c08c9ea654
BLAKE2b-256 4c1ff1a63560c38e97fff01c9d9647c54c975044fd9e04c2e49d0c46fd18653f

See more details on using hashes here.

File details

Details for the file nexat_trace-1.1.4-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.4-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 738f409bdda329c84f82805fe99a746b731dad923fe77dc1c8a57fed48a4ab24
MD5 b23e4bdb11c9944fa23bcd0642470965
BLAKE2b-256 20c745150ea84ddea336d9b554e9c261df9df25d48c3c46e48c4fdb4a06308cc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nexat_trace-1.1.4-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a36f26068a00ee61111e581498d26a98fc81874f2acc84204cda8057063fb2d6
MD5 62363e521e63f91e0f82280b377cbb18
BLAKE2b-256 7412d0139cce6a0c24fa3a552d2f62a8b11bcee6b09c88cf8e598cacc73b71ff

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nexat_trace-1.1.4-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 121.3 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.4-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 4abdefd4bf470942a815036b17015e010e1633759b8a62881ebcd435584a759b
MD5 d85d75e40fd6dee1f67696cf180cdf5f
BLAKE2b-256 726a7670332a0dc9f7284d12aac6a6fd37a62a7db95ebce1d7ccd776e5000fce

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nexat_trace-1.1.4-cp311-cp311-win32.whl
  • Upload date:
  • Size: 117.8 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.4-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 06b2e869b1191aa2b06e19b3f1fa3c51e9f03d8543be0d6191720d52f2e07e49
MD5 5be791ba5a6451e48ad0d7af64fa25dd
BLAKE2b-256 fe48bceb5ac9e3c16fc64cde94dea6077f2d3a1e1547ddba9407f2b2aa9fb561

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nexat_trace-1.1.4-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 654508f62a206ce25f5c184579273ed499c8d7270fc61fb0259b3c8cf0c178cc
MD5 b3f47642e1e94f2b857621a588a10de6
BLAKE2b-256 265978d8585ef9be64fd40f39184e95119ca533b07d14a5ec0246ba64c37303a

See more details on using hashes here.

File details

Details for the file nexat_trace-1.1.4-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.4-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 8668a92aaa3d262f5399cfa6e1bef33fddba273baca10112553c6de565b7f89a
MD5 34a190c4d4bc1e424351da82cc411a07
BLAKE2b-256 76bb0e56f852cf7fa8b3cf72822653b98ff59fde27323eb8e1b5aa742d64f8d3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nexat_trace-1.1.4-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 14bc3d4f531013883ea9041a8feb9bfa9cf0591dea3d06f344365d1a24830457
MD5 f54de2c03a27a8865aa7465603c70bb2
BLAKE2b-256 f5e3177fb57f58e824d500dfdda6d11905ec12597720d3d25736a682e1acccf1

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nexat_trace-1.1.4-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 121.2 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.4-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 ab355a071be78befe4003f82d7204fd7867dc872471be6df1698a0e53c7d7ae4
MD5 1881847cb0915ef1cf63f2174b3d0950
BLAKE2b-256 64d2934be8d8241b8936065bb33aa27b276e1dc871ab56372839936c544466a4

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nexat_trace-1.1.4-cp310-cp310-win32.whl
  • Upload date:
  • Size: 117.9 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.4-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 3b4f1a9f77a8b5c36756294eac28c780c75a0b4db5913604a93c42547afe1581
MD5 65e865be00e7503b51888eb89ce862f0
BLAKE2b-256 4cea2e39b8c0c287737d4262f40dbf576a9253f095dc93afe4b05e24cb780a4f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nexat_trace-1.1.4-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 c3204a80ab2b1296e242b18d1afa571a3a09099cfa66560376d1b8cad11bafff
MD5 a5abdb1072d9c6e4cf5c9d59d7f13ec7
BLAKE2b-256 b6e89c0ff6c3333f7a192ce9155ec6ba7c1e9a8e36c5117649c480287893c883

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nexat_trace-1.1.4-cp310-cp310-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 e2541a60e7216fb15aa8f828f898f4befa5e09c395d676a6115ec4de3360111f
MD5 a1efebcc5a238acf31d1acf4947fae49
BLAKE2b-256 6c04cd304b4a375a542861279c8d6c72c2f11336786c6256f62b7ef9e3c212f8

See more details on using hashes here.

File details

Details for the file nexat_trace-1.1.4-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.4-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 095e8315ad5b301b465aa70234a660e88acc09fa4537a5c78b673a55a3b92d9e
MD5 2c884df571f388e4129ffa4a3e8b0af8
BLAKE2b-256 2a8bbc3dd386e63e2fed2bd5729504944102086e74130a97f9b3eb069b406283

See more details on using hashes here.

File details

Details for the file nexat_trace-1.1.4-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.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 54aa7e9de97c618f20391ccd267a83a78525159c37e67758570193e21b60bd7f
MD5 5b2dc45646ceadd8e5360fc3bd56ca7e
BLAKE2b-256 fcbaa1a9f83c1a2a797f3ae8848cbb9cea28674245f3a9cf89d9b5425879c8bc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nexat_trace-1.1.4-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 60299b7df86b1c3f98ab36a93d81fce8e2255ffbf15f37072c6f16b776a5df88
MD5 e13afb7c882b77cbc770c3ba10395bf7
BLAKE2b-256 e4d214249ae6b8e7d7dd952ea13f800d3f21053b736b08feab8afbc929e1c5a4

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