A comprehensive Python port of the U.S. Naval Research Laboratory's Tracker Component Library. From Kalman filters to orbital mechanics — everything you need for state estimation and tracking.
pip install nrl-tracker
From basic Kalman filtering to advanced multi-target tracking, pyTCL provides production-ready implementations.
KF, EKF, UKF, CKF, H-infinity, square-root variants, particle filters, IMM estimator, and smoothing algorithms.
GNN, JPDA, MHT, Hungarian algorithm, auction algorithms, and multi-dimensional assignment.
Cartesian, spherical, geodetic, ECEF, ENU, NED conversions with full Jacobian support.
SGP4/SDP4 propagation, TLE parsing, Kepler, Lambert problem, GCRF/ITRF/TEME/TOD/MOD frames.
Strapdown mechanization, coning/sculling corrections, loosely and tightly-coupled integration.
Gravity (EGM2008), magnetism (WMM, IGRF), atmosphere, terrain analysis, and tidal effects.
Dual-backend support for NVIDIA CUDA (CuPy) and Apple Silicon (MLX). 5-15x speedup on batch filtering operations.
Clean APIs that feel natural to Python developers. NumPy arrays, type hints, and comprehensive docstrings throughout.
The library follows consistent naming conventions — MATLAB's
Cart2Sphere becomes
cart2sphere.
import numpy as np from pytcl.dynamic_estimation import kf_predict, kf_update from pytcl.dynamic_models import f_constant_velocity, q_constant_velocity # Initialize state [x, vx, y, vy] x = np.array([0.0, 1.0, 0.0, 0.5]) P = np.eye(4) * 0.1 # Motion model F = f_constant_velocity(T=1.0, num_dims=2) Q = q_constant_velocity(T=1.0, sigma_a=0.1) # Predict step pred = kf_predict(x, P, F, Q) # Update with measurement H = np.array([[1, 0, 0, 0], [0, 0, 1, 0]]) z = np.array([1.1, 0.6]) upd = kf_update(pred.x, pred.P, z, H, R)
Organized into logical modules for easy discovery and minimal dependencies.
Start building production-grade tracking systems with pyTCL. Comprehensive docs, examples, and community support available.