From e83bca1451d8d8222ac2a86abd15b5c9a536e54d Mon Sep 17 00:00:00 2001 From: chk <79915315+ChKendel@users.noreply.github.com> Date: Wed, 10 Jun 2026 23:19:23 +0200 Subject: [PATCH] Umbau 12: Robot-Kinematics als extends RobotBase --- README.md | 7 +++++-- doc/ToDo_49_Cleanup.md | 11 +++++------ 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 2639dc2..9efbe28 100644 --- a/README.md +++ b/README.md @@ -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 - `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/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. ## Eingaben @@ -129,7 +130,9 @@ Die Achszuordnung kann in `robot/TelnetSenderGRBL.js` durch Anpassung der Konstr - `startRobot.js` - `server/InputWS.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/RobotController.js` — wendet geparste Befehle auf das Modell an (Steuerlogik) - `robot/GCode.js` — Fassade + Datei-Befehle diff --git a/doc/ToDo_49_Cleanup.md b/doc/ToDo_49_Cleanup.md index 33d0bfd..dc702e1 100644 --- a/doc/ToDo_49_Cleanup.md +++ b/doc/ToDo_49_Cleanup.md @@ -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)* -- [ ] `robot/Robot.js` zeigt nach Phase 1 auf `Arm3SegmentLinearX` (Übergangsalias) -- [ ] Nach Phase 2: auf `RobotBase` umzeigen: - ```js - module.exports = require('./RobotBase'); - ``` -- [ ] Kommentar in `robot/Robot.js` aktualisieren: Zweck des Alias erklären +- [x] **Erledigt:** Statt eines dauerhaften Alias wurde `robot/Robot.js` nach + Abschluss von ToDo_12 Phase 0–2 **vollständig entfernt**. Alle Tests importieren + jetzt direkt `robot/kinematics/Arm3SegmentLinearX` bzw. `robot/RobotBase`. + Produktivcode geht ohnehin über `robot/KinematicsFactory.js`. Damit entfällt der + Übergangsalias komplett. ---