| Crates.io | robust-pid |
| lib.rs | robust-pid |
| version | 0.1.0 |
| created_at | 2025-10-21 07:22:05.424973+00 |
| updated_at | 2025-10-21 07:22:05.424973+00 |
| description | Production-grade PID controller for safety-critical systems |
| homepage | |
| repository | https://github.com/Ahmed.Boin/robust-pid |
| max_upload_size | |
| id | 1893369 |
| size | 109,212 |
A production-grade PID controller for safety-critical systems including aerospace, automotive, and industrial control applications.
no_std compatible for embedded systemsuse robust_pid::{PidBuilder, AntiWindupMode, DerivativeMode};
fn main() {
// Create a PID controller
let mut pid = PidBuilder::new()
.gains(2.0, 0.5, 0.1) // Kp, Ki, Kd
.output_limits(-100.0, 100.0) // Output range
.antiwindup(AntiWindupMode::BackCalculation, 1.0)
.derivative_filter(DerivativeMode::LowPass, 0.2)
.build();
// Set target
pid.set_setpoint(25.0);
// Control loop
let measurement = 20.0;
let dt = 0.01; // 10ms
let output = pid.update(measurement, dt);
println!("Control output: {}", output.output);
}
Run the examples:
# Simple temperature control
cargo run --example basic_temperature
# Aircraft pitch control
cargo run --example aircraft_pitch
# Rocket 3-axis attitude control
cargo run --example rocket_attitude
# Drone cascaded altitude control
cargo run --example drone_altitude
# Feed with error only
cargo run --example error_correction
For embedded systems without std:
[dependencies]
robust-pid = { version = "0.1", default-features = false, features = ["libm"] }
MIT OR Apache-2.0