nrl-tracker 0.22.0__py3-none-any.whl → 0.22.1__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.22.0.dist-info → nrl_tracker-0.22.1.dist-info}/METADATA +1 -1
- nrl_tracker-0.22.1.dist-info/RECORD +150 -0
- pytcl/__init__.py +11 -9
- pytcl/assignment_algorithms/__init__.py +42 -32
- pytcl/assignment_algorithms/data_association.py +3 -7
- pytcl/assignment_algorithms/gating.py +2 -4
- pytcl/assignment_algorithms/jpda.py +2 -6
- pytcl/assignment_algorithms/three_dimensional/__init__.py +8 -6
- pytcl/assignment_algorithms/three_dimensional/assignment.py +2 -6
- pytcl/assignment_algorithms/two_dimensional/__init__.py +13 -9
- pytcl/assignment_algorithms/two_dimensional/assignment.py +2 -5
- pytcl/assignment_algorithms/two_dimensional/kbest.py +6 -8
- pytcl/astronomical/__init__.py +108 -96
- pytcl/astronomical/ephemerides.py +1 -3
- pytcl/astronomical/lambert.py +1 -2
- pytcl/astronomical/time_systems.py +1 -2
- pytcl/atmosphere/__init__.py +13 -11
- pytcl/atmosphere/models.py +2 -4
- pytcl/clustering/__init__.py +36 -28
- pytcl/clustering/dbscan.py +2 -5
- pytcl/clustering/gaussian_mixture.py +2 -6
- pytcl/clustering/hierarchical.py +2 -6
- pytcl/clustering/kmeans.py +2 -6
- pytcl/containers/__init__.py +26 -29
- pytcl/containers/cluster_set.py +2 -10
- pytcl/containers/covertree.py +2 -8
- pytcl/containers/kd_tree.py +2 -6
- pytcl/containers/measurement_set.py +2 -9
- pytcl/containers/rtree.py +2 -6
- pytcl/containers/track_list.py +13 -13
- pytcl/containers/vptree.py +2 -7
- pytcl/coordinate_systems/__init__.py +74 -69
- pytcl/coordinate_systems/conversions/__init__.py +24 -20
- pytcl/coordinate_systems/conversions/geodetic.py +2 -4
- pytcl/coordinate_systems/conversions/spherical.py +2 -4
- pytcl/coordinate_systems/jacobians/__init__.py +12 -10
- pytcl/coordinate_systems/jacobians/jacobians.py +1 -2
- pytcl/coordinate_systems/projections/__init__.py +21 -23
- pytcl/coordinate_systems/projections/projections.py +1 -3
- pytcl/coordinate_systems/rotations/__init__.py +22 -20
- pytcl/coordinate_systems/rotations/rotations.py +1 -2
- pytcl/core/__init__.py +22 -16
- pytcl/core/array_utils.py +3 -6
- pytcl/core/validation.py +2 -7
- pytcl/dynamic_estimation/__init__.py +86 -77
- pytcl/dynamic_estimation/imm.py +3 -7
- pytcl/dynamic_estimation/information_filter.py +6 -8
- pytcl/dynamic_estimation/kalman/__init__.py +48 -40
- pytcl/dynamic_estimation/kalman/extended.py +2 -4
- pytcl/dynamic_estimation/kalman/linear.py +3 -7
- pytcl/dynamic_estimation/kalman/square_root.py +2 -5
- pytcl/dynamic_estimation/kalman/unscented.py +3 -8
- pytcl/dynamic_estimation/particle_filters/__init__.py +14 -12
- pytcl/dynamic_estimation/particle_filters/bootstrap.py +2 -6
- pytcl/dynamic_estimation/smoothers.py +3 -8
- pytcl/dynamic_models/__init__.py +41 -37
- pytcl/dynamic_models/continuous_time/__init__.py +11 -11
- pytcl/dynamic_models/continuous_time/dynamics.py +2 -4
- pytcl/dynamic_models/discrete_time/__init__.py +13 -11
- pytcl/dynamic_models/process_noise/__init__.py +13 -11
- pytcl/gravity/__init__.py +65 -55
- pytcl/gravity/clenshaw.py +1 -2
- pytcl/gravity/egm.py +3 -8
- pytcl/gravity/spherical_harmonics.py +1 -2
- pytcl/gravity/tides.py +1 -2
- pytcl/magnetism/__init__.py +25 -26
- pytcl/magnetism/emm.py +1 -4
- pytcl/magnetism/igrf.py +6 -5
- pytcl/magnetism/wmm.py +1 -2
- pytcl/mathematical_functions/__init__.py +87 -69
- pytcl/mathematical_functions/basic_matrix/__init__.py +19 -25
- pytcl/mathematical_functions/basic_matrix/decompositions.py +2 -5
- pytcl/mathematical_functions/basic_matrix/special_matrices.py +1 -2
- pytcl/mathematical_functions/combinatorics/__init__.py +14 -18
- pytcl/mathematical_functions/combinatorics/combinatorics.py +1 -4
- pytcl/mathematical_functions/geometry/__init__.py +15 -15
- pytcl/mathematical_functions/geometry/geometry.py +3 -6
- pytcl/mathematical_functions/interpolation/__init__.py +12 -10
- pytcl/mathematical_functions/interpolation/interpolation.py +2 -7
- pytcl/mathematical_functions/numerical_integration/__init__.py +10 -16
- pytcl/mathematical_functions/numerical_integration/quadrature.py +2 -6
- pytcl/mathematical_functions/signal_processing/__init__.py +30 -42
- pytcl/mathematical_functions/signal_processing/detection.py +3 -6
- pytcl/mathematical_functions/signal_processing/filters.py +2 -5
- pytcl/mathematical_functions/signal_processing/matched_filter.py +3 -6
- pytcl/mathematical_functions/special_functions/__init__.py +76 -74
- pytcl/mathematical_functions/special_functions/bessel.py +1 -2
- pytcl/mathematical_functions/special_functions/debye.py +2 -4
- pytcl/mathematical_functions/special_functions/elliptic.py +1 -2
- pytcl/mathematical_functions/special_functions/error_functions.py +1 -2
- pytcl/mathematical_functions/special_functions/gamma_functions.py +1 -2
- pytcl/mathematical_functions/special_functions/hypergeometric.py +1 -2
- pytcl/mathematical_functions/special_functions/lambert_w.py +1 -2
- pytcl/mathematical_functions/special_functions/marcum_q.py +1 -2
- pytcl/mathematical_functions/statistics/__init__.py +31 -27
- pytcl/mathematical_functions/statistics/distributions.py +4 -9
- pytcl/mathematical_functions/statistics/estimators.py +1 -2
- pytcl/mathematical_functions/transforms/__init__.py +51 -45
- pytcl/mathematical_functions/transforms/fourier.py +2 -5
- pytcl/mathematical_functions/transforms/stft.py +2 -5
- pytcl/mathematical_functions/transforms/wavelets.py +2 -7
- pytcl/navigation/__init__.py +99 -89
- pytcl/navigation/geodesy.py +2 -4
- pytcl/navigation/great_circle.py +1 -3
- pytcl/navigation/ins.py +5 -11
- pytcl/navigation/ins_gnss.py +12 -17
- pytcl/navigation/rhumb.py +2 -4
- pytcl/performance_evaluation/__init__.py +25 -21
- pytcl/performance_evaluation/estimation_metrics.py +1 -3
- pytcl/performance_evaluation/track_metrics.py +1 -3
- pytcl/plotting/__init__.py +38 -30
- pytcl/plotting/coordinates.py +1 -3
- pytcl/plotting/ellipses.py +2 -5
- pytcl/plotting/metrics.py +1 -2
- pytcl/plotting/tracks.py +1 -4
- pytcl/static_estimation/__init__.py +41 -37
- pytcl/static_estimation/least_squares.py +2 -4
- pytcl/static_estimation/maximum_likelihood.py +2 -5
- pytcl/static_estimation/robust.py +2 -5
- pytcl/terrain/__init__.py +34 -28
- pytcl/terrain/dem.py +1 -4
- pytcl/terrain/loaders.py +1 -4
- pytcl/terrain/visibility.py +1 -2
- pytcl/trackers/__init__.py +14 -17
- pytcl/trackers/hypothesis.py +1 -6
- pytcl/trackers/mht.py +9 -13
- pytcl/trackers/multi_target.py +3 -8
- pytcl/trackers/single_target.py +2 -5
- nrl_tracker-0.22.0.dist-info/RECORD +0 -150
- {nrl_tracker-0.22.0.dist-info → nrl_tracker-0.22.1.dist-info}/LICENSE +0 -0
- {nrl_tracker-0.22.0.dist-info → nrl_tracker-0.22.1.dist-info}/WHEEL +0 -0
- {nrl_tracker-0.22.0.dist-info → nrl_tracker-0.22.1.dist-info}/top_level.txt +0 -0
pytcl/plotting/__init__.py
CHANGED
|
@@ -32,42 +32,50 @@ Plotly is required for all plotting functions. Install with:
|
|
|
32
32
|
"""
|
|
33
33
|
|
|
34
34
|
# Coordinate system visualization
|
|
35
|
-
from pytcl.plotting.coordinates import
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
35
|
+
from pytcl.plotting.coordinates import (
|
|
36
|
+
plot_coordinate_axes_3d,
|
|
37
|
+
plot_coordinate_transform,
|
|
38
|
+
plot_euler_angles,
|
|
39
|
+
plot_points_spherical,
|
|
40
|
+
plot_quaternion_interpolation,
|
|
41
|
+
plot_rotation_comparison,
|
|
42
|
+
plot_spherical_grid,
|
|
43
|
+
)
|
|
42
44
|
|
|
43
45
|
# Covariance ellipse utilities
|
|
44
|
-
from pytcl.plotting.ellipses import
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
46
|
+
from pytcl.plotting.ellipses import (
|
|
47
|
+
confidence_region_radius,
|
|
48
|
+
covariance_ellipse_points,
|
|
49
|
+
covariance_ellipsoid_points,
|
|
50
|
+
ellipse_parameters,
|
|
51
|
+
plot_covariance_ellipse,
|
|
52
|
+
plot_covariance_ellipses,
|
|
53
|
+
plot_covariance_ellipsoid,
|
|
54
|
+
)
|
|
51
55
|
|
|
52
56
|
# Performance metric visualization
|
|
53
|
-
from pytcl.plotting.metrics import
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
57
|
+
from pytcl.plotting.metrics import (
|
|
58
|
+
plot_cardinality_over_time,
|
|
59
|
+
plot_consistency_summary,
|
|
60
|
+
plot_error_histogram,
|
|
61
|
+
plot_monte_carlo_rmse,
|
|
62
|
+
plot_nees_sequence,
|
|
63
|
+
plot_nis_sequence,
|
|
64
|
+
plot_ospa_over_time,
|
|
65
|
+
plot_rmse_over_time,
|
|
66
|
+
)
|
|
61
67
|
|
|
62
68
|
# Track and trajectory plotting
|
|
63
|
-
from pytcl.plotting.tracks import
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
69
|
+
from pytcl.plotting.tracks import (
|
|
70
|
+
create_animated_tracking,
|
|
71
|
+
plot_estimation_comparison,
|
|
72
|
+
plot_measurements_2d,
|
|
73
|
+
plot_multi_target_tracks,
|
|
74
|
+
plot_state_time_series,
|
|
75
|
+
plot_tracking_result,
|
|
76
|
+
plot_trajectory_2d,
|
|
77
|
+
plot_trajectory_3d,
|
|
78
|
+
)
|
|
71
79
|
|
|
72
80
|
__all__ = [
|
|
73
81
|
# Ellipses
|
pytcl/plotting/coordinates.py
CHANGED
|
@@ -5,9 +5,7 @@ This module provides functions for visualizing coordinate systems,
|
|
|
5
5
|
rotations, and transformations in 2D and 3D.
|
|
6
6
|
"""
|
|
7
7
|
|
|
8
|
-
from typing import List
|
|
9
|
-
from typing import Optional
|
|
10
|
-
from typing import Tuple
|
|
8
|
+
from typing import List, Optional, Tuple
|
|
11
9
|
|
|
12
10
|
import numpy as np
|
|
13
11
|
from numpy.typing import ArrayLike
|
pytcl/plotting/ellipses.py
CHANGED
|
@@ -5,13 +5,10 @@ This module provides functions for visualizing uncertainty as ellipses
|
|
|
5
5
|
in 2D and 3D spaces, commonly used in tracking and estimation applications.
|
|
6
6
|
"""
|
|
7
7
|
|
|
8
|
-
from typing import List
|
|
9
|
-
from typing import Optional
|
|
10
|
-
from typing import Tuple
|
|
8
|
+
from typing import List, Optional, Tuple
|
|
11
9
|
|
|
12
10
|
import numpy as np
|
|
13
|
-
from numpy.typing import ArrayLike
|
|
14
|
-
from numpy.typing import NDArray
|
|
11
|
+
from numpy.typing import ArrayLike, NDArray
|
|
15
12
|
|
|
16
13
|
try:
|
|
17
14
|
import plotly.graph_objects as go
|
pytcl/plotting/metrics.py
CHANGED
|
@@ -5,8 +5,7 @@ This module provides functions for visualizing tracking and estimation
|
|
|
5
5
|
performance metrics such as RMSE, NEES, NIS, and OSPA.
|
|
6
6
|
"""
|
|
7
7
|
|
|
8
|
-
from typing import List
|
|
9
|
-
from typing import Optional
|
|
8
|
+
from typing import List, Optional
|
|
10
9
|
|
|
11
10
|
import numpy as np
|
|
12
11
|
from numpy.typing import ArrayLike
|
pytcl/plotting/tracks.py
CHANGED
|
@@ -5,10 +5,7 @@ This module provides functions for visualizing trajectories, tracks,
|
|
|
5
5
|
measurements, and estimation results in 2D and 3D.
|
|
6
6
|
"""
|
|
7
7
|
|
|
8
|
-
from typing import Any
|
|
9
|
-
from typing import Dict
|
|
10
|
-
from typing import List
|
|
11
|
-
from typing import Optional
|
|
8
|
+
from typing import Any, Dict, List, Optional
|
|
12
9
|
|
|
13
10
|
import numpy as np
|
|
14
11
|
from numpy.typing import ArrayLike
|
|
@@ -5,46 +5,50 @@ This module provides methods for static (batch) estimation including
|
|
|
5
5
|
least squares variants and robust estimation techniques.
|
|
6
6
|
"""
|
|
7
7
|
|
|
8
|
-
from pytcl.static_estimation.least_squares import
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
from pytcl.static_estimation.maximum_likelihood import aic
|
|
20
|
-
from pytcl.static_estimation.maximum_likelihood import aicc
|
|
21
|
-
from pytcl.static_estimation.maximum_likelihood import bic
|
|
22
|
-
from pytcl.static_estimation.maximum_likelihood import cramer_rao_bound
|
|
23
|
-
from pytcl.static_estimation.maximum_likelihood import cramer_rao_bound_biased
|
|
24
|
-
from pytcl.static_estimation.maximum_likelihood import efficiency
|
|
8
|
+
from pytcl.static_estimation.least_squares import (
|
|
9
|
+
LSResult,
|
|
10
|
+
TLSResult,
|
|
11
|
+
WLSResult,
|
|
12
|
+
generalized_least_squares,
|
|
13
|
+
ordinary_least_squares,
|
|
14
|
+
recursive_least_squares,
|
|
15
|
+
ridge_regression,
|
|
16
|
+
total_least_squares,
|
|
17
|
+
weighted_least_squares,
|
|
18
|
+
)
|
|
25
19
|
from pytcl.static_estimation.maximum_likelihood import (
|
|
20
|
+
CRBResult,
|
|
21
|
+
MLResult,
|
|
22
|
+
aic,
|
|
23
|
+
aicc,
|
|
24
|
+
bic,
|
|
25
|
+
cramer_rao_bound,
|
|
26
|
+
cramer_rao_bound_biased,
|
|
27
|
+
efficiency,
|
|
26
28
|
fisher_information_exponential_family,
|
|
29
|
+
fisher_information_gaussian,
|
|
30
|
+
fisher_information_numerical,
|
|
31
|
+
mle_gaussian,
|
|
32
|
+
mle_newton_raphson,
|
|
33
|
+
mle_scoring,
|
|
34
|
+
observed_fisher_information,
|
|
35
|
+
)
|
|
36
|
+
from pytcl.static_estimation.robust import (
|
|
37
|
+
RANSACResult,
|
|
38
|
+
RobustResult,
|
|
39
|
+
cauchy_weight,
|
|
40
|
+
huber_regression,
|
|
41
|
+
huber_rho,
|
|
42
|
+
huber_weight,
|
|
43
|
+
irls,
|
|
44
|
+
mad,
|
|
45
|
+
ransac,
|
|
46
|
+
ransac_n_trials,
|
|
47
|
+
tau_scale,
|
|
48
|
+
tukey_regression,
|
|
49
|
+
tukey_rho,
|
|
50
|
+
tukey_weight,
|
|
27
51
|
)
|
|
28
|
-
from pytcl.static_estimation.maximum_likelihood import fisher_information_gaussian
|
|
29
|
-
from pytcl.static_estimation.maximum_likelihood import fisher_information_numerical
|
|
30
|
-
from pytcl.static_estimation.maximum_likelihood import mle_gaussian
|
|
31
|
-
from pytcl.static_estimation.maximum_likelihood import mle_newton_raphson
|
|
32
|
-
from pytcl.static_estimation.maximum_likelihood import mle_scoring
|
|
33
|
-
from pytcl.static_estimation.maximum_likelihood import observed_fisher_information
|
|
34
|
-
from pytcl.static_estimation.robust import RANSACResult
|
|
35
|
-
from pytcl.static_estimation.robust import RobustResult
|
|
36
|
-
from pytcl.static_estimation.robust import cauchy_weight
|
|
37
|
-
from pytcl.static_estimation.robust import huber_regression
|
|
38
|
-
from pytcl.static_estimation.robust import huber_rho
|
|
39
|
-
from pytcl.static_estimation.robust import huber_weight
|
|
40
|
-
from pytcl.static_estimation.robust import irls
|
|
41
|
-
from pytcl.static_estimation.robust import mad
|
|
42
|
-
from pytcl.static_estimation.robust import ransac
|
|
43
|
-
from pytcl.static_estimation.robust import ransac_n_trials
|
|
44
|
-
from pytcl.static_estimation.robust import tau_scale
|
|
45
|
-
from pytcl.static_estimation.robust import tukey_regression
|
|
46
|
-
from pytcl.static_estimation.robust import tukey_rho
|
|
47
|
-
from pytcl.static_estimation.robust import tukey_weight
|
|
48
52
|
|
|
49
53
|
__all__ = [
|
|
50
54
|
# Least squares results
|
|
@@ -12,12 +12,10 @@ References
|
|
|
12
12
|
Johns Hopkins University Press, 2013.
|
|
13
13
|
"""
|
|
14
14
|
|
|
15
|
-
from typing import NamedTuple
|
|
16
|
-
from typing import Optional
|
|
15
|
+
from typing import NamedTuple, Optional
|
|
17
16
|
|
|
18
17
|
import numpy as np
|
|
19
|
-
from numpy.typing import ArrayLike
|
|
20
|
-
from numpy.typing import NDArray
|
|
18
|
+
from numpy.typing import ArrayLike, NDArray
|
|
21
19
|
|
|
22
20
|
|
|
23
21
|
class LSResult(NamedTuple):
|
|
@@ -12,13 +12,10 @@ References
|
|
|
12
12
|
Wiley, 2001.
|
|
13
13
|
"""
|
|
14
14
|
|
|
15
|
-
from typing import Callable
|
|
16
|
-
from typing import NamedTuple
|
|
17
|
-
from typing import Optional
|
|
15
|
+
from typing import Callable, NamedTuple, Optional
|
|
18
16
|
|
|
19
17
|
import numpy as np
|
|
20
|
-
from numpy.typing import ArrayLike
|
|
21
|
-
from numpy.typing import NDArray
|
|
18
|
+
from numpy.typing import ArrayLike, NDArray
|
|
22
19
|
|
|
23
20
|
|
|
24
21
|
class MLResult(NamedTuple):
|
|
@@ -12,13 +12,10 @@ References
|
|
|
12
12
|
Cartography," Communications of the ACM, 1981.
|
|
13
13
|
"""
|
|
14
14
|
|
|
15
|
-
from typing import Callable
|
|
16
|
-
from typing import NamedTuple
|
|
17
|
-
from typing import Optional
|
|
15
|
+
from typing import Callable, NamedTuple, Optional
|
|
18
16
|
|
|
19
17
|
import numpy as np
|
|
20
|
-
from numpy.typing import ArrayLike
|
|
21
|
-
from numpy.typing import NDArray
|
|
18
|
+
from numpy.typing import ArrayLike, NDArray
|
|
22
19
|
|
|
23
20
|
|
|
24
21
|
class RobustResult(NamedTuple):
|
pytcl/terrain/__init__.py
CHANGED
|
@@ -52,38 +52,44 @@ Examples
|
|
|
52
52
|
"""
|
|
53
53
|
|
|
54
54
|
# DEM interface
|
|
55
|
-
from pytcl.terrain.dem import
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
55
|
+
from pytcl.terrain.dem import (
|
|
56
|
+
DEMGrid,
|
|
57
|
+
DEMMetadata,
|
|
58
|
+
DEMPoint,
|
|
59
|
+
TerrainGradient,
|
|
60
|
+
create_flat_dem,
|
|
61
|
+
create_synthetic_terrain,
|
|
62
|
+
get_elevation_profile,
|
|
63
|
+
interpolate_dem,
|
|
64
|
+
merge_dems,
|
|
65
|
+
)
|
|
64
66
|
|
|
65
67
|
# Data loaders
|
|
66
|
-
from pytcl.terrain.loaders import
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
68
|
+
from pytcl.terrain.loaders import (
|
|
69
|
+
EARTH2014_PARAMETERS,
|
|
70
|
+
GEBCO_PARAMETERS,
|
|
71
|
+
Earth2014Metadata,
|
|
72
|
+
GEBCOMetadata,
|
|
73
|
+
create_test_earth2014_dem,
|
|
74
|
+
create_test_gebco_dem,
|
|
75
|
+
get_data_dir,
|
|
76
|
+
get_earth2014_metadata,
|
|
77
|
+
get_gebco_metadata,
|
|
78
|
+
load_earth2014,
|
|
79
|
+
load_gebco,
|
|
80
|
+
)
|
|
77
81
|
|
|
78
82
|
# Visibility functions
|
|
79
|
-
from pytcl.terrain.visibility import
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
83
|
+
from pytcl.terrain.visibility import (
|
|
84
|
+
HorizonPoint,
|
|
85
|
+
LOSResult,
|
|
86
|
+
ViewshedResult,
|
|
87
|
+
compute_horizon,
|
|
88
|
+
line_of_sight,
|
|
89
|
+
radar_coverage_map,
|
|
90
|
+
terrain_masking_angle,
|
|
91
|
+
viewshed,
|
|
92
|
+
)
|
|
87
93
|
|
|
88
94
|
__all__ = [
|
|
89
95
|
# DEM data structures
|
pytcl/terrain/dem.py
CHANGED
|
@@ -25,10 +25,7 @@ References
|
|
|
25
25
|
198.3 (2014): 1544-1555.
|
|
26
26
|
"""
|
|
27
27
|
|
|
28
|
-
from typing import List
|
|
29
|
-
from typing import NamedTuple
|
|
30
|
-
from typing import Optional
|
|
31
|
-
from typing import Tuple
|
|
28
|
+
from typing import List, NamedTuple, Optional, Tuple
|
|
32
29
|
|
|
33
30
|
import numpy as np
|
|
34
31
|
from numpy.typing import NDArray
|
pytcl/terrain/loaders.py
CHANGED
|
@@ -21,10 +21,7 @@ References
|
|
|
21
21
|
import os
|
|
22
22
|
from functools import lru_cache
|
|
23
23
|
from pathlib import Path
|
|
24
|
-
from typing import Dict
|
|
25
|
-
from typing import NamedTuple
|
|
26
|
-
from typing import Optional
|
|
27
|
-
from typing import Tuple
|
|
24
|
+
from typing import Dict, NamedTuple, Optional, Tuple
|
|
28
25
|
|
|
29
26
|
import numpy as np
|
|
30
27
|
from numpy.typing import NDArray
|
pytcl/terrain/visibility.py
CHANGED
pytcl/trackers/__init__.py
CHANGED
|
@@ -5,23 +5,20 @@ This module provides complete tracker implementations that combine
|
|
|
5
5
|
filtering, data association, and track management.
|
|
6
6
|
"""
|
|
7
7
|
|
|
8
|
-
from pytcl.trackers.hypothesis import
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
from pytcl.trackers.mht import MHTTracker
|
|
20
|
-
from pytcl.trackers.multi_target import MultiTargetTracker
|
|
21
|
-
from pytcl.trackers.
|
|
22
|
-
from pytcl.trackers.multi_target import TrackStatus
|
|
23
|
-
from pytcl.trackers.single_target import SingleTargetTracker
|
|
24
|
-
from pytcl.trackers.single_target import TrackState
|
|
8
|
+
from pytcl.trackers.hypothesis import (
|
|
9
|
+
Hypothesis,
|
|
10
|
+
HypothesisAssignment,
|
|
11
|
+
HypothesisTree,
|
|
12
|
+
MHTTrack,
|
|
13
|
+
MHTTrackStatus,
|
|
14
|
+
compute_association_likelihood,
|
|
15
|
+
generate_joint_associations,
|
|
16
|
+
n_scan_prune,
|
|
17
|
+
prune_hypotheses_by_probability,
|
|
18
|
+
)
|
|
19
|
+
from pytcl.trackers.mht import MHTConfig, MHTResult, MHTTracker
|
|
20
|
+
from pytcl.trackers.multi_target import MultiTargetTracker, Track, TrackStatus
|
|
21
|
+
from pytcl.trackers.single_target import SingleTargetTracker, TrackState
|
|
25
22
|
|
|
26
23
|
__all__ = [
|
|
27
24
|
# Single target
|
pytcl/trackers/hypothesis.py
CHANGED
|
@@ -13,12 +13,7 @@ References
|
|
|
13
13
|
"""
|
|
14
14
|
|
|
15
15
|
from enum import Enum
|
|
16
|
-
from typing import Dict
|
|
17
|
-
from typing import List
|
|
18
|
-
from typing import NamedTuple
|
|
19
|
-
from typing import Optional
|
|
20
|
-
from typing import Set
|
|
21
|
-
from typing import Tuple
|
|
16
|
+
from typing import Dict, List, NamedTuple, Optional, Set, Tuple
|
|
22
17
|
|
|
23
18
|
import numpy as np
|
|
24
19
|
from numpy.typing import NDArray
|
pytcl/trackers/mht.py
CHANGED
|
@@ -15,24 +15,20 @@ References
|
|
|
15
15
|
IEEE Trans. Automatic Control, 1979.
|
|
16
16
|
"""
|
|
17
17
|
|
|
18
|
-
from typing import Callable
|
|
19
|
-
from typing import Dict
|
|
20
|
-
from typing import List
|
|
21
|
-
from typing import NamedTuple
|
|
22
|
-
from typing import Optional
|
|
23
|
-
from typing import Set
|
|
18
|
+
from typing import Callable, Dict, List, NamedTuple, Optional, Set
|
|
24
19
|
|
|
25
20
|
import numpy as np
|
|
26
|
-
from numpy.typing import ArrayLike
|
|
27
|
-
from numpy.typing import NDArray
|
|
21
|
+
from numpy.typing import ArrayLike, NDArray
|
|
28
22
|
from scipy.stats import chi2
|
|
29
23
|
|
|
30
24
|
from pytcl.assignment_algorithms.gating import mahalanobis_distance
|
|
31
|
-
from pytcl.trackers.hypothesis import
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
25
|
+
from pytcl.trackers.hypothesis import (
|
|
26
|
+
Hypothesis,
|
|
27
|
+
HypothesisTree,
|
|
28
|
+
MHTTrack,
|
|
29
|
+
MHTTrackStatus,
|
|
30
|
+
generate_joint_associations,
|
|
31
|
+
)
|
|
36
32
|
|
|
37
33
|
|
|
38
34
|
class MHTConfig(NamedTuple):
|
pytcl/trackers/multi_target.py
CHANGED
|
@@ -6,17 +6,12 @@ and Kalman filtering with track management (initiation, maintenance, deletion).
|
|
|
6
6
|
"""
|
|
7
7
|
|
|
8
8
|
from enum import Enum
|
|
9
|
-
from typing import Callable
|
|
10
|
-
from typing import List
|
|
11
|
-
from typing import NamedTuple
|
|
12
|
-
from typing import Optional
|
|
9
|
+
from typing import Callable, List, NamedTuple, Optional
|
|
13
10
|
|
|
14
11
|
import numpy as np
|
|
15
|
-
from numpy.typing import ArrayLike
|
|
16
|
-
from numpy.typing import NDArray
|
|
12
|
+
from numpy.typing import ArrayLike, NDArray
|
|
17
13
|
|
|
18
|
-
from pytcl.assignment_algorithms import chi2_gate_threshold
|
|
19
|
-
from pytcl.assignment_algorithms import gnn_association
|
|
14
|
+
from pytcl.assignment_algorithms import chi2_gate_threshold, gnn_association
|
|
20
15
|
|
|
21
16
|
|
|
22
17
|
class TrackStatus(Enum):
|
pytcl/trackers/single_target.py
CHANGED
|
@@ -4,13 +4,10 @@ Single-target tracker implementation.
|
|
|
4
4
|
This module provides a simple single-target tracker using Kalman filtering.
|
|
5
5
|
"""
|
|
6
6
|
|
|
7
|
-
from typing import Callable
|
|
8
|
-
from typing import NamedTuple
|
|
9
|
-
from typing import Optional
|
|
7
|
+
from typing import Callable, NamedTuple, Optional
|
|
10
8
|
|
|
11
9
|
import numpy as np
|
|
12
|
-
from numpy.typing import ArrayLike
|
|
13
|
-
from numpy.typing import NDArray
|
|
10
|
+
from numpy.typing import ArrayLike, NDArray
|
|
14
11
|
|
|
15
12
|
|
|
16
13
|
class TrackState(NamedTuple):
|