Files
appRobotDriver/doc/ToDo_6_RobotController.md
2026-06-09 15:51:30 +02:00

36 lines
1.8 KiB
Markdown

# ToDo 6 — RobotController
> ## ✅ Status: erledigt
>
> Steuerlogik in `robot/RobotController.js` ausgelagert; `GCode.receiveGCode()` ist
> nur noch Fassade. Tests: `test/RobotController.test.js` (+ alle bestehenden
> `GCode.*`-Tests laufen unverändert über die Fassade).
## Ziel der Verbesserung
Der `RobotController` fasst die Steuerlogik zusammen und hält den Roboterzustand vom G-Code-Parsing getrennt. So wird die Architektur modularer und leichter wartbar.
## Aufgaben
- [x] `RobotController` einführen (`robot/RobotController.js`)
- verarbeitet strukturierte G-Code-/Befehlsobjekte (`applyCommand`, `receive`)
- steuert `moveRelative`, `calculateAngles3D()` und `sendCommand()`
- [x] `Robot.js` als reines Modell-/Kinematik-Modul nutzen
- Zustand, Längen, Winkel, Kinematik-Berechnungen
- [x] den Übergang von Befehlsobjekt zu Motorpositionen sauber definieren
- [x] Logik für Bewegungsbefehle zentralisieren: `G1`, `G28`, `G90`, `G91`, `G92`(=`M92`), `M1`
- [x] rohe Textstrings aus der Controller-Schicht entfernen (Controller arbeitet nur auf geparsten Objekten)
- [x] Zustandsänderungen konsistent an die Sender weiterreichen (über `robot.sendCommand()`)
## Status
- Erledigt. Die Dispatch-Logik wurde aus `GCode.receiveGCode()` in `RobotController`
ausgelagert. `GCode.receiveGCode()` bleibt als dünne Fassade erhalten (delegiert an
`RobotController.receive()`), damit bestehende Aufrufer und Datei-Befehle unverändert
funktionieren.
- `calculateSpeeds()` wird bewusst weiterhin innerhalb von `robot.sendCommand()` ausgelöst
(Geschwindigkeit ist eine Modell-Eigenschaft, die der Controller über `sendCommand`
anstößt — siehe ToDo_6a).
- Tests: `test/RobotController.test.js` (Controller direkt), alle bestehenden
`GCode.*`-Tests laufen unverändert über die Fassade.