Merge branch 'pipeline-update' into 'dev'

Pipeline update

See merge request chameleon-vision/Chameleon-Vision!18
This commit is contained in:
ori agranat
2019-09-29 20:47:28 +00:00
4 changed files with 29 additions and 11 deletions

View File

@@ -38,10 +38,7 @@ public class Main {
if (CameraManager.initializeCameras()) {
SettingsManager.initialize();
for (var camSet : CameraManager.getAllCamerasByName().entrySet()) {
new Thread(new VisionProcess(camSet.getValue())).start();
}
CameraManager.initializeThreads();
NetworkTableInstance.getDefault().startClientTeam(SettingsManager.GeneralSettings.team_number);
// NetworkTableInstance.getDefault().startClient("localhost");
System.out.println("Starting WebServer At Port:" + port);

View File

@@ -3,7 +3,9 @@ package com.chameleonvision.vision.camera;
import com.chameleonvision.CameraException;
import com.chameleonvision.FileHelper;
import com.chameleonvision.settings.SettingsManager;
import com.chameleonvision.vision.GeneralSettings;
import com.chameleonvision.vision.Pipeline;
import com.chameleonvision.vision.process.VisionProcess;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import edu.wpi.cscore.UsbCamera;
@@ -22,6 +24,7 @@ public class CameraManager {
private static final Path CamConfigPath = Paths.get(SettingsManager.SettingsPath.toString(), "cameras");
private static HashMap<String, Camera> AllCamerasByName = new HashMap<>();
private static HashMap<String, VisionProcess> AllVisionProcessesByName = new HashMap<>();
static HashMap<String, UsbCameraInfo> AllUsbCameraInfosByName = new HashMap<>() {{
var suffix = 0;
@@ -67,6 +70,14 @@ public class CameraManager {
return true;
}
public static void initializeThreads(){
for (var camSet : AllCamerasByName.entrySet()) {
VisionProcess visionProcess = new VisionProcess(camSet.getValue());
AllVisionProcessesByName.put(camSet.getKey(),visionProcess);
new Thread(visionProcess).start();
}
}
private static boolean addCamera(Camera camera, String cameraName) {
if (AllCamerasByName.containsKey(cameraName)) return false;
for (int i = 0; i < 10;i++){
@@ -115,6 +126,12 @@ public class CameraManager {
}
throw new CameraException(CameraException.CameraExceptionType.NO_CAMERA);
}
public static VisionProcess getCurrentCameraProcess() throws CameraException{
if (!SettingsManager.GeneralSettings.curr_camera.equals("")){
return AllVisionProcessesByName.get(SettingsManager.GeneralSettings.curr_camera);
}
throw new CameraException(CameraException.CameraExceptionType.NO_CAMERA);
}
public static void saveCameras() {
for (var entry : AllCamerasByName.entrySet()) {

View File

@@ -20,8 +20,8 @@ public class VisionProcess implements Runnable {
private final String cameraName;
private final CameraProcess cameraProcess;
// NetworkTables
private NetworkTableEntry ntPipelineEntry;
private NetworkTableEntry ntDriverModeEntry;
public NetworkTableEntry ntPipelineEntry;
public NetworkTableEntry ntDriverModeEntry;
private NetworkTableEntry ntYawEntry;
private NetworkTableEntry ntPitchEntry;
private NetworkTableEntry ntDistanceEntry;
@@ -87,11 +87,14 @@ public class VisionProcess implements Runnable {
System.err.println(e.toString());
}
camera.setBrightness(pipeline.brightness);
HashMap<String, Object> pipeChange = new HashMap<>();
pipeChange.put("curr_pipeline", ntPipelineIndex);
ServerHandler.broadcastMessage(pipeChange);
ServerHandler.sendFullSettings();
if (SettingsManager.GeneralSettings.curr_camera.equals(cameraName)){
SettingsManager.GeneralSettings.curr_pipeline = ntPipelineIndex;
HashMap<String, Object> pipeChange = new HashMap<>();
pipeChange.put("curr_pipeline", ntPipelineIndex);
ServerHandler.broadcastMessage(pipeChange);
ServerHandler.sendFullSettings();
}
} else {
ntPipelineEntry.setString("pipeline" + camera.getCurrentPipelineIndex());
}

View File

@@ -103,7 +103,8 @@ public class ServerHandler {
var pipelineNumber = Integer.parseInt(newPipeline.replace("pipeline", ""));
System.out.printf("Changing pipeline to %s\n", newPipeline);
CameraManager.setCurrentPipeline(pipelineNumber);
// broadcastMessage(allFieldsToMap(CameraManager.getCurrentPipeline()));
var Proccess = CameraManager.getCurrentCameraProcess();
Proccess.ntPipelineEntry.setString("pipeline"+pipelineNumber);
broadcastMessage(allFieldsToMap(CameraManager.getCurrentPipeline()));
break;