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ı