Importation d’un fichier JSON PathWeaver

La classe TrajectoryUtil peut être utilisée pour importer un fichier JSON PathWeaver dans le code robot et permettre à ce dernier de suivre la trajectoire générée. Dans cet article, nous allons voir comment cette importation s’effectue. Veuillez consulter la section Didacticiel sur la pratique des trajectoires pour plus d’informations sur le suivi de trajectoires.

Les méthodes statiques fromPathweaverJson (Java) / FromPathweaverJson (C++) de la classe TrajectoryUtil peuvent être utilisées pour créer une trajectoire à partir d’un fichier JSON importé de PathWeaver et intégré dans le code du robot.

Important

Pour être compatible avec la vue Field2d dans l’interface graphique du simulateur, les coordonnées du JSON exporté ont changé. Auparavant (avant 2021), la plage de la coordonnée y était de -27 pieds à 0 pieds alors que maintenant, la plage de la coordonnée y est de 0 pieds à 27 pieds (0 étant au bas de l’écran et 27 pieds étant en haut). Cela ne devrait pas affecter les équipes qui ont correctement réinitialiser leur odométrie à la pose de départ de la trajectoire avant de suivre la trajectoire.

Note

PathWeaver place les fichiers JSON dans src/main/deploy/paths qui seront automatiquement placés sur le système de fichiers du roboRIO dans /home/lvuser/deploy/paths et accessibles à l’aide de getDeployDirectory comme indiqué ci-dessous.

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

@Override
public void robotInit() {
   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;

void Robot::RobotInit() {
   fs::path deployDirectory = frc::filesystem::GetDeployDirectory();
   deployDirectory = deployDirectory / "paths" / "YourPath.wpilib.json";
   trajectory = frc::TrajectoryUtil::FromPathweaverJson(deployDirectory.string());
}

Dans les exemples ci-dessus, YourPath doit être remplacé par le nom de votre chemin.

Avertissement

Chargement d’une trajectoire PathWeaver JSON à partir d’un fichier en Java peut prendre plus d’une boucle d’itération, il est donc fortement recommandé que le robot charge ces trajectoires au démarrage.