/** * fkStateToDriverG92.cjs * Rechnet einen internen Homing-FK-State in die G92-Driver-Konvention um * (appRobotDriver/doc/Info_G92.md). * * Unterschiede: * b: FK b=0 = gerade Hand; Driver B=180° = gerade Hand → B = 180 + b * c: FK c=0 = neutral Roll; Driver C=90° = neutral → C = c + 90 * z: 4b misst Ellbogen RELATIV zu Arm1; Driver braucht absoluten Winkel → Z = y + z * * CommonJS, damit Jest (CJS) und der ESM-Server dieselbe Funktion nutzen. */ /** * @param {Record} s flacher FK-State {x,y,z,a,b[,c,e]} * @returns {Record} Driver-G92-State */ function fkStateToDriverG92(s) { const d = { ...s }; if (d.b != null) d.b = 180 + d.b; if (d.c != null) d.c = d.c + 90; if (d.z != null && d.y != null) d.z = d.y + d.z; return d; } module.exports = { fkStateToDriverG92 };