Files
appRobotHoming/public/calculateAngles.js
chk 6e8fabd230 Tests
CalculateAngles verpacken
2026-05-09 06:08:36 +02:00

43 lines
943 B
JavaScript

/**
* calculateAngles module
*
* Browser + Server + Jest (CJS) kompatibel
*/
function calculate(foundMarkers, jsonRobot) {
// --- X of the Hand-Joint ---
const validOns = new Set(['Base', 'Arm1', 'Joint1']);
const foundById = new Map(foundMarkers.map(f => [f.id, f]));
const markersMovingFixedX = jsonRobot.Marker.filter(m => validOns.has(m.on));
const markersXPosition = new Map();
const xs = markersMovingFixedX
.map(m => {
const f = foundById.get(m.id);
return f ? f.position[0] - m.relPos[0] : null;
})
.filter(x => x !== null);
const xAvg = xs.length
? xs.reduce((a, b) => a + b, 0) / xs.length
: 0;
return {
meta: {
module: 'calculateAngles',
timestamp: new Date().toISOString()
},
inputs: {
markers: foundMarkers ?? null,
robot: jsonRobot ?? null
},
status: 'ok',
result: {
xAvg
}
};
}
module.exports = { calculate };