Umbau 12: Robot-Kinematics als extends RobotBase
This commit is contained in:
@@ -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 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)
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user