WPI Image Test Mode (#81)

* Add camera config for calibration to test mode

* Add 3D capabilities to test mode

* Add resources to main for jar testmode

* Refactor path utilities for test mode

* Apply spotless
This commit is contained in:
Banks T
2020-08-08 14:21:38 -04:00
committed by GitHub
parent 61ab1b2bd2
commit ff58381056
15 changed files with 212 additions and 102 deletions

View File

@@ -18,9 +18,11 @@
package org.photonvision;
import edu.wpi.cscore.CameraServerCvJNI;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import org.apache.commons.cli.*;
import org.photonvision.common.configuration.CameraConfiguration;
import org.photonvision.common.configuration.ConfigManager;
import org.photonvision.common.dataflow.networktables.NetworkTablesManager;
import org.photonvision.common.hardware.Platform;
@@ -28,12 +30,16 @@ import org.photonvision.common.logging.LogGroup;
import org.photonvision.common.logging.LogLevel;
import org.photonvision.common.logging.Logger;
import org.photonvision.common.networking.NetworkManager;
import org.photonvision.common.util.TestUtils;
import org.photonvision.server.Server;
import org.photonvision.vision.camera.FileVisionSource;
import org.photonvision.vision.camera.USBCameraSource;
import org.photonvision.vision.pipeline.CVPipelineSettings;
import org.photonvision.vision.pipeline.ReflectivePipelineSettings;
import org.photonvision.vision.processes.VisionModuleManager;
import org.photonvision.vision.processes.VisionSource;
import org.photonvision.vision.processes.VisionSourceManager;
import org.photonvision.vision.target.TargetModel;
public class Main {
public static final int DEFAULT_WEBPORT = 5800;
@@ -79,12 +85,12 @@ public class Main {
}
private static HashMap<VisionSource, List<CVPipelineSettings>> gatherSources() {
var collectedSources = new HashMap<VisionSource, List<CVPipelineSettings>>();
if (!isTestMode) {
var camConfigs = ConfigManager.getInstance().getConfig().getCameraConfigurations();
logger.info("Loaded " + camConfigs.size() + " configs from disk.");
var sources = VisionSourceManager.loadAllSources(camConfigs.values());
var collectedSources = new HashMap<VisionSource, List<CVPipelineSettings>>();
for (var src : sources) {
var usbSrc = (USBCameraSource) src;
collectedSources.put(usbSrc, usbSrc.configuration.pipelineSettings);
@@ -96,11 +102,41 @@ public class Main {
+ usbSrc.configuration.pipelineSettings.size()
+ " pipelines");
}
return collectedSources;
} else {
// todo: test mode
return new HashMap<>();
var camConf2019 =
new CameraConfiguration("WPI2019", TestUtils.getTestMode2019ImagePath().toString());
camConf2019.FOV = TestUtils.WPI2019Image.FOV;
camConf2019.calibration = TestUtils.get2019LifeCamCoeffs(true);
var pipeline2019 = new ReflectivePipelineSettings();
pipeline2019.pipelineNickname = "CargoShip";
pipeline2019.targetModel = TargetModel.get2019Target();
pipeline2019.cameraCalibration = camConf2019.calibration;
var psList2019 = new ArrayList<CVPipelineSettings>();
psList2019.add(pipeline2019);
var fvs2019 = new FileVisionSource(camConf2019);
var camConf2020 =
new CameraConfiguration("WPI2020", TestUtils.getTestMode2020ImagePath().toString());
camConf2020.FOV = TestUtils.WPI2020Image.FOV;
camConf2020.calibration = TestUtils.get2020LifeCamCoeffs(true);
var pipeline2020 = new ReflectivePipelineSettings();
pipeline2020.pipelineNickname = "OuterPort";
pipeline2020.targetModel = TargetModel.get2020Target();
pipeline2020.cameraCalibration = camConf2020.calibration;
var psList2020 = new ArrayList<CVPipelineSettings>();
psList2020.add(pipeline2020);
var fvs2020 = new FileVisionSource(camConf2020);
collectedSources.put(fvs2019, psList2019);
collectedSources.put(fvs2020, psList2020);
}
return collectedSources;
}
public static void main(String[] args) {