Importar un archivo JSON de PathWeaver

La clase TrajectoryUtil puede ser usada para importar un PathWeaver JSON en el código del robot para seguirlo. Este artículo repasará la importación de la trayectoria. Por favor, visite end-to-end trajectory tutorial para más información sobre cómo seguir la trayectoria.

Los métodos estáticos fromPathweaverJson (Java) / FromPathweaverJson (C++) en TrajectoryUtil pueden utilizarse para crear una trayectoria a partir de un archivo JSON almacenado en el sistema de archivos de la roboRIO.

Importante

Para ser compatible con la vista Field2d del simulador GUI, las coordenadas del JSON han cambiado. Anteriormente (antes del 2021), el rango de la coordenada y era de -27 a 0 pies, mientras que ahora el rango de la coordenada y es de 0 a 27 pies (con 0 estando en la parte inferior de la pantalla y 27 pies en la parte superior). Esto no debería afectar a los equipos que están correctamente restableciendo su odometría a la posición inicial de la trayectoria antes de seguirla.

Nota

PathWeaver coloca los archivos JSON en src/main/deploy/paths que automáticamente se colocarán en el sistema de archivos de la roboRIO en /home/lvuser/deploy/paths y se podrá acceder a esto usando getDeployDirectory como se muestra a continuación.

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());
}

En los ejemplos de arriba, YourPath debe de ser reemplazado por el nombre de su path/camino.

Advertencia

Cargar un JSON de PathWeaver desde un archivo en Java puede llevar más de una iteración de bucle, por lo que se recomienda encarecidamente que el robot cargue estas rutas al iniciarse.