Fix up templated TrapezoidProfile classes (#2151)

* Fix two-phase name lookup bug

* Fix param in ProfiledPIDCommand constructor overload

* Fix ProfiledPIDCommand/Controller
This commit is contained in:
Oblarg
2019-12-04 23:40:37 -05:00
committed by Peter Johnson
parent 8c2ff94d70
commit f7a93713fa
3 changed files with 15 additions and 14 deletions

View File

@@ -47,7 +47,7 @@ class ProfiledPIDCommand
* @param requirements the subsystems required by this command
*/
ProfiledPIDCommand(frc::ProfiledPIDController<Distance> controller,
std::function<units::unit_t<Distance>> measurementSource,
std::function<Distance_t()> measurementSource,
std::function<State()> goalSource,
std::function<void(double, State)> useOutput,
std::initializer_list<Subsystem*> requirements = {})
@@ -55,7 +55,7 @@ class ProfiledPIDCommand
m_measurement{std::move(measurementSource)},
m_goal{std::move(goalSource)},
m_useOutput{std::move(useOutput)} {
AddRequirements(requirements);
this->AddRequirements(requirements);
}
/**
@@ -69,13 +69,13 @@ class ProfiledPIDCommand
* @param requirements the subsystems required by this command
*/
ProfiledPIDCommand(frc::ProfiledPIDController<Distance> controller,
std::function<units::unit_t<Distance>> measurementSource,
std::function<units::unit_t<Distance>> goalSource,
std::function<Distance_t()> measurementSource,
std::function<Distance_t()> goalSource,
std::function<void(double, State)> useOutput,
std::initializer_list<Subsystem*> requirements)
: ProfiledPIDCommand(controller, measurementSource,
[&goalSource]() {
return State{goalSource(), 0_mps};
return State{goalSource(), Velocity_t{0}};
},
useOutput, requirements) {}
@@ -90,8 +90,8 @@ class ProfiledPIDCommand
* @param requirements the subsystems required by this command
*/
ProfiledPIDCommand(frc::ProfiledPIDController<Distance> controller,
std::function<units::unit_t<Distance>> measurementSource,
State goal, std::function<void(double, State)> useOutput,
std::function<Distance_t()> measurementSource, State goal,
std::function<void(double, State)> useOutput,
std::initializer_list<Subsystem*> requirements)
: ProfiledPIDCommand(controller, measurementSource,
[goal] { return goal; }, useOutput, requirements) {}
@@ -107,8 +107,8 @@ class ProfiledPIDCommand
* @param requirements the subsystems required by this command
*/
ProfiledPIDCommand(frc::ProfiledPIDController<Distance> controller,
std::function<units::unit_t<Distance>> measurementSource,
units::meter_t goal,
std::function<Distance_t()> measurementSource,
Distance_t goal,
std::function<void(double, State)> useOutput,
std::initializer_list<Subsystem*> requirements)
: ProfiledPIDCommand(controller, measurementSource,
@@ -138,7 +138,7 @@ class ProfiledPIDCommand
protected:
frc::ProfiledPIDController<Distance> m_controller;
std::function<Distance_t> m_measurement;
std::function<Distance_t()> m_measurement;
std::function<State()> m_goal;
std::function<void(double, State)> m_useOutput;
};

View File

@@ -44,7 +44,7 @@ class TrapezoidProfileCommand
std::function<void(State)> output,
std::initializer_list<Subsystem*> requirements)
: m_profile(profile), m_output(output) {
AddRequirements(requirements);
this->AddRequirements(requirements);
}
void Initialize() override {