RAW sensor data plot tab
parent
0c9d29487a
commit
a8c76cf278
|
@ -627,13 +627,28 @@ a:hover {
|
||||||
|
|
||||||
border: 1px dotted silver;
|
border: 1px dotted silver;
|
||||||
}
|
}
|
||||||
|
.tab-sensors {
|
||||||
|
}
|
||||||
|
.tab-sensors #gyro {
|
||||||
|
height: 120px;
|
||||||
|
}
|
||||||
|
.tab-sensors #accel {
|
||||||
|
height: 120px;
|
||||||
|
}
|
||||||
|
.tab-sensors #mag {
|
||||||
|
height: 120px;
|
||||||
|
}
|
||||||
|
.tab-sensors #baro {
|
||||||
|
height: 120px;
|
||||||
|
}
|
||||||
|
|
||||||
/* Flotr related styles */
|
/* Flotr related styles */
|
||||||
.flotr-legend {
|
.flotr-legend {
|
||||||
padding: 2px;
|
padding: 2px;
|
||||||
left: 31px;
|
margin-left: 31px;
|
||||||
top: 20px;
|
top: 20px;
|
||||||
border: 0;
|
border: 0;
|
||||||
|
|
||||||
background-color: white;
|
background-color: white;
|
||||||
|
opacity: 0.5;
|
||||||
}
|
}
|
|
@ -45,4 +45,6 @@ function disable_timers() {
|
||||||
|
|
||||||
// kill all the refferences
|
// kill all the refferences
|
||||||
timers = [];
|
timers = [];
|
||||||
|
|
||||||
|
return true;
|
||||||
}
|
}
|
|
@ -405,15 +405,15 @@ function process_message(code, data) {
|
||||||
sensor_status(CONFIG.activeSensors);
|
sensor_status(CONFIG.activeSensors);
|
||||||
break;
|
break;
|
||||||
case MSP_codes.MSP_RAW_IMU:
|
case MSP_codes.MSP_RAW_IMU:
|
||||||
SENSOR_DATA.accelerometer[0] = view.getInt16(0, 1);
|
SENSOR_DATA.accelerometer[0] = view.getInt16(0, 1) / 1000; // properly scaled
|
||||||
SENSOR_DATA.accelerometer[1] = view.getInt16(2, 1);
|
SENSOR_DATA.accelerometer[1] = view.getInt16(2, 1) / 1000;
|
||||||
SENSOR_DATA.accelerometer[2] = view.getInt16(4, 1);
|
SENSOR_DATA.accelerometer[2] = view.getInt16(4, 1) / 1000;
|
||||||
|
|
||||||
SENSOR_DATA.gyroscope[0] = view.getInt16(6, 1) / 8;
|
SENSOR_DATA.gyroscope[0] = view.getInt16(6, 1) / 8; // no clue about scaling factor
|
||||||
SENSOR_DATA.gyroscope[1] = view.getInt16(8, 1) / 8;
|
SENSOR_DATA.gyroscope[1] = view.getInt16(8, 1) / 8;
|
||||||
SENSOR_DATA.gyroscope[2] = view.getInt16(10, 1) / 8;
|
SENSOR_DATA.gyroscope[2] = view.getInt16(10, 1) / 8;
|
||||||
|
|
||||||
SENSOR_DATA.magnetometer[0] = view.getInt16(12, 1) / 3;
|
SENSOR_DATA.magnetometer[0] = view.getInt16(12, 1) / 3; // no clue about scaling factor
|
||||||
SENSOR_DATA.magnetometer[1] = view.getInt16(14, 1) / 3;
|
SENSOR_DATA.magnetometer[1] = view.getInt16(14, 1) / 3;
|
||||||
SENSOR_DATA.magnetometer[2] = view.getInt16(16, 1) / 3;
|
SENSOR_DATA.magnetometer[2] = view.getInt16(16, 1) / 3;
|
||||||
break;
|
break;
|
||||||
|
@ -463,7 +463,7 @@ function process_message(code, data) {
|
||||||
SENSOR_DATA.kinematicsZ = view.getInt16(4, 1);
|
SENSOR_DATA.kinematicsZ = view.getInt16(4, 1);
|
||||||
break;
|
break;
|
||||||
case MSP_codes.MSP_ALTITUDE:
|
case MSP_codes.MSP_ALTITUDE:
|
||||||
SENSOR_DATA.altitude = view.getUint32(0, 1);
|
SENSOR_DATA.altitude = view.getUint32(0, 1) / 100.0; // correct scale factor
|
||||||
break;
|
break;
|
||||||
case MSP_codes.MSP_BAT:
|
case MSP_codes.MSP_BAT:
|
||||||
console.log(data);
|
console.log(data);
|
||||||
|
|
|
@ -29,6 +29,7 @@ function tab_initialize_receiver() {
|
||||||
e_RX_plot = document.getElementById("RX_plot");
|
e_RX_plot = document.getElementById("RX_plot");
|
||||||
|
|
||||||
RX_plot_options = {
|
RX_plot_options = {
|
||||||
|
title: "Channel width (us)",
|
||||||
shadowSize: 0,
|
shadowSize: 0,
|
||||||
yaxis : {
|
yaxis : {
|
||||||
max: 2200,
|
max: 2200,
|
||||||
|
@ -41,6 +42,7 @@ function tab_initialize_receiver() {
|
||||||
backgroundColor: "#FFFFFF"
|
backgroundColor: "#FFFFFF"
|
||||||
},
|
},
|
||||||
legend : {
|
legend : {
|
||||||
|
position: "we",
|
||||||
backgroundOpacity: 0
|
backgroundOpacity: 0
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,3 +1,6 @@
|
||||||
<div class="tab-sensors">
|
<div class="tab-sensors">
|
||||||
Hello Sensors.
|
<div id="gyro"></div>
|
||||||
|
<div id="accel"></div>
|
||||||
|
<div id="mag"></div>
|
||||||
|
<div id="baro"></div>
|
||||||
</div>
|
</div>
|
181
tabs/sensors.js
181
tabs/sensors.js
|
@ -1,8 +1,187 @@
|
||||||
function tab_initialize_sensors() {
|
function tab_initialize_sensors() {
|
||||||
|
// Setup variables
|
||||||
|
samples_i = 300;
|
||||||
|
|
||||||
|
gyro_data = new Array(3);
|
||||||
|
accel_data = new Array(3);
|
||||||
|
mag_data = new Array(3);
|
||||||
|
baro_data = new Array(1);
|
||||||
|
|
||||||
|
gyro_data[0] = new Array();
|
||||||
|
gyro_data[1] = new Array();
|
||||||
|
gyro_data[2] = new Array();
|
||||||
|
|
||||||
|
accel_data[0] = new Array();
|
||||||
|
accel_data[1] = new Array();
|
||||||
|
accel_data[2] = new Array();
|
||||||
|
|
||||||
|
mag_data[0] = new Array();
|
||||||
|
mag_data[1] = new Array();
|
||||||
|
mag_data[2] = new Array();
|
||||||
|
|
||||||
|
baro_data[0] = new Array();
|
||||||
|
|
||||||
|
for (var i = 0; i <= 300; i++) {
|
||||||
|
gyro_data[0].push([i, 0]);
|
||||||
|
gyro_data[1].push([i, 0]);
|
||||||
|
gyro_data[2].push([i, 0]);
|
||||||
|
|
||||||
|
accel_data[0].push([i, 0]);
|
||||||
|
accel_data[1].push([i, 0]);
|
||||||
|
accel_data[2].push([i, 0]);
|
||||||
|
|
||||||
|
mag_data[0].push([i, 0]);
|
||||||
|
mag_data[1].push([i, 0]);
|
||||||
|
mag_data[2].push([i, 0]);
|
||||||
|
|
||||||
|
baro_data[0].push([i, 0]);
|
||||||
|
}
|
||||||
|
|
||||||
|
// plot specific stuff
|
||||||
|
e_graph_gyro = document.getElementById("gyro");
|
||||||
|
e_graph_accel = document.getElementById("accel");
|
||||||
|
e_graph_mag = document.getElementById("mag");
|
||||||
|
e_graph_baro = document.getElementById("baro");
|
||||||
|
|
||||||
|
gyro_options = {
|
||||||
|
title: "Gyroscope (deg/s)",
|
||||||
|
shadowSize: 0,
|
||||||
|
yaxis : {
|
||||||
|
tickDecimals: 0,
|
||||||
|
max: 150,
|
||||||
|
min: -150
|
||||||
|
},
|
||||||
|
xaxis : {
|
||||||
|
//noTicks = 0
|
||||||
|
},
|
||||||
|
grid : {
|
||||||
|
backgroundColor: "#FFFFFF"
|
||||||
|
},
|
||||||
|
legend : {
|
||||||
|
position: "we",
|
||||||
|
backgroundOpacity: 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
accel_options = {
|
||||||
|
title: "Accelerometer (g)",
|
||||||
|
shadowSize: 0,
|
||||||
|
yaxis : {
|
||||||
|
tickDecimals: 1,
|
||||||
|
max : 1.5,
|
||||||
|
min : -1.5
|
||||||
|
},
|
||||||
|
xaxis : {
|
||||||
|
//noTicks = 0
|
||||||
|
},
|
||||||
|
grid : {
|
||||||
|
backgroundColor : "#FFFFFF"
|
||||||
|
},
|
||||||
|
legend : {
|
||||||
|
position: "we",
|
||||||
|
backgroundOpacity: 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
mag_options = {
|
||||||
|
title: "Magnetometer (Ga)",
|
||||||
|
shadowSize: 0,
|
||||||
|
yaxis : {
|
||||||
|
tickDecimals: 0,
|
||||||
|
max : 120,
|
||||||
|
min : -120
|
||||||
|
},
|
||||||
|
xaxis : {
|
||||||
|
//noTicks = 0
|
||||||
|
},
|
||||||
|
grid : {
|
||||||
|
backgroundColor : "#FFFFFF"
|
||||||
|
},
|
||||||
|
legend : {
|
||||||
|
position: "we",
|
||||||
|
backgroundOpacity: 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
baro_options = {
|
||||||
|
title: "Barometer (m)",
|
||||||
|
shadowSize: 0,
|
||||||
|
yaxis : {
|
||||||
|
tickDecimals: 1,
|
||||||
|
/*
|
||||||
|
max : 1.5,
|
||||||
|
min : -1.5
|
||||||
|
*/
|
||||||
|
},
|
||||||
|
xaxis : {
|
||||||
|
//noTicks = 0
|
||||||
|
},
|
||||||
|
grid : {
|
||||||
|
backgroundColor : "#FFFFFF"
|
||||||
|
},
|
||||||
|
legend : {
|
||||||
|
position: "we",
|
||||||
|
backgroundOpacity: 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// start polling data
|
||||||
|
timers.push(setInterval(sensor_array_pull, 50));
|
||||||
}
|
}
|
||||||
|
|
||||||
function sensor_array_pull() {
|
function sensor_array_pull() {
|
||||||
// Update UI
|
// push data to the main array
|
||||||
|
gyro_data[0].push([samples_i, SENSOR_DATA.gyroscope[0]]);
|
||||||
|
gyro_data[1].push([samples_i, SENSOR_DATA.gyroscope[1]]);
|
||||||
|
gyro_data[2].push([samples_i, SENSOR_DATA.gyroscope[2]]);
|
||||||
|
|
||||||
|
accel_data[0].push([samples_i, SENSOR_DATA.accelerometer[0]]);
|
||||||
|
accel_data[1].push([samples_i, SENSOR_DATA.accelerometer[1]]);
|
||||||
|
accel_data[2].push([samples_i, SENSOR_DATA.accelerometer[2]]);
|
||||||
|
|
||||||
|
mag_data[0].push([samples_i, SENSOR_DATA.magnetometer[0]]);
|
||||||
|
mag_data[1].push([samples_i, SENSOR_DATA.magnetometer[1]]);
|
||||||
|
mag_data[2].push([samples_i, SENSOR_DATA.magnetometer[2]]);
|
||||||
|
|
||||||
|
baro_data[0].push([samples_i, SENSOR_DATA.altitude]);
|
||||||
|
|
||||||
|
// Remove old data from array
|
||||||
|
while (gyro_data[0].length > 300) {
|
||||||
|
gyro_data[0].shift();
|
||||||
|
gyro_data[1].shift();
|
||||||
|
gyro_data[2].shift();
|
||||||
|
|
||||||
|
accel_data[0].shift();
|
||||||
|
accel_data[1].shift();
|
||||||
|
accel_data[2].shift();
|
||||||
|
|
||||||
|
mag_data[0].shift();
|
||||||
|
mag_data[1].shift();
|
||||||
|
mag_data[2].shift();
|
||||||
|
|
||||||
|
baro_data[0].shift();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update graphs
|
||||||
|
Flotr.draw(e_graph_gyro, [
|
||||||
|
{data: gyro_data[0], label: "X - rate [" + SENSOR_DATA.gyroscope[0].toFixed(2) + "]"},
|
||||||
|
{data: gyro_data[1], label: "Y - rate [" + SENSOR_DATA.gyroscope[1].toFixed(2) + "]"},
|
||||||
|
{data: gyro_data[2], label: "Z - rate [" + SENSOR_DATA.gyroscope[2].toFixed(2) + "]"} ], gyro_options);
|
||||||
|
|
||||||
|
Flotr.draw(e_graph_accel, [
|
||||||
|
{data: accel_data[1], label: "X - acceleration [" + SENSOR_DATA.accelerometer[0].toFixed(2) + "]"},
|
||||||
|
{data: accel_data[0], label: "Y - acceleration [" + SENSOR_DATA.accelerometer[1].toFixed(2) + "]"},
|
||||||
|
{data: accel_data[2], label: "Z - acceleration [" + SENSOR_DATA.accelerometer[2].toFixed(2) + "]"} ], accel_options);
|
||||||
|
|
||||||
|
Flotr.draw(e_graph_mag, [
|
||||||
|
{data: mag_data[1], label: "X - Ga [" + SENSOR_DATA.magnetometer[0].toFixed(2) + "]"},
|
||||||
|
{data: mag_data[0], label: "Y - Ga [" + SENSOR_DATA.magnetometer[1].toFixed(2) + "]"},
|
||||||
|
{data: mag_data[2], label: "Z - Ga [" + SENSOR_DATA.magnetometer[2].toFixed(2) + "]"} ], mag_options);
|
||||||
|
|
||||||
|
Flotr.draw(e_graph_baro, [
|
||||||
|
{data: baro_data[0], label: "X - meters [" + SENSOR_DATA.altitude.toFixed(2) + "]"} ], baro_options);
|
||||||
|
|
||||||
|
samples_i++;
|
||||||
|
|
||||||
// Request new data
|
// Request new data
|
||||||
send_message(MSP_codes.MSP_RAW_IMU, MSP_codes.MSP_RAW_IMU);
|
send_message(MSP_codes.MSP_RAW_IMU, MSP_codes.MSP_RAW_IMU);
|
||||||
|
|
Loading…
Reference in New Issue