advanced-pid 0.1.1

A PID controller library for Rust with advanced features.
Documentation

advanced-pid-rs

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

Highlights

  • Advanced PID control library available in Rust
  • Supports many PID controls
    • Position (normal) PID Control
    • Velocity form PID Control
    • Basing derivative action on PV (PI-D)
    • Basing proportional action on PV (I-PD)

Quick Start

cargo run --example simulation

Examples

use advanced_pid::{pid::Pid, PidController, PidGain};

fn main() {
    let gain = PidGain {
        kp: 1.0,
        ki: 0.1,
        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::{vel_pid::VelPid, PidConfig, PidController};

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

More information

For more information, check out:

License

Copyright (c) 2024 Yoshikawa Teru

This project is released under the MIT License, see LICENSE.