Crates.io | ukalman |
lib.rs | ukalman |
version | 0.1.0 |
source | src |
created_at | 2022-11-18 00:43:06.385027 |
updated_at | 2022-11-18 00:43:06.385027 |
description | Super tiny zero allocation filters for embedded |
homepage | |
repository | |
max_upload_size | |
id | 717584 |
size | 58,932 |
Super tiny zero allocation filters for embedded.
Currently, this crate only implements a tiny 1D kalman filter, useful for smoothing ADCs and similar 1D sensors. In the future, multidimensional and non-linear filters may be added.
use std::io::Read;
use ukalman::Kalman1D;
// Initialises filter
let mut filter = Kalman1D::new(2000.0, 67.4f32.powi(2));
let mut f = std::fs::File::open("test_assets/cap_full_throttle.txt").unwrap();
let mut str = String::new();
f.read_to_string(&mut str).unwrap();
// Estimate over some data
for val in str.lines().flat_map(|s| s.parse::<u16>()) {
// Filter with a static state model, and small system noise
let est = filter.filter(val as f32, 191.93f32.powi(2), |x| x, |v| v + 0.001);
std::println!("{:.0}", est);
}