xxxxxxxxxx
186
var ble = new Orphe(0);
var myChart;
var myChart_dtw;
const data = {
acc: {
labels: [],
datasets: [
{
label: "Acc X",
backgroundColor: "rgb(255, 96, 64)",
borderColor: "rgb(255, 96, 64)",
pointRadius: 1.0,
data: [],
},
{
label: "Acc Y",
backgroundColor: "rgb(69,230, 230)",
borderColor: "rgb(69,230,230)",
pointRadius: 1.0,
data: [],
},
{
label: "Acc Z",
backgroundColor: "rgb(28,28,28)",
borderColor: "rgb(28,28,28)",
pointRadius: 1.0,
data: [],
},
],
},
dtw: {
labels: [],
datasets: [
{
label: "swipe left",
backgroundColor: "rgb(255, 96, 64)",
borderColor: "rgb(255, 96, 64)",
pointRadius: 1.0,
data: [],
},
{
label: "swipe right",
backgroundColor: "rgb(69,230, 230)",
borderColor: "rgb(69,230, 230)",
pointRadius: 1.0,
data: [],
},
],
},
};
const config = {
acc: {
type: "line",
data: data.acc,
options: {
animation: false,
scales: {
y: {
min: -2,
max: 2,
},
},
},
},
dtw: {
type: "line",
data: data.dtw,
options: {
animation: false,
scales: {
y: {
min: 0,
max: 10,
},
},
},
},
};
var acc_count = 0;
var is_recording = false;
var right_swipe = [
-0.094970703125,
-0.44207763671875,
-0.44769287109375,
-0.18304443359375,
0.2933349609375,
0.7843017578125,
0.6766357421875,
0.38458251953125,
0.1719970703125,
0.010009765625,
];
var left_swipe = [
0.00775146484375,
-0.0001220703125,
-0.01397705078125,
-0.0283203125,
0.04229736328125,
0.0860595703125,
0.51739501953125,
0.86090087890625,
-0.21002197265625,
-0.75628662109375,
-0.34423828125,
-0.2457275390625,
-0.03729248046875,
];
var distFunc = function (a, b) {
return Math.abs(a - b);
};
var inputs = [];
var inputs_record = [];
function setup() {
myChart = new Chart(document.getElementById("myChart"), config.acc);
myChart_dtw = new Chart(document.getElementById("myChart_dtw"), config.dtw);
// ORPHE CORE Init
ble.setup();
ble.gotAcc = function (_acc) {
while (myChart.data.labels.length > 100) {
myChart.data.labels.shift();
}
myChart.data.labels.push(acc_count);
myChart.update();
while (myChart.data.datasets[0].data.length > 100) {
myChart.data.datasets[0].data.shift();
myChart.data.datasets[1].data.shift();
myChart.data.datasets[2].data.shift();
}
myChart.data.datasets[0].data.push(_acc.x);
myChart.data.datasets[1].data.push(_acc.y);
myChart.data.datasets[2].data.push(_acc.z);
myChart.update();
acc_count++;
if (is_recording) {
inputs_record.push(_acc.x);
}
inputs.push(_acc.x);
myChart_dtw.data.labels.push(acc_count);
var dtw = new DynamicTimeWarping(inputs, left_swipe, distFunc);
myChart_dtw.data.datasets[0].data.push(dtw.getDistance());
if (dtw.getDistance() < 2.0) {
console.log("left:", dtw.getDistance());
document.querySelector('#result').innerText = "LEFT";
}
while (inputs.length > 15) {
inputs.shift();
}
dtw = new DynamicTimeWarping(inputs, right_swipe, distFunc);
myChart_dtw.data.datasets[1].data.push(dtw.getDistance());
if (dtw.getDistance() < 2.0) {
console.log("right:", dtw.getDistance());
document.querySelector('#result').innerText = "RIGHT";
}
while (myChart_dtw.data.labels.length > 200) {
myChart_dtw.data.labels.shift();
myChart_dtw.data.datasets[0].data.shift();
myChart_dtw.data.datasets[1].data.shift();
}
myChart_dtw.update();
};
noCanvas();
}
// spaceキーを押している間だけacc.xを配列に保存する
function keyPressed() {
if (key == " ") {
is_recording = true;
inputs_record = [];
}
}
function keyReleased() {
if (key == " ") {
is_recording = false;
console.log(inputs_record);
}
}