diff --git a/Main/pom.xml b/Main/pom.xml index 25a606544..78a85b50a 100644 --- a/Main/pom.xml +++ b/Main/pom.xml @@ -49,6 +49,11 @@ WPI Maven repo https://first.wpi.edu/FRC/roborio/maven/release + + WPIArtifactory + WPILib Artifactory Server-releases + https://frcmaven.wpi.edu:443/artifactory/release + @@ -84,7 +89,6 @@ gson 2.8.5 - org.springframework spring-beans @@ -95,11 +99,17 @@ commons-lang3 3.9 + + com.fasterxml.jackson.core + jackson-databind + 2.10.0.pr1 + @@ -182,6 +192,43 @@ + + + edu.wpi.first.thirdparty.frc2020.opencv + opencv-java + 3.4.7-1 + + + edu.wpi.first.thirdparty.frc2020.opencv + opencv-jni + 3.4.7-1 + linuxaarch64bionic + + + edu.wpi.first.thirdparty.frc2020.opencv + opencv-jni + 3.4.7-1 + linuxraspbian + + + edu.wpi.first.thirdparty.frc2020.opencv + opencv-jni + 3.4.7-1 + linuxx86-64 + + + edu.wpi.first.thirdparty.frc2020.opencv + opencv-jni + 3.4.7-1 + osxx86-64 + + + edu.wpi.first.thirdparty.frc2020.opencv + opencv-jni + 3.4.7-1 + windowsx86-64 + + diff --git a/Main/src/main/java/com/chameleonvision/vision/camera/Camera.java b/Main/src/main/java/com/chameleonvision/vision/camera/Camera.java index 6e2af5d8f..709f07a18 100644 --- a/Main/src/main/java/com/chameleonvision/vision/camera/Camera.java +++ b/Main/src/main/java/com/chameleonvision/vision/camera/Camera.java @@ -1,11 +1,13 @@ package com.chameleonvision.vision.camera; +import com.chameleonvision.CameraException; import com.chameleonvision.settings.SettingsManager; import com.chameleonvision.vision.Pipeline; import com.chameleonvision.web.ServerHandler; import edu.wpi.cscore.*; import edu.wpi.first.cameraserver.CameraServer; import org.opencv.core.Mat; +import org.springframework.core.env.Environment; import java.util.Arrays; import java.util.HashMap; @@ -80,7 +82,12 @@ public class Camera { var initTimeMs = (System.nanoTime() - initTimeout) / 1e6; System.out.printf("Camera initialized in %.2fms\n", initTimeMs); } - availableVideoModes = Arrays.stream(UsbCam.enumerateVideoModes()).filter(v -> v.fps >= MINIMUM_FPS && v.width >= MINIMUM_WIDTH && v.height >= MINIMUM_HEIGHT).toArray(VideoMode[]::new); + var trueVideoModes = UsbCam.enumerateVideoModes(); + availableVideoModes = Arrays.stream(trueVideoModes).filter(v -> v.fps >= MINIMUM_FPS && v.width >= MINIMUM_WIDTH && v.height >= MINIMUM_HEIGHT && v.pixelFormat == VideoMode.PixelFormat.kYUYV).toArray(VideoMode[]::new); + if (availableVideoModes.length == 0) { + System.err.println("Camera not supported!"); + throw new RuntimeException(new CameraException(CameraException.CameraExceptionType.BAD_CAMERA)); + } if (videoModeIndex <= availableVideoModes.length - 1) { setCamVideoMode(videoModeIndex, false); } else { @@ -109,9 +116,7 @@ public class Camera { private void setCamVideoMode(CamVideoMode newVideoMode, boolean updateCvSource) { var prevVideoMode = this.camVideoMode; this.camVideoMode = newVideoMode; - UsbCam.setPixelFormat(newVideoMode.getActualPixelFormat()); - UsbCam.setFPS(newVideoMode.fps); - UsbCam.setResolution(newVideoMode.width, newVideoMode.height); + UsbCam.setVideoMode(newVideoMode.getActualPixelFormat(), newVideoMode.width, newVideoMode.height, newVideoMode.fps); // update camera values camVals = new CameraValues(this);