diff --git a/chameleon-server/src/main/java/com/chameleonvision/vision/pipeline/impl/StandardCVPipelineSettings.java b/chameleon-server/src/main/java/com/chameleonvision/vision/pipeline/impl/StandardCVPipelineSettings.java index d79575cf6..8b688abd5 100644 --- a/chameleon-server/src/main/java/com/chameleonvision/vision/pipeline/impl/StandardCVPipelineSettings.java +++ b/chameleon-server/src/main/java/com/chameleonvision/vision/pipeline/impl/StandardCVPipelineSettings.java @@ -4,10 +4,7 @@ import com.chameleonvision.vision.enums.*; import com.chameleonvision.vision.pipeline.CVPipelineSettings; import com.fasterxml.jackson.annotation.JsonIgnore; import edu.wpi.first.wpilibj.util.Units; -import org.opencv.core.Mat; -import org.opencv.core.MatOfDouble; -import org.opencv.core.Point; -import org.opencv.core.Point3; +import org.opencv.core.*; import java.util.Arrays; import java.util.List; @@ -35,7 +32,22 @@ public class StandardCVPipelineSettings extends CVPipelineSettings { public double dualTargetCalibrationB = 0; // 3d stuff - public double targetWidth = 15.5, targetHeight = 6.0; + public MatOfPoint3f targetCornerMat = new MatOfPoint3f(); + private static MatOfPoint3f hexTargetMat = new MatOfPoint3f(); + + static { + hexTargetMat.fromList(List.of( + new Point3(-19.625, 0, 0), + new Point3(-9.819867, -17, 0), + new Point3(9.819867, -17, 0), + new Point3(19.625, 0, 0))); + } + + public StandardCVPipelineSettings() { + super(); + hexTargetMat.copyTo(targetCornerMat); + } + public boolean is3D = false; } diff --git a/chameleon-server/src/main/java/com/chameleonvision/vision/pipeline/pipes/SolvePNPPipe.java b/chameleon-server/src/main/java/com/chameleonvision/vision/pipeline/pipes/SolvePNPPipe.java index f59a95cb7..eded3b1a8 100644 --- a/chameleon-server/src/main/java/com/chameleonvision/vision/pipeline/pipes/SolvePNPPipe.java +++ b/chameleon-server/src/main/java/com/chameleonvision/vision/pipeline/pipes/SolvePNPPipe.java @@ -81,6 +81,7 @@ public class SolvePNPPipe implements Pipe points = kObjectMapper.readValue(ctx.body(), List.class); + + // each entry should be an xy pair + for(Object point: points) { + //noinspection RedundantCast + point = (List) point; + } } }