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

Uploaded CPython 3.13Windows x86-64

nexat_trace-1.1.8-cp313-cp313-win32.whl (129.5 kB view details)

Uploaded CPython 3.13Windows x86

nexat_trace-1.1.8-cp313-cp313-musllinux_1_2_x86_64.whl (354.0 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

nexat_trace-1.1.8-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (354.6 kB view details)

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

nexat_trace-1.1.8-cp313-cp313-macosx_11_0_arm64.whl (139.1 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

nexat_trace-1.1.8-cp312-cp312-win_amd64.whl (133.2 kB view details)

Uploaded CPython 3.12Windows x86-64

nexat_trace-1.1.8-cp312-cp312-win32.whl (130.0 kB view details)

Uploaded CPython 3.12Windows x86

nexat_trace-1.1.8-cp312-cp312-musllinux_1_2_x86_64.whl (361.2 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

nexat_trace-1.1.8-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (363.3 kB view details)

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

nexat_trace-1.1.8-cp312-cp312-macosx_11_0_arm64.whl (140.1 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

nexat_trace-1.1.8-cp311-cp311-win_amd64.whl (132.8 kB view details)

Uploaded CPython 3.11Windows x86-64

nexat_trace-1.1.8-cp311-cp311-win32.whl (129.7 kB view details)

Uploaded CPython 3.11Windows x86

nexat_trace-1.1.8-cp311-cp311-musllinux_1_2_x86_64.whl (352.4 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

nexat_trace-1.1.8-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (352.6 kB view details)

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

nexat_trace-1.1.8-cp311-cp311-macosx_11_0_arm64.whl (139.6 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

nexat_trace-1.1.8-cp310-cp310-win_amd64.whl (132.6 kB view details)

Uploaded CPython 3.10Windows x86-64

nexat_trace-1.1.8-cp310-cp310-win32.whl (129.8 kB view details)

Uploaded CPython 3.10Windows x86

nexat_trace-1.1.8-cp310-cp310-musllinux_1_2_x86_64.whl (337.6 kB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

nexat_trace-1.1.8-cp310-cp310-musllinux_1_2_i686.whl (325.4 kB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ i686

nexat_trace-1.1.8-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (337.5 kB view details)

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

nexat_trace-1.1.8-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (322.7 kB view details)

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

nexat_trace-1.1.8-cp310-cp310-macosx_11_0_arm64.whl (139.7 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

File details

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

File metadata

File hashes

Hashes for nexat_trace-1.1.8-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 77872fd02ef388fc488891f6852cd52c69fe41d4fbb3973f93d7eee67abad520
MD5 00a4830fb5cea195b9000348375a83ae
BLAKE2b-256 3d9431fe276465cbf5e56d130fff0197220b845dd2358b424644e348209c1f88

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nexat_trace-1.1.8-cp313-cp313-win32.whl
  • Upload date:
  • Size: 129.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.8-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 053a78b21209b4e7934e58c6ed1c82f6d5ae0510a5d5c10c8c4a4b213735ca31
MD5 d8496561c68f73341d973f34bc627113
BLAKE2b-256 9227f221b745edf4f56927ecb9fd498f7f4be146075417452e9b6e4800804509

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nexat_trace-1.1.8-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 a6821ebe570663852d35e4411eb9522e58f055c6d5d3a274f37df3c2ac6cf23c
MD5 30eeb6b89efe195fa168fef88f3410af
BLAKE2b-256 1ec299e6beb02ec3fa119ba918cec5341a8c4eb5b7c15f25b15373ad1dc50843

See more details on using hashes here.

File details

Details for the file nexat_trace-1.1.8-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.8-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 ff71a35fd9fb1968083575c2d93fb0f8501d2aee4207f0a6a3b2817084ed2462
MD5 9c7aaa0c182de5b0304fab6d0bcd100c
BLAKE2b-256 75e7b2901484e4094c5b7b1263a8844e3344848c4b46dbd26419e27bb6aa1a26

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nexat_trace-1.1.8-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c4584937e094798f39dbaf7e5f850c385d85d7fc93f69af4bc779405c6e883a9
MD5 4a530a33942d53353206ee6cf826f43f
BLAKE2b-256 6c23471dd7bbc32c2284b8c8049b5746f9d239e27b1cc8de2e8f088edcafd031

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nexat_trace-1.1.8-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 9246360d5c9fa8abee97753b631c104604cfced4a3253432894691df40b8cc6a
MD5 35ed424113a4b1dd8330e0471f4f38e0
BLAKE2b-256 0d4ef7ddb1865530bae39f9995f18db9bb69f37f5abb30f341a5d2be83a7c5f8

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nexat_trace-1.1.8-cp312-cp312-win32.whl
  • Upload date:
  • Size: 130.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.8-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 706d2bfe9556de136551fe1fc4378adeb090b69b97a90feb7e23395c80d68f8e
MD5 3e75884eb7138cf2435433e3546d8512
BLAKE2b-256 f5b05aa065777417ad276ba8ebf598e947b0aba3948eaf68b1a6d0978e454e20

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nexat_trace-1.1.8-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 1c6cfac5bcc1cac98c46ba57a4ce36b82157bb4987180f11a28c8b36875e720e
MD5 59499e43f5f3036cb3637ed7f2c3a78e
BLAKE2b-256 371782f1ad42ad96cbd7fcc6a760758e8524cf829cbb70ec8559fed328692864

See more details on using hashes here.

File details

Details for the file nexat_trace-1.1.8-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.8-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 58093a9daf8c6c18f9deecc593c0bc1053f3f9d0e8f731e9afd978f1af2f400f
MD5 5bfd91af75e8dc44834e82f051281bc0
BLAKE2b-256 55e7a3cca4cf43801e7bc9deee2180e26aa7338233a10bdad3393c7272ef4ea3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nexat_trace-1.1.8-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 65de5222431a334b3e8d69c09889f969150ee02f9599ef2c642c4ad29e7d9eb9
MD5 4d802fb90ee4bf1b24c035a4ff33890b
BLAKE2b-256 3403ea192e7ad166901e5a8c2d82dfc5cdcb29bed8e9deb4ce8c91451245a1f4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nexat_trace-1.1.8-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 bc0680a881489c353579911f44b7e0c71351d3ff1cda36e9d6694a2fffcebcc0
MD5 397be1386edbf2aa49a4fc23b8206356
BLAKE2b-256 6b0334c8695072bf8c87a4304a001cd302a9469907caf81fb3956e869c7e0159

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nexat_trace-1.1.8-cp311-cp311-win32.whl
  • Upload date:
  • Size: 129.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.8-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 e5141e09b7d55421b1ebebc074afb43f1f01b2aa5f2d23db400aa1e155c51873
MD5 997413379654bc8ccaf918b393ee62f6
BLAKE2b-256 371286ae7ff23c78000fec9d57de73ea279fa2bfe94f429cf1ace91a8c35d895

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nexat_trace-1.1.8-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 209b73d59c4a6b1933d10a9bbe7b3128aea4a44e58ef0d34ef0f5c397beaf724
MD5 bbdc08f5ade375dbbfdfc015851421a4
BLAKE2b-256 90c7fb0d209f938446f8f0124a0ed32d976d7fef2c5bfa210280088bb3ec2f11

See more details on using hashes here.

File details

Details for the file nexat_trace-1.1.8-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.8-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 b25ce4fad099a2a60df82f84b362934bf4902d0af97e586aeb90259bd17bd01e
MD5 29a08f1cff6f794f63ca70d26b4917cb
BLAKE2b-256 9b92de624aa1ae376c7ea0ce0e639c176dfbe3e7511464c5ce0a323c699710a8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nexat_trace-1.1.8-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 162702654093466e1928cce9391ed8374a5da238ea3b2ee428502f73bb5e90f1
MD5 ef25705c0a375376e223629bede8cb7f
BLAKE2b-256 f4147f4c92abb057e8235762482c5efbe361431729e4c41d3430d5f5515964ad

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nexat_trace-1.1.8-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 903e5ad27a3970e36af0a09af10f26f8bbb1d8de68d0ca1f666c3a9af4cd73b7
MD5 a751db180a12c3886ebce01e27888b5d
BLAKE2b-256 d2c18da4c93e4e6853a657ff86efd884d53cac7e51ff9ba839bf4a6835d00825

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nexat_trace-1.1.8-cp310-cp310-win32.whl
  • Upload date:
  • Size: 129.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.8-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 9f31be5da9b6e7163a6363d34b60a98d398d7cae5ed31d24c6a70737e00ce5b4
MD5 b3f0f2bd7ccb6e8c54c66515079c9434
BLAKE2b-256 1997f060fea9b2863d8acb7cc7991e2f1830729c9562193521f8c0ffd2fd9947

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nexat_trace-1.1.8-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 53d33981c8a4bcab5db6601638871648f72b6f9e051ef7304bb81feef03bc13c
MD5 0f307deea0e739276f1922de44a5fcd5
BLAKE2b-256 e4f96885d9db0d1cbd917db16d96d9d7aa1a849d894447dbad7edd01b4edea77

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nexat_trace-1.1.8-cp310-cp310-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 ce95b131524b3337e38016165e61dee177adc5c19a1a38b971adf030c48242b3
MD5 801f22c6ec60f54ce3593be41b51ce39
BLAKE2b-256 23c19c5e253ef20be10aa5ab089c01e7336e35df4405d3a9439294a5c3c63930

See more details on using hashes here.

File details

Details for the file nexat_trace-1.1.8-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.8-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e3bd1cc66066fbf58ae97515c7adf02cf8ca76fe5a0790f3f69df01f15f80bb8
MD5 cf005ca6bf627d9dac793be556a8fe2f
BLAKE2b-256 e37cfd1b2a09682e25a05b2e23976f855f2b834b3ed50635b2af9d5908bc9843

See more details on using hashes here.

File details

Details for the file nexat_trace-1.1.8-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.8-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 46ab1e31bbc5371ff506f67ef8d5e7ec7d48a187e76ebbe9198ccffa9150d327
MD5 f5b1f962e252f6d87b4a709f7b5dbe80
BLAKE2b-256 8e49e622ed8eee60522dd0405d764eb0c8a9d070a6e77a96a2517959780c9be0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nexat_trace-1.1.8-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 73b2383880b9211eb59f8f52fe62a7281f5439845c6918a4ad6029ec35b7f54b
MD5 6be8cac107174782e1505ad6a8542971
BLAKE2b-256 0bbff1a127b1696bb1bb81b463d0afeab39a3a4488bd1730c6977f79208ba750

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