From efe04b731f2e61bdad039425805c75556d01a13a Mon Sep 17 00:00:00 2001 From: chk <79915315+ChKendel@users.noreply.github.com> Date: Wed, 10 Jun 2026 23:20:51 +0200 Subject: [PATCH] Umbau 12: Robot-Kinematics als extends RobotBase --- doc/ToDo_12_InverseKinematikConfig_ROADMAP.md | 14 +++++++++----- doc/ToDo_49_Cleanup.md | 10 ++++++---- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/doc/ToDo_12_InverseKinematikConfig_ROADMAP.md b/doc/ToDo_12_InverseKinematikConfig_ROADMAP.md index f6024d9..888642c 100644 --- a/doc/ToDo_12_InverseKinematikConfig_ROADMAP.md +++ b/doc/ToDo_12_InverseKinematikConfig_ROADMAP.md @@ -22,13 +22,18 @@ funktionieren. Die Kinematik ist der einzige arm-spezifische Teil — alles ande ``` robot/ ├── RobotBase.js ← Interface + generische Infrastruktur -├── Robot.js ← dauerhafter Alias: module.exports = RobotBase ├── KinematicsFactory.js ← lädt Kinematik-Klasse anhand Env-Variable └── kinematics/ ├── Arm3SegmentLinearX.js ← aktuelle Implementierung └── .js ← zukünftige Implementierungen ``` +> **Update (umgesetzt):** Der ursprünglich geplante dauerhafte Kompatibilitäts-Alias +> `robot/Robot.js` wurde **nicht** beibehalten, sondern nach Abschluss von Phase 0–2 +> **entfernt**. Tests importieren direkt `kinematics/Arm3SegmentLinearX` bzw. +> `RobotBase`; Produktivcode geht über `KinematicsFactory`. Die folgenden Abschnitte +> zur Transition über `Robot.js` sind daher historisch. + ## Wo ist das Interface? **`RobotBase` ist das Interface** — als abstrakte Basisklasse (JavaScript-Idiom). @@ -106,10 +111,9 @@ robot/ - Konstruktor: `constructor(l1, l2, l3)` → `super()` + Längen - `calculateAngles3D()` — unverändert übernommen - `calculatePositionFromMotorAngles()` — unverändert übernommen -- [x] `robot/Robot.js` wird zum Kompatibilitäts-Alias für die Übergangsperiode: - ```js - module.exports = require('./kinematics/Arm3SegmentLinearX'); - ``` +- [x] `robot/Robot.js` wurde zunächst Kompatibilitäts-Alias und anschließend + **entfernt** (siehe Update-Hinweis oben). Tests importieren direkt + `./kinematics/Arm3SegmentLinearX`. - [x] Alle bestehenden Tests müssen grün bleiben — kein Verhalten ändert sich (`Robot.Kinematics.RoundTrip.test.js` ist das primäre Sicherheitsnetz) diff --git a/doc/ToDo_49_Cleanup.md b/doc/ToDo_49_Cleanup.md index dc702e1..05b5029 100644 --- a/doc/ToDo_49_Cleanup.md +++ b/doc/ToDo_49_Cleanup.md @@ -30,7 +30,8 @@ andere hängen von vorgelagerten ToDos ab. - [ ] Alle Abschnitte auf Aktualität prüfen — insbesondere nach den Refactorings aus ToDo_1, ToDo_2, ToDo_5 -- [ ] `robot/Robot.js` beschreiben was es nach ToDo_12 ist (Alias → `RobotBase`) +- [x] `robot/Robot.js` ist nach ToDo_12 entfernt; README beschreibt jetzt + `RobotBase.js` + `kinematics/Arm3SegmentLinearX.js` + `KinematicsFactory.js` - [ ] Env-Variablen-Liste: `ROBOT_KINEMATICS` und `ROBOT_KINEMATICS_PARAMS` ergänzen (nach ToDo_12 Phase 2) - [ ] Tippfehler `GRBL_ELLBOW_IP` prüfen: ist das Legacy-Absicht oder korrigierbar? @@ -41,8 +42,9 @@ andere hängen von vorgelagerten ToDos ab. ## 3. Toter Code entfernen -Folgende Felder in `robot/Robot.js` werden nirgendwo im Projekt gelesen oder gesetzt -(Grep über alle `.js` ohne `node_modules` ergibt nur die Deklaration selbst): +Folgende Felder in `robot/RobotBase.js` (seit ToDo_12 dorthin gewandert) werden +nirgendwo im Projekt gelesen oder gesetzt (Grep über alle `.js` ohne `node_modules` +ergibt nur die Deklaration selbst): - [ ] `this.speedX`, `this.speedY`, `this.speedZ` — nie referenziert - [ ] `this.doAnimate` — nie referenziert @@ -117,7 +119,7 @@ Die folgenden Dateien liegen aktuell im Repository und sollten dort **nicht** se Der Code hat viele `console.log`-Aufrufe — einige sind wichtig, andere Debugging-Reste. -- [ ] `robot/Robot.js` `sendCommand()`: ausführliches Log bei jedem Befehl — für Produktion +- [ ] `robot/RobotBase.js` `sendCommand()`: ausführliches Log bei jedem Befehl — für Produktion eher auf `debug`-Level oder hinter eine `verbose`-Flag - [ ] `robot/GCode.js`: Motor-Position-Log in `receiveMCode` (ohnehin toter Code) - [ ] Sinnvolle Logs behalten (Verbindungsaufbau, Fehler, Start-Info)