From 7a032cce6ec0363f38740da4321708f3f8976829 Mon Sep 17 00:00:00 2001 From: Matt Date: Wed, 23 Dec 2020 09:05:27 -0800 Subject: [PATCH] [Calibration] Fix iterator bound while creating object points (#188) Fixes mismatched iterator bounds while creating object points. This addresses calibration failing for non square boards. --- .../photonvision/vision/pipe/impl/FindBoardCornersPipe.java | 2 +- .../photonvision/vision/pipeline/Calibrate3dPipeTest.java | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/photon-server/src/main/java/org/photonvision/vision/pipe/impl/FindBoardCornersPipe.java b/photon-server/src/main/java/org/photonvision/vision/pipe/impl/FindBoardCornersPipe.java index 8fe5b76f5..be2b8d98c 100644 --- a/photon-server/src/main/java/org/photonvision/vision/pipe/impl/FindBoardCornersPipe.java +++ b/photon-server/src/main/java/org/photonvision/vision/pipe/impl/FindBoardCornersPipe.java @@ -88,7 +88,7 @@ public class FindBoardCornersPipe if (params.type == UICalibrationData.BoardType.CHESSBOARD) { // Here we can create an NxN grid since a chessboard is rectangular for (int heightIdx = 0; heightIdx < patternSize.height; heightIdx++) { - for (int widthIdx = 0; widthIdx < patternSize.height; widthIdx++) { + for (int widthIdx = 0; widthIdx < patternSize.width; widthIdx++) { double boardYCoord = heightIdx * params.gridSize; double boardXCoord = widthIdx * params.gridSize; objectPoints.push_back(new MatOfPoint3f(new Point3(boardXCoord, boardYCoord, 0.0))); diff --git a/photon-server/src/test/java/org/photonvision/vision/pipeline/Calibrate3dPipeTest.java b/photon-server/src/test/java/org/photonvision/vision/pipeline/Calibrate3dPipeTest.java index 68e8a9a22..afd6aa278 100644 --- a/photon-server/src/test/java/org/photonvision/vision/pipeline/Calibrate3dPipeTest.java +++ b/photon-server/src/test/java/org/photonvision/vision/pipeline/Calibrate3dPipeTest.java @@ -21,6 +21,7 @@ import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertTrue; import edu.wpi.first.wpilibj.geometry.Rotation2d; +import edu.wpi.first.wpilibj.util.Units; import java.io.File; import java.nio.file.Path; import java.util.ArrayList; @@ -182,6 +183,10 @@ public class Calibrate3dPipeTest { calibration3dPipeline.getSettings().boardType = UICalibrationData.BoardType.CHESSBOARD; calibration3dPipeline.getSettings().resolution = imgRes; + calibration3dPipeline.getSettings().boardWidth = 8; + calibration3dPipeline.getSettings().boardHeight = 8; + calibration3dPipeline.getSettings().gridSize = Units.inchesToMeters(1); + for (var file : directoryListing) { if (file.isFile()) { calibration3dPipeline.takeSnapshot();