#pid #control #implemented #advanced #standard #pid-gain

no-std advanced-pid

使用Rust实现的先进PID控制库

6个版本

0.2.2 2024年5月17日
0.2.1 2024年5月3日
0.1.2 2024年5月2日

#6 in #advanced

Download history 421/week @ 2024-04-27 41/week @ 2024-05-04 118/week @ 2024-05-11 44/week @ 2024-05-18 3/week @ 2024-05-25 4/week @ 2024-06-01 5/week @ 2024-06-08 1/week @ 2024-06-15 27/week @ 2024-06-29 40/week @ 2024-07-27

每月63次下载

MIT 许可证

28KB
489 代码行,不包括注释

advanced-pid-rs

使用Rust实现的先进PID控制库

Crates.io Version Documentation at docs.rs License: MIT CI

Crates.io | API文档 | 示例

亮点

  • 支持各种类型的PID控制
    • 位置(标准)PID控制
    • 速度形式PID控制
    • 基于PV的微分动作(PI-D)
    • 基于PV的比例动作(I-PD)
  • 可定制PID增益和限制
  • no_std 支持
  • 通过PidController trait用户友好
  • 包括模拟示例
  • 通过功能标志允许在 f32f64 浮点类型之间切换

安装

要在项目中安装,请在您的项目目录中运行以下Cargo命令

cargo add advanced-pid

或者将以下内容添加到您的Cargo.toml中

[dependencies]
advanced-pid = "0.2.2"

快速入门

cargo run --example simulation

示例

标准PID控制的示例

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

速度形式PID控制的示例

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

无运行时依赖

功能