Expand description
§Prak - Multi-object tracking library
Rust implementation of multi-object tracking algorithms based on Labelled Multi-Bernoulli (LMB) filters and their variants.
§Features
- Single-sensor LMB and LMBM filters
- Multi-sensor fusion algorithms (PU-LMB, IC-LMB, GA-LMB, AA-LMB)
- Multiple data association methods (LBP, Gibbs, Murty’s algorithm)
§Modules
lmb- LMB tracking algorithms and typescomponents- Shared algorithms: prediction, updateassociation- Data association: likelihood computation, matrix buildingcommon- Low-level utilities
§Example
use multisensor_lmb_filters_rs::lmb::{Filter, LmbFilter, MotionModel, SensorModel, BirthModel, BirthLocation, AssociationConfig};
use nalgebra::{DVector, DMatrix};
// Create filter configuration
let motion = MotionModel::constant_velocity_2d(1.0, 0.1, 0.99);
let sensor = SensorModel::position_sensor_2d(1.0, 0.9, 10.0, 100.0);
// Define a birth location
let birth_loc = BirthLocation::new(
0,
DVector::from_vec(vec![0.0, 0.0, 0.0, 0.0]),
DMatrix::identity(4, 4) * 100.0,
);
let birth = BirthModel::new(vec![birth_loc], 0.1, 0.01);
let association = AssociationConfig::default();
// Create filter
let mut filter = LmbFilter::new(motion, sensor, birth, association);
// Process measurements
let mut rng = rand::thread_rng();
let measurements = vec![DVector::from_vec(vec![1.0, 2.0])];
let estimate = filter.step(&mut rng, &measurements, 0).unwrap();Re-exports§
pub use lmb::AssociationConfig;pub use lmb::BirthLocation;pub use lmb::BirthModel;pub use lmb::EstimatedTrack;pub use lmb::FilterOutput;pub use lmb::FilterParams;pub use lmb::FilterThresholds;pub use lmb::GaussianComponent;pub use lmb::LmbmConfig;pub use lmb::LmbmHypothesis;pub use lmb::MotionModel;pub use lmb::MultisensorConfig;pub use lmb::SensorModel;pub use lmb::SensorVariant;pub use lmb::StateEstimate;pub use lmb::Track;pub use lmb::TrackLabel;pub use lmb::Trajectory;pub use lmb::AssociationError;pub use lmb::FilterError;pub use lmb::Associator;pub use lmb::Filter;pub use lmb::Merger;pub use lmb::Updater;pub use lmb::GibbsAssociator;pub use lmb::LbpAssociator;pub use lmb::MurtyAssociator;pub use lmb::HardAssignmentUpdater;pub use lmb::MarginalUpdater;pub use lmb::LmbFilter;pub use lmb::LmbmFilter;pub use lmb::AaLmbFilter;pub use lmb::ArithmeticAverageMerger;pub use lmb::GaLmbFilter;pub use lmb::GeometricAverageMerger;pub use lmb::IcLmbFilter;pub use lmb::IteratedCorrectorMerger;pub use lmb::MultisensorLmbFilter;pub use lmb::MultisensorLmbmFilter;pub use lmb::MultisensorMeasurements;pub use lmb::ParallelUpdateMerger;pub use lmb::PuLmbFilter;pub use lmb::MultisensorAssociationResult;pub use lmb::MultisensorAssociator;pub use lmb::MultisensorGibbsAssociator;
Modules§
- association
- Data association algorithms and utilities Data association algorithms and likelihood computation
- bench_
utils - Benchmark utilities (scenario loading, filter factory) Benchmark utilities shared between Criterion benchmarks and the benchmark_single binary.
- common
- Low-level utilities (linear algebra, RNG, constants) Common utilities and shared components for tracking algorithms.
- components
- Shared tracking components (prediction, update) Core algorithmic components
- lmb
- LMB (Labeled Multi-Bernoulli) tracking algorithms
Constants§
- VERSION
- Library version