PathWeaver JSON İçe Aktarımı

TrajectoryUtil sınıfı, robot kodunun takip etmesi adına PathWeaver JSON’ı kodunun içine aktarmak için kullanılabilmektedir. Bu yazı yörüngenin içe aktarımının üzerinden geçecektir. Lütfen yörüngenin takibine dair daha fazla bilgi için uçtan uca yörünge rehberini inceleyiniz.

TrajectoryUtil içerisindeki fromPathweaverJson (Java) / FromPathweaverJson (C++) statik metodları, roboRIO dosya sisteminde depolanan bir JSON dosyasından bir yörünge oluşturmak için kulanılabilmektedir.

Önemli

Simulatör kullancı arayüzündeki Field2d görünümü ile uyumlu olabilmesi için dışa aktarılan JSON’ın koordinatları değiştirilmiştir. Önceden (2021 yılı öncesinde), y koordinatınon aralığı -27 fit, yaklaşık -8,2 metre, ile 0 fit, 0 metre arasındayken artık y koordinatının aralığı (0, ekranın en altı; 27 fit, 8,2 metre ise ekranın en yukarısı olacak şekilde) 0 fit, 0 metre, ile 27 fit, yaklaşık 8,2 metre, arasındadır. Bu değişiklik, doğru bir şekilde yol takibi öncesi odometrilerini yörüngenin başlangıç pozuna sıfırlayan takımları etkilememelidir.

Not

PathWeaver, JSON dosyalarını /home/lvuser/deploy/paths içindeki roboRIO dosya sistemine kendiliğinden olarak yerleştirilecek src/main/deploy/paths konumuna yerleştirmekte ve aşağıda gösterildiği gibi bu konuma getDeployDirectory kullanılarak erişilebilmektedir.

String trajectoryJSON = "paths/YourPath.wpilib.json";
Trajectory trajectory = new Trajectory();

public Robot() {
   try {
      Path trajectoryPath = Filesystem.getDeployDirectory().toPath().resolve(trajectoryJSON);
      trajectory = TrajectoryUtil.fromPathweaverJson(trajectoryPath);
   } catch (IOException ex) {
      DriverStation.reportError("Unable to open trajectory: " + trajectoryJSON, ex.getStackTrace());
   }
}
#include <frc/Filesystem.h>
#include <frc/trajectory/TrajectoryUtil.h>
#include <wpi/fs.h>
frc::Trajectory trajectory;
Robot::Robot()) {
   fs::path deployDirectory = frc::filesystem::GetDeployDirectory();
   deployDirectory = deployDirectory / "paths" / "YourPath.wpilib.json";
   trajectory = frc::TrajectoryUtil::FromPathweaverJson(deployDirectory.string());
}

Yukarıdaki örneklerdeki YourPath kısmı yolunuzun adıyla değiştirilmelidir.

Uyarı

Java’da bir dosya üzerinden PathWeaver JSON yüklemek birden fazla yürütme dönüsü gerektirebilmektedir, bu yüzden robotun bu yolları başlatıldığı zaman yüklemesi önerilmektedir.