diff --git a/photon-client/src/components/cameras/CameraCalibrationCard.vue b/photon-client/src/components/cameras/CameraCalibrationCard.vue index d76a0ee07..03ee393e5 100644 --- a/photon-client/src/components/cameras/CameraCalibrationCard.vue +++ b/photon-client/src/components/cameras/CameraCalibrationCard.vue @@ -81,15 +81,6 @@ const patternHeight = ref(8); const boardType = ref(CalibrationBoardTypes.Charuco); const useOldPattern = ref(false); const tagFamily = ref(CalibrationTagFamilies.Dict_4X4_1000); -const useMrCalRef = ref(true); -const useMrCal = computed({ - get() { - return useMrCalRef.value && useSettingsStore().general.mrCalWorking; - }, - set(value) { - useMrCalRef.value = value && useSettingsStore().general.mrCalWorking; - } -}); const downloadCalibBoard = () => { const doc = new JsPDF({ unit: "in", format: "letter" }); @@ -169,7 +160,6 @@ const startCalibration = () => { patternHeight: patternHeight.value, patternWidth: patternWidth.value, boardType: boardType.value, - useMrCal: useMrCal.value, useOldPattern: useOldPattern.value, tagFamily: tagFamily.value }); @@ -201,6 +191,8 @@ const endCalibration = () => { }); }; +let drawAllSnapshots = ref(true); + let showCalDialog = ref(false); let selectedVideoFormat = ref(undefined); const setSelectedVideoFormat = (format: VideoFormat) => { @@ -251,7 +243,7 @@ const setSelectedVideoFormat = (format: VideoFormat) => { { label="Decimation" tooltip="Resolution to which camera frames are downscaled for detection. Calibration still uses full-res" :items="calibrationDivisors" - :select-cols="7" + :select-cols="8" @input="(v) => useCameraSettingsStore().changeCurrentPipelineSetting({ streamingFrameDivisor: v }, false)" /> @@ -278,7 +270,7 @@ const setSelectedVideoFormat = (format: VideoFormat) => { v-model="tagFamily" label="Tag Family" tooltip="Dictionary of aruco markers on the charuco board" - :select-cols="7" + :select-cols="8" :items="['Dict_4X4_1000', 'Dict_5X5_1000', 'Dict_6X6_1000', 'Dict_7X7_1000']" :disabled="isCalibrating" /> @@ -288,7 +280,7 @@ const setSelectedVideoFormat = (format: VideoFormat) => { tooltip="Spacing between pattern features in inches" :disabled="isCalibrating" :rules="[(v) => v > 0 || 'Size must be positive']" - :label-cols="5" + :label-cols="4" /> { tooltip="Size of the tag markers in inches must be smaller than pattern spacing" :disabled="isCalibrating" :rules="[(v) => v > 0 || 'Size must be positive']" - :label-cols="5" + :label-cols="4" /> { tooltip="Width of the board in dots or chessboard squares" :disabled="isCalibrating" :rules="[(v) => v >= 4 || 'Width must be at least 4']" - :label-cols="5" + :label-cols="4" /> { tooltip="Height of the board in dots or chessboard squares" :disabled="isCalibrating" :rules="[(v) => v >= 4 || 'Height must be at least 4']" - :label-cols="5" + :label-cols="4" /> { label="Old OpenCV Pattern" :disabled="isCalibrating" tooltip="If enabled, Photon will use the old OpenCV pattern for calibration." - :label-cols="5" - /> - + + Mrcal was successfully loaded, and will be used! + { + + + diff --git a/photon-client/src/stores/settings/CameraSettingsStore.ts b/photon-client/src/stores/settings/CameraSettingsStore.ts index 3119ae511..5ab00eac7 100644 --- a/photon-client/src/stores/settings/CameraSettingsStore.ts +++ b/photon-client/src/stores/settings/CameraSettingsStore.ts @@ -339,7 +339,6 @@ export const useCameraSettingsStore = defineStore("cameraSettings", { patternWidth: number; patternHeight: number; boardType: CalibrationBoardTypes; - useMrCal: boolean; useOldPattern: boolean; tagFamily: CalibrationTagFamilies; }, diff --git a/photon-client/src/types/PipelineTypes.ts b/photon-client/src/types/PipelineTypes.ts index f1697beb7..b5c7abe1b 100644 --- a/photon-client/src/types/PipelineTypes.ts +++ b/photon-client/src/types/PipelineTypes.ts @@ -142,7 +142,9 @@ export const DefaultPipelineSettings: Omit< hsvSaturation: { first: 50, second: 255 }, contourIntersection: 1, cameraAutoWhiteBalance: false, - cameraWhiteBalanceTemp: 4000 + cameraWhiteBalanceTemp: 4000, + cameraMinExposureRaw: 1, + cameraMaxExposureRaw: 2 }; export interface ReflectivePipelineSettings extends PipelineSettings { @@ -314,16 +316,34 @@ export const DefaultObjectDetectionPipelineSettings: ObjectDetectionPipelineSett model: "" }; +export interface Calibration3dPipelineSettings extends PipelineSettings { + drawAllSnapshots: boolean; +} +export type ConfigurableCalibration3dPipelineSettings = Partial> & + ConfigurablePipelineSettings; +export const DefaultCalibration3dPipelineSettings: Calibration3dPipelineSettings = { + ...DefaultPipelineSettings, + pipelineType: PipelineType.ObjectDetection, + cameraGain: 20, + targetModel: TargetModel.InfiniteRechargeHighGoalOuter, + ledMode: true, + outputShowMultipleTargets: false, + cameraExposureRaw: 6, + drawAllSnapshots: false +}; + export type ActivePipelineSettings = | ReflectivePipelineSettings | ColoredShapePipelineSettings | AprilTagPipelineSettings | ArucoPipelineSettings - | ObjectDetectionPipelineSettings; + | ObjectDetectionPipelineSettings + | Calibration3dPipelineSettings; export type ActiveConfigurablePipelineSettings = | ConfigurableReflectivePipelineSettings | ConfigurableColoredShapePipelineSettings | ConfigurableAprilTagPipelineSettings | ConfigurableArucoPipelineSettings - | ConfigurableObjectDetectionPipelineSettings; + | ConfigurableObjectDetectionPipelineSettings + | ConfigurableCalibration3dPipelineSettings; diff --git a/photon-core/src/main/java/org/photonvision/vision/pipe/impl/DrawCalibrationPipe.java b/photon-core/src/main/java/org/photonvision/vision/pipe/impl/DrawCalibrationPipe.java index cf0b04f0d..925000aa7 100644 --- a/photon-core/src/main/java/org/photonvision/vision/pipe/impl/DrawCalibrationPipe.java +++ b/photon-core/src/main/java/org/photonvision/vision/pipe/impl/DrawCalibrationPipe.java @@ -43,6 +43,8 @@ public class DrawCalibrationPipe @Override protected Void process(Pair> in) { + if (!params.drawAllSnapshots) return null; + var image = in.getLeft(); var imgSz = image.size(); @@ -82,9 +84,11 @@ public class DrawCalibrationPipe public static class DrawCalibrationPipeParams { private final FrameDivisor divisor; + public boolean drawAllSnapshots; - public DrawCalibrationPipeParams(FrameDivisor divisor) { + public DrawCalibrationPipeParams(FrameDivisor divisor, boolean drawSnapshots) { this.divisor = divisor; + this.drawAllSnapshots = drawSnapshots; } } } diff --git a/photon-core/src/main/java/org/photonvision/vision/pipeline/Calibrate3dPipeline.java b/photon-core/src/main/java/org/photonvision/vision/pipeline/Calibrate3dPipeline.java index b009a97c4..ec4f1e609 100644 --- a/photon-core/src/main/java/org/photonvision/vision/pipeline/Calibrate3dPipeline.java +++ b/photon-core/src/main/java/org/photonvision/vision/pipeline/Calibrate3dPipeline.java @@ -230,7 +230,6 @@ public class Calibrate3dPipeline settings.boardWidth, settings.boardHeight, settings.boardType, - settings.useMrCal, settings.useOldPattern, settings.tagFamily)); diff --git a/photon-core/src/main/java/org/photonvision/vision/pipeline/Calibration3dPipelineSettings.java b/photon-core/src/main/java/org/photonvision/vision/pipeline/Calibration3dPipelineSettings.java index c15a20aa4..f6fcb3459 100644 --- a/photon-core/src/main/java/org/photonvision/vision/pipeline/Calibration3dPipelineSettings.java +++ b/photon-core/src/main/java/org/photonvision/vision/pipeline/Calibration3dPipelineSettings.java @@ -32,6 +32,7 @@ public class Calibration3dPipelineSettings extends AdvancedPipelineSettings { public Size resolution = new Size(640, 480); public boolean useMrCal = true; public boolean useOldPattern = false; + public boolean drawAllSnapshots; public Calibration3dPipelineSettings() { super(); @@ -39,5 +40,6 @@ public class Calibration3dPipelineSettings extends AdvancedPipelineSettings { this.inputShouldShow = true; this.outputShouldShow = true; this.streamingFrameDivisor = FrameDivisor.HALF; + this.drawAllSnapshots = true; } } 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 efcb1096c..da2c40097 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 @@ -114,8 +114,12 @@ public class OutputStreamPipeline { resizeImagePipe.setParams( new ResizeImagePipe.ResizeImageParams(settings.streamingFrameDivisor)); - drawCalibrationPipe.setParams( - new DrawCalibrationPipe.DrawCalibrationPipeParams(settings.streamingFrameDivisor)); + if (settings instanceof Calibration3dPipelineSettings) { + drawCalibrationPipe.setParams( + new DrawCalibrationPipe.DrawCalibrationPipeParams( + settings.streamingFrameDivisor, + ((Calibration3dPipelineSettings) settings).drawAllSnapshots)); + } } public CVPipelineResult process( diff --git a/photon-core/src/main/java/org/photonvision/vision/pipeline/UICalibrationData.java b/photon-core/src/main/java/org/photonvision/vision/pipeline/UICalibrationData.java index 6dfe0a203..3bd021e5e 100644 --- a/photon-core/src/main/java/org/photonvision/vision/pipeline/UICalibrationData.java +++ b/photon-core/src/main/java/org/photonvision/vision/pipeline/UICalibrationData.java @@ -28,7 +28,6 @@ public class UICalibrationData { public int patternWidth; public int patternHeight; public BoardType boardType; - public boolean useMrCal; public double markerSizeIn; public boolean useOldPattern; public TagFamily tagFamily; @@ -45,7 +44,6 @@ public class UICalibrationData { int patternWidth, int patternHeight, BoardType boardType, - boolean useMrCal, boolean useOldPattern, TagFamily tagFamily) { this.count = count; @@ -57,7 +55,6 @@ public class UICalibrationData { this.patternWidth = patternWidth; this.patternHeight = patternHeight; this.boardType = boardType; - this.useMrCal = useMrCal; this.useOldPattern = useOldPattern; this.tagFamily = tagFamily; } diff --git a/photon-core/src/main/java/org/photonvision/vision/processes/VisionModule.java b/photon-core/src/main/java/org/photonvision/vision/processes/VisionModule.java index b2a320f3e..5aeda5ed7 100644 --- a/photon-core/src/main/java/org/photonvision/vision/processes/VisionModule.java +++ b/photon-core/src/main/java/org/photonvision/vision/processes/VisionModule.java @@ -355,7 +355,6 @@ public class VisionModule { settings.boardHeight = data.patternHeight; settings.boardWidth = data.patternWidth; settings.boardType = data.boardType; - settings.useMrCal = data.useMrCal; settings.resolution = resolution; settings.useOldPattern = data.useOldPattern; settings.tagFamily = data.tagFamily;