Added Android UWB code
This commit is contained in:
181
main.qml
181
main.qml
@@ -1,6 +1,7 @@
|
||||
import QtQuick 2.9
|
||||
import QtQuick.Window 2.2
|
||||
import QtQuick.Controls 2.4
|
||||
import QtQuick.Layouts 1.3
|
||||
|
||||
Window {
|
||||
id: window
|
||||
@@ -13,50 +14,87 @@ Window {
|
||||
Column {
|
||||
id: column
|
||||
|
||||
Label {
|
||||
text: "dist1: " + ((mgmt.dist1 ? mgmt.dist1+sld1.value : 0)/1000).toFixed(2);
|
||||
}
|
||||
Label {
|
||||
text: "FTM dist1: " + ((mgmt.dist1 ? mgmt.dist1+sld1.value : 0)/1000).toFixed(2);
|
||||
}
|
||||
|
||||
Label {
|
||||
text: "dist2: " + ((mgmt.dist2 ? mgmt.dist2+sld1.value : 0)/1000).toFixed(2);
|
||||
}
|
||||
Label {
|
||||
text: "FTM dist2: " + ((mgmt.dist2 ? mgmt.dist2+sld1.value : 0)/1000).toFixed(2);
|
||||
}
|
||||
|
||||
Label {
|
||||
text: "dist3: " + ((mgmt.dist3 ? mgmt.dist3+sld1.value : 0)/1000).toFixed(2);
|
||||
}
|
||||
Label {
|
||||
text: "FTM dist3: " + ((mgmt.dist3 ? mgmt.dist3+sld1.value : 0)/1000).toFixed(2);
|
||||
}
|
||||
|
||||
Label {
|
||||
text: "FTM dist4: " + ((mgmt.dist4 ? mgmt.dist4+sld1.value : 0)/1000).toFixed(2);
|
||||
}
|
||||
|
||||
Label {
|
||||
text: "dist4: " + ((mgmt.dist4 ? mgmt.dist4+sld1.value : 0)/1000).toFixed(2);
|
||||
}
|
||||
|
||||
Slider {
|
||||
width: 400;
|
||||
id: sld1;
|
||||
from: -3000;
|
||||
to: 5000;
|
||||
onValueChanged: leCanvas.requestPaint();
|
||||
from: -1000;
|
||||
to: 1000;
|
||||
value: mgmt.offset;
|
||||
onValueChanged: {
|
||||
mgmt.offset = value;
|
||||
leCanvas.requestPaint();
|
||||
}
|
||||
}
|
||||
|
||||
Label {
|
||||
text: "offset: " + sld1.value;
|
||||
}
|
||||
|
||||
Label {
|
||||
text: "UWB dist1: " + mgmt.uwbDist1.toFixed(2);
|
||||
}
|
||||
|
||||
Label {
|
||||
text: "UWB dist2: " + mgmt.uwbDist2.toFixed(2);
|
||||
}
|
||||
|
||||
Label {
|
||||
text: "UWB dist3: " + mgmt.uwbDist3.toFixed(2);
|
||||
}
|
||||
|
||||
Label {
|
||||
text: "UWB dist4: " + mgmt.uwbDist4.toFixed(2);
|
||||
}
|
||||
|
||||
|
||||
Connections {
|
||||
target: mgmt
|
||||
onDistChanged: leCanvas.requestPaint();
|
||||
}
|
||||
|
||||
|
||||
Button {
|
||||
text: "party hard";
|
||||
onClicked: mgmt.trigger();
|
||||
}
|
||||
RowLayout {
|
||||
Button {
|
||||
text: "party hard";
|
||||
onClicked: mgmt.trigger();
|
||||
}
|
||||
|
||||
Button {
|
||||
text: "stop"
|
||||
onClicked: mgmt.stop();
|
||||
Button {
|
||||
text: "stop"
|
||||
onClicked: mgmt.stop();
|
||||
}
|
||||
Button {
|
||||
text: "reset sld"
|
||||
onClicked: {
|
||||
sld1.value = 0;
|
||||
}
|
||||
}
|
||||
Button {
|
||||
text: "High Five"
|
||||
onClicked: {
|
||||
mgmt.manualCheckpoint();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
Canvas {
|
||||
@@ -74,14 +112,17 @@ Window {
|
||||
readonly property double s: 0.02;
|
||||
|
||||
|
||||
function leArc(ctx, cx, cy, dist, stdDev) {
|
||||
function leArc(ctx, cx, cy, dist, stdDev, caption) {
|
||||
|
||||
// center circle
|
||||
ctx.fillStyle = "#000000";
|
||||
ctx.fillStyle = (dist < 0 ? "#FF0000" : "#000000");
|
||||
ctx.beginPath();
|
||||
ctx.arc(cx*s, cy*s, 2, 0, 360);
|
||||
ctx.fill();
|
||||
|
||||
ctx.font = "12px Arial";
|
||||
ctx.fillText(caption, cx*s, cy*s);
|
||||
|
||||
// error circle
|
||||
// ctx.beginPath();
|
||||
// ctx.arc(cx*s, cy*s, (dist+sld1.value)*s, 0, 360);
|
||||
@@ -91,12 +132,13 @@ Window {
|
||||
// ctx.stroke();
|
||||
|
||||
// circle
|
||||
ctx.lineWidth = 1;
|
||||
ctx.strokeStyle = "#aa000000";
|
||||
ctx.beginPath();
|
||||
ctx.arc(cx*s, cy*s, (dist+sld1.value)*s, 0, 360);
|
||||
ctx.stroke();
|
||||
|
||||
if (dist > 0) {
|
||||
ctx.lineWidth = 1;
|
||||
ctx.strokeStyle = "#aa000000";
|
||||
ctx.beginPath();
|
||||
ctx.arc(cx*s, cy*s, dist*s, 0, 360);
|
||||
ctx.stroke();
|
||||
}
|
||||
}
|
||||
|
||||
onPaint: {
|
||||
@@ -110,53 +152,68 @@ Window {
|
||||
//ctx.strokeStyle = Qt.rgba(0, 0, 0, 1)
|
||||
//ctx.lineWidth = 1
|
||||
|
||||
var ox = 4000;
|
||||
var oy = 4000;
|
||||
// var ox = 4000;
|
||||
// var oy = 4000;
|
||||
|
||||
var cx1 = ox+0;
|
||||
var cy1 = oy+0;
|
||||
// var cx1 = ox+0;
|
||||
// var cy1 = oy+0;
|
||||
|
||||
var cx2 = ox+0;
|
||||
var cy2 = oy+7250;
|
||||
// var cx2 = ox+0;
|
||||
// var cy2 = oy+7250;
|
||||
|
||||
var cx3 = ox+9000;
|
||||
var cy3 = oy+7250;
|
||||
// var cx3 = ox+9000;
|
||||
// var cy3 = oy+7250;
|
||||
|
||||
var cx4 = ox+9000;
|
||||
var cy4 = oy+0;
|
||||
// var cx4 = ox+9000;
|
||||
// var cy4 = oy+0;
|
||||
|
||||
leArc(ctx, cx1, cy1, mgmt.dist1, mgmt.stdDev1);
|
||||
leArc(ctx, cx2, cy2, mgmt.dist2, mgmt.stdDev2);
|
||||
leArc(ctx, cx3, cy3, mgmt.dist3, mgmt.stdDev3);
|
||||
leArc(ctx, cx4, cy4, mgmt.dist4, mgmt.stdDev4);
|
||||
var ox = 4000;
|
||||
var oy = 4000;
|
||||
|
||||
var cx1 = ox+0;
|
||||
var cy1 = oy+0;
|
||||
|
||||
var cx2 = ox+9000;
|
||||
var cy2 = oy+0;
|
||||
|
||||
var cx3 = ox+9000;
|
||||
var cy3 = oy+6200;
|
||||
|
||||
var cx4 = ox+0;
|
||||
var cy4 = oy+6200;
|
||||
|
||||
leArc(ctx, cx1, cy1, mgmt.dist1, mgmt.stdDev1, 1);
|
||||
leArc(ctx, cx2, cy2, mgmt.dist2, mgmt.stdDev2, 2);
|
||||
leArc(ctx, cx3, cy3, mgmt.dist3, mgmt.stdDev3, 3);
|
||||
leArc(ctx, cx4, cy4, mgmt.dist4, mgmt.stdDev4, 4);
|
||||
|
||||
var sigma = 2000;
|
||||
var stepSize = 333;
|
||||
|
||||
var maxP = Math.pow( 1.0 / Math.sqrt(2*Math.PI*sigma), 4.1);
|
||||
|
||||
for (var y = 0; y < leCanvas.height/s; y += stepSize) {
|
||||
for (var x = 0; x < leCanvas.width/s; x += stepSize) {
|
||||
// for (var y = 0; y < leCanvas.height/s; y += stepSize) {
|
||||
// for (var x = 0; x < leCanvas.width/s; x += stepSize) {
|
||||
|
||||
var d1 = Math.sqrt( Math.pow(x-cx1, 2) + Math.pow(y-cy1, 2) ) - (mgmt.dist1-sld1.value);
|
||||
var d2 = Math.sqrt( Math.pow(x-cx2, 2) + Math.pow(y-cy2, 2) ) - (mgmt.dist2-sld1.value);
|
||||
var d3 = Math.sqrt( Math.pow(x-cx3, 2) + Math.pow(y-cy3, 2) ) - (mgmt.dist3-sld1.value);
|
||||
var d4 = Math.sqrt( Math.pow(x-cx4, 2) + Math.pow(y-cy4, 2) ) - (mgmt.dist4-sld1.value);
|
||||
// var d1 = Math.sqrt( Math.pow(x-cx1, 2) + Math.pow(y-cy1, 2) ) - (mgmt.dist1-sld1.value);
|
||||
// var d2 = Math.sqrt( Math.pow(x-cx2, 2) + Math.pow(y-cy2, 2) ) - (mgmt.dist2-sld1.value);
|
||||
// var d3 = Math.sqrt( Math.pow(x-cx3, 2) + Math.pow(y-cy3, 2) ) - (mgmt.dist3-sld1.value);
|
||||
// var d4 = Math.sqrt( Math.pow(x-cx4, 2) + Math.pow(y-cy4, 2) ) - (mgmt.dist4-sld1.value);
|
||||
|
||||
var p = 1;
|
||||
p *= 1.0 / Math.sqrt(2*Math.PI*sigma) * Math.exp( - d1*d1/(2*sigma*sigma) );
|
||||
p *= 1.0 / Math.sqrt(2*Math.PI*sigma) * Math.exp( - d2*d2/(2*sigma*sigma) );
|
||||
p *= 1.0 / Math.sqrt(2*Math.PI*sigma) * Math.exp( - d3*d3/(2*sigma*sigma) );
|
||||
p *= 1.0 / Math.sqrt(2*Math.PI*sigma) * Math.exp( - d4*d4/(2*sigma*sigma) );
|
||||
// var p = 1;
|
||||
// p *= 1.0 / Math.sqrt(2*Math.PI*sigma) * Math.exp( - d1*d1/(2*sigma*sigma) );
|
||||
// p *= 1.0 / Math.sqrt(2*Math.PI*sigma) * Math.exp( - d2*d2/(2*sigma*sigma) );
|
||||
// p *= 1.0 / Math.sqrt(2*Math.PI*sigma) * Math.exp( - d3*d3/(2*sigma*sigma) );
|
||||
// p *= 1.0 / Math.sqrt(2*Math.PI*sigma) * Math.exp( - d4*d4/(2*sigma*sigma) );
|
||||
|
||||
//p = Math.pow(p, 1);
|
||||
// //p = Math.pow(p, 1);
|
||||
|
||||
if (p > maxP / 50) {
|
||||
ctx.fillStyle = Qt.rgba(1,0,0, p/maxP);
|
||||
ctx.fillRect(x*s, y*s, stepSize*s, stepSize*s);
|
||||
}
|
||||
}
|
||||
}
|
||||
// if (p > maxP / 50) {
|
||||
// ctx.fillStyle = Qt.rgba(1,0,0, p/maxP);
|
||||
// ctx.fillRect(x*s, y*s, stepSize*s, stepSize*s);
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user