Skip to main content

RobustPid

Struct RobustPid 

Source
pub struct RobustPid<T: Float> { /* private fields */ }
Expand description

Advanced PID controller for critical systems

Implementations§

Source§

impl<T: Float> RobustPid<T>

Source

pub fn new(config: PidConfig<T>) -> Self

Create a new PID controller with the given configuration

Source

pub fn with_gains(kp: T, ki: T, kd: T) -> Self

Create a PID controller with default settings

Source

pub fn set_setpoint(&mut self, setpoint: T)

Set the target setpoint

Source

pub fn update_config(&mut self, config: PidConfig<T>)

Update configuration (allows online tuning)

Source

pub fn config(&self) -> &PidConfig<T>

Get current configuration

Source

pub fn update(&mut self, measurement: T, dt: T) -> ControlOutput<T>

Compute control output with variable time step

This method uses setpoint tracking mode: error = setpoint - measurement

Source

pub fn update_from_error(&mut self, error: T, dt: T) -> ControlOutput<T>

Compute control output directly from error signal

Use this when you already have the error calculated externally. Positive error means the system needs to increase output. Negative error means the system needs to decrease output.

§Example
// External error source (e.g., from sensor fusion, observer, etc.)
let error = calculate_tracking_error(); // Could be +/- value

let output = pid.update_from_error(error, dt);
// Controller will drive error toward zero
Source

pub fn reset(&mut self)

Reset all internal state (use when switching control modes)

Source

pub fn reset_integral(&mut self)

Reset only integral term (for integral windup recovery)

Source

pub fn preload_integral(&mut self, value: T)

Manual integral preload (for bumpless transfer)

Source

pub fn get_integral_term(&self) -> T

Get current integral term value

Source

pub fn diagnostics(&self) -> PidDiagnostics<T>

Get diagnostic information

Trait Implementations§

Source§

impl<T: Clone + Float> Clone for RobustPid<T>

Source§

fn clone(&self) -> RobustPid<T>

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more

Auto Trait Implementations§

§

impl<T> Freeze for RobustPid<T>
where T: Freeze,

§

impl<T> RefUnwindSafe for RobustPid<T>
where T: RefUnwindSafe,

§

impl<T> Send for RobustPid<T>
where T: Send,

§

impl<T> Sync for RobustPid<T>
where T: Sync,

§

impl<T> Unpin for RobustPid<T>
where T: Unpin,

§

impl<T> UnsafeUnpin for RobustPid<T>
where T: UnsafeUnpin,

§

impl<T> UnwindSafe for RobustPid<T>
where T: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.