Fix driver mode settings, sort resolutions (#115)

* Fix DriverMode settings

* Update FileVisionSource.java

* Sort modes by resolution

* Filter duplicated modes

* run spotless

* Fix calibration bug

* run format

* aaaaa

* Add hardware and platform support

* decrease timing sensitivity

* Better handle jvm exitg

* Make reboot happen immediately

* Cleanup restart

* Remove debug print

* Fix Jackson exploding when deserializing old versions of configs

* Add unit test for old config versions

* Run format

* Add a comment

* remove isvendorcam from pipeline manager

* oops
This commit is contained in:
Matt
2020-09-10 19:20:16 -07:00
committed by GitHub
parent ddd15d362b
commit a35f775b05
25 changed files with 193 additions and 57 deletions

View File

@@ -18,6 +18,7 @@
package org.photonvision.common.configuration;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
@@ -28,6 +29,7 @@ import org.photonvision.common.logging.LogGroup;
import org.photonvision.common.logging.LogLevel;
import org.photonvision.common.logging.Logger;
import org.photonvision.common.util.TestUtils;
import org.photonvision.common.util.file.JacksonUtils;
import org.photonvision.vision.pipeline.ColoredShapePipelineSettings;
import org.photonvision.vision.pipeline.ReflectivePipelineSettings;
import org.photonvision.vision.target.TargetModel;
@@ -116,4 +118,16 @@ public class ConfigTest {
FileUtils.cleanDirectory(configMgr.configDirectoryFile);
configMgr.configDirectoryFile.delete();
}
@Test
public void testJacksonHandlesOldVersions() throws IOException {
var str =
"{\"baseName\":\"aaaaaa\",\"uniqueName\":\"aaaaaa\",\"nickname\":\"aaaaaa\",\"FOV\":70.0,\"path\":\"dev/vid\",\"cameraType\":\"UsbCamera\",\"currentPipelineIndex\":0,\"camPitch\":{\"radians\":0.0},\"calibrations\":[], \"cameraLEDs\":[]}";
var writer = new FileWriter("test.json");
writer.write(str);
writer.flush();
writer.close();
Assertions.assertDoesNotThrow(
() -> JacksonUtils.deserialize(Path.of("test.json"), CameraConfiguration.class));
}
}

View File

@@ -20,7 +20,6 @@ package org.photonvision.vision.processes;
import edu.wpi.cscore.VideoMode;
import edu.wpi.first.wpilibj.geometry.Rotation2d;
import java.util.HashMap;
import java.util.List;
import org.junit.jupiter.api.*;
import org.photonvision.common.configuration.CameraConfiguration;
import org.photonvision.common.configuration.ConfigManager;
@@ -29,7 +28,6 @@ import org.photonvision.common.util.TestUtils;
import org.photonvision.vision.frame.FrameProvider;
import org.photonvision.vision.frame.FrameStaticProperties;
import org.photonvision.vision.frame.provider.FileFrameProvider;
import org.photonvision.vision.pipeline.CVPipelineSettings;
import org.photonvision.vision.pipeline.result.CVPipelineResult;
public class VisionModuleManagerTest {
@@ -57,6 +55,11 @@ public class VisionModuleManagerTest {
public VisionSourceSettables getSettables() {
return new TestSettables(new CameraConfiguration("", "", "", ""));
}
@Override
public boolean isVendorCamera() {
return false;
}
}
private static class TestSettables extends VisionSourceSettables {
@@ -105,14 +108,14 @@ public class VisionModuleManagerTest {
@Test
public void setupManager() {
ConfigManager.getInstance().load();
var sources = new HashMap<VisionSource, List<CVPipelineSettings>>();
var sources = new HashMap<VisionSource, CameraConfiguration>();
sources.put(
new TestSource(
new FileFrameProvider(
TestUtils.getWPIImagePath(
TestUtils.WPI2019Image.kCargoStraightDark72in_HighRes, false),
TestUtils.WPI2019Image.FOV)),
List.of());
new CameraConfiguration("Foo", "Barr"));
var modules = VisionModuleManager.getInstance().addSources(sources);
var module0DataConsumer = new TestDataConsumer();
@@ -121,7 +124,7 @@ public class VisionModuleManagerTest {
modules.forEach(VisionModule::start);
sleep(500);
sleep(1500);
Assertions.assertNotNull(module0DataConsumer.result);
printTestResults(module0DataConsumer.result);

View File

@@ -25,6 +25,7 @@ import java.util.ArrayList;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.photonvision.common.configuration.CameraConfiguration;
import org.photonvision.common.configuration.ConfigManager;
import org.photonvision.common.util.TestUtils;
public class VisionSourceManagerTest {
@@ -38,6 +39,7 @@ public class VisionSourceManagerTest {
var inst = new VisionSourceManager();
var infoList = new ArrayList<UsbCameraInfo>();
inst.cameraInfoSupplier = () -> infoList;
ConfigManager.getInstance().load();
inst.tryMatchUSBCamImpl();
var config = new CameraConfiguration("secondTestVideo", "dev/video1");