diff --git a/photon-client/src/components/dashboard/CameraAndPipelineSelectCard.vue b/photon-client/src/components/dashboard/CameraAndPipelineSelectCard.vue index 8f5f3b3..a06fbad 100644 --- a/photon-client/src/components/dashboard/CameraAndPipelineSelectCard.vue +++ b/photon-client/src/components/dashboard/CameraAndPipelineSelectCard.vue @@ -28,6 +28,9 @@ const changeCurrentCameraIndex = (index: number) => { case PipelineType.ObjectDetection: pipelineType.value = WebsocketPipelineType.ObjectDetection; break; + case PipelineType.CustomTest: + pipelineType.value = WebsocketPipelineType.CustomTest; + break; } }; @@ -130,7 +133,8 @@ const validNewPipelineTypes = computed(() => { { name: "Reflective", value: WebsocketPipelineType.Reflective }, { name: "Colored Shape", value: WebsocketPipelineType.ColoredShape }, { name: "AprilTag", value: WebsocketPipelineType.AprilTag }, - { name: "Aruco", value: WebsocketPipelineType.Aruco } + { name: "Aruco", value: WebsocketPipelineType.Aruco }, + { name: "Custom Test", value: WebsocketPipelineType.CustomTest } ]; if (useSettingsStore().general.supportedBackends.length > 0) { pipelineTypes.push({ name: "Object Detection", value: WebsocketPipelineType.ObjectDetection }); @@ -168,7 +172,8 @@ const pipelineTypesWrapper = computed<{ name: string; value: number }[]>(() => { { name: "Reflective", value: WebsocketPipelineType.Reflective }, { name: "Colored Shape", value: WebsocketPipelineType.ColoredShape }, { name: "AprilTag", value: WebsocketPipelineType.AprilTag }, - { name: "Aruco", value: WebsocketPipelineType.Aruco } + { name: "Aruco", value: WebsocketPipelineType.Aruco }, + { name: "Custom Test", value: WebsocketPipelineType.CustomTest } ]; if (useSettingsStore().general.supportedBackends.length > 0) { pipelineTypes.push({ name: "Object Detection", value: WebsocketPipelineType.ObjectDetection }); @@ -230,6 +235,9 @@ useCameraSettingsStore().$subscribe((mutation, state) => { case PipelineType.ObjectDetection: pipelineType.value = WebsocketPipelineType.ObjectDetection; break; + case PipelineType.CustomTest: + pipelineType.value = WebsocketPipelineType.CustomTest; + break; } }); diff --git a/photon-client/src/components/dashboard/CamerasCard.vue b/photon-client/src/components/dashboard/CamerasCard.vue index eed2e75..23a214c 100644 --- a/photon-client/src/components/dashboard/CamerasCard.vue +++ b/photon-client/src/components/dashboard/CamerasCard.vue @@ -1,4 +1,4 @@ - diff --git a/photon-client/src/types/PipelineTypes.ts b/photon-client/src/types/PipelineTypes.ts index 07e689e..3cc7bb3 100644 --- a/photon-client/src/types/PipelineTypes.ts +++ b/photon-client/src/types/PipelineTypes.ts @@ -318,7 +318,7 @@ export const DefaultObjectDetectionPipelineSettings: ObjectDetectionPipelineSett }; export interface CustomTestPipelineSettings extends PipelineSettings { - pipelineType: PipelineType.AprilTag; + pipelineType: PipelineType.CustomTest; test1: number; test2: number; test3: number; @@ -329,7 +329,7 @@ export type ConfigurableCustomTestPipelineSettings = Partial< ConfigurablePipelineSettings; export const DefaultCustomTestPipelineSettings: CustomTestPipelineSettings = { ...DefaultPipelineSettings, - pipelineType: PipelineType.AprilTag, + pipelineType: PipelineType.CustomTest, cameraGain: 20, targetModel: TargetModel.InfiniteRechargeHighGoalOuter, ledMode: true, diff --git a/photon-client/src/types/WebsocketDataTypes.ts b/photon-client/src/types/WebsocketDataTypes.ts index 2e9b6da..2938ad5 100644 --- a/photon-client/src/types/WebsocketDataTypes.ts +++ b/photon-client/src/types/WebsocketDataTypes.ts @@ -107,5 +107,6 @@ export enum WebsocketPipelineType { ColoredShape = 1, AprilTag = 2, Aruco = 3, - ObjectDetection = 4 + ObjectDetection = 4, + CustomTest = 5 } diff --git a/photon-core/src/main/java/org/photonvision/vision/opencv/ContourSortMode.java b/photon-core/src/main/java/org/photonvision/vision/opencv/ContourSortMode.java index 531e3b3..eab42af 100644 --- a/photon-core/src/main/java/org/photonvision/vision/opencv/ContourSortMode.java +++ b/photon-core/src/main/java/org/photonvision/vision/opencv/ContourSortMode.java @@ -17,9 +17,10 @@ package org.photonvision.vision.opencv; -import java.util.Comparator; import org.photonvision.vision.target.PotentialTarget; +import java.util.Comparator; + public enum ContourSortMode { Largest( Comparator.comparingDouble(PotentialTarget::getArea) diff --git a/photon-core/src/main/java/org/photonvision/vision/pipe/impl/AprilTagDetectionPipe.java b/photon-core/src/main/java/org/photonvision/vision/pipe/impl/AprilTagDetectionPipe.java index e4737ce..e29f1ca 100644 --- a/photon-core/src/main/java/org/photonvision/vision/pipe/impl/AprilTagDetectionPipe.java +++ b/photon-core/src/main/java/org/photonvision/vision/pipe/impl/AprilTagDetectionPipe.java @@ -70,7 +70,9 @@ public class AprilTagDetectionPipe @Override public void release() { - m_detector.close(); - m_detector = null; + if(m_detector != null) { + m_detector.close(); + m_detector = null; + } } } diff --git a/photon-core/src/main/java/org/photonvision/vision/pipeline/CVPipeline.java b/photon-core/src/main/java/org/photonvision/vision/pipeline/CVPipeline.java index 91dc44a..a523cdd 100644 --- a/photon-core/src/main/java/org/photonvision/vision/pipeline/CVPipeline.java +++ b/photon-core/src/main/java/org/photonvision/vision/pipeline/CVPipeline.java @@ -68,7 +68,7 @@ public abstract class CVPipeline { private static final FrameThresholdType PROCESSING_TYPE = FrameThresholdType.GREYSCALE; - public CustomTestPipeline(FrameThresholdType thresholdType) { - super(thresholdType); + private final BlurPipe blurPipe = new BlurPipe(); + + public CustomTestPipeline() { + super(PROCESSING_TYPE); + settings = new CustomTestPipelineSettings(); } public CustomTestPipeline(CustomTestPipelineSettings settings) { @@ -20,7 +25,20 @@ public class CustomTestPipeline extends CVPipeline 0) { +// var cx = cameraMatrix.get(0, 2)[0]; +// var cy = cameraMatrix.get(1, 2)[0]; +// var fx = cameraMatrix.get(0, 0)[0]; +// var fy = cameraMatrix.get(1, 1)[0]; +// } +// } } @Override @@ -29,6 +47,16 @@ public class CustomTestPipeline extends CVPipeline> sortContoursResult = + CVPipeResult> sortContoursResult = sortContoursPipe.run( filterContoursResult.output.stream() .map(shape -> new PotentialTarget(shape)) diff --git a/photon-core/src/main/java/org/photonvision/vision/pipeline/OutputStreamPipeline.java b/photon-core/src/main/java/org/photonvision/vision/pipeline/OutputStreamPipeline.java index da2c400..1b5c3b5 100644 --- a/photon-core/src/main/java/org/photonvision/vision/pipeline/OutputStreamPipeline.java +++ b/photon-core/src/main/java/org/photonvision/vision/pipeline/OutputStreamPipeline.java @@ -229,6 +229,8 @@ public class OutputStreamPipeline { pipeProfileNanos[7] = 0; pipeProfileNanos[8] = 0; } + } else if (settings instanceof CustomTestPipelineSettings) { + //TODO } } diff --git a/photon-core/src/main/java/org/photonvision/vision/processes/PipelineManager.java b/photon-core/src/main/java/org/photonvision/vision/processes/PipelineManager.java index b039432..8558cda 100644 --- a/photon-core/src/main/java/org/photonvision/vision/processes/PipelineManager.java +++ b/photon-core/src/main/java/org/photonvision/vision/processes/PipelineManager.java @@ -243,6 +243,7 @@ public class PipelineManager { private void recreateUserPipeline() { // Cleanup potential old native resources before swapping over from a user // pipeline +// logger.info(currentUserPipeline.getSettings().pipelineNickname); if (currentUserPipeline != null && !(currentPipelineIndex < 0)) { currentUserPipeline.release(); } diff --git a/photon-core/src/main/java/org/photonvision/vision/processes/VisionRunner.java b/photon-core/src/main/java/org/photonvision/vision/processes/VisionRunner.java index a1299bd..b88d113 100644 --- a/photon-core/src/main/java/org/photonvision/vision/processes/VisionRunner.java +++ b/photon-core/src/main/java/org/photonvision/vision/processes/VisionRunner.java @@ -112,6 +112,7 @@ public class VisionRunner { // There's no guarantee the processing type change will occur this tick, so pipelines should // check themselves try { +// logger.info("Running pipeline with name: " + pipeline.getSettings().pipelineNickname); var pipelineResult = pipeline.run(frame, cameraQuirks); pipelineResultConsumer.accept(pipelineResult); } catch (Exception ex) { diff --git a/photon-server/build.gradle b/photon-server/build.gradle index fb14054..a9e7084 100644 --- a/photon-server/build.gradle +++ b/photon-server/build.gradle @@ -43,6 +43,7 @@ node { } tasks.register('copyClientUIToResources', Copy) { + dependsOn "processResources" from "${projectDir}/../photon-client/dist/" into "${projectDir}/src/main/resources/web/" }