#kalman-filter #filter #kalman #zero-allocation #no-std

no-std ukalman

超小型零分配嵌入式滤波器

1 个不稳定版本

0.1.0 2022年11月18日

#1187嵌入式开发

MIT 许可证

20KB

uKalman

超小型零分配嵌入式滤波器。

目前,此crate仅实现了一个微小的1D卡尔曼滤波器,适用于平滑ADC和类似1D传感器。未来可能会添加多维和非线性滤波器。

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);
}

lib.rs:

超小型零分配嵌入式滤波器。

目前此crate仅实现了一个微小的1D卡尔曼滤波器,适用于平滑ADC和类似1D传感器。未来可能会添加多维和非线性滤波器。


// 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);
}

无运行时依赖