Adapt regression to signals

This commit is contained in:
Ryan Brott
2023-03-06 22:50:07 -08:00
parent 332704b536
commit db869f3e01
3 changed files with 24 additions and 16 deletions

View File

@ -79,7 +79,7 @@ details, a {
<script>
function loadRegression(data) {
const [_, angVels] = data.angVels.reduce((acc, vsArg) => {
const vs = fixAngVels(vsArg.slice(0, -1)).map(v => Math.abs(v));
const vs = fixAngVels(vsArg.values.slice(0, -1)).map(v => Math.abs(v));
const maxV = vs.reduce((acc, v) => Math.max(acc, v), 0);
const [accMaxV, _] = acc;
if (maxV >= accMaxV) {
@ -93,7 +93,11 @@ function loadRegression(data) {
const div = document.createElement('div');
newLinearRegressionChart(div,
angVels.slice(1, -1),
fixVels(data.encTimes.slice(0, -1), data.parEncPositions[i].slice(0, -1), vs.slice(0, -1)),
fixVels(
vs.times.slice(0, -1),
data.parEncPositions[i].values.slice(0, -1),
vs.values.slice(0, -1)
),
{title: `Parallel Wheel ${i} Regression`, slope: 'y-position', noIntercept: true});
deadWheelCharts.appendChild(div);
});
@ -101,15 +105,19 @@ function loadRegression(data) {
const div = document.createElement('div');
newLinearRegressionChart(div,
angVels.slice(1, -1),
fixVels(data.encTimes.slice(0, -1), data.perpEncPositions[i].slice(0, -1), vs.slice(0, -1)),
fixVels(
vs.times.slice(0, -1),
data.perpEncPositions[i].values.slice(0, -1),
vs.values.slice(0, -1)
),
{title: `Perpendicular Wheel ${i} Regression`, slope: 'x-position', noIntercept: true});
deadWheelCharts.appendChild(div);
});
const setParams = (() => {
const allPowers = [...data.leftPowers, ...data.rightPowers];
const appliedVoltages = data.voltages.slice(0, -1).map((v, i) =>
allPowers.reduce((acc, ps) => Math.max(acc, ps[i]), 0) * v);
const appliedVoltages = data.voltages.values.slice(0, -1).map((v, i) =>
allPowers.reduce((acc, ps) => Math.max(acc, ps.values[i]), 0) * v);
const setTrackWidthData = newLinearRegressionChart(
document.getElementById('trackWidthChart'),

View File

@ -62,23 +62,23 @@ details, a {
<script>
function loadRegression(data) {
const leftEncVels = data.leftEncVels.map((vs, i) =>
fixVels(data.encTimes.slice(0, -1), data.leftEncPositions[i].slice(0, -1), vs.slice(0, -1)));
fixVels(vs.times.slice(0, -1), data.leftEncPositions[i].values.slice(0, -1), vs.values.slice(0, -1)));
const rightEncVels = data.rightEncVels.map((vs, i) =>
fixVels(data.encTimes.slice(0, -1), data.rightEncPositions[i].slice(0, -1), vs.slice(0, -1)));
fixVels(vs.times.slice(0, -1), data.rightEncPositions[i].values.slice(0, -1), vs.values.slice(0, -1)));
newLinearRegressionChart(
document.getElementById('rampChart'),
[
...leftEncVels.flatMap(vs => vs.slice(0, -1).map(v => -v)),
...rightEncVels.flatMap(vs => vs.slice(0, -1)),
...leftEncVels.flatMap(vs => vs.values.slice(0, -1).map(v => -v)),
...rightEncVels.flatMap(vs => vs.values.slice(0, -1)),
],
[
...data.leftPowers.flatMap(ps => {
const psNew = ps.slice(0, -1).map((p, i) => -p * data.voltages[i]);
const psNew = ps.values.slice(0, -1).map((p, i) => -p * data.voltages.values[i]);
return psNew.slice(1, -1);
}),
...data.rightPowers.flatMap(ps => {
const psNew = ps.slice(0, -1).map((p, i) => p * data.voltages[i]);
const psNew = ps.values.slice(0, -1).map((p, i) => p * data.voltages.values[i]);
return psNew.slice(1, -1);
}),
],
@ -86,7 +86,7 @@ function loadRegression(data) {
);
const p = data.angVels.reduce((acc, vsArg) => {
const vs = fixAngVels(vsArg).map(v => Math.abs(v));
const vs = fixAngVels(vsArg.values).map(v => Math.abs(v));
const maxV = vs.reduce((acc, v) => Math.max(acc, v), 0);
const [accMaxV, _] = acc;
if (maxV >= accMaxV) {

View File

@ -61,10 +61,10 @@ details, a {
<script>
function loadRegression(data) {
const forwardEncVels = data.forwardEncVels.flatMap((vs, i) =>
fixVels(data.encTimes.slice(0, -1), data.forwardEncPositions[i].slice(0, -1), vs.slice(0, -1)));
const appliedVoltages = data.forwardEncVels.flatMap(vs => {
const voltages = data.voltages.slice(0, -1).map((v, i) =>
data.powers.reduce((acc, ps) => Math.max(acc, ps[i]), 0) * v);
fixVels(vs.times.slice(0, -1), data.forwardEncPositions[i].values.slice(0, -1), vs.values.slice(0, -1)));
const appliedVoltages = data.forwardEncVels.flatMap(() => {
const voltages = data.voltages.values.slice(0, -1).map((v, i) =>
data.powers.reduce((acc, ps) => Math.max(acc, ps.values[i]), 0) * v);
return voltages.slice(1, voltages.length - 1);
});