Skip to content

Commit

Permalink
option for pid params
Browse files Browse the repository at this point in the history
  • Loading branch information
jordens committed Mar 19, 2024
1 parent bc97738 commit e6950e2
Showing 1 changed file with 18 additions and 12 deletions.
30 changes: 18 additions & 12 deletions src/output_channel.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,11 @@ pub struct Pid {
pub ki: f32,
pub kp: f32,
pub kd: f32,
pub li: f32,
pub ld: f32,
pub li: Option<f32>,
pub ld: Option<f32>,
pub setpoint: f32,
pub min: f32,
pub max: f32,
pub min: Option<f32>,
pub max: Option<f32>,
}

impl Default for Pid {
Expand All @@ -24,11 +24,11 @@ impl Default for Pid {
ki: 0.,
kp: 0., // positive, sign reference for all gains and limits
kd: 0.,
li: f32::INFINITY,
ld: f32::INFINITY,
li: None,
ld: None,
setpoint: 25.,
min: -f32::INFINITY,
max: f32::INFINITY,
min: None,
max: None,
}
}
}
Expand All @@ -41,13 +41,19 @@ impl TryFrom<Pid> for iir::Biquad<f64> {
.gain(iir::Action::Ki, value.ki.copysign(value.kp) as _)
.gain(iir::Action::Kp, value.kp as _)
.gain(iir::Action::Kd, value.kd.copysign(value.kp) as _)
.limit(iir::Action::Ki, value.li.copysign(value.kp) as _)
.limit(iir::Action::Kd, value.ld.copysign(value.kp) as _)
.limit(
iir::Action::Ki,
value.li.unwrap_or(f32::INFINITY).copysign(value.kp) as _,
)
.limit(
iir::Action::Kd,
value.ld.unwrap_or(f32::INFINITY).copysign(value.kp) as _,
)
.build()?
.into();
biquad.set_input_offset(-value.setpoint as _);
biquad.set_min(value.min as _);
biquad.set_max(value.max as _);
biquad.set_min(value.min.unwrap_or(f32::NEG_INFINITY) as _);
biquad.set_max(value.max.unwrap_or(f32::INFINITY) as _);
Ok(biquad)
}
}
Expand Down

0 comments on commit e6950e2

Please sign in to comment.