[wpimath] Replace Speeds with Velocities (#8479)

I left "free speed" alone since that's the technical term for it. In
general, velocity is a vector quantity, and speed is a magnitude (i.e.,
a strictly positive value).

This PR also replaces the speed verbiage in MotorController with duty
cycle.

Fixes #8423.
This commit is contained in:
Tyler Veness
2026-03-06 14:19:15 -08:00
committed by GitHub
parent 1e39f39128
commit 9bd9656871
594 changed files with 8073 additions and 7875 deletions

View File

@@ -46,11 +46,11 @@ class ShooterConstants:
# On a real robot the feedforward constants should be empirically determined; these are
# reasonable guesses.
kS = 0.05 # V
# Should have value 12V at free speed
# Should have value 12V at free velocity
kV = 12.0 / kShooterFreeRPS # V/(rot/s)
kA = 0.0 # V/(rot/s^2)
kFeederSpeed = 0.5
kFeederVelocity = 0.5
class IntakeConstants:
@@ -66,7 +66,7 @@ class StorageConstants:
class AutoConstants:
kTimeout = 3
kDriveDistance = 2.0 # m
kDriveSpeed = 0.5
kDriveVelocity = 0.5
class OIConstants:

View File

@@ -77,23 +77,23 @@ class Shooter(Subsystem):
self.shooter_encoder.getRate()
)
def runShooter(self, shooterSpeed: Callable[[], float]) -> Command:
def runShooter(self, shooterVelocity: Callable[[], float]) -> Command:
"""Returns a command that runs the shooter at a specifc velocity.
:param shooterSpeed: The commanded shooter wheel speed in rotations per second
:param shooterVelocity: The commanded shooter wheel velocity in rotations per second
"""
# Run shooter wheel at the desired speed using a PID controller and feedforward.
# Run shooter wheel at the desired velocity using a PID controller and feedforward.
def _run_shooter() -> None:
target_speed = shooterSpeed()
target_speed_radians = wpimath.units.rotationsToRadians(target_speed)
target_velocity = shooterVelocity()
target_velocity_radians = wpimath.units.rotationsToRadians(target_velocity)
self.shooter_motor.setVoltage(
self.shooter_feedback.calculate(
self.shooter_encoder.getRate(), target_speed
self.shooter_encoder.getRate(), target_velocity
)
+ self.shooter_feedforward.calculate(target_speed_radians)
+ self.shooter_feedforward.calculate(target_velocity_radians)
)
self.feeder_motor.set(ShooterConstants.kFeederSpeed)
self.feeder_motor.set(ShooterConstants.kFeederVelocity)
def _stop_motors(interrupted: bool) -> None:
self.shooter_motor.stopMotor()