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/ robot/
├── RobotBase.js ← Interface + generische Infrastruktur ├── RobotBase.js ← Interface + generische Infrastruktur
├── Robot.js ← dauerhafter Alias: module.exports = RobotBase
├── KinematicsFactory.js ← lädt Kinematik-Klasse anhand Env-Variable ├── KinematicsFactory.js ← lädt Kinematik-Klasse anhand Env-Variable
└── kinematics/ └── kinematics/
├── Arm3SegmentLinearX.js ← aktuelle Implementierung ├── Arm3SegmentLinearX.js ← aktuelle Implementierung
└── <NextRobot>.js ← zukünftige Implementierungen └── <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? ## Wo ist das Interface?
**`RobotBase` ist das Interface** — als abstrakte Basisklasse (JavaScript-Idiom). **`RobotBase` ist das Interface** — als abstrakte Basisklasse (JavaScript-Idiom).
@@ -106,10 +111,9 @@ robot/
- Konstruktor: `constructor(l1, l2, l3)``super()` + Längen - Konstruktor: `constructor(l1, l2, l3)``super()` + Längen
- `calculateAngles3D()` — unverändert übernommen - `calculateAngles3D()` — unverändert übernommen
- `calculatePositionFromMotorAngles()` — unverändert übernommen - `calculatePositionFromMotorAngles()` — unverändert übernommen
- [x] `robot/Robot.js` wird zum Kompatibilitäts-Alias für die Übergangsperiode: - [x] `robot/Robot.js` wurde zunächst Kompatibilitäts-Alias und anschließend
```js **entfernt** (siehe Update-Hinweis oben). Tests importieren direkt
module.exports = require('./kinematics/Arm3SegmentLinearX'); `./kinematics/Arm3SegmentLinearX`.
```
- [x] Alle bestehenden Tests müssen grün bleiben — kein Verhalten ändert sich - [x] Alle bestehenden Tests müssen grün bleiben — kein Verhalten ändert sich
(`Robot.Kinematics.RoundTrip.test.js` ist das primäre Sicherheitsnetz) (`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 - [ ] Alle Abschnitte auf Aktualität prüfen — insbesondere nach den Refactorings aus
ToDo_1, ToDo_2, ToDo_5 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 - [ ] Env-Variablen-Liste: `ROBOT_KINEMATICS` und `ROBOT_KINEMATICS_PARAMS` ergänzen
(nach ToDo_12 Phase 2) (nach ToDo_12 Phase 2)
- [ ] Tippfehler `GRBL_ELLBOW_IP` prüfen: ist das Legacy-Absicht oder korrigierbar? - [ ] 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 ## 3. Toter Code entfernen
Folgende Felder in `robot/Robot.js` werden nirgendwo im Projekt gelesen oder gesetzt Folgende Felder in `robot/RobotBase.js` (seit ToDo_12 dorthin gewandert) werden
(Grep über alle `.js` ohne `node_modules` ergibt nur die Deklaration selbst): 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.speedX`, `this.speedY`, `this.speedZ` — nie referenziert
- [ ] `this.doAnimate` — 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. 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 eher auf `debug`-Level oder hinter eine `verbose`-Flag
- [ ] `robot/GCode.js`: Motor-Position-Log in `receiveMCode` (ohnehin toter Code) - [ ] `robot/GCode.js`: Motor-Position-Log in `receiveMCode` (ohnehin toter Code)
- [ ] Sinnvolle Logs behalten (Verbindungsaufbau, Fehler, Start-Info) - [ ] Sinnvolle Logs behalten (Verbindungsaufbau, Fehler, Start-Info)