nrl-tracker 0.21.4__py3-none-any.whl → 0.22.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-0.21.4.dist-info → nrl_tracker-0.22.0.dist-info}/METADATA +2 -2
- nrl_tracker-0.22.0.dist-info/RECORD +150 -0
- pytcl/__init__.py +9 -11
- pytcl/assignment_algorithms/__init__.py +32 -42
- pytcl/assignment_algorithms/data_association.py +9 -10
- pytcl/assignment_algorithms/gating.py +7 -5
- pytcl/assignment_algorithms/jpda.py +10 -14
- pytcl/assignment_algorithms/three_dimensional/__init__.py +6 -8
- pytcl/assignment_algorithms/three_dimensional/assignment.py +6 -2
- pytcl/assignment_algorithms/two_dimensional/__init__.py +9 -13
- pytcl/assignment_algorithms/two_dimensional/assignment.py +5 -2
- pytcl/assignment_algorithms/two_dimensional/kbest.py +9 -9
- pytcl/astronomical/__init__.py +130 -89
- pytcl/astronomical/ephemerides.py +524 -0
- pytcl/astronomical/lambert.py +6 -15
- pytcl/astronomical/orbital_mechanics.py +1 -3
- pytcl/astronomical/reference_frames.py +1 -3
- pytcl/astronomical/relativity.py +466 -0
- pytcl/astronomical/time_systems.py +2 -1
- pytcl/atmosphere/__init__.py +12 -14
- pytcl/atmosphere/models.py +5 -5
- pytcl/clustering/__init__.py +28 -36
- pytcl/clustering/dbscan.py +5 -2
- pytcl/clustering/gaussian_mixture.py +10 -10
- pytcl/clustering/hierarchical.py +7 -7
- pytcl/clustering/kmeans.py +7 -5
- pytcl/containers/__init__.py +29 -43
- pytcl/containers/cluster_set.py +13 -20
- pytcl/containers/covertree.py +8 -2
- pytcl/containers/kd_tree.py +6 -2
- pytcl/containers/measurement_set.py +11 -16
- pytcl/containers/rtree.py +8 -7
- pytcl/containers/track_list.py +13 -13
- pytcl/containers/vptree.py +7 -2
- pytcl/coordinate_systems/__init__.py +69 -74
- pytcl/coordinate_systems/conversions/__init__.py +20 -24
- pytcl/coordinate_systems/conversions/geodetic.py +7 -17
- pytcl/coordinate_systems/conversions/spherical.py +4 -2
- pytcl/coordinate_systems/jacobians/__init__.py +10 -12
- pytcl/coordinate_systems/jacobians/jacobians.py +2 -1
- pytcl/coordinate_systems/projections/__init__.py +27 -23
- pytcl/coordinate_systems/projections/projections.py +14 -39
- pytcl/coordinate_systems/rotations/__init__.py +20 -22
- pytcl/coordinate_systems/rotations/rotations.py +3 -4
- pytcl/core/__init__.py +16 -22
- pytcl/core/array_utils.py +7 -7
- pytcl/core/constants.py +1 -3
- pytcl/core/validation.py +13 -19
- pytcl/dynamic_estimation/__init__.py +77 -86
- pytcl/dynamic_estimation/imm.py +10 -15
- pytcl/dynamic_estimation/information_filter.py +8 -6
- pytcl/dynamic_estimation/kalman/__init__.py +40 -48
- pytcl/dynamic_estimation/kalman/extended.py +4 -5
- pytcl/dynamic_estimation/kalman/linear.py +7 -3
- pytcl/dynamic_estimation/kalman/square_root.py +7 -8
- pytcl/dynamic_estimation/kalman/unscented.py +8 -6
- pytcl/dynamic_estimation/particle_filters/__init__.py +12 -14
- pytcl/dynamic_estimation/particle_filters/bootstrap.py +8 -8
- pytcl/dynamic_estimation/smoothers.py +9 -10
- pytcl/dynamic_models/__init__.py +37 -41
- pytcl/dynamic_models/continuous_time/__init__.py +11 -11
- pytcl/dynamic_models/continuous_time/dynamics.py +4 -2
- pytcl/dynamic_models/discrete_time/__init__.py +11 -17
- pytcl/dynamic_models/process_noise/__init__.py +11 -17
- pytcl/dynamic_models/process_noise/polynomial.py +2 -6
- pytcl/gravity/__init__.py +55 -65
- pytcl/gravity/clenshaw.py +4 -7
- pytcl/gravity/egm.py +9 -6
- pytcl/gravity/models.py +1 -3
- pytcl/gravity/spherical_harmonics.py +6 -11
- pytcl/gravity/tides.py +9 -17
- pytcl/magnetism/__init__.py +26 -36
- pytcl/magnetism/emm.py +7 -13
- pytcl/magnetism/igrf.py +5 -6
- pytcl/magnetism/wmm.py +4 -10
- pytcl/mathematical_functions/__init__.py +69 -87
- pytcl/mathematical_functions/basic_matrix/__init__.py +25 -19
- pytcl/mathematical_functions/basic_matrix/decompositions.py +6 -5
- pytcl/mathematical_functions/basic_matrix/special_matrices.py +2 -1
- pytcl/mathematical_functions/combinatorics/__init__.py +18 -14
- pytcl/mathematical_functions/combinatorics/combinatorics.py +5 -4
- pytcl/mathematical_functions/geometry/__init__.py +15 -15
- pytcl/mathematical_functions/geometry/geometry.py +10 -15
- pytcl/mathematical_functions/interpolation/__init__.py +11 -13
- pytcl/mathematical_functions/interpolation/interpolation.py +8 -5
- pytcl/mathematical_functions/numerical_integration/__init__.py +16 -10
- pytcl/mathematical_functions/numerical_integration/quadrature.py +6 -2
- pytcl/mathematical_functions/signal_processing/__init__.py +42 -30
- pytcl/mathematical_functions/signal_processing/detection.py +9 -9
- pytcl/mathematical_functions/signal_processing/filters.py +7 -8
- pytcl/mathematical_functions/signal_processing/matched_filter.py +8 -7
- pytcl/mathematical_functions/special_functions/__init__.py +75 -77
- pytcl/mathematical_functions/special_functions/bessel.py +2 -1
- pytcl/mathematical_functions/special_functions/debye.py +4 -2
- pytcl/mathematical_functions/special_functions/elliptic.py +3 -4
- pytcl/mathematical_functions/special_functions/error_functions.py +2 -1
- pytcl/mathematical_functions/special_functions/gamma_functions.py +3 -4
- pytcl/mathematical_functions/special_functions/hypergeometric.py +2 -1
- pytcl/mathematical_functions/special_functions/lambert_w.py +3 -4
- pytcl/mathematical_functions/special_functions/marcum_q.py +2 -1
- pytcl/mathematical_functions/statistics/__init__.py +27 -31
- pytcl/mathematical_functions/statistics/distributions.py +21 -40
- pytcl/mathematical_functions/statistics/estimators.py +3 -4
- pytcl/mathematical_functions/transforms/__init__.py +45 -51
- pytcl/mathematical_functions/transforms/fourier.py +5 -2
- pytcl/mathematical_functions/transforms/stft.py +8 -11
- pytcl/mathematical_functions/transforms/wavelets.py +13 -20
- pytcl/navigation/__init__.py +96 -102
- pytcl/navigation/geodesy.py +13 -33
- pytcl/navigation/great_circle.py +7 -13
- pytcl/navigation/ins.py +12 -16
- pytcl/navigation/ins_gnss.py +24 -37
- pytcl/navigation/rhumb.py +7 -12
- pytcl/performance_evaluation/__init__.py +21 -25
- pytcl/performance_evaluation/estimation_metrics.py +3 -1
- pytcl/performance_evaluation/track_metrics.py +4 -4
- pytcl/plotting/__init__.py +30 -38
- pytcl/plotting/coordinates.py +8 -18
- pytcl/plotting/ellipses.py +5 -2
- pytcl/plotting/metrics.py +5 -10
- pytcl/plotting/tracks.py +7 -12
- pytcl/static_estimation/__init__.py +37 -41
- pytcl/static_estimation/least_squares.py +5 -4
- pytcl/static_estimation/maximum_likelihood.py +8 -5
- pytcl/static_estimation/robust.py +5 -2
- pytcl/terrain/__init__.py +28 -34
- pytcl/terrain/dem.py +6 -9
- pytcl/terrain/loaders.py +9 -14
- pytcl/terrain/visibility.py +4 -8
- pytcl/trackers/__init__.py +17 -25
- pytcl/trackers/hypothesis.py +8 -8
- pytcl/trackers/mht.py +18 -24
- pytcl/trackers/multi_target.py +8 -6
- pytcl/trackers/single_target.py +5 -2
- nrl_tracker-0.21.4.dist-info/RECORD +0 -148
- {nrl_tracker-0.21.4.dist-info → nrl_tracker-0.22.0.dist-info}/LICENSE +0 -0
- {nrl_tracker-0.21.4.dist-info → nrl_tracker-0.22.0.dist-info}/WHEEL +0 -0
- {nrl_tracker-0.21.4.dist-info → nrl_tracker-0.22.0.dist-info}/top_level.txt +0 -0
pytcl/astronomical/__init__.py
CHANGED
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
Astronomical calculations for target tracking.
|
|
3
3
|
|
|
4
4
|
This module provides time system conversions, orbital mechanics,
|
|
5
|
-
Lambert problem solvers,
|
|
5
|
+
Lambert problem solvers, reference frame transformations, and high-precision
|
|
6
|
+
ephemerides for celestial bodies.
|
|
6
7
|
|
|
7
8
|
Examples
|
|
8
9
|
--------
|
|
@@ -18,100 +19,120 @@ Examples
|
|
|
18
19
|
>>> r1 = np.array([5000, 10000, 2100])
|
|
19
20
|
>>> r2 = np.array([-14600, 2500, 7000])
|
|
20
21
|
>>> sol = lambert_universal(r1, r2, 3600)
|
|
22
|
+
|
|
23
|
+
>>> # Query Sun position with high precision
|
|
24
|
+
>>> from pytcl.astronomical import sun_position
|
|
25
|
+
>>> r_sun, v_sun = sun_position(2451545.0) # J2000.0
|
|
21
26
|
"""
|
|
22
27
|
|
|
23
|
-
from pytcl.astronomical.
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
28
|
+
from pytcl.astronomical.ephemerides import DEEphemeris
|
|
29
|
+
from pytcl.astronomical.ephemerides import barycenter_position
|
|
30
|
+
from pytcl.astronomical.ephemerides import moon_position
|
|
31
|
+
from pytcl.astronomical.ephemerides import planet_position
|
|
32
|
+
from pytcl.astronomical.ephemerides import sun_position
|
|
33
|
+
from pytcl.astronomical.lambert import LambertSolution
|
|
34
|
+
from pytcl.astronomical.lambert import bi_elliptic_transfer
|
|
35
|
+
from pytcl.astronomical.lambert import hohmann_transfer
|
|
36
|
+
from pytcl.astronomical.lambert import lambert_izzo
|
|
37
|
+
from pytcl.astronomical.lambert import lambert_universal
|
|
38
|
+
from pytcl.astronomical.lambert import minimum_energy_transfer
|
|
39
|
+
from pytcl.astronomical.orbital_mechanics import (
|
|
40
|
+
GM_EARTH, # Constants; Types; Anomaly conversions; Element conversions; Propagation; Orbital quantities
|
|
30
41
|
)
|
|
31
|
-
from pytcl.astronomical.orbital_mechanics import
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
42
|
+
from pytcl.astronomical.orbital_mechanics import GM_JUPITER
|
|
43
|
+
from pytcl.astronomical.orbital_mechanics import GM_MARS
|
|
44
|
+
from pytcl.astronomical.orbital_mechanics import GM_MOON
|
|
45
|
+
from pytcl.astronomical.orbital_mechanics import GM_SUN
|
|
46
|
+
from pytcl.astronomical.orbital_mechanics import OrbitalElements
|
|
47
|
+
from pytcl.astronomical.orbital_mechanics import StateVector
|
|
48
|
+
from pytcl.astronomical.orbital_mechanics import apoapsis_radius
|
|
49
|
+
from pytcl.astronomical.orbital_mechanics import circular_velocity
|
|
50
|
+
from pytcl.astronomical.orbital_mechanics import eccentric_to_mean_anomaly
|
|
51
|
+
from pytcl.astronomical.orbital_mechanics import eccentric_to_true_anomaly
|
|
52
|
+
from pytcl.astronomical.orbital_mechanics import escape_velocity
|
|
53
|
+
from pytcl.astronomical.orbital_mechanics import flight_path_angle
|
|
54
|
+
from pytcl.astronomical.orbital_mechanics import hyperbolic_to_true_anomaly
|
|
55
|
+
from pytcl.astronomical.orbital_mechanics import kepler_propagate
|
|
56
|
+
from pytcl.astronomical.orbital_mechanics import kepler_propagate_state
|
|
57
|
+
from pytcl.astronomical.orbital_mechanics import mean_motion
|
|
58
|
+
from pytcl.astronomical.orbital_mechanics import mean_to_eccentric_anomaly
|
|
59
|
+
from pytcl.astronomical.orbital_mechanics import mean_to_hyperbolic_anomaly
|
|
60
|
+
from pytcl.astronomical.orbital_mechanics import mean_to_true_anomaly
|
|
61
|
+
from pytcl.astronomical.orbital_mechanics import orbit_radius
|
|
62
|
+
from pytcl.astronomical.orbital_mechanics import orbital_elements_to_state
|
|
63
|
+
from pytcl.astronomical.orbital_mechanics import orbital_period
|
|
64
|
+
from pytcl.astronomical.orbital_mechanics import periapsis_radius
|
|
65
|
+
from pytcl.astronomical.orbital_mechanics import specific_angular_momentum
|
|
66
|
+
from pytcl.astronomical.orbital_mechanics import specific_orbital_energy
|
|
67
|
+
from pytcl.astronomical.orbital_mechanics import state_to_orbital_elements
|
|
68
|
+
from pytcl.astronomical.orbital_mechanics import time_since_periapsis
|
|
69
|
+
from pytcl.astronomical.orbital_mechanics import true_to_eccentric_anomaly
|
|
70
|
+
from pytcl.astronomical.orbital_mechanics import true_to_hyperbolic_anomaly
|
|
71
|
+
from pytcl.astronomical.orbital_mechanics import true_to_mean_anomaly
|
|
72
|
+
from pytcl.astronomical.orbital_mechanics import vis_viva
|
|
73
|
+
from pytcl.astronomical.reference_frames import (
|
|
74
|
+
earth_rotation_angle, # Time utilities; Precession; Nutation; Earth rotation; Polar motion; Full transformations; Ecliptic/equatorial
|
|
64
75
|
)
|
|
65
|
-
from pytcl.astronomical.reference_frames import
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
76
|
+
from pytcl.astronomical.reference_frames import ecef_to_eci
|
|
77
|
+
from pytcl.astronomical.reference_frames import eci_to_ecef
|
|
78
|
+
from pytcl.astronomical.reference_frames import ecliptic_to_equatorial
|
|
79
|
+
from pytcl.astronomical.reference_frames import equation_of_equinoxes
|
|
80
|
+
from pytcl.astronomical.reference_frames import equatorial_to_ecliptic
|
|
81
|
+
from pytcl.astronomical.reference_frames import gast_iau82
|
|
82
|
+
from pytcl.astronomical.reference_frames import gcrf_to_itrf
|
|
83
|
+
from pytcl.astronomical.reference_frames import gmst_iau82
|
|
84
|
+
from pytcl.astronomical.reference_frames import itrf_to_gcrf
|
|
85
|
+
from pytcl.astronomical.reference_frames import julian_centuries_j2000
|
|
86
|
+
from pytcl.astronomical.reference_frames import mean_obliquity_iau80
|
|
87
|
+
from pytcl.astronomical.reference_frames import nutation_angles_iau80
|
|
88
|
+
from pytcl.astronomical.reference_frames import nutation_matrix
|
|
89
|
+
from pytcl.astronomical.reference_frames import polar_motion_matrix
|
|
90
|
+
from pytcl.astronomical.reference_frames import precession_angles_iau76
|
|
91
|
+
from pytcl.astronomical.reference_frames import precession_matrix_iau76
|
|
92
|
+
from pytcl.astronomical.reference_frames import sidereal_rotation_matrix
|
|
93
|
+
from pytcl.astronomical.reference_frames import true_obliquity
|
|
94
|
+
from pytcl.astronomical.relativity import (
|
|
95
|
+
C_LIGHT, # Physical constants; Schwarzschild metric; Time dilation; Shapiro delay; Precession; PN effects; Range corrections
|
|
85
96
|
)
|
|
86
|
-
from pytcl.astronomical.
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
gps_to_utc,
|
|
99
|
-
gps_week_seconds,
|
|
100
|
-
gps_week_to_utc,
|
|
101
|
-
jd_to_cal,
|
|
102
|
-
jd_to_mjd,
|
|
103
|
-
jd_to_unix,
|
|
104
|
-
mjd_to_jd,
|
|
105
|
-
tai_to_gps,
|
|
106
|
-
tai_to_tt,
|
|
107
|
-
tai_to_utc,
|
|
108
|
-
tt_to_tai,
|
|
109
|
-
tt_to_utc,
|
|
110
|
-
unix_to_jd,
|
|
111
|
-
utc_to_gps,
|
|
112
|
-
utc_to_tai,
|
|
113
|
-
utc_to_tt,
|
|
97
|
+
from pytcl.astronomical.relativity import G_GRAV
|
|
98
|
+
from pytcl.astronomical.relativity import geodetic_precession
|
|
99
|
+
from pytcl.astronomical.relativity import gravitational_time_dilation
|
|
100
|
+
from pytcl.astronomical.relativity import lense_thirring_precession
|
|
101
|
+
from pytcl.astronomical.relativity import post_newtonian_acceleration
|
|
102
|
+
from pytcl.astronomical.relativity import proper_time_rate
|
|
103
|
+
from pytcl.astronomical.relativity import relativistic_range_correction
|
|
104
|
+
from pytcl.astronomical.relativity import schwarzschild_precession_per_orbit
|
|
105
|
+
from pytcl.astronomical.relativity import schwarzschild_radius
|
|
106
|
+
from pytcl.astronomical.relativity import shapiro_delay
|
|
107
|
+
from pytcl.astronomical.time_systems import (
|
|
108
|
+
JD_GPS_EPOCH, # Julian dates; Time scales; Unix time; GPS week; Sidereal time; Leap seconds; Constants
|
|
114
109
|
)
|
|
110
|
+
from pytcl.astronomical.time_systems import JD_J2000
|
|
111
|
+
from pytcl.astronomical.time_systems import JD_UNIX_EPOCH
|
|
112
|
+
from pytcl.astronomical.time_systems import MJD_OFFSET
|
|
113
|
+
from pytcl.astronomical.time_systems import TT_TAI_OFFSET
|
|
114
|
+
from pytcl.astronomical.time_systems import LeapSecondTable
|
|
115
|
+
from pytcl.astronomical.time_systems import cal_to_jd
|
|
116
|
+
from pytcl.astronomical.time_systems import gast
|
|
117
|
+
from pytcl.astronomical.time_systems import get_leap_seconds
|
|
118
|
+
from pytcl.astronomical.time_systems import gmst
|
|
119
|
+
from pytcl.astronomical.time_systems import gps_to_tai
|
|
120
|
+
from pytcl.astronomical.time_systems import gps_to_utc
|
|
121
|
+
from pytcl.astronomical.time_systems import gps_week_seconds
|
|
122
|
+
from pytcl.astronomical.time_systems import gps_week_to_utc
|
|
123
|
+
from pytcl.astronomical.time_systems import jd_to_cal
|
|
124
|
+
from pytcl.astronomical.time_systems import jd_to_mjd
|
|
125
|
+
from pytcl.astronomical.time_systems import jd_to_unix
|
|
126
|
+
from pytcl.astronomical.time_systems import mjd_to_jd
|
|
127
|
+
from pytcl.astronomical.time_systems import tai_to_gps
|
|
128
|
+
from pytcl.astronomical.time_systems import tai_to_tt
|
|
129
|
+
from pytcl.astronomical.time_systems import tai_to_utc
|
|
130
|
+
from pytcl.astronomical.time_systems import tt_to_tai
|
|
131
|
+
from pytcl.astronomical.time_systems import tt_to_utc
|
|
132
|
+
from pytcl.astronomical.time_systems import unix_to_jd
|
|
133
|
+
from pytcl.astronomical.time_systems import utc_to_gps
|
|
134
|
+
from pytcl.astronomical.time_systems import utc_to_tai
|
|
135
|
+
from pytcl.astronomical.time_systems import utc_to_tt
|
|
115
136
|
|
|
116
137
|
__all__ = [
|
|
117
138
|
# Time systems - Julian dates
|
|
@@ -218,4 +239,24 @@ __all__ = [
|
|
|
218
239
|
# Reference frames - Ecliptic/equatorial
|
|
219
240
|
"ecliptic_to_equatorial",
|
|
220
241
|
"equatorial_to_ecliptic",
|
|
242
|
+
# Ephemerides - Classes
|
|
243
|
+
"DEEphemeris",
|
|
244
|
+
# Ephemerides - Functions
|
|
245
|
+
"sun_position",
|
|
246
|
+
"moon_position",
|
|
247
|
+
"planet_position",
|
|
248
|
+
"barycenter_position",
|
|
249
|
+
# Relativity - Constants
|
|
250
|
+
"C_LIGHT",
|
|
251
|
+
"G_GRAV",
|
|
252
|
+
# Relativity - Functions
|
|
253
|
+
"schwarzschild_radius",
|
|
254
|
+
"gravitational_time_dilation",
|
|
255
|
+
"proper_time_rate",
|
|
256
|
+
"shapiro_delay",
|
|
257
|
+
"schwarzschild_precession_per_orbit",
|
|
258
|
+
"post_newtonian_acceleration",
|
|
259
|
+
"geodetic_precession",
|
|
260
|
+
"lense_thirring_precession",
|
|
261
|
+
"relativistic_range_correction",
|
|
221
262
|
]
|