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
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
aeef065626127f84e523d5d6aca06cd952483dd80b448c97be7f8d88df594b3a
|
|
| MD5 |
6f009ad8b06d044652e510474233838d
|
|
| BLAKE2b-256 |
7a591c41ed10991d93cf84781eaad0740b5d1c2d0c7ceda131cd079307f11381
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
99f9f31d6fd84ce5c5bb4a771f3d595449bcb96fb089c7d4f01153119d913ed7
|
|
| MD5 |
9b23d4459eaa3ea34427ee23f8736217
|
|
| BLAKE2b-256 |
3c5b00cfffdc68647cd426b78d57bd84bbaca47c64db7e1797a66a9e9afae3b2
|
File details
Details for the file nexat_trace-1.1.2-cp313-cp313-musllinux_1_2_x86_64.whl.
File metadata
- Download URL: nexat_trace-1.1.2-cp313-cp313-musllinux_1_2_x86_64.whl
- Upload date:
- Size: 335.6 kB
- Tags: CPython 3.13, musllinux: musl 1.2+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8f15617382fb60287e689c25a76aa8df007f8cb166cacb13a9daea6a3c4bc465
|
|
| MD5 |
3f3e25fc437c73a8cc632e07d92baaf8
|
|
| BLAKE2b-256 |
6408491dfaa84a58b9fe1e19137341cee3a0d207ea12cc2789759f128841337f
|
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
- Download URL: nexat_trace-1.1.2-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
- Upload date:
- Size: 337.1 kB
- Tags: CPython 3.13, manylinux: glibc 2.28+ x86-64, manylinux: glibc 2.5+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7726d14ced74c87c62878fa58eb178379c776ae5cd355956751c22a13e2c4ba4
|
|
| MD5 |
662f099ceaf9f31c4889ea635914d3c0
|
|
| BLAKE2b-256 |
198f0c399491a457ce5b5e7c5313ca0205f89bfda57d27ab55277289f9b330e4
|
File details
Details for the file nexat_trace-1.1.2-cp313-cp313-macosx_11_0_arm64.whl.
File metadata
- Download URL: nexat_trace-1.1.2-cp313-cp313-macosx_11_0_arm64.whl
- Upload date:
- Size: 124.2 kB
- Tags: CPython 3.13, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4e7fb17253f9b4f6e35f91f18911724e1d7517dd7e54f739885c98ad2991f2b3
|
|
| MD5 |
b68e3c1960f6c1964f19ed4f36ac6f13
|
|
| BLAKE2b-256 |
8fd3f6de1396506d1dc826ec90bd065cdc42c9012d44e4fd53ba9a7c7ab5ee2f
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
45c0eb7ecffaf97fdf4b3b0c67789fe87c8e018eed296515373b1c3d9d3dbfba
|
|
| MD5 |
01ad69f37540e54710b1a9e9cdf386fa
|
|
| BLAKE2b-256 |
9dd0828456a7f6f1d1d3ad69eaa030d6240cfbc877276c9e15922c7a1490e3ce
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
59160295e7a363860588098a9fd9bdca2956856256dbe069123b552cf4cd1b64
|
|
| MD5 |
cac4be3fda7fd48131d8e8b5bb7113d1
|
|
| BLAKE2b-256 |
c17acffaf157e5e4b97d3eca6a30da843165048534f7b4517f8b8bdda2c414f4
|
File details
Details for the file nexat_trace-1.1.2-cp312-cp312-musllinux_1_2_x86_64.whl.
File metadata
- Download URL: nexat_trace-1.1.2-cp312-cp312-musllinux_1_2_x86_64.whl
- Upload date:
- Size: 342.3 kB
- Tags: CPython 3.12, musllinux: musl 1.2+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0cee4f04b10eb9017e1ec6b3dc6367eb1d2f32bf2ae2b5d4124d8d159069b540
|
|
| MD5 |
3684503858ba9bd273c525ad53f39f1a
|
|
| BLAKE2b-256 |
adc90448cd6116b19da30efcea980d19e0f388487729214f14ba6420ee597ef8
|
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
- Download URL: nexat_trace-1.1.2-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
- Upload date:
- Size: 344.7 kB
- Tags: CPython 3.12, manylinux: glibc 2.28+ x86-64, manylinux: glibc 2.5+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c7bb203e8624ee4dc9a80a8388d44b078fcdc510ecae96dfa84d67773e8d37a6
|
|
| MD5 |
2f8120fdd4f3ae0670c6d914428b9c5c
|
|
| BLAKE2b-256 |
0f54ecc58066a8b59f821ebd1bcbffe25c4335e428496195704b2d4b7214398f
|
File details
Details for the file nexat_trace-1.1.2-cp312-cp312-macosx_11_0_arm64.whl.
File metadata
- Download URL: nexat_trace-1.1.2-cp312-cp312-macosx_11_0_arm64.whl
- Upload date:
- Size: 125.0 kB
- Tags: CPython 3.12, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
98b837937696efa7cfc53c9d2260c5e2473743c9f041e07810a7b6152cbf03d0
|
|
| MD5 |
662221a5bced0e5a838360544245c59c
|
|
| BLAKE2b-256 |
ea5a406c6afe74ca6835851d1c9b6b811249a79608a7200fe01a04b0f545314f
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b7724293372de6475cc4e06e58e49525f3e58a04993154aeda74a73a3cfddbc8
|
|
| MD5 |
f9aed39aa15bdf799dc56bf33fa74dbb
|
|
| BLAKE2b-256 |
7debab37a05e9e4af98dde11c8690315f1b17511829d933f48868a77a220b0ba
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2582be1a99d3a9568935ca5ce2ca527d539bea6c6588a65ab795fdc80c04c93c
|
|
| MD5 |
04d18529437984c36c6a15fe011eb1ea
|
|
| BLAKE2b-256 |
bdd245e916b9404d444074284f56da0a14e1b1917b9be7a837c03e232e4dfa2c
|
File details
Details for the file nexat_trace-1.1.2-cp311-cp311-musllinux_1_2_x86_64.whl.
File metadata
- Download URL: nexat_trace-1.1.2-cp311-cp311-musllinux_1_2_x86_64.whl
- Upload date:
- Size: 333.4 kB
- Tags: CPython 3.11, musllinux: musl 1.2+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e6e03aca9b2b8a4f41231198c1cae263a9e17bb137a1cf2768504bac475c2a11
|
|
| MD5 |
52aa3f318865247b83452e019f9c982b
|
|
| BLAKE2b-256 |
0d756d933ec145e5d777d6e42a6b5cd9c712aa6a8514a1245672f36b74ec3e4f
|
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
- Download URL: nexat_trace-1.1.2-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
- Upload date:
- Size: 334.0 kB
- Tags: CPython 3.11, manylinux: glibc 2.28+ x86-64, manylinux: glibc 2.5+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e79e6771e6cc7c060b924686ca1a16d38aaadca7d400018bce2aa52a9ec8f299
|
|
| MD5 |
16fcc74562535827fbfc58d6e47e0695
|
|
| BLAKE2b-256 |
20a5c2e492282cf69720a4a06232569cb7c7f193ea71ac6eb9f0ee1a1aa87805
|
File details
Details for the file nexat_trace-1.1.2-cp311-cp311-macosx_11_0_arm64.whl.
File metadata
- Download URL: nexat_trace-1.1.2-cp311-cp311-macosx_11_0_arm64.whl
- Upload date:
- Size: 124.9 kB
- Tags: CPython 3.11, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f8b64110bd77f920c456dff9fab3c7823d6a188730600b35a5a9db2188fe547a
|
|
| MD5 |
60dc81d97fa917b82f223b620536c843
|
|
| BLAKE2b-256 |
7eaf36d30cd1df7227d28a8018d53203a6923bb421470a5153bc11414e12fffb
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5fb6e778128c9a881357387236652d5008667675766544cf4fd335366eca1760
|
|
| MD5 |
88879757c5aa856ac791297fabe758d5
|
|
| BLAKE2b-256 |
df7b688c6b9f1b928d8619e57912a342b00ebccd358ceb134558dd3350bf4cf2
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dcb7a486b4a1a6d19460ce58ad6702511bf39a7fa58cde1919d5268e95fa1225
|
|
| MD5 |
e78ec5589d1a2019b2610ae122802e52
|
|
| BLAKE2b-256 |
0bed75912ee43dfc2e22041d2160b6bea3cd09494a39acc85ec759baa760a5c1
|
File details
Details for the file nexat_trace-1.1.2-cp310-cp310-musllinux_1_2_x86_64.whl.
File metadata
- Download URL: nexat_trace-1.1.2-cp310-cp310-musllinux_1_2_x86_64.whl
- Upload date:
- Size: 320.0 kB
- Tags: CPython 3.10, musllinux: musl 1.2+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ce0c3597001df63ff1ea2368175f691c584717b0d520d0bd86d4802d2f9f7a11
|
|
| MD5 |
a3b233510fd9f63e9921e234f4663c10
|
|
| BLAKE2b-256 |
6ba9d832af7901cfde13994bb52eb1f1d906ce9b2c0788c3cc1f7c8ddebf275f
|
File details
Details for the file nexat_trace-1.1.2-cp310-cp310-musllinux_1_2_i686.whl.
File metadata
- Download URL: nexat_trace-1.1.2-cp310-cp310-musllinux_1_2_i686.whl
- Upload date:
- Size: 309.9 kB
- Tags: CPython 3.10, musllinux: musl 1.2+ i686
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
840d07b30cd43edb35a4a0942c69a89d6d3e08b7c7537577df2daaf389a151cf
|
|
| MD5 |
b352faad4618d9f662f5dcd28dfe1061
|
|
| BLAKE2b-256 |
5484dd5ac0e31157fcbab1a6910a8ab7a61d1e58ea7ea3baccfd51671a066760
|
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
- Download URL: nexat_trace-1.1.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 316.6 kB
- Tags: CPython 3.10, manylinux: glibc 2.17+ x86-64, manylinux: glibc 2.5+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
66502d6186307963eef9cac865268bc4e337c024becb0706fe502335d4749ac2
|
|
| MD5 |
f035f948a12f2f91271ea64cec914e56
|
|
| BLAKE2b-256 |
410634a2fb7d63fc69fbb0d0d2838b218a14bd6a578dcddcef0a0803a25cec94
|
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
- Download URL: nexat_trace-1.1.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
- Upload date:
- Size: 298.8 kB
- Tags: CPython 3.10, manylinux: glibc 2.17+ i686, manylinux: glibc 2.5+ i686
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
18c609305a7b00caa95e51d05c57e073ddb92782d77e0eba0596937e886d14c4
|
|
| MD5 |
3f8b07878e8f19135f8d5ddf2cd52d38
|
|
| BLAKE2b-256 |
7b6856d274450334aba83c16d25604a59171b91f85e371702a51554dc025ef45
|
File details
Details for the file nexat_trace-1.1.2-cp310-cp310-macosx_11_0_arm64.whl.
File metadata
- Download URL: nexat_trace-1.1.2-cp310-cp310-macosx_11_0_arm64.whl
- Upload date:
- Size: 124.9 kB
- Tags: CPython 3.10, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
539e093f753a012cdd64e5384844f841ce52d72865d769759d46262822ac78d4
|
|
| MD5 |
1442c877290735e6520788bdcd2ce0cc
|
|
| BLAKE2b-256 |
7346d00c3be4ccf09e79340e05fae5c0cd116c4a982525f0d8a7ad30ac94d266
|