rust_servo/pid/
pid_controller.rs1use std::fmt::Display;
2
3use num_traits::Num;
4
5use crate::servo::{Servo, ServoInput};
6
7pub struct PidController {
8 timestamp: f64,
9 set_point: f64,
10 last_error_term: Option<f64>,
11 proportional: f64,
12 integral: f64,
13 derivative: f64,
14}
15
16impl PidController {
17 pub fn new(set_point: f64) -> Self {
18 Self {
19 timestamp: 0.0,
20 set_point: set_point,
21 last_error_term: None,
22 proportional: 0.0,
23 integral: 0.0,
24 derivative: 0.0,
25 }
26 }
27}
28
29impl Servo for PidController {
30 fn read<T: Num>(
31 &mut self,
32 servo_input: &ServoInput<T>,
33 ) -> Result<crate::servo::ControlValue, crate::servo::ReadInputError> {
34 todo!();
35 }
36}
37
38impl Display for PidController {
39 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
40 write!(f, "{}", std::any::type_name::<Self>())
41 }
42}