From 05198ef29488b99d96f44c78ff46dd370146c523 Mon Sep 17 00:00:00 2001 From: Mohammad Durrani <46766905+mdurrani808@users.noreply.github.com> Date: Thu, 5 Jan 2023 13:25:44 -0500 Subject: [PATCH] Aruco Support for AprilTag Detection (Experimental) (#636) Uses OpenCV's aruco module for AprilTag detection. --- .../pipeline/CameraAndPipelineSelect.vue | 2 +- photon-client/src/store/index.js | 4 +- photon-client/src/views/PipelineView.vue | 686 +++++++++--------- .../src/views/PipelineViews/ArucoTab.vue | 76 ++ .../src/views/PipelineViews/TargetsTab.vue | 4 +- .../photonvision/common/util/TestUtils.java | 5 +- .../common/util/math/MathUtils.java | 19 + .../vision/aruco/ArucoDetectionResult.java | 83 +++ .../vision/aruco/ArucoDetectorParams.java | 76 ++ .../vision/aruco/PhotonArucoDetector.java | 132 ++++ .../vision/pipe/impl/ArucoDetectionPipe.java | 50 ++ .../pipe/impl/ArucoDetectionPipeParams.java | 57 ++ .../vision/pipe/impl/Draw2dArucoPipe.java | 34 + .../vision/pipe/impl/Draw3dArucoPipe.java | 35 + .../vision/pipeline/ArucoPipeline.java | 128 ++++ .../pipeline/ArucoPipelineSettings.java | 42 ++ .../vision/pipeline/CVPipelineSettings.java | 3 +- .../vision/pipeline/OutputStreamPipeline.java | 49 +- .../vision/pipeline/PipelineType.java | 3 +- .../vision/processes/PipelineManager.java | 12 + .../vision/target/TargetModel.java | 8 + .../vision/target/TrackedTarget.java | 57 ++ .../vision/pipeline/ArucoPipelineTest.java | 86 +++ test-resources/calibration/laptop_1280.json | 33 + .../testimages/apriltag/tag1_16h5_1280.png | Bin 0 -> 472934 bytes 25 files changed, 1332 insertions(+), 352 deletions(-) create mode 100644 photon-client/src/views/PipelineViews/ArucoTab.vue create mode 100644 photon-core/src/main/java/org/photonvision/vision/aruco/ArucoDetectionResult.java create mode 100644 photon-core/src/main/java/org/photonvision/vision/aruco/ArucoDetectorParams.java create mode 100644 photon-core/src/main/java/org/photonvision/vision/aruco/PhotonArucoDetector.java create mode 100644 photon-core/src/main/java/org/photonvision/vision/pipe/impl/ArucoDetectionPipe.java create mode 100644 photon-core/src/main/java/org/photonvision/vision/pipe/impl/ArucoDetectionPipeParams.java create mode 100644 photon-core/src/main/java/org/photonvision/vision/pipe/impl/Draw2dArucoPipe.java create mode 100644 photon-core/src/main/java/org/photonvision/vision/pipe/impl/Draw3dArucoPipe.java create mode 100644 photon-core/src/main/java/org/photonvision/vision/pipeline/ArucoPipeline.java create mode 100644 photon-core/src/main/java/org/photonvision/vision/pipeline/ArucoPipelineSettings.java create mode 100644 photon-core/src/test/java/org/photonvision/vision/pipeline/ArucoPipelineTest.java create mode 100644 test-resources/calibration/laptop_1280.json create mode 100644 test-resources/testimages/apriltag/tag1_16h5_1280.png diff --git a/photon-client/src/components/pipeline/CameraAndPipelineSelect.vue b/photon-client/src/components/pipeline/CameraAndPipelineSelect.vue index 2619e38af..4e2cc5e1a 100644 --- a/photon-client/src/components/pipeline/CameraAndPipelineSelect.vue +++ b/photon-client/src/components/pipeline/CameraAndPipelineSelect.vue @@ -153,7 +153,7 @@ v-model="currentPipelineType" name="Type" tooltip="Changes the pipeline type, which changes the type of processing that will happen on input frames" - :list="['Reflective Tape', 'Colored Shape', 'AprilTag']" + :list="['Reflective Tape', 'Colored Shape', 'AprilTag', 'Aruco']" @input="e => showTypeDialog(e)" /> diff --git a/photon-client/src/store/index.js b/photon-client/src/store/index.js index 259042f78..b0e475569 100644 --- a/photon-client/src/store/index.js +++ b/photon-client/src/store/index.js @@ -52,7 +52,7 @@ export default new Vuex.Store({ isFovConfigurable: true, calibrated: false, currentPipelineSettings: { - pipelineType: 4, // One of "calib", "driver", "reflective", "shape", "AprilTag" + pipelineType: 5, // One of "calib", "driver", "reflective", "shape", "AprilTag" // 2 is reflective // Settings that apply to all pipeline types @@ -91,7 +91,7 @@ export default new Vuex.Store({ cornerDetectionAccuracyPercentage: 10, // Settings that apply to AprilTag - tagFamily: 0, + tagFamily: 1, decimate: 1.0, blur: 0.0, threads: 1, diff --git a/photon-client/src/views/PipelineView.vue b/photon-client/src/views/PipelineView.vue index c5ce3c153..a42f9eef5 100644 --- a/photon-client/src/views/PipelineView.vue +++ b/photon-client/src/views/PipelineView.vue @@ -1,37 +1,37 @@