35 typename Intermediate,
37 typename MainError = Control,
38 typename IntermediateError = Intermediate
61 std::unique_ptr<ControlledMotor>
motor,
62 std::unique_ptr<ControlTelemetry> controlTelemetry,
63 std::unique_ptr<IntermediateTelemetry> intermediateTelemetry,
67 pid_{
config, std::move(mainModder), std::move(intermediateModder)},
68 motor_{std::move(
motor)},
69 controlTelemetry_{std::move(controlTelemetry)},
70 intermediateTelemetry_{std::move(intermediateTelemetry)}
94 controlTelemetry_->getData(),
95 intermediateTelemetry_->getData(),
99 motor_->setTargetOutput(kOutput);
110 std::unique_ptr<ControlledMotor> motor_;
111 std::unique_ptr<ControlTelemetry> controlTelemetry_;
112 std::unique_ptr<IntermediateTelemetry> intermediateTelemetry_;
114 void syncMotorToPid()
119 controlTelemetry_->getData(),
120 intermediateTelemetry_->getData()
123 motor_->setTargetOutput(kOutput);
Definition modded_cascade_motor.hpp:41
telemetry::ITelemetry< Control > ControlTelemetry
Definition modded_cascade_motor.hpp:44
void update() override
Definition modded_cascade_motor.hpp:79
void setTarget(const Control &control)
Definition modded_cascade_motor.hpp:103
void update(const Time &delta)
Definition modded_cascade_motor.hpp:89
void initialize() override
Definition modded_cascade_motor.hpp:74
ModdedCascadeMotor(const Config &config, std::unique_ptr< ControlledMotor > motor, std::unique_ptr< ControlTelemetry > controlTelemetry, std::unique_ptr< IntermediateTelemetry > intermediateTelemetry, std::unique_ptr< MainModder > mainModder=std::make_unique< trap::algorithms::NullPidModder< Intermediate > >(), std::unique_ptr< IntermediateModder > intermediateModder=std::make_unique< trap::algorithms::NullPidModder< Output > >())
Definition modded_cascade_motor.hpp:59
IOutputMotor< Output > ControlledMotor
Definition modded_cascade_motor.hpp:43
trap::algorithms::DualModdedPid< Control, Intermediate, Output, Time, MainError, IntermediateError > Pid
Definition modded_cascade_motor.hpp:54
telemetry::ITelemetry< Intermediate > IntermediateTelemetry
Definition modded_cascade_motor.hpp:45
Definition dual_modded_pid.hpp:37
void setTarget(const MainType &mainTarget)
Definition dual_modded_pid.hpp:118
OutputType runController(const MainType &mainCurrent, const IntermediateType &intermediateCurrent)
Definition dual_modded_pid.hpp:71
IPidModder< IntermediateType > MainModder
Definition dual_modded_pid.hpp:41
IPidModder< OutputType > IntermediateModder
Definition dual_modded_pid.hpp:42
Definition ipid_modder.hpp:14
Definition ipid_modder.hpp:28
Definition pwm_info.hpp:4
Definition directionality.hpp:6
rail::motor::IOutputMotor< Output > IOutputMotor
Definition ioutput_motor.hpp:7
rail::system::ISystem ISystem
Definition isystem.hpp:5
rail::telemetry::ITelemetry< DataType > ITelemetry
Definition itelemetry.hpp:8
Definition brushlessutils.cpp:4
Definition dual_modded_pid.hpp:45
units::time::second_t Seconds
Definition units_alias.hpp:11