diff --git a/photon-core/src/main/java/org/photonvision/vision/camera/CameraQuirk.java b/photon-core/src/main/java/org/photonvision/vision/camera/CameraQuirk.java index ab2aca766..b086c09ec 100644 --- a/photon-core/src/main/java/org/photonvision/vision/camera/CameraQuirk.java +++ b/photon-core/src/main/java/org/photonvision/vision/camera/CameraQuirk.java @@ -44,5 +44,7 @@ public enum CameraQuirk { /* * Camera is an arducam ov9782 which has specific exposure ranges and needs a specific white balance issue */ - ArduOV9782 + ArduOV9782, + /** Camera has odd exposure range, and supports gain control */ + See3Cam_24CUG } diff --git a/photon-core/src/main/java/org/photonvision/vision/camera/QuirkyCamera.java b/photon-core/src/main/java/org/photonvision/vision/camera/QuirkyCamera.java index 076070e6c..817fab6a1 100644 --- a/photon-core/src/main/java/org/photonvision/vision/camera/QuirkyCamera.java +++ b/photon-core/src/main/java/org/photonvision/vision/camera/QuirkyCamera.java @@ -28,6 +28,9 @@ public class QuirkyCamera { private static final List quirkyCameras = List.of( + // SeeCam, which has an odd exposure range + new QuirkyCamera( + 0x2560, 0xc128, "See3Cam_24CUG", CameraQuirk.Gain, CameraQuirk.See3Cam_24CUG), new QuirkyCamera( 0x9331, 0x5A3, diff --git a/photon-core/src/main/java/org/photonvision/vision/camera/USBCameraSource.java b/photon-core/src/main/java/org/photonvision/vision/camera/USBCameraSource.java index 57d38fadc..1e265596f 100644 --- a/photon-core/src/main/java/org/photonvision/vision/camera/USBCameraSource.java +++ b/photon-core/src/main/java/org/photonvision/vision/camera/USBCameraSource.java @@ -295,6 +295,9 @@ public void setExposure(double exposure) { } else if (getCameraConfiguration().cameraQuirks.hasQuirk(CameraQuirk.ArduOV9782)) { propMin = 1; propMax = 60; + } else if (getCameraConfiguration().cameraQuirks.hasQuirk(CameraQuirk.See3Cam_24CUG)) { + propMin = 0; + propMax = 600; } var exposure_manual_val = MathUtils.map(Math.round(exposure), 0, 100, propMin, propMax);