diff --git a/wpilibc/src/main/native/cpp/simulation/DCMotorSim.cpp b/wpilibc/src/main/native/cpp/simulation/DCMotorSim.cpp index 98a02126f9..9e10e16fe8 100644 --- a/wpilibc/src/main/native/cpp/simulation/DCMotorSim.cpp +++ b/wpilibc/src/main/native/cpp/simulation/DCMotorSim.cpp @@ -42,6 +42,15 @@ void DCMotorSim::SetState(units::radian_t angularPosition, SetState(Vectord<2>{angularPosition, angularVelocity}); } +void DCMotorSim::SetAngle(units::radian_t angularPosition) { + SetState(angularPosition, GetAngularVelocity()); +} + +void DCMotorSim::SetAngularVelocity( + units::radians_per_second_t angularVelocity) { + SetState(GetAngularPosition(), angularVelocity); +} + units::radian_t DCMotorSim::GetAngularPosition() const { return units::radian_t{GetOutput(0)}; } diff --git a/wpilibc/src/main/native/include/frc/simulation/DCMotorSim.h b/wpilibc/src/main/native/include/frc/simulation/DCMotorSim.h index c5c761845a..8f14d680bc 100644 --- a/wpilibc/src/main/native/include/frc/simulation/DCMotorSim.h +++ b/wpilibc/src/main/native/include/frc/simulation/DCMotorSim.h @@ -45,6 +45,20 @@ class DCMotorSim : public LinearSystemSim<2, 1, 2> { void SetState(units::radian_t angularPosition, units::radians_per_second_t angularVelocity); + /** + * Sets the DC motor's angular position. + * + * @param angularPosition The new position in radians. + */ + void SetAngle(units::radian_t angularPosition); + + /** + * Sets the DC motor's angular velocity. + * + * @param angularVelocity The new velocity in radians per second. + */ + void SetAngularVelocity(units::radians_per_second_t angularVelocity); + /** * Returns the DC motor position. *