routine.quasistatic(SysIdRoutine.Direction.kForward),
routine.quasistatic(SysIdRoutine.Direction.kReverse),
routine.dynamic(SysIdRoutine.Direction.kForward),
- routine.dynamic(SysIdRoutine.Direction.kReverse),
- )
+ routine.dynamic(SysIdRoutine.Direction.kReverse)
+ );
}
private void doLog(SysIdRoutineLog log) {
private boolean turretVisionEnabled = false;
private boolean SOTM = true;
- private Translation2d drivepose = drivetrain.getPose().getTranslation();
+ private Translation2d drivepose;
public TurretAutoShoot(Turret turret, Drivetrain drivetrain, TurretVision turretVision) {
this.turret = turret;
this.drivetrain = drivetrain;
this.turretVision = turretVision;
+ drivepose = drivetrain.getPose().getTranslation();
addRequirements(turret);
}
// Calculate turret setpoint (angle relative to robot heading)
turretSetpoint = MathUtil.inputModulus(Units.radiansToDegrees(fieldAngleRad - robotHeading), -180.0, 180.0);
- System.out.println("Aligning the turn to degree angle: " + turretSetpoint);
+ // System.out.println("Aligning the turn to degree angle: " + turretSetpoint);
}
public void adjustWithTurretCam() {
adjustWithTurretCam();
turret.setFieldRelativeTarget(new Rotation2d(Units.degreesToRadians(adjustedSetpoint)), -drivetrain.getAngularRate(2));
} else{
- turret.setFieldRelativeTarget(new Rotation2d(Units.degreesToRadians(turretSetpoint)), -drivetrain.getAngularRate(2));
+ turret.setFieldRelativeTarget(new Rotation2d(Units.degreesToRadians(turretSetpoint)), -drivetrain.getAngularRate(2) * 1.0);
}
}
private static final double MIN_ANGLE_RAD = Units.degreesToRadians(TurretConstants.MIN_ANGLE);
private static final double MAX_ANGLE_RAD = Units.degreesToRadians(TurretConstants.MAX_ANGLE);
- private static double MAX_VEL_RAD_PER_SEC = 4*Units.degreesToRadians(360);
- private static double MAX_ACCEL_RAD_PER_SEC2 = 4*Units.degreesToRadians(720);
+ private static double MAX_VEL_RAD_PER_SEC = 100;
+ private static double MAX_ACCEL_RAD_PER_SEC2 = 500000000;
private static final double VERSA_RATIO = 5.0;
private static final double TURRET_RATIO = 140.0 / 10.0;
/* ---------------- Tuning ---------------- */
- private double kP = 15.0;
+ private double kP = 12.0;
private double kD = 0.0;
/* ---------------- Constructor ---------------- */
public Turret() {
+ SmartDashboard.putNumber("FF Value", 0.1);
+
motor = new TalonFX(IdConstants.TURRET_MOTOR_ID, Constants.RIO_CAN);
motor.setNeutralMode(NeutralModeValue.Brake);
+ motor.setPosition(0);
TalonFXConfiguration cfg = new TalonFXConfiguration();
cfg.MotorOutput.Inverted = InvertedValue.Clockwise_Positive;
/* ---------------- Periodic ---------------- */
+ double FFValue;
@Override
public void periodic() {
updateInputs();
double motorRot =
Units.radiansToRotations(setpoint.position) * GEAR_RATIO;
- motor.setControl(mmRequest.withPosition(motorRot));
+ FFValue = SmartDashboard.getNumber("FF Value", FFValue);
+ motor.setControl(mmRequest.withPosition(motorRot).withFeedForward(FFValue));
ligament.setAngle(getPositionDeg());
+ FFValue = SmartDashboard.getNumber("FF Value", FFValue);
+
SmartDashboard.putNumber("Turret Pos Deg", getPositionDeg());
SmartDashboard.putNumber("Turret Goal Deg", Units.radiansToDegrees(best));
}