|
YAMS
Yet Another Mechanism System
|
#include <SimSupplier.hpp>

Public Member Functions | |
| virtual | ~SimSupplier ()=default |
| virtual void | UpdateSim ()=0 |
| virtual bool | GetUpdatedSim ()=0 |
| virtual void | FeedUpdateSim ()=0 |
| virtual void | StarveUpdateSim ()=0 |
| virtual bool | IsInputFed ()=0 |
| virtual void | FeedInput ()=0 |
| virtual void | StarveInput ()=0 |
| virtual void | SetMechanismStatorDutyCycle (double dutyCycle)=0 |
| virtual wpi::units::volt_t | GetMechanismSupplyVoltage ()=0 |
| virtual wpi::units::volt_t | GetMechanismStatorVoltage ()=0 |
| virtual void | SetMechanismStatorVoltage (wpi::units::volt_t volts)=0 |
| virtual wpi::units::turn_t | GetMechanismPosition ()=0 |
| virtual void | SetMechanismPosition (wpi::units::turn_t angle)=0 |
| virtual wpi::units::turn_t | GetRotorPosition ()=0 |
| virtual wpi::units::turns_per_second_t | GetMechanismVelocity ()=0 |
| virtual void | SetMechanismVelocity (wpi::units::turns_per_second_t velocity)=0 |
| virtual wpi::units::turns_per_second_t | GetRotorVelocity ()=0 |
| virtual wpi::units::turns_per_second_squared_t | GetMechanismAcceleration ()=0 |
| virtual wpi::units::turns_per_second_squared_t | GetRotorAcceleration ()=0 |
| virtual void | SetRotorPosition (wpi::units::turn_t angle)=0 |
| virtual void | SetRotorVelocity (wpi::units::turns_per_second_t velocity)=0 |
| virtual wpi::units::ampere_t | GetStatorCurrent ()=0 |
| virtual wpi::units::ampere_t | GetSupplyCurrent ()=0 |
Abstract interface for simulation state providers.
Implementors feed simulated mechanism and rotor positions/velocities back into a SmartMotorController during simulation iterations.
|
virtualdefault |
|
pure virtual |
Mark the input as supplied directly for this loop.
Implemented in yams::motorcontrollers::simulation::ArmSimSupplier, yams::motorcontrollers::simulation::DCMotorSimSupplier, and yams::motorcontrollers::simulation::ElevatorSimSupplier.
|
pure virtual |
Mark the simulation as stepped for this loop.
Implemented in yams::motorcontrollers::simulation::ArmSimSupplier, yams::motorcontrollers::simulation::DCMotorSimSupplier, and yams::motorcontrollers::simulation::ElevatorSimSupplier.
|
pure virtual |
Get the simulated mechanism angular acceleration.
Implemented in yams::motorcontrollers::simulation::ArmSimSupplier, yams::motorcontrollers::simulation::DCMotorSimSupplier, and yams::motorcontrollers::simulation::ElevatorSimSupplier.
|
pure virtual |
Get the simulated mechanism position.
Implemented in yams::motorcontrollers::simulation::ArmSimSupplier, yams::motorcontrollers::simulation::DCMotorSimSupplier, and yams::motorcontrollers::simulation::ElevatorSimSupplier.
|
pure virtual |
Get the voltage applied to the simulated motor.
Implemented in yams::motorcontrollers::simulation::ArmSimSupplier, yams::motorcontrollers::simulation::DCMotorSimSupplier, and yams::motorcontrollers::simulation::ElevatorSimSupplier.
|
pure virtual |
Get the supply voltage available to the simulated motor controller (bus voltage).
Implemented in yams::motorcontrollers::simulation::ArmSimSupplier, yams::motorcontrollers::simulation::DCMotorSimSupplier, and yams::motorcontrollers::simulation::ElevatorSimSupplier.
|
pure virtual |
Get the simulated mechanism velocity.
Implemented in yams::motorcontrollers::simulation::ArmSimSupplier, yams::motorcontrollers::simulation::DCMotorSimSupplier, and yams::motorcontrollers::simulation::ElevatorSimSupplier.
|
pure virtual |
Get the simulated rotor angular acceleration.
Implemented in yams::motorcontrollers::simulation::ArmSimSupplier, yams::motorcontrollers::simulation::DCMotorSimSupplier, and yams::motorcontrollers::simulation::ElevatorSimSupplier.
|
pure virtual |
Get the simulated rotor position.
Implemented in yams::motorcontrollers::simulation::ArmSimSupplier, yams::motorcontrollers::simulation::DCMotorSimSupplier, and yams::motorcontrollers::simulation::ElevatorSimSupplier.
|
pure virtual |
Get the simulated rotor velocity.
Implemented in yams::motorcontrollers::simulation::ArmSimSupplier, yams::motorcontrollers::simulation::DCMotorSimSupplier, and yams::motorcontrollers::simulation::ElevatorSimSupplier.
|
pure virtual |
Get the simulated stator (motor) current.
Implemented in yams::motorcontrollers::simulation::ArmSimSupplier, yams::motorcontrollers::simulation::DCMotorSimSupplier, and yams::motorcontrollers::simulation::ElevatorSimSupplier.
|
pure virtual |
Get the simulated supply (battery) current: duty cycle times stator current, filtered by a 0.1 s single-pole IIR filter.
Implemented in yams::motorcontrollers::simulation::ArmSimSupplier, yams::motorcontrollers::simulation::DCMotorSimSupplier, and yams::motorcontrollers::simulation::ElevatorSimSupplier.
|
pure virtual |
Whether the simulation has already been stepped this loop.
Implemented in yams::motorcontrollers::simulation::ArmSimSupplier, yams::motorcontrollers::simulation::DCMotorSimSupplier, and yams::motorcontrollers::simulation::ElevatorSimSupplier.
|
pure virtual |
Whether an input voltage was supplied directly this loop (e.g. from a hardware sim state).
Implemented in yams::motorcontrollers::simulation::ArmSimSupplier, yams::motorcontrollers::simulation::DCMotorSimSupplier, and yams::motorcontrollers::simulation::ElevatorSimSupplier.
|
pure virtual |
Set the simulated mechanism position.
| angle | Mechanism position to inject. |
Implemented in yams::motorcontrollers::simulation::ArmSimSupplier, yams::motorcontrollers::simulation::DCMotorSimSupplier, and yams::motorcontrollers::simulation::ElevatorSimSupplier.
|
pure virtual |
Apply a duty cycle of the supply voltage as the motor input (feeds the input).
| dutyCycle | Duty cycle in [-1, 1]. |
Implemented in yams::motorcontrollers::simulation::ArmSimSupplier, yams::motorcontrollers::simulation::DCMotorSimSupplier, and yams::motorcontrollers::simulation::ElevatorSimSupplier.
|
pure virtual |
Set the motor input voltage directly, e.g. from a hardware sim state (feeds the input).
| volts | Voltage to apply. |
Implemented in yams::motorcontrollers::simulation::ArmSimSupplier, yams::motorcontrollers::simulation::DCMotorSimSupplier, and yams::motorcontrollers::simulation::ElevatorSimSupplier.
|
pure virtual |
Set the simulated mechanism velocity.
| velocity | Mechanism velocity to inject. |
Implemented in yams::motorcontrollers::simulation::ArmSimSupplier, yams::motorcontrollers::simulation::DCMotorSimSupplier, and yams::motorcontrollers::simulation::ElevatorSimSupplier.
|
pure virtual |
Set the simulated rotor position.
| angle | Rotor position to inject. |
Implemented in yams::motorcontrollers::simulation::ArmSimSupplier, yams::motorcontrollers::simulation::DCMotorSimSupplier, and yams::motorcontrollers::simulation::ElevatorSimSupplier.
|
pure virtual |
Set the simulated rotor velocity.
| velocity | Rotor velocity to inject. |
Implemented in yams::motorcontrollers::simulation::ArmSimSupplier, yams::motorcontrollers::simulation::DCMotorSimSupplier, and yams::motorcontrollers::simulation::ElevatorSimSupplier.
|
pure virtual |
Clear the input-fed flag so UpdateSim() falls back to the duty-cycle supplier.
Implemented in yams::motorcontrollers::simulation::ArmSimSupplier, yams::motorcontrollers::simulation::DCMotorSimSupplier, and yams::motorcontrollers::simulation::ElevatorSimSupplier.
|
pure virtual |
Clear the stepped flag so the next UpdateSim() steps the physics again.
Implemented in yams::motorcontrollers::simulation::ArmSimSupplier, yams::motorcontrollers::simulation::DCMotorSimSupplier, and yams::motorcontrollers::simulation::ElevatorSimSupplier.
|
pure virtual |
Advance the simulation by one loop iteration.
When the input has not been fed this loop (see FeedInput()), the motor duty cycle times the supply voltage is applied as the input and the battery voltage is updated. The physics are only stepped if the simulation has not already been updated this loop (see GetUpdatedSim()); stepping marks it updated, so a mechanism and its motor controller calling UpdateSim() in the same loop step the physics once.
Implemented in yams::motorcontrollers::simulation::ArmSimSupplier, yams::motorcontrollers::simulation::DCMotorSimSupplier, and yams::motorcontrollers::simulation::ElevatorSimSupplier.