27 lines
864 B
JavaScript
27 lines
864 B
JavaScript
/**
|
|
* 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<string, number|null>} s flacher FK-State {x,y,z,a,b[,c,e]}
|
|
* @returns {Record<string, number>} 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 };
|