2. Adım : Hesaplanan Sabitleri Girme

Not

C++ ‘da, ileri besleme sabitlerinin doğru birim türü olarak girilmesi önemlidir. C++ birimleri hakkında daha fazla bilgi için bakınız: C ++ Ünite Kitaplığı.

Artık karakterizasyon sabitlerimize sahip olduğumuza göre, bunları kodumuza yerleştirmenin zamanı geldi. Bunun için önerilen yer standard command-based komut-tabanlı proje yapısı structure ın Constants dosyasıdır.

RamseteCommand Örnek Projesindeki sabitler dosyasının ilgili kısımları (Java <https://github.com/wpilibsuite/allwpilib/tree/main/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/ramsetecommand> __, C ++ <https://github.com/wpilibsuite/allwpilib/tree/main/wpilibcExamples/src/main/cpp/examples/RamseteCommand> __) aşağıda görülebilir.

Feedforward / İleri Bildirim Kazançları

Öncelikle, karakterizasyon aracından elde ettiğimiz ileri besleme ve geri bildirim kazanımlarını girmeliyiz.

Not

Feedforward ve feedback kazançları genel olarak robotlar arasında transfer edilemez. Bu eğitimden elde edilen kazançları kendi robotunuz için kullanmayın.

44
45
46
47
48
49
50
51
52
53
54
    // These are example values only - DO NOT USE THESE FOR YOUR OWN ROBOT!
    // These characterization values MUST be determined either experimentally or theoretically
    // for *your* robot's drive.
    // The Robot Characterization Toolsuite provides a convenient tool for obtaining these
    // values for your robot.
    public static final double ksVolts = 0.22;
    public static final double kvVoltSecondsPerMeter = 1.98;
    public static final double kaVoltSecondsSquaredPerMeter = 0.2;

    // Example value only - as above, this must be tuned for your drive!
    public static final double kPDriveVel = 8.5;

DifferentialDriveKinematics

Ek olarak, şasi hızlarından tekerlek hızlarına dönüştürmek için robotun iz genişliğini (yani tekerlekler arasındaki yatay mesafe) kullanmamıza izin veren DifferentialDriveKinematics sınıfının bir örneğini oluşturmalıyız. Diğer yerlerde olduğu gibi, birimlerimizi metre cinsinden tutuyoruz.

32
33
34
    public static final double kTrackwidthMeters = 0.69;
    public static final DifferentialDriveKinematics kDriveKinematics =
        new DifferentialDriveKinematics(kTrackwidthMeters);

Maksimum Yörünge Hızı / İvme

Ayrıca yol izleme sırasında robot için nominal bir maksimum ivme ve maksimum hıza da karar vermeliyiz. Maksimum hız değeri, robotun nominal serbest hızının biraz altında ayarlanmalıdır. Daha sonra DifferentialDriveVoltageConstraint kullanımı nedeniyle, maksimum hızlanma değeri çok önemli değildir.

62
63
    public static final double kMaxSpeedMetersPerSecond = 3;
    public static final double kMaxAccelerationMetersPerSecondSquared = 3;

Ramsete Parametreleri

Son olarak, RAMSETE denetleyicisi için bir çift parametre eklemeliyiz. Aşağıda gösterilen değerler, mesafelerin metre cinsinden doğru bir şekilde ölçülmüş olması koşuluyla çoğu robot için iyi çalışmalıdır - bu değerlerin ayarlanması hakkında daha fazla bilgi için (gerekliyse), bakınız Ramsete Denetleyici Nesnesinin-Object Oluşturulması.

65
66
67
    // Reasonable baseline values for a RAMSETE follower in units of meters and seconds
    public static final double kRamseteB = 2;
    public static final double kRamseteZeta = 0.7;