pub struct PID<F, const W: usize> {
pub kp: F,
pub ki: F,
pub kd: F,
pub kf: F,
pub kv: F,
/* private fields */
}
Expand description
PID controller
§Examples
use pid_loop::PID;
let target = 42.0;
let mut controller = PID::<f64, 1>::new(2.0, 0.7, 0.3, 0.0, 0.0);
let correction = controller.next(target, measure());
fn measure() -> f64 { todo!() }
Fields§
§kp: F
Proportional gain.
ki: F
Integral gain.
kd: F
Derivative gain.
kf: F
Feed forward gain
kv: F
Velocity
Implementations§
Source§impl<F, const W: usize> PID<F, W>
impl<F, const W: usize> PID<F, W>
Sourcepub fn new(
kp: impl Into<F>,
ki: impl Into<F>,
kd: impl Into<F>,
kf: impl Into<F>,
kv: impl Into<F>,
) -> Self
pub fn new( kp: impl Into<F>, ki: impl Into<F>, kd: impl Into<F>, kf: impl Into<F>, kv: impl Into<F>, ) -> Self
Create a new instance of PID
.
§Examples
#![allow(unused_assignments)]
use pid_loop::PID;
let mut controller = PID::<f32, 1>::new(0.7, 0.034, 0.084, 0.1, 0.0);
Sourcepub fn reset(&mut self)
pub fn reset(&mut self)
Reset controller internal state.
§Examples
#![allow(unused_assignments)]
use pid_loop::PID;
let target = 30.0;
let mut controller = PID::<f32, 1>::new(0.7, 0.034, 0.084, 0.1, 0.0);
controller.next(target, 42.0);
controller.reset();
Sourcepub fn next(&mut self, sp: impl Into<F>, fb: impl Into<F>) -> F
pub fn next(&mut self, sp: impl Into<F>, fb: impl Into<F>) -> F
Push next measurement into the controller and return correction.
§Examples
#![allow(unused_assignments)]
use pid_loop::PID;
let target = 30.0;
let mut controller = PID::<f64, 1>::new(0.7, 0.034, 0.084, 0.1, 0.1);
let correction = controller.next(target, 42.0);
Auto Trait Implementations§
impl<F, const W: usize> Freeze for PID<F, W>where
F: Freeze,
impl<F, const W: usize> RefUnwindSafe for PID<F, W>where
F: RefUnwindSafe,
impl<F, const W: usize> Send for PID<F, W>where
F: Send,
impl<F, const W: usize> Sync for PID<F, W>where
F: Sync,
impl<F, const W: usize> Unpin for PID<F, W>where
F: Unpin,
impl<F, const W: usize> UnwindSafe for PID<F, W>where
F: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more