36 lines
1.8 KiB
Markdown
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.
|