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/
|
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 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?
|
## 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)
|
||||||
|
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user