Umbau 12: Robot-Kinematics als extends RobotBase

This commit is contained in:
chk
2026-06-10 23:19:23 +02:00
parent 9a0ecfefab
commit e83bca1451
2 changed files with 10 additions and 8 deletions

View File

@@ -9,7 +9,8 @@ Dieses Projekt empfängt G-Code und Robotersteuerbefehle, berechnet Inverse Kine
- Info-Server für Status, Position und einfache Weboberfläche - Info-Server für Status, Position und einfache Weboberfläche
- `server/InputWS.js` empfängt Nachrichten von WebSocket-Clients, prüft sie auf G-Code oder Datei-Kommandos und gibt Positionsdaten zurück. - `server/InputWS.js` empfängt Nachrichten von WebSocket-Clients, prüft sie auf G-Code oder Datei-Kommandos und gibt Positionsdaten zurück.
- `robot/GCode.js` verarbeitet G-Code, übersetzt ihn in Roboter-Koordinaten und triggert `robot.sendCommand()`. - `robot/GCode.js` verarbeitet G-Code, übersetzt ihn in Roboter-Koordinaten und triggert `robot.sendCommand()`.
- `robot/Robot.js` führt die Inverse Kinematik aus und berechnet Motorwinkel sowie optionale Motor-Geschwindigkeiten. - `robot/RobotBase.js` ist die abstrakte Basisklasse / der Interface-Vertrag: generische Infrastruktur (Zustand, `sendCommand`, Motor-Geschwindigkeiten) plus die zwei abstrakten Kinematik-Methoden.
- `robot/kinematics/Arm3SegmentLinearX.js` ist die konkrete Kinematik (Inverse + Vorwärts) für den aktuellen Arm. Die Auswahl der Kinematik erfolgt über `robot/KinematicsFactory.js` (Umgebungsvariablen `ROBOT_KINEMATICS` / `ROBOT_KINEMATICS_PARAMS`). Siehe `doc/ToDo_12_InverseKinematikConfig_ROADMAP.md`.
- `robot/TelnetSenderGRBL.js` formatiert die Motor-Positionen in GRBL-kompatible Befehle und sendet sie per Telnet an einen Zielcontroller. - `robot/TelnetSenderGRBL.js` formatiert die Motor-Positionen in GRBL-kompatible Befehle und sendet sie per Telnet an einen Zielcontroller.
## Eingaben ## Eingaben
@@ -129,7 +130,9 @@ Die Achszuordnung kann in `robot/TelnetSenderGRBL.js` durch Anpassung der Konstr
- `startRobot.js` - `startRobot.js`
- `server/InputWS.js` - `server/InputWS.js`
- `server/InfoServer.js` - `server/InfoServer.js`
- `robot/Robot.js`Modell + Kinematik - `robot/RobotBase.js`abstrakte Basisklasse / Interface-Vertrag (generische Infrastruktur)
- `robot/kinematics/Arm3SegmentLinearX.js` — konkrete Kinematik (Modell + Inverse/Vorwärts)
- `robot/KinematicsFactory.js` — wählt die Kinematik per Umgebungsvariable
- `robot/GCodeParser.js` — wandelt rohe Nachrichten in strukturierte Befehlsobjekte - `robot/GCodeParser.js` — wandelt rohe Nachrichten in strukturierte Befehlsobjekte
- `robot/RobotController.js` — wendet geparste Befehle auf das Modell an (Steuerlogik) - `robot/RobotController.js` — wendet geparste Befehle auf das Modell an (Steuerlogik)
- `robot/GCode.js` — Fassade + Datei-Befehle - `robot/GCode.js` — Fassade + Datei-Befehle

View File

@@ -60,12 +60,11 @@ Folgende Methoden in `robot/GCode.js` werden nie aufgerufen:
## 4. `robot/Robot.js` Alias aufräumen *(abhängig von ToDo_12 Phase 2)* ## 4. `robot/Robot.js` Alias aufräumen *(abhängig von ToDo_12 Phase 2)*
- [ ] `robot/Robot.js` zeigt nach Phase 1 auf `Arm3SegmentLinearX` (Übergangsalias) - [x] **Erledigt:** Statt eines dauerhaften Alias wurde `robot/Robot.js` nach
- [ ] Nach Phase 2: auf `RobotBase` umzeigen: Abschluss von ToDo_12 Phase 02 **vollständig entfernt**. Alle Tests importieren
```js jetzt direkt `robot/kinematics/Arm3SegmentLinearX` bzw. `robot/RobotBase`.
module.exports = require('./RobotBase'); Produktivcode geht ohnehin über `robot/KinematicsFactory.js`. Damit entfällt der
``` Übergangsalias komplett.
- [ ] Kommentar in `robot/Robot.js` aktualisieren: Zweck des Alias erklären
--- ---