From 86137c49f57126ced756f5496be4a0c82b7f2e4b Mon Sep 17 00:00:00 2001 From: Dustin Spicuzza Date: Tue, 31 Dec 2024 17:30:16 -0500 Subject: [PATCH] [wpilibc] DCMotorSim: Add setAngle/setAngularVelocity (parity with Java) (#7613) --- .../src/main/native/cpp/simulation/DCMotorSim.cpp | 9 +++++++++ .../native/include/frc/simulation/DCMotorSim.h | 14 ++++++++++++++ 2 files changed, 23 insertions(+) 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. *