Bölüm 64 — Kod İskeleti: SwerveSubsystem ve Kinematics

1 dk okuma

Dört SwerveModule nesnesi, SwerveSubsystem içinde bir araya gelir ve WPILib'in SwerveDriveKinematics sınıfı, sürücünün "ileri git + sağa dön" gibi isteklerini her modülün hız/açısına çevirir:

SwerveDriveKinematics kinematics = new SwerveDriveKinematics(
        frontLeftLocation, frontRightLocation,
        backLeftLocation, backRightLocation);

public void drive(double xSpeed, double ySpeed, double rotRate, boolean fieldRelative) {
    ChassisSpeeds speeds = fieldRelative
            ? ChassisSpeeds.fromFieldRelativeSpeeds(xSpeed, ySpeed, rotRate, getPose().getRotation())
            : new ChassisSpeeds(xSpeed, ySpeed, rotRate);

    SwerveModuleState[] states = kinematics.toSwerveModuleStates(speeds);
    SwerveDriveKinematics.desaturateWheelSpeeds(states, MAX_SPEED_MPS);

    frontLeft.setDesiredState(states[0]);
    frontRight.setDesiredState(states[1]);
    backLeft.setDesiredState(states[2]);
    backRight.setDesiredState(states[3]);
}

"Field-relative" (saha eksenine göre) sürüş, swerve'ün en güçlü özelliklerinden biridir: joystick'i hep "ileri" ittiğinizde robot, kendi yönü ne olursa olsun, HEP sahanın aynı yönüne gider. Bunun için Pigeon 2'den gelen açı bilgisi kullanılır.

#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: SwerveSubsystem ve Kinematics