implements chart for ublox accuracy and distance between ublox and smartphone pos. in fullreplay
This commit is contained in:
parent
e74f0fd895
commit
ec11f2541d
@ -1,30 +1,30 @@
|
||||
var arrayTCP = [];
|
||||
var arraySERIAL = [];
|
||||
let allAccSerial = []
|
||||
let allSerialCoords = []
|
||||
|
||||
var ctx = document.getElementById('accChart').getContext('2d');
|
||||
var accChart = new Chart(ctx, {
|
||||
type: 'line',
|
||||
data: {
|
||||
labels: new Array(),
|
||||
labels: [],
|
||||
datasets: [{
|
||||
label: 'Ublox VAcc',
|
||||
backgroundColor: 'rgba(214, 69, 65, 1)',
|
||||
borderColor: 'rgba(214, 69, 65, 1)',
|
||||
label: 'Ublox Horizontal acc. (m)',
|
||||
backgroundColor: 'rgba(255, 255, 255, 1)',
|
||||
borderColor: 'rgba(255, 255, 255, 1)',
|
||||
borderWidth: 1,
|
||||
fill: false,
|
||||
pointRadius: 1,
|
||||
pointRadius: 0.5,
|
||||
lineTension: 0.5,
|
||||
data: arraySERIAL
|
||||
data: []
|
||||
},
|
||||
{
|
||||
label: 'Smartphone VAcc',
|
||||
backgroundColor: 'rgba(30, 139, 195, 1)',
|
||||
borderColor: 'rgba(30, 139, 195, 1)',
|
||||
label: 'Distance Ublox - Smartphone (m)',
|
||||
backgroundColor: 'rgba(30, 130, 76, 1)',
|
||||
borderColor: 'rgba(30, 130, 76, 1)',
|
||||
borderWidth: 1,
|
||||
fill: false,
|
||||
pointRadius: 1,
|
||||
pointRadius: 0.5,
|
||||
lineTension: 0.5,
|
||||
data: arrayTCP
|
||||
data: []
|
||||
}]
|
||||
},
|
||||
options: {
|
||||
@ -32,7 +32,7 @@ var accChart = new Chart(ctx, {
|
||||
yAxes: [{
|
||||
ticks: {
|
||||
min: 0,
|
||||
max: 10,
|
||||
max: 20,
|
||||
}
|
||||
}],
|
||||
xAxes: [{
|
||||
@ -48,56 +48,62 @@ var accChart = new Chart(ctx, {
|
||||
}
|
||||
});
|
||||
|
||||
/*function addSerialSpeedData() {
|
||||
let speeds = []
|
||||
function addSerialHAccData(){
|
||||
|
||||
}
|
||||
|
||||
function addDistances(tcpDataList, serialDataList){
|
||||
let tcpCoords = []
|
||||
let serialCoords = []
|
||||
|
||||
let tcpTimes = []
|
||||
let serialHAccs = []
|
||||
let distances = []
|
||||
|
||||
indexes.forEach(index => {
|
||||
speeds.push((allSpeedsSerial[index] * 3.6).toFixed(2))
|
||||
serialHAccs.push(allAccSerial[index].toFixed(2))
|
||||
serialCoords.push(allSerialCoords[index])
|
||||
})
|
||||
accChart.data.datasets[0].data = speeds;
|
||||
accChart.update();
|
||||
}*/
|
||||
|
||||
/*
|
||||
function addTCPSpeedData(sensordataList) {
|
||||
let speedsTCP = []
|
||||
let times = []
|
||||
tcpDataList.forEach(sensordata => {
|
||||
if (!(sensordata.Position[0] === 0) && !(sensordata.Position[1] === 0)) {
|
||||
let tcpCoord = [sensordata.Position[1], sensordata.Position[0]]
|
||||
tcpCoords.push(tcpCoord)
|
||||
|
||||
sensordataList.forEach(sensordata => {
|
||||
if (sensordata.Speed === 0) {
|
||||
return;
|
||||
}
|
||||
let speed = sensordata.Speed
|
||||
speedsTCP.push((speed * 3.6).toFixed(2));
|
||||
let time = sensordata.Servertime
|
||||
times.push(time)
|
||||
|
||||
})
|
||||
accChart.data.labels = times;
|
||||
accChart.data.datasets[1].data = speedsTCP;
|
||||
|
||||
accChart.update();
|
||||
}
|
||||
|
||||
function findSerialDataIndex(tcpdataList, serialdataList) {
|
||||
let allSerialTimes = []
|
||||
|
||||
serialdataList.forEach(sensordata => {
|
||||
if (!(sensordata.Speed === 0)) {
|
||||
let serialTimestamp;
|
||||
allSpeedsSerial.push(sensordata.Speed)
|
||||
serialTimestamp = composeServertime(sensordata.Servertime)
|
||||
allSerialTimes.push(serialTimestamp)
|
||||
tcpTimes.push(time)
|
||||
}
|
||||
})
|
||||
|
||||
tcpdataList.forEach(sensordata => {
|
||||
if (!(sensordata.Speed === 0)) {
|
||||
let tcpTimestamp = composeServertime(sensordata.Servertime)
|
||||
let index = findBestTimeMatch(tcpTimestamp, allSerialTimes)[1]
|
||||
|
||||
indexes.push(index)
|
||||
for(let i = 0; i < tcpCoords.length; i++){
|
||||
let distance = distanceInMetersBetweenEarthCoordinates
|
||||
(serialCoords[i][1],serialCoords[i][0],tcpCoords[i][1],tcpCoords[i][0])
|
||||
distances.push(distance)
|
||||
}
|
||||
|
||||
console.log("distances: " + distances)
|
||||
|
||||
accChart.data.labels = tcpTimes
|
||||
accChart.data.datasets[0].data = serialHAccs
|
||||
accChart.data.datasets[1].data = distances
|
||||
accChart.update()
|
||||
}
|
||||
|
||||
function degreesToRadians(degrees) {
|
||||
return degrees * Math.PI / 180;
|
||||
}
|
||||
|
||||
function distanceInMetersBetweenEarthCoordinates(lat1, lon1, lat2, lon2) {
|
||||
var earthRadiusKm = 6371
|
||||
|
||||
var dLat = degreesToRadians(lat2-lat1)
|
||||
var dLon = degreesToRadians(lon2-lon1)
|
||||
|
||||
lat1 = degreesToRadians(lat1)
|
||||
lat2 = degreesToRadians(lat2)
|
||||
|
||||
var a = Math.sin(dLat/2) * Math.sin(dLat/2) +
|
||||
Math.sin(dLon/2) * Math.sin(dLon/2) * Math.cos(lat1) * Math.cos(lat2)
|
||||
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a))
|
||||
return (earthRadiusKm * c) * 1000
|
||||
}
|
||||
})
|
||||
console.log("indexes: " + indexes)
|
||||
}*/
|
||||
|
||||
@ -1,5 +1,4 @@
|
||||
let allSpeedsSerial = []
|
||||
let indexes = []
|
||||
|
||||
var ctx = document.getElementById('speedChart').getContext('2d');
|
||||
var speedChart = new Chart(ctx, {
|
||||
@ -14,7 +13,7 @@ var speedChart = new Chart(ctx, {
|
||||
fill: false,
|
||||
pointRadius: 1,
|
||||
lineTension: 0.5,
|
||||
data: arraySERIAL
|
||||
data: []
|
||||
},
|
||||
{
|
||||
label: 'Smartphone speed',
|
||||
@ -24,7 +23,7 @@ var speedChart = new Chart(ctx, {
|
||||
fill: false,
|
||||
pointRadius: 1,
|
||||
lineTension: 0.5,
|
||||
data: arrayTCP
|
||||
data: []
|
||||
}]
|
||||
},
|
||||
options: {
|
||||
@ -78,26 +77,3 @@ function addTCPSpeedData(sensordataList) {
|
||||
|
||||
speedChart.update();
|
||||
}
|
||||
|
||||
function findSerialDataIndex(tcpdataList, serialdataList) {
|
||||
let allSerialTimes = []
|
||||
|
||||
serialdataList.forEach(sensordata => {
|
||||
if (!(sensordata.Speed === 0)) {
|
||||
let serialTimestamp;
|
||||
allSpeedsSerial.push(sensordata.Speed)
|
||||
serialTimestamp = composeServertime(sensordata.Servertime)
|
||||
allSerialTimes.push(serialTimestamp)
|
||||
}
|
||||
})
|
||||
|
||||
tcpdataList.forEach(sensordata => {
|
||||
if (!(sensordata.Speed === 0)) {
|
||||
let tcpTimestamp = composeServertime(sensordata.Servertime)
|
||||
let index = findBestTimeMatch(tcpTimestamp, allSerialTimes)[1]
|
||||
|
||||
indexes.push(index)
|
||||
}
|
||||
})
|
||||
console.log("indexes: " + indexes)
|
||||
}
|
||||
@ -1,4 +1,5 @@
|
||||
var trackingdata = null;
|
||||
let indexes
|
||||
|
||||
function composeServertime(servertime){
|
||||
var composed;
|
||||
@ -6,6 +7,13 @@ function composeServertime(servertime){
|
||||
return composed;
|
||||
}
|
||||
|
||||
function calculateDistSerialTCP(coordsSerial, coordsTCP) {
|
||||
let long = Math.abs(coordsSerial[0] - coordsTCP[0])
|
||||
let lat = Math.abs(coordsSerial[1] - coordsTCP[1])
|
||||
let squareDist = Math.pow(long, 2) + Math.pow(lat, 2)
|
||||
return (Math.sqrt(squareDist))
|
||||
}
|
||||
|
||||
function findBestTimeMatch(num, arr) {
|
||||
var mid;
|
||||
var lo = 0;
|
||||
@ -24,6 +32,30 @@ function findBestTimeMatch(num, arr) {
|
||||
return [arr[hi], hi];
|
||||
}
|
||||
|
||||
function findSerialDataIndex(tcpdataList, serialdataList) {
|
||||
let allSerialTimes = []
|
||||
|
||||
serialdataList.forEach(sensordata => {
|
||||
if (!(sensordata.Speed === 0) && !(sensordata.HAcc === 0)) {
|
||||
let serialTimestamp;
|
||||
allSpeedsSerial.push(sensordata.Speed)
|
||||
allAccSerial.push(sensordata.HAcc)
|
||||
allSerialCoords.push([sensordata.Position[1], sensordata.Position[0]])
|
||||
serialTimestamp = composeServertime(sensordata.Servertime)
|
||||
allSerialTimes.push(serialTimestamp)
|
||||
}
|
||||
})
|
||||
|
||||
tcpdataList.forEach(sensordata => {
|
||||
if (!(sensordata.Speed === 0)) {
|
||||
let tcpTimestamp = composeServertime(sensordata.Servertime)
|
||||
let index = findBestTimeMatch(tcpTimestamp, allSerialTimes)[1]
|
||||
|
||||
indexes.push(index)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
window.addEventListener("load", function(evt) {
|
||||
//------------------------Buttons------------------------------
|
||||
|
||||
@ -52,6 +84,11 @@ window.addEventListener("load", function(evt) {
|
||||
};
|
||||
|
||||
document.getElementById("replaystarten").onclick = function(evt) {
|
||||
indexes = []
|
||||
allSpeedsSerial = []
|
||||
allAccSerial = []
|
||||
allSerialCoords = []
|
||||
|
||||
let sel = document.getElementById("meas")
|
||||
console.log(trackings[sel.selectedIndex].UUID)
|
||||
fetch(`http://localhost:3011/trackings/${trackings[sel.selectedIndex].UUID}`, { method: 'GET'}).then(results => {
|
||||
@ -59,7 +96,10 @@ window.addEventListener("load", function(evt) {
|
||||
}).then(r => {
|
||||
console.log(r.data.Data)
|
||||
console.log(r.data)
|
||||
if('SOURCE_TCP' in r.data.Data && r.data.Data.SOURCE_TCP.length > 0 && 'SOURCE_SERIAL' in r.data.Data && r.data.Data.SOURCE_SERIAL.length > 0){
|
||||
findSerialDataIndex(r.data.Data.SOURCE_TCP, r.data.Data.SOURCE_SERIAL)
|
||||
addDistances(r.data.Data.SOURCE_TCP, r.data.Data.SOURCE_SERIAL)
|
||||
}
|
||||
if ('SOURCE_TCP' in r.data.Data && r.data.Data.SOURCE_TCP.length > 0) {
|
||||
updateMapTCPbulk(r.data.Data.SOURCE_TCP)
|
||||
addTCPSpeedData(r.data.Data.SOURCE_TCP)
|
||||
@ -67,6 +107,7 @@ window.addEventListener("load", function(evt) {
|
||||
if ('SOURCE_SERIAL' in r.data.Data && r.data.Data.SOURCE_SERIAL.length > 0) {
|
||||
updateMapSERIALbulk(r.data.Data.SOURCE_SERIAL)
|
||||
addSerialSpeedData()
|
||||
addSerialHAccData()
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user