Fang-Robotics-MCB
Fang Robotics Team Codebase
Loading...
Searching...
No Matches
dimensional_smooth_pid.hpp
Go to the documentation of this file.
1#ifndef FANG_ROBOTICS_MCB_TRAP_SMOOTH_PID_HPP
2#define FANG_ROBOTICS_MCB_TRAP_SMOOTH_PID_HPP
3#include "units.h"
7namespace trap
9 namespace algorithms
10 {
49 template<typename RawControlUnit, typename RawErrorUnit, typename RawTimeUnit>
51 {
52 public:
53 using ControlUnit = units::unit_t<RawControlUnit>;
54 using ErrorUnit = units::unit_t<RawErrorUnit>;
55 using TimeUnit = units::unit_t<RawTimeUnit>;
56
57 using PUnit = units::compound_unit<RawControlUnit, units::inverse<RawErrorUnit>>;
58 using IUnit = units::compound_unit<RawControlUnit, units::inverse<RawErrorUnit>, units::inverse<RawTimeUnit>>;
59 using DUnit = units::compound_unit<RawControlUnit, RawTimeUnit, units::inverse<RawErrorUnit>>;
60
61 using ErrorDerivativeUnit = units::compound_unit<RawErrorUnit, units::inverse<RawTimeUnit>>;
62
63 using IntegralAccumulationUnit = units::compound_unit<RawErrorUnit, RawTimeUnit>;
97
98 DimensionalSmoothPid(const Config& config);
108 runController(ErrorUnit error, ErrorDerivativeUnit errorDerivative, TimeUnit deltaTime);
109 private:
110 tap::algorithms::SmoothPid m_smoothPid;
111 };
112 }
113}
114#endif
Definition smooth_pid.hpp:57
Definition dimensional_smooth_pid.hpp:51
runController(ErrorUnit error, ErrorDerivativeUnit errorDerivative, TimeUnit deltaTime)
units::compound_unit< RawErrorUnit, RawTimeUnit > IntegralAccumulationUnit
Definition dimensional_smooth_pid.hpp:63
units::compound_unit< RawErrorUnit, units::inverse< RawTimeUnit > > ErrorDerivativeUnit
Definition dimensional_smooth_pid.hpp:61
units::unit_t< RawErrorUnit > ErrorUnit
Definition dimensional_smooth_pid.hpp:54
units::unit_t< RawControlUnit > ControlUnit
Definition dimensional_smooth_pid.hpp:53
units::unit_t< RawTimeUnit > TimeUnit
Definition dimensional_smooth_pid.hpp:55
units::compound_unit< RawControlUnit, units::inverse< RawErrorUnit >, units::inverse< RawTimeUnit > > IUnit
Definition dimensional_smooth_pid.hpp:58
units::compound_unit< RawControlUnit, RawTimeUnit, units::inverse< RawErrorUnit > > DUnit
Definition dimensional_smooth_pid.hpp:59
units::compound_unit< RawControlUnit, units::inverse< RawErrorUnit > > PUnit
Definition dimensional_smooth_pid.hpp:57
Definition pwm_info.hpp:4
Definition dimensional_smooth_pid.hpp:8
Definition dimensional_smooth_pid.hpp:74
IUnit i
Definition dimensional_smooth_pid.hpp:77
ControlUnit maxOutput
Definition dimensional_smooth_pid.hpp:80
float tRProportionalKalman
Definition dimensional_smooth_pid.hpp:86
PUnit p
Definition dimensional_smooth_pid.hpp:76
float tRDerivativeKalman
Definition dimensional_smooth_pid.hpp:84
ErrorUnit errorDeadzone
Definition dimensional_smooth_pid.hpp:82
IntegralAccumulationUnit maxIntegralAccumulation
Definition dimensional_smooth_pid.hpp:79
Config(double p, double i, double d, double maxIntegralAccumulation, double maxOutput, double errorDerivativeFloor, double errorDeadzone=0.0, double tQDerivativeKalman=1.0, double tRDerivativeKalman=0.0, tRProportionalKalman=1.0)
Definition dimensional_smooth_pid.hpp:91
float tQProportionalKalman
Definition dimensional_smooth_pid.hpp:85
DUnit d
Definition dimensional_smooth_pid.hpp:78
ErrorUnit errorDerivativeFloor
Definition dimensional_smooth_pid.hpp:81
float tQDerivativeKalman
Definition dimensional_smooth_pid.hpp:83