config.Slot0.kD = Units.radiansToRotations(0.00 * 12); // Derivative term (used to dampen oscillations)
MotionMagicConfigs motionMagicConfigs = config.MotionMagic;
- motionMagicConfigs.MotionMagicCruiseVelocity = Units.degreesToRotations(90) * gearRatio; // max velocity * gear ratio
- motionMagicConfigs.MotionMagicAcceleration = Units.degreesToRotations(90) * gearRatio; // max Acceleration * gear ratio
+ motionMagicConfigs.MotionMagicCruiseVelocity = Units.radiansToRotations(TurretConstants.MAX_VELOCITY / TurretConstants.TURRET_RADIUS) * gearRatio; // max velocity * gear ratio
+ motionMagicConfigs.MotionMagicCruiseVelocity = Units.radiansToRotations(TurretConstants.MAX_ACCELERATION / TurretConstants.TURRET_RADIUS) * gearRatio; // max Acceleration * gear ratio
config.MotorOutput.Inverted = InvertedValue.CounterClockwise_Positive;
motor.getConfigurator().apply(config);
double motorTargetRotations = (setpoint / 360.0) * gearRatio;
//Tune this with rotating robot
- double dV = 0;
+ double dV = TurretConstants.ROTATIONAL_VELOCITY_CONSTANT;
motor.setControl(voltageRequest.withPosition(motorTargetRotations).withFeedForward(dV * robotRotVel));
}
}
package frc.robot.subsystems.turret;
+import edu.wpi.first.math.util.Units;
+
public class TurretConstants {
- public static double MAX_ANGLE = 150;
- public static double MIN_ANGLE = -150;
+ public static double MAX_ANGLE = 180;
+ public static double MIN_ANGLE = -180;
+
+ public static double MAX_VELOCITY = 0.1; // m/s
+ public static double MAX_ACCELERATION = 5; // m/s^2
+
+ public static double TURRET_WIDTH = Units.feetToMeters(1.0);
+ public static double TURRET_RADIUS = TURRET_WIDTH / 2;
+
+ public static double ROTATIONAL_VELOCITY_CONSTANT = 0;
}