Interrim G28 ohne e

This commit is contained in:
chk
2026-06-26 12:28:40 +02:00
parent 7639266170
commit 933a017e2e
7 changed files with 89 additions and 24 deletions

View File

@@ -90,19 +90,23 @@ describe('GCode.receiveGCode', () => {
expect(robot.sendCommand).toHaveBeenCalled()
})
test('G28 setzt Home-Motorwerte direkt (Singularität) und löst Bewegung aus', () => {
test('G28 setzt Home-Motorwerte direkt (Singularität), lässt aber den Greifer unangetastet', () => {
const robot = createDummyRobot()
robot.e = 7 // vorher gesetzte Greifer-Öffnung ...
robot.eMotor = 3 // ... darf von G28 NICHT bewegt werden (sonst ebc-Slam bei b=π)
GCode.receiveGCode(robot, 'G28')
// Voll ausgestreckt = Handgelenk-Singularität -> Motorwerte DIREKT, dann FK (nicht IK).
// Voll ausgestreckt = Handgelenk-Singularität -> Arm-Motorwerte DIREKT, dann FK (nicht IK).
expect(robot.xMotor).toBe(0)
expect(robot.alpha).toBe(0)
expect(robot.beta).toBe(0)
expect(robot.a).toBe(0)
expect(robot.b).toBe(Math.PI) // gerade Hand (Phase-1-Konvention)
expect(robot.c).toBe(0)
expect(robot.e).toBe(0)
// Greifer unverändert -> kein Finger-Slam am Anschlag
expect(robot.e).toBe(7)
expect(robot.eMotor).toBe(3)
expect(robot.calculateAngles3D).not.toHaveBeenCalled()
expect(robot.calculatePositionFromMotorAngles).toHaveBeenCalledTimes(1)
expect(robot.sendCommand).toHaveBeenCalledTimes(1)