Per-target Kalman/IMM tracking: interacting multiple models, maneuver segmentation, RTS smoothing, EKF/UKF observable updates, and a motion-model bank
Project description
gri-kalman
Per-target Kalman tracking for geolocation: interacting multiple model (IMM)
filters with a motion-model bank, maneuver segmentation, RTS smoothing, and
EKF/UKF measurement updates from either Ell position fixes or raw observables.
This package was factored out of gri-convolve so the per-target estimators can
be reused without the ellipsoid-convolution stack. It depends only on gri-ell,
gri-obs, gri-pos, gri-utils (plus numpy/scipy).
Install
uv add gri-kalman
Trackers
All implement the Tracker protocol (update / update_observable / predict /
coast / smoothed_track / result / is_initialized):
| Tracker | Description |
|---|---|
IMM |
Interacting multiple model filter over a motion-model bank |
SmartIMM |
IMM with outlier rejection on the measurement stream |
SegmentedIMM |
Maneuver-segmenting IMM (per-segment filters) |
SmartSegmentedIMM |
Segmenting + outlier-rejecting (the recommended default) |
Motion models: ConstantVelocity, ConstantAcceleration, NearlyConstantSpeed,
CoordinatedTurn, Singer, ClimbDescent, Static (plus the
LinearMotionModel / NonlinearMotionModel / MotionModel base protocols).
Smoothing: rts_smooth, rts_smooth_segments, track_to_ells. Result container:
KalmanResult.
EKF vs UKF for observable updates
update() consumes an Ell (3D position + covariance) and is always an exact
linear update. update_observable() consumes a nonlinear observable (TDOA, FDOA,
AOA, Range, ...); choose the linearization with update_method:
"ekf"(default): linearizes at the predicted mean via the observable'sjacobian(). Cheap and accurate when the prior is tight relative to the geometry's nonlinearity."ukf": propagates sigma points throughpredicted()(no Jacobian). More robust (better-calibrated covariance) when the prior is broad and the observable is strongly nonlinear -- e.g. track initiation, long coast gaps, AOA, or satellite TDOA. Tune the spread withukf_alpha.
The UKF's advantage is consistency, not necessarily smaller point error; switch to it for robustness when the prior is broad, not expecting lower position error in mildly nonlinear cases.
Notes
- State is ECEF; positions/covariances interchange with gri-ell
Ellobjects. - Downstream consumers: the multi-target engine
gri-multitrackorchestrates these trackers via theTrackerprotocol; gri-convolve no longer ships them.
License
MIT -- see LICENSE.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
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 gri_kalman-0.1.0.tar.gz.
File metadata
- Download URL: gri_kalman-0.1.0.tar.gz
- Upload date:
- Size: 91.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.19 {"installer":{"name":"uv","version":"0.11.19","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
86593fc62022d8ffc2e08cd855c68773c970fcdb72dfa2ac535144926dbd36fa
|
|
| MD5 |
7ef94f0bf74a4c95ad16216f3bd812ba
|
|
| BLAKE2b-256 |
43c96ec84c7b65d6d2a02504d49731b1d429c7dce0f5554cbd83f8b1bf05c4fc
|
File details
Details for the file gri_kalman-0.1.0-py3-none-any.whl.
File metadata
- Download URL: gri_kalman-0.1.0-py3-none-any.whl
- Upload date:
- Size: 46.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.19 {"installer":{"name":"uv","version":"0.11.19","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cb7ec8c24c1f717ad3a9db85746c5481eb926c44efb00c9096d5df30c88414b0
|
|
| MD5 |
bdbce2a38debfa4b0409dd9f4223f9f2
|
|
| BLAKE2b-256 |
34273825da3011c28f97d954d65537e1df4becca4fbdaba9d8272b854ab400e3
|