diff --git a/Main/chameleon-vision.iml b/Main/chameleon-vision.iml
index 5d990481a..7106dd857 100644
--- a/Main/chameleon-vision.iml
+++ b/Main/chameleon-vision.iml
@@ -33,7 +33,7 @@
-
+
diff --git a/Main/pom.xml b/Main/pom.xml
index 456b1a8bf..87c75c8f6 100644
--- a/Main/pom.xml
+++ b/Main/pom.xml
@@ -75,7 +75,7 @@
org.slf4j
- slf4j-simple
+ slf4j-nop
1.7.26
diff --git a/Main/src/main/java/com/chameleonvision/vision/CalibrationMode.java b/Main/src/main/java/com/chameleonvision/vision/CalibrationMode.java
new file mode 100644
index 000000000..64de036ed
--- /dev/null
+++ b/Main/src/main/java/com/chameleonvision/vision/CalibrationMode.java
@@ -0,0 +1,5 @@
+package com.chameleonvision.vision;
+
+public enum CalibrationMode {
+ None,Single,Dual
+}
diff --git a/Main/src/main/java/com/chameleonvision/vision/Pipeline.java b/Main/src/main/java/com/chameleonvision/vision/Pipeline.java
index 2490a45af..4d0bf96db 100644
--- a/Main/src/main/java/com/chameleonvision/vision/Pipeline.java
+++ b/Main/src/main/java/com/chameleonvision/vision/Pipeline.java
@@ -22,6 +22,7 @@ public class Pipeline {
public TargetIntersection targetIntersection = TargetIntersection.Up;
public double m = 1;
public double b = 0;
- public boolean isCalibrated = false;
+ public List point = Arrays.asList(0,0);
+ public CalibrationMode calibrationMode = CalibrationMode.None;
public String nickname;
}
diff --git a/Main/src/main/java/com/chameleonvision/vision/process/VisionProcess.java b/Main/src/main/java/com/chameleonvision/vision/process/VisionProcess.java
index f1293a591..eac1772b9 100644
--- a/Main/src/main/java/com/chameleonvision/vision/process/VisionProcess.java
+++ b/Main/src/main/java/com/chameleonvision/vision/process/VisionProcess.java
@@ -1,6 +1,7 @@
package com.chameleonvision.vision.process;
import com.chameleonvision.settings.SettingsManager;
+import com.chameleonvision.vision.CalibrationMode;
import com.chameleonvision.vision.Orientation;
import com.chameleonvision.vision.Pipeline;
import com.chameleonvision.vision.camera.Camera;
@@ -162,15 +163,24 @@ public class VisionProcess implements Runnable {
groupedContours = cvProcess.groupTargets(deSpeckledContours, currentPipeline.targetIntersection, currentPipeline.targetGroup);
if (groupedContours.size() > 0) {
var finalRect = cvProcess.sortTargetsToOne(groupedContours, currentPipeline.sortMode);
- // System.out.printf("Largest Contour Area: %.2f\n", finalRect.size.area());
pipelineResult.RawPoint = finalRect;
pipelineResult.IsValid = true;
- if (!currentPipeline.isCalibrated) {
- pipelineResult.CalibratedX = camera.getCamVals().CenterX;
- pipelineResult.CalibratedY = camera.getCamVals().CenterY;
- } else {
- pipelineResult.CalibratedX = (finalRect.center.y - currentPipeline.b) / currentPipeline.m;
- pipelineResult.CalibratedY = (finalRect.center.x * currentPipeline.m) + currentPipeline.b;
+ switch (currentPipeline.calibrationMode){
+ case None:
+ ///use the center of the camera to find the pitch and yaw difference
+ pipelineResult.CalibratedX = camera.getCamVals().CenterX;
+ pipelineResult.CalibratedY = camera.getCamVals().CenterY;
+ break;
+ case Single:
+ // use the static point as a calibration method instead of the center
+ pipelineResult.CalibratedX = currentPipeline.point.get(0).doubleValue();
+ pipelineResult.CalibratedY = currentPipeline.point.get(1).doubleValue();
+ break;
+ case Dual:
+ // use the calculated line to find the difference in length between the point and the line
+ pipelineResult.CalibratedX = (finalRect.center.y - currentPipeline.b) / currentPipeline.m;
+ pipelineResult.CalibratedY = (finalRect.center.x * currentPipeline.m) + currentPipeline.b;
+ break;
}
pipelineResult.Pitch = camera.getCamVals().CalculatePitch(finalRect.center.y, pipelineResult.CalibratedY);
pipelineResult.Yaw = camera.getCamVals().CalculateYaw(finalRect.center.x, pipelineResult.CalibratedX);
diff --git a/Main/src/main/java/com/chameleonvision/web/Server.java b/Main/src/main/java/com/chameleonvision/web/Server.java
index aab69bf47..56ee93ef2 100644
--- a/Main/src/main/java/com/chameleonvision/web/Server.java
+++ b/Main/src/main/java/com/chameleonvision/web/Server.java
@@ -11,6 +11,7 @@ public class Server {
handler = new ServerHandler();
Javalin app = Javalin.create();
+
app.config.addStaticFiles("web");
app.ws("/websocket", ws -> {
ws.onConnect(ctx -> {
diff --git a/chameleon-client/package-lock.json b/chameleon-client/package-lock.json
index 2beadcea2..963d66adc 100644
--- a/chameleon-client/package-lock.json
+++ b/chameleon-client/package-lock.json
@@ -13493,7 +13493,8 @@
},
"code-point-at": {
"version": "1.1.0",
- "bundled": true
+ "bundled": true,
+ "optional": true
},
"concat-map": {
"version": "0.0.1",
@@ -13502,7 +13503,8 @@
},
"console-control-strings": {
"version": "1.1.0",
- "bundled": true
+ "bundled": true,
+ "optional": true
},
"core-util-is": {
"version": "1.0.2",
@@ -13605,7 +13607,8 @@
},
"inherits": {
"version": "2.0.3",
- "bundled": true
+ "bundled": true,
+ "optional": true
},
"ini": {
"version": "1.3.5",
@@ -13615,6 +13618,7 @@
"is-fullwidth-code-point": {
"version": "1.0.0",
"bundled": true,
+ "optional": true,
"requires": {
"number-is-nan": "^1.0.0"
}
@@ -13640,6 +13644,7 @@
"minipass": {
"version": "2.2.4",
"bundled": true,
+ "optional": true,
"requires": {
"safe-buffer": "^5.1.1",
"yallist": "^3.0.0"
@@ -13656,6 +13661,7 @@
"mkdirp": {
"version": "0.5.1",
"bundled": true,
+ "optional": true,
"requires": {
"minimist": "0.0.8"
}
@@ -13728,7 +13734,8 @@
},
"number-is-nan": {
"version": "1.0.1",
- "bundled": true
+ "bundled": true,
+ "optional": true
},
"object-assign": {
"version": "4.1.1",
@@ -13738,6 +13745,7 @@
"once": {
"version": "1.4.0",
"bundled": true,
+ "optional": true,
"requires": {
"wrappy": "1"
}
@@ -13843,6 +13851,7 @@
"string-width": {
"version": "1.0.2",
"bundled": true,
+ "optional": true,
"requires": {
"code-point-at": "^1.0.0",
"is-fullwidth-code-point": "^1.0.0",
diff --git a/chameleon-client/src/views/CameraViewes/OutputTab.vue b/chameleon-client/src/views/CameraViewes/OutputTab.vue
index 9a983acfd..e3a113486 100644
--- a/chameleon-client/src/views/CameraViewes/OutputTab.vue
+++ b/chameleon-client/src/views/CameraViewes/OutputTab.vue
@@ -5,7 +5,7 @@
@input="handleInput('sortMode',value.sortMode)"/>
Calibrate:
-
@@ -41,8 +41,10 @@ import SingleCalibration from "./OutputViewes/SingleCalibration";
get(){
switch (this.value.calibrationMode) {
case 0:
- return "SingleCalibration";
+ return "";
case 1:
+ return "SingleCalibration";
+ case 2:
return "DualCalibration"
}
return ""
diff --git a/chameleon-client/src/views/CameraViewes/OutputViewes/DualCalibration.vue b/chameleon-client/src/views/CameraViewes/OutputViewes/DualCalibration.vue
index 44e70bcac..6fcbd8dcd 100644
--- a/chameleon-client/src/views/CameraViewes/OutputViewes/DualCalibration.vue
+++ b/chameleon-client/src/views/CameraViewes/OutputViewes/DualCalibration.vue
@@ -49,7 +49,6 @@
sendSlope(m, b, valid) {
this.handleInput('m', m);
this.handleInput('b', b);
- this.handleInput('isCalibrated', valid);
},
clearSlope() {
this.sendSlope(1, 0, false);
diff --git a/chameleon-client/src/views/CameraViewes/OutputViewes/SingleCalibration.vue b/chameleon-client/src/views/CameraViewes/OutputViewes/SingleCalibration.vue
index 06adde264..77ab8eafe 100644
--- a/chameleon-client/src/views/CameraViewes/OutputViewes/SingleCalibration.vue
+++ b/chameleon-client/src/views/CameraViewes/OutputViewes/SingleCalibration.vue
@@ -14,12 +14,13 @@