nrl-tracker 1.4.0__py3-none-any.whl → 1.6.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {nrl_tracker-1.4.0.dist-info → nrl_tracker-1.6.0.dist-info}/METADATA +7 -6
- {nrl_tracker-1.4.0.dist-info → nrl_tracker-1.6.0.dist-info}/RECORD +12 -9
- pytcl/__init__.py +1 -1
- pytcl/astronomical/__init__.py +66 -0
- pytcl/astronomical/reference_frames.py +632 -1
- pytcl/astronomical/sgp4.py +710 -0
- pytcl/astronomical/tle.py +558 -0
- pytcl/dynamic_estimation/kalman/__init__.py +18 -0
- pytcl/dynamic_estimation/kalman/h_infinity.py +613 -0
- {nrl_tracker-1.4.0.dist-info → nrl_tracker-1.6.0.dist-info}/LICENSE +0 -0
- {nrl_tracker-1.4.0.dist-info → nrl_tracker-1.6.0.dist-info}/WHEEL +0 -0
- {nrl_tracker-1.4.0.dist-info → nrl_tracker-1.6.0.dist-info}/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: nrl-tracker
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.6.0
|
|
4
4
|
Summary: Python port of the U.S. Naval Research Laboratory's Tracker Component Library for target tracking algorithms
|
|
5
5
|
Author: Original: David F. Crouse, Naval Research Laboratory
|
|
6
6
|
Maintainer: Python Port Contributors
|
|
@@ -63,15 +63,16 @@ Requires-Dist: plotly>=5.15.0; extra == "visualization"
|
|
|
63
63
|
|
|
64
64
|
# Tracker Component Library (Python)
|
|
65
65
|
|
|
66
|
-
[](https://pypi.org/project/nrl-tracker/)
|
|
67
67
|
[](https://www.python.org/downloads/)
|
|
68
68
|
[](https://en.wikipedia.org/wiki/Public_domain)
|
|
69
69
|
[](https://github.com/psf/black)
|
|
70
|
-
[](https://github.com/nedonatelli/TCL)
|
|
71
|
+
[](docs/gap_analysis.rst)
|
|
71
72
|
|
|
72
73
|
A Python port of the [U.S. Naval Research Laboratory's Tracker Component Library](https://github.com/USNavalResearchLaboratory/TrackerComponentLibrary), a comprehensive collection of algorithms for target tracking, estimation, coordinate systems, and related mathematical functions.
|
|
73
74
|
|
|
74
|
-
**
|
|
75
|
+
**1,070+ functions** | **150+ modules** | **1,922 tests** | **99% MATLAB parity**
|
|
75
76
|
|
|
76
77
|
## Overview
|
|
77
78
|
|
|
@@ -79,10 +80,10 @@ The Tracker Component Library provides building blocks for developing target tra
|
|
|
79
80
|
|
|
80
81
|
- **Coordinate Systems**: Conversions between Cartesian, spherical, geodetic, and other coordinate systems
|
|
81
82
|
- **Dynamic Models**: State transition matrices for constant velocity, coordinated turn, and other motion models
|
|
82
|
-
- **Estimation Algorithms**: Kalman filters (EKF, UKF,
|
|
83
|
+
- **Estimation Algorithms**: Kalman filters (EKF, UKF, CKF, H-infinity), particle filters, and batch estimation
|
|
83
84
|
- **Assignment Algorithms**: Hungarian algorithm, auction algorithms, and multi-dimensional assignment
|
|
84
85
|
- **Mathematical Functions**: Special functions, statistics, numerical integration, and more
|
|
85
|
-
- **Astronomical Code**:
|
|
86
|
+
- **Astronomical Code**: SGP4/SDP4 propagation, TLE parsing, reference frames (GCRF, ITRF, TEME, TOD, MOD), ephemerides
|
|
86
87
|
- **Navigation**: Geodetic calculations, INS algorithms, GNSS utilities
|
|
87
88
|
- **Geophysical Models**: Gravity, magnetism, atmosphere, and terrain models
|
|
88
89
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
pytcl/__init__.py,sha256=
|
|
1
|
+
pytcl/__init__.py,sha256=MzvSIKPmRaoieVDhHJbYHqNeZpQbRSj8sVclDiW8wbY,1893
|
|
2
2
|
pytcl/logging_config.py,sha256=j7Zrkal5LwUIos-_Dm3cGKUR-jMkFdSZZikJTtzTeoE,8883
|
|
3
3
|
pytcl/assignment_algorithms/__init__.py,sha256=f9V-TkEVmiKYYyth4PTpDfJvA7yYV_ys6Zix-QwWIYY,2136
|
|
4
4
|
pytcl/assignment_algorithms/data_association.py,sha256=tsRxWJZk9aAPmE99BKXGouEpFfZrjPjb4HXvgxFUHhU,11405
|
|
@@ -9,13 +9,15 @@ pytcl/assignment_algorithms/three_dimensional/assignment.py,sha256=9BJhwlYu3JJ0k
|
|
|
9
9
|
pytcl/assignment_algorithms/two_dimensional/__init__.py,sha256=4Evsn__9hTfI2i8m8Ngl-Zy0Fa2OydKmDKlZlH6jaao,778
|
|
10
10
|
pytcl/assignment_algorithms/two_dimensional/assignment.py,sha256=eh87MBb-uiUSI1MXj4HrreRKB6Z8rxAyDkNQ8-u4SbM,11848
|
|
11
11
|
pytcl/assignment_algorithms/two_dimensional/kbest.py,sha256=yiTToLuP7xWxQlQ8E-fpgXg-5iu0nnXcJXStjUB0nOE,17284
|
|
12
|
-
pytcl/astronomical/__init__.py,sha256=
|
|
12
|
+
pytcl/astronomical/__init__.py,sha256=UhEIWbTaP0VbdTfnazzbG3kgDmBzoMjfGtVVowV7frE,8623
|
|
13
13
|
pytcl/astronomical/ephemerides.py,sha256=x2500S0rF1D2h0dMR_2BnZaChbBZTooHLdrevttxlAc,16471
|
|
14
14
|
pytcl/astronomical/lambert.py,sha256=Lc8FT1JmpI9WSXsG2s5vIRkSoBSV7r5hd3o2bGh2Ojo,15607
|
|
15
15
|
pytcl/astronomical/orbital_mechanics.py,sha256=8GssRanwTowCl6PJYqmB_SDnNznLUq5gkPa3j6iEo3U,19965
|
|
16
|
-
pytcl/astronomical/reference_frames.py,sha256=
|
|
16
|
+
pytcl/astronomical/reference_frames.py,sha256=T1hXefW68r2Fh7QW4HhGYeXo_B6VMYMhi4jl-s3sG0U,33168
|
|
17
17
|
pytcl/astronomical/relativity.py,sha256=YPsXLD-VRh-nqs1laC-wKpRO00fflm4GkyLhojPydbo,15441
|
|
18
|
+
pytcl/astronomical/sgp4.py,sha256=iNZrqMRUzR-LFeZiluzlNmkwxeYbIyF2F1cygyeEZVE,21546
|
|
18
19
|
pytcl/astronomical/time_systems.py,sha256=Jg0Zaq60hc4Ts1aQtb5bK4KSZhz-uQse8gYC89Y0-TA,15243
|
|
20
|
+
pytcl/astronomical/tle.py,sha256=t3e2-0f3Wiz77q-pC2jfpohkrDfoYOEHacpNgWMNLAk,14638
|
|
19
21
|
pytcl/atmosphere/__init__.py,sha256=swugW8rY2Jof-z_kPQ2P9vInBYjr1M69C1Q8AgN3RVo,1457
|
|
20
22
|
pytcl/atmosphere/ionosphere.py,sha256=1qC3hY-27pD0XcLBjU735deKYmmi6qnj2fDG1zNbTqg,14681
|
|
21
23
|
pytcl/atmosphere/models.py,sha256=pMLv8D7qoFqLZrlbTHLJJULOdDdhPskJ1m7KVKLV63E,9584
|
|
@@ -52,8 +54,9 @@ pytcl/dynamic_estimation/imm.py,sha256=IbKmouUiyzaYJbhWty63r3n_xV8thD-wd0qgZP1Sx
|
|
|
52
54
|
pytcl/dynamic_estimation/information_filter.py,sha256=x7iQwO_iJT1dCSvDws5LqD3yAtjw9QVGUfMPcXn1IA4,17349
|
|
53
55
|
pytcl/dynamic_estimation/smoothers.py,sha256=x2j-nR--EI5JNZvMywPeDHcrfW8b5PYK0DCU4Rmig_g,18914
|
|
54
56
|
pytcl/dynamic_estimation/batch_estimation/__init__.py,sha256=JQ0s76Enov5a7plA4EnUua4t-7etikQrwr5z4WIjUeo,46
|
|
55
|
-
pytcl/dynamic_estimation/kalman/__init__.py,sha256=
|
|
57
|
+
pytcl/dynamic_estimation/kalman/__init__.py,sha256=z4y3nsk-AaQXq8YkFdNYePz11lMi-81l-zYYLSq37s0,2827
|
|
56
58
|
pytcl/dynamic_estimation/kalman/extended.py,sha256=51uhCqkZmErCx6MBfMq8eIQW8bD7n34zCe4v4dxNiMQ,10384
|
|
59
|
+
pytcl/dynamic_estimation/kalman/h_infinity.py,sha256=ZfVuhMd4wtd6GDYdyECkm2y_PhPOKSHWn6X4vuoLGqY,16502
|
|
57
60
|
pytcl/dynamic_estimation/kalman/linear.py,sha256=1Zgg9gZya0Vxs9im7sPUqLj0Luo463vS-RSa6GCReFI,12248
|
|
58
61
|
pytcl/dynamic_estimation/kalman/square_root.py,sha256=N7-lDml7Nw5HM5b5D11WOwG7rY1JlVoyis0ho-vk0H4,13345
|
|
59
62
|
pytcl/dynamic_estimation/kalman/sr_ukf.py,sha256=LeRGBSDpvSP9CyTZjEroz2Z2uueb6YpmzYricba0PDk,8640
|
|
@@ -148,8 +151,8 @@ pytcl/trackers/mht.py,sha256=7mwhMmja3ri2wnx7W1wueDGn2r3ArwAxJDPUJ7IZAkQ,20617
|
|
|
148
151
|
pytcl/trackers/multi_target.py,sha256=hvt89ERhMwpcHcIJeKHnkQSKdE3_LoRiX-gbaGoo300,10516
|
|
149
152
|
pytcl/trackers/single_target.py,sha256=Yy3FwaNTArMWcaod-0HVeiioNV4xLWxNDn_7ZPVqQYs,6562
|
|
150
153
|
pytcl/transponders/__init__.py,sha256=5fL4u3lKCYgPLo5uFeuZbtRZkJPABntuKYGUvVgMMEI,41
|
|
151
|
-
nrl_tracker-1.
|
|
152
|
-
nrl_tracker-1.
|
|
153
|
-
nrl_tracker-1.
|
|
154
|
-
nrl_tracker-1.
|
|
155
|
-
nrl_tracker-1.
|
|
154
|
+
nrl_tracker-1.6.0.dist-info/LICENSE,sha256=rB5G4WppIIUzMOYr2N6uyYlNJ00hRJqE5tie6BMvYuE,1612
|
|
155
|
+
nrl_tracker-1.6.0.dist-info/METADATA,sha256=i2-7x8Vz0pQuxltOgA7u8LEMTfTTUpJfM0Ru_wx6x_E,10299
|
|
156
|
+
nrl_tracker-1.6.0.dist-info/WHEEL,sha256=pL8R0wFFS65tNSRnaOVrsw9EOkOqxLrlUPenUYnJKNo,91
|
|
157
|
+
nrl_tracker-1.6.0.dist-info/top_level.txt,sha256=17megxcrTPBWwPZTh6jTkwTKxX7No-ZqRpyvElnnO-s,6
|
|
158
|
+
nrl_tracker-1.6.0.dist-info/RECORD,,
|
pytcl/__init__.py
CHANGED
pytcl/astronomical/__init__.py
CHANGED
|
@@ -87,16 +87,32 @@ from pytcl.astronomical.reference_frames import (
|
|
|
87
87
|
equatorial_to_ecliptic,
|
|
88
88
|
gast_iau82,
|
|
89
89
|
gcrf_to_itrf,
|
|
90
|
+
gcrf_to_mod,
|
|
91
|
+
gcrf_to_teme,
|
|
92
|
+
gcrf_to_tod,
|
|
90
93
|
gmst_iau82,
|
|
91
94
|
itrf_to_gcrf,
|
|
95
|
+
itrf_to_teme,
|
|
96
|
+
itrf_to_teme_with_velocity,
|
|
97
|
+
itrf_to_tod,
|
|
92
98
|
julian_centuries_j2000,
|
|
93
99
|
mean_obliquity_iau80,
|
|
100
|
+
mod_to_gcrf,
|
|
101
|
+
mod_to_tod,
|
|
94
102
|
nutation_angles_iau80,
|
|
95
103
|
nutation_matrix,
|
|
104
|
+
pef_to_teme,
|
|
96
105
|
polar_motion_matrix,
|
|
97
106
|
precession_angles_iau76,
|
|
98
107
|
precession_matrix_iau76,
|
|
99
108
|
sidereal_rotation_matrix,
|
|
109
|
+
teme_to_gcrf,
|
|
110
|
+
teme_to_itrf,
|
|
111
|
+
teme_to_itrf_with_velocity,
|
|
112
|
+
teme_to_pef,
|
|
113
|
+
tod_to_gcrf,
|
|
114
|
+
tod_to_itrf,
|
|
115
|
+
tod_to_mod,
|
|
100
116
|
true_obliquity,
|
|
101
117
|
)
|
|
102
118
|
from pytcl.astronomical.relativity import (
|
|
@@ -114,6 +130,12 @@ from pytcl.astronomical.relativity import (
|
|
|
114
130
|
schwarzschild_radius,
|
|
115
131
|
shapiro_delay,
|
|
116
132
|
)
|
|
133
|
+
from pytcl.astronomical.sgp4 import (
|
|
134
|
+
SGP4Satellite,
|
|
135
|
+
SGP4State,
|
|
136
|
+
sgp4_propagate,
|
|
137
|
+
sgp4_propagate_batch,
|
|
138
|
+
)
|
|
117
139
|
from pytcl.astronomical.time_systems import (
|
|
118
140
|
JD_GPS_EPOCH, # Julian dates; Time scales; Unix time; GPS week; Sidereal time; Leap seconds; Constants
|
|
119
141
|
)
|
|
@@ -145,6 +167,17 @@ from pytcl.astronomical.time_systems import (
|
|
|
145
167
|
utc_to_tai,
|
|
146
168
|
utc_to_tt,
|
|
147
169
|
)
|
|
170
|
+
from pytcl.astronomical.tle import (
|
|
171
|
+
TLE,
|
|
172
|
+
format_tle,
|
|
173
|
+
is_deep_space,
|
|
174
|
+
orbital_period_from_tle,
|
|
175
|
+
parse_tle,
|
|
176
|
+
parse_tle_3line,
|
|
177
|
+
semi_major_axis_from_mean_motion,
|
|
178
|
+
tle_epoch_to_datetime,
|
|
179
|
+
tle_epoch_to_jd,
|
|
180
|
+
)
|
|
148
181
|
|
|
149
182
|
__all__ = [
|
|
150
183
|
# Time systems - Julian dates
|
|
@@ -251,6 +284,39 @@ __all__ = [
|
|
|
251
284
|
# Reference frames - Ecliptic/equatorial
|
|
252
285
|
"ecliptic_to_equatorial",
|
|
253
286
|
"equatorial_to_ecliptic",
|
|
287
|
+
# Reference frames - TEME (for SGP4/SDP4)
|
|
288
|
+
"teme_to_pef",
|
|
289
|
+
"pef_to_teme",
|
|
290
|
+
"teme_to_itrf",
|
|
291
|
+
"itrf_to_teme",
|
|
292
|
+
"teme_to_gcrf",
|
|
293
|
+
"gcrf_to_teme",
|
|
294
|
+
"teme_to_itrf_with_velocity",
|
|
295
|
+
"itrf_to_teme_with_velocity",
|
|
296
|
+
# Reference frames - TOD/MOD (legacy conventions)
|
|
297
|
+
"gcrf_to_mod",
|
|
298
|
+
"mod_to_gcrf",
|
|
299
|
+
"gcrf_to_tod",
|
|
300
|
+
"tod_to_gcrf",
|
|
301
|
+
"mod_to_tod",
|
|
302
|
+
"tod_to_mod",
|
|
303
|
+
"tod_to_itrf",
|
|
304
|
+
"itrf_to_tod",
|
|
305
|
+
# TLE parsing
|
|
306
|
+
"TLE",
|
|
307
|
+
"parse_tle",
|
|
308
|
+
"parse_tle_3line",
|
|
309
|
+
"tle_epoch_to_jd",
|
|
310
|
+
"tle_epoch_to_datetime",
|
|
311
|
+
"format_tle",
|
|
312
|
+
"is_deep_space",
|
|
313
|
+
"semi_major_axis_from_mean_motion",
|
|
314
|
+
"orbital_period_from_tle",
|
|
315
|
+
# SGP4/SDP4 propagation
|
|
316
|
+
"SGP4State",
|
|
317
|
+
"SGP4Satellite",
|
|
318
|
+
"sgp4_propagate",
|
|
319
|
+
"sgp4_propagate_batch",
|
|
254
320
|
# Ephemerides - Classes
|
|
255
321
|
"DEEphemeris",
|
|
256
322
|
# Ephemerides - Functions
|