6个版本
0.2.2 | 2024年5月17日 |
---|---|
0.2.1 | 2024年5月3日 |
0.1.2 | 2024年5月2日 |
#6 in #advanced
每月63次下载
28KB
489 代码行,不包括注释
亮点
- 支持各种类型的PID控制
- 位置(标准)PID控制
- 速度形式PID控制
- 基于PV的微分动作(PI-D)
- 基于PV的比例动作(I-PD)
- 可定制PID增益和限制
no_std
支持- 通过PidController trait用户友好
- 包括模拟示例
- 通过功能标志允许在
f32
和f64
浮点类型之间切换
安装
要在项目中安装,请在您的项目目录中运行以下Cargo命令
cargo add advanced-pid
或者将以下内容添加到您的Cargo.toml中
[dependencies]
advanced-pid = "0.2.2"
快速入门
cargo run --example simulation
示例
use advanced_pid::{prelude::*, Pid, PidGain};
fn main() {
let gain = PidGain {
kp: 1.0,
ki: 0.3,
kd: 0.1,
};
let mut pid = Pid::new(gain.into());
println!("{:5.2}", pid.update(1.0, 0.0, 1.0));
println!("{:5.2}", pid.update(1.0, 0.5, 1.0));
println!("{:5.2}", pid.update(1.0, 0.8, 1.0));
}
use advanced_pid::{prelude::*, PidConfig, VelPid};
fn main() {
let config = PidConfig::new(1.0, 0.1, 0.1).with_limits(-1.0, 1.0);
let mut pid = VelPid::new(config);
let target = 1.0;
let dt = 1.0;
println!("{:5.2}", pid.update(target, 0.0, dt));
println!("{:5.2}", pid.update(target, 0.1, dt));
println!("{:5.2}", pid.update(target, 0.3, dt));
}
更多信息
有关更多信息,请访问
许可证
版权(c)2024 Yoshikawa Teru
该项目根据MIT许可证发布,请参阅LICENSE。