[wpilib] Add mechanism specific SetState overloads to physics sims (#5534)

This commit is contained in:
Ryan Blue
2023-08-12 18:21:07 -04:00
committed by GitHub
parent 8121566258
commit a4b7fde767
12 changed files with 112 additions and 6 deletions

View File

@@ -48,6 +48,17 @@ class DCMotorSim : public LinearSystemSim<2, 1, 2> {
units::kilogram_square_meter_t moi,
const std::array<double, 2>& measurementStdDevs = {0.0, 0.0});
using LinearSystemSim::SetState;
/**
* Sets the state of the DC motor.
*
* @param angularPosition The new position
* @param angularVelocity The new velocity
*/
void SetState(units::radian_t angularPosition,
units::radians_per_second_t angularVelocity);
/**
* Returns the DC motor position.
*

View File

@@ -65,6 +65,16 @@ class ElevatorSim : public LinearSystemSim<2, 1, 1> {
bool simulateGravity, units::meter_t startingHeight,
const std::array<double, 1>& measurementStdDevs = {0.0});
using LinearSystemSim::SetState;
/**
* Sets the elevator's state. The new position will be limited between the
* minimum and maximum allowed heights.
* @param position The new position
* @param velocity The new velocity
*/
void SetState(units::meter_t position, units::meters_per_second_t velocity);
/**
* Returns whether the elevator would hit the lower limit.
*

View File

@@ -47,6 +47,15 @@ class FlywheelSim : public LinearSystemSim<1, 1, 1> {
units::kilogram_square_meter_t moi,
const std::array<double, 1>& measurementStdDevs = {0.0});
using LinearSystemSim::SetState;
/**
* Sets the flywheel's state.
*
* @param velocity The new velocity
*/
void SetState(units::radians_per_second_t velocity);
/**
* Returns the flywheel velocity.
*

View File

@@ -64,6 +64,17 @@ class SingleJointedArmSim : public LinearSystemSim<2, 1, 1> {
units::radian_t startingAngle,
const std::array<double, 1>& measurementStdDevs = {0.0});
using LinearSystemSim::SetState;
/**
* Sets the arm's state. The new angle will be limited between the minimum and
* maximum allowed limits.
*
* @param angle The new angle.
* @param velocity The new angular velocity.
*/
void SetState(units::radian_t angle, units::radians_per_second_t velocity);
/**
* Returns whether the arm would hit the lower limit.
*