Bölüm 63 — Kod İskeleti: SwerveModule Sınıfı

1 dk okuma

Artık donanım hazır ve kalibre edilmiş durumda. Şimdi bunu koda döktüğümüz SwerveModule sınıfına bakalım — bu, daha önce sizin için hazırladığımız gerçek robot projesinden alınmıştır.

public class SwerveModule {
    private final TalonFX driveMotor;
    private final TalonFX steerMotor;
    private final CANcoder encoder;

    public SwerveModule(String name, int driveId, int steerId,
            int encoderId, double encoderOffsetRad) {
        driveMotor = new TalonFX(driveId, SwerveConstants.CAN_BUS_NAME);
        steerMotor = new TalonFX(steerId, SwerveConstants.CAN_BUS_NAME);
        encoder = new CANcoder(encoderId, SwerveConstants.CAN_BUS_NAME);
        configureEncoder(encoderOffsetRad);
        configureDriveMotor();
        configureSteerMotor();
    }

    public void setDesiredState(SwerveModuleState desiredState) {
        Rotation2d currentAngle = getAngle();
        desiredState.optimize(currentAngle); // en kısa dönüş yönünü seçer
        double velocityRotPerSec = desiredState.speedMetersPerSecond
                / SwerveConstants.WHEEL_CIRCUMFERENCE_METERS;
        driveMotor.setControl(driveControl.withVelocity(velocityRotPerSec));
        steerMotor.setControl(steerControl.withPosition(desiredState.angle.getRotations()));
    }
}

optimize() NE İŞE YARAR?

desiredState.optimize() satırı çok kullanışlı bir detaydır: modül 170° dönmesi gerekiyormuş gibi görünse bile, tekerleği ters yönde döndürüp sadece 10° dönerek AYNI sonucu elde edebileceğini fark eder ve daha hızlı tepki verir.

#Alfa Robotics 8084#8084#Alfa Robot#Atatürk Mesleki ve Teknik Anadolu Lisesi#FRC El Kitabı#Swerve Sürüş Sistemi: Sıfırdan Kurulum#Kod İskeleti: SwerveModule Sınıfı