52 Config(std::optional<ramp_rate_t> rampRate,
53 std::optional<units::volt_t> stepVoltage,
54 std::optional<units::second_t> timeout,
73 std::function<void(units::volt_t)>
m_drive;
110 m_log{log ?
std::move(log) : [](
frc::sysid::SysIdRoutineLog* log) {}},
111 m_subsystem{subsystem},
134 : m_drive{
std::move(drive)},
135 m_log{log ?
std::move(log) : [](
frc::sysid::SysIdRoutineLog* log) {}},
136 m_subsystem{subsystem},
137 m_name{m_subsystem->
GetName()} {}
180 : SysIdRoutineLog(mechanism.m_name),
182 m_mechanism(mechanism),
183 m_recordState(config.m_recordState ? config.m_recordState
184 : [this](
frc::sysid::State state) {
185 this->RecordState(state);
194 units::volt_t m_outputVolts{0};
A wrapper around std::unique_ptr<Command> so commands have move-only semantics.
Definition CommandPtr.h:28
A robot subsystem.
Definition Subsystem.h:43
virtual std::string GetName() const
Gets the name of this Subsystem.
Hardware-independent configuration for a SysId test routine.
Definition SysIdRoutine.h:24
std::function< void(frc::sysid::State)> m_recordState
Optional handle for recording test state in a third-party logging solution.
Definition SysIdRoutine.h:37
ramp_rate_t m_rampRate
The voltage ramp rate used for quasistatic test routines.
Definition SysIdRoutine.h:27
units::second_t m_timeout
Safety timeout for the test routine commands.
Definition SysIdRoutine.h:33
units::volt_t m_stepVoltage
The step voltage output used for dynamic test routines.
Definition SysIdRoutine.h:30
Config(std::optional< ramp_rate_t > rampRate, std::optional< units::volt_t > stepVoltage, std::optional< units::second_t > timeout, std::function< void(frc::sysid::State)> recordState)
Create a new configuration for a SysId test routine.
Definition SysIdRoutine.h:52
Definition SysIdRoutine.h:69
std::function< void(frc::sysid::SysIdRoutineLog *)> m_log
Returns measured data (voltages, positions, velocities) of the mechanism motors during test routines.
Definition SysIdRoutine.h:77
std::string m_name
The name of the mechanism being tested.
Definition SysIdRoutine.h:85
Mechanism(std::function< void(units::volt_t)> drive, std::function< void(frc::sysid::SysIdRoutineLog *)> log, frc2::Subsystem *subsystem)
Create a new mechanism specification for a SysId routine.
Definition SysIdRoutine.h:131
std::function< void(units::volt_t)> m_drive
Sends the SysId-specified drive signal to the mechanism motors during test routines.
Definition SysIdRoutine.h:73
frc2::Subsystem * m_subsystem
The subsystem containing the motor(s) that is (or are) being characterized.
Definition SysIdRoutine.h:81
Mechanism(std::function< void(units::volt_t)> drive, std::function< void(frc::sysid::SysIdRoutineLog *)> log, frc2::Subsystem *subsystem, std::string_view name)
Create a new mechanism specification for a SysId routine.
Definition SysIdRoutine.h:106
A SysId characterization routine for a single mechanism.
Definition SysIdRoutine.h:171
SysIdRoutine(Config config, Mechanism mechanism)
Create a new SysId characterization routine.
Definition SysIdRoutine.h:179
frc2::CommandPtr Quasistatic(Direction direction)
frc2::CommandPtr Dynamic(Direction direction)
A timer class.
Definition Timer.h:36
Utility for logging data from a SysId test routine.
Definition SysIdRoutineLog.h:43
constexpr underlying_type value() const noexcept
unit value
Definition base.h:2111
typename units::detail::compound_impl< U, Us... >::type compound_unit
Represents a unit type made up from other units.
Definition base.h:1438
Definition SysIdRoutine.h:18
Direction
Motor direction for a SysId test.
Definition SysIdRoutine.h:143
@ kReverse
Reverse.
Definition SysIdRoutine.h:147
@ kForward
Forward.
Definition SysIdRoutine.h:145
State
Possible state of a SysId routine.
Definition SysIdRoutineLog.h:25
Implement std::hash so that hash_code can be used in STL containers.
Definition PointerIntPair.h:280