diff --git a/photon-core/src/main/java/org/photonvision/vision/target/TargetModel.java b/photon-core/src/main/java/org/photonvision/vision/target/TargetModel.java index 1cd357938..6d1e6985e 100644 --- a/photon-core/src/main/java/org/photonvision/vision/target/TargetModel.java +++ b/photon-core/src/main/java/org/photonvision/vision/target/TargetModel.java @@ -16,6 +16,7 @@ */ package org.photonvision.vision.target; +import com.fasterxml.jackson.annotation.JsonAlias; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonProperty; @@ -108,6 +109,7 @@ public enum TargetModel implements Releasable { -Units.inchesToMeters(9.5) / 2)), 0), // 2023 AprilTag, with 6 inch marker width (inner black square). + @JsonAlias({"k6in_16h5"}) kAprilTag6in_16h5( // Corners of the tag's inner black square (excluding white border) List.of( @@ -117,6 +119,7 @@ public enum TargetModel implements Releasable { new Point3(Units.inchesToMeters(3), -Units.inchesToMeters(3), 0)), Units.inchesToMeters(3 * 2)), // 2024 AprilTag, with 6.5 inch marker width (inner black square). + @JsonAlias({"k6p5in_36h11", "k200mmAprilTag", "kAruco6p5in_36h11"}) kAprilTag6p5in_36h11( // Corners of the tag's inner black square (excluding white border) List.of( diff --git a/photon-core/src/test/java/org/photonvision/common/configuration/ConfigTest.java b/photon-core/src/test/java/org/photonvision/common/configuration/ConfigTest.java index beaae0e4d..ad6db6fd1 100644 --- a/photon-core/src/test/java/org/photonvision/common/configuration/ConfigTest.java +++ b/photon-core/src/test/java/org/photonvision/common/configuration/ConfigTest.java @@ -31,6 +31,7 @@ import org.photonvision.common.logging.Logger; import org.photonvision.common.util.TestUtils; import org.photonvision.common.util.file.JacksonUtils; import org.photonvision.vision.pipeline.AprilTagPipelineSettings; +import org.photonvision.vision.pipeline.CVPipelineSettings; import org.photonvision.vision.pipeline.ColoredShapePipelineSettings; import org.photonvision.vision.pipeline.ReflectivePipelineSettings; import org.photonvision.vision.target.TargetModel; @@ -132,13 +133,34 @@ public class ConfigTest { public void testJacksonHandlesOldVersions() throws IOException { var str = "{\"baseName\":\"aaaaaa\",\"uniqueName\":\"aaaaaa\",\"nickname\":\"aaaaaa\",\"FOV\":70.0,\"path\":\"dev/vid\",\"cameraType\":\"UsbCamera\",\"currentPipelineIndex\":0,\"camPitch\":{\"radians\":0.0},\"calibrations\":[], \"cameraLEDs\":[]}"; - var writer = new FileWriter("test.json"); + File tempFile = File.createTempFile("test", ".json"); + tempFile.deleteOnExit(); + var writer = new FileWriter(tempFile); writer.write(str); writer.flush(); writer.close(); Assertions.assertDoesNotThrow( - () -> JacksonUtils.deserialize(Path.of("test.json"), CameraConfiguration.class)); + () -> JacksonUtils.deserialize(tempFile.toPath(), CameraConfiguration.class)); - new File("test.json").delete(); + tempFile.delete(); + } + + @Test + public void testJacksonHandlesOldTargetEnum() throws IOException { + var str = "[ \"AprilTagPipelineSettings\", {\n \"targetModel\" : \"k6in_16h5\"\n} ]\n"; + + File tempFile = File.createTempFile("test", ".json"); + tempFile.deleteOnExit(); + var writer = new FileWriter(tempFile); + writer.write(str); + writer.flush(); + writer.close(); + + AprilTagPipelineSettings settings = + (AprilTagPipelineSettings) + JacksonUtils.deserialize(tempFile.toPath(), CVPipelineSettings.class); + Assertions.assertEquals(TargetModel.kAprilTag6in_16h5, settings.targetModel); + + tempFile.delete(); } }