PiCam Tweaks (#63)

* Update QuirkyCamera to do name-based matching

* Add pi-cam exposure set

* Refactor QuirkyCamera

* Add PiCam quirk test, fix tests for no-name quirky cameras

* Apply Spotless

* Add pinhole model unit test
This commit is contained in:
Banks T
2020-09-08 12:11:29 -04:00
committed by GitHub
parent 7bf92a9db3
commit ddd15d362b
7 changed files with 99 additions and 22 deletions

View File

@@ -32,10 +32,22 @@ public class QuirkyCameraTest {
ps3EyeQuirks.putIfAbsent(q, false);
}
QuirkyCamera psEye = QuirkyCamera.getQuirkyCamera(0x2000, 0x1415, "psEye");
QuirkyCamera psEye = QuirkyCamera.getQuirkyCamera(0x2000, 0x1415);
Assertions.assertEquals(psEye.quirks, ps3EyeQuirks);
}
@Test
public void picamTest() {
HashMap<CameraQuirk, Boolean> picamQuirks = new HashMap<>();
picamQuirks.put(CameraQuirk.PiCam, true);
for (var q : CameraQuirk.values()) {
picamQuirks.putIfAbsent(q, false);
}
QuirkyCamera picam = QuirkyCamera.getQuirkyCamera(-1, -1, "mmal service 16.1");
Assertions.assertEquals(picam.quirks, picamQuirks);
}
@Test
public void quirklessCameraTest() {
HashMap<CameraQuirk, Boolean> noQuirks = new HashMap<>();
@@ -43,7 +55,7 @@ public class QuirkyCameraTest {
noQuirks.put(q, false);
}
QuirkyCamera quirkless = QuirkyCamera.getQuirkyCamera(1234, 888, "empty");
QuirkyCamera quirkless = QuirkyCamera.getQuirkyCamera(1234, 8888);
Assertions.assertEquals(quirkless.quirks, noQuirks);
}
}

View File

@@ -28,6 +28,7 @@ import org.opencv.core.*;
import org.opencv.core.Point;
import org.opencv.imgproc.Imgproc;
import org.photonvision.common.util.TestUtils;
import org.photonvision.common.util.numbers.DoubleCouple;
import org.photonvision.vision.frame.FrameStaticProperties;
import org.photonvision.vision.opencv.DualOffsetValues;
@@ -176,6 +177,16 @@ public class TargetCalculationsTest {
assertEquals(-70, result, 0.01);
}
@Test
public void testCameraFOVCalculation() {
final DoubleCouple glowormHorizVert =
FrameStaticProperties.calculateHorizontalVerticalFoV(74.8, 640, 480);
var gwHorizDeg = FastMath.toDegrees(glowormHorizVert.getFirst());
var gwVertDeg = FastMath.toDegrees(glowormHorizVert.getSecond());
assertEquals(62.7, gwHorizDeg, .3);
assertEquals(49, gwVertDeg, .3);
}
@Test
public void robotOffsetDualTest() {
final DualOffsetValues dualOffsetValues =