Umbau 12: Robot-Kinematics als extends RobotBase

This commit is contained in:
chk
2026-06-10 23:20:51 +02:00
parent e83bca1451
commit efe04b731f
2 changed files with 15 additions and 9 deletions

View File

@@ -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
└── <NextRobot>.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 02
> **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)

View File

@@ -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)