Skip to main content

rust_robotics_localization/
lib.rs

1#![forbid(unsafe_code)]
2#![cfg_attr(not(feature = "std"), no_std)]
3//! Localization algorithms for the RustRobotics workspace.
4//!
5//! With default features disabled this crate is `no_std` (plus `alloc`) and
6//! the Kalman-family filters (EKF, IEKF, UKF, CKF, SR-UKF, information,
7//! complementary, histogram, adaptive) build for bare-metal targets such as
8//! `thumbv7em-none-eabihf`. The sampling-based localizers (particle filter,
9//! Monte Carlo localization, ensemble KF) need `std` for random number
10//! generation.
11
12extern crate alloc;
13
14pub mod adaptive_filter;
15pub mod cubature_kalman_filter;
16pub mod ekf;
17#[cfg(feature = "std")]
18pub mod ensemble_kalman_filter;
19#[cfg(feature = "std")]
20pub mod experiments;
21pub mod histogram_filter;
22#[cfg(feature = "std")]
23pub mod monte_carlo_localization;
24#[cfg(feature = "std")]
25pub mod particle_filter;
26pub mod unscented_kalman_filter;
27
28pub mod complementary_filter;
29pub mod information_filter;
30pub mod iterated_ekf;
31pub mod square_root_ukf;
32
33// Re-exports
34pub use ekf::{EKFConfig, EKFControl, EKFLocalizer, EKFMeasurement, EKFState};
35pub use histogram_filter::{GridMap, HistogramFilter};
36#[cfg(feature = "std")]
37pub use monte_carlo_localization::{
38    MCLControl, MCLMeasurement, MCLState, MonteCarloLocalizationConfig, MonteCarloLocalizer,
39};
40#[cfg(feature = "std")]
41pub use particle_filter::{
42    PFControl, PFMeasurement, PFState, Particle, ParticleFilterConfig, ParticleFilterLocalizer,
43};
44pub use unscented_kalman_filter::{
45    UKFConfig, UKFControl, UKFLocalizer, UKFMeasurement, UKFParams, UKFState, UKFWeights,
46};