2 个不稳定版本
0.2.0 | 2020 年 6 月 19 日 |
---|---|
0.1.0 | 2019 年 7 月 28 日 |
#1329 在 算法
42KB
772 行
filter-rs - Rust 中的卡尔曼滤波和其他最优和非最优估计滤波器。
filter-rs 是 filterpy 库的移植,旨在为 Rust 提供卡尔曼滤波和最优估计。
这个移植是一个正在进行中的工作,尚不完整。要了解更多关于卡尔曼滤波的信息,请查看 Roger R Labbe Jr. 的出色书籍 Kalman-and-Bayesian-Filters-in-Python。
随着我阅读这本书并逐步完成,这个库将不断增长,API 可能也会发展和变得更加 Rust-like。对于 API 设计的反馈总是受欢迎的,以及对于缺失功能的拉取请求。
示例
API 基于 nalgebra
矩阵,具有结构泛型性。这意味着输入的形状可以在静态检查,并且在运行时始终正确。
GH 滤波器
let x0 = 0.0;
let dx0 = 0.0;
let g = 0.2;
let h - 0.2;
let dt = 0.01;
let fgh = GHFilter::new(x0, dx0, g, h, dt);
单变量卡尔曼滤波器
卡尔曼滤波器必须使用合理的值进行初始化。可以构建默认的过滤器,但不应使用它。
let mut kf: KalmanFilter<f64, U2, U1, U1> = KalmanFilter::default();
kf.x = Vector2::new(2.0, 0.0);
kf.F = Matrix2::new(
1.0, 1.0,
0.0, 1.0,
);
kf.H = Vector2::new(1.0, 0.0).transpose();
kf.P *= 1000.0;
kf.R = Matrix1::new(5.0);
kf.Q = Matrix2::repeat(0.0001);
let mut results = Vec::default();
for t in 0..100 {
let z = Vector1::new(t as f64);
kf.update(&z, None, None);
kf.predict(None, None, None, None);
results.push(kf.x.clone());
}
当前状态
每个与 filtyperpy 库具有功能对等的模块都将填充复选框。
-
线性卡尔曼滤波器
-
固定滞后平滑器
-
平方根卡尔曼滤波器
-
信息滤波器
-
衰减卡尔曼滤波器
-
MMAE 滤波器库
-
IMM 估计器
-
扩展卡尔曼滤波器
-
无迹卡尔曼滤波器
-
集合卡尔曼滤波器
-
离散贝叶斯
-
GH-滤波器
-
GHK-滤波器
-
衰减记忆滤波器
-
H-无穷滤波器
-
最小二乘滤波器
许可证
根据您的选择,受以下任何一个许可证的约束
- Apache License, Version 2.0 或 http://www.apache.org/licenses/LICENSE-2.0
- MIT license 或 http://opensource.org/licenses/MIT
。
贡献
除非您明确声明,否则您提交的任何有意包含在作品中的贡献,如 Apache-2.0 许可证中定义的,均应按上述方式双许可,不附加任何额外条款或条件。
依赖关系
~4MB
~77K SLoC