G28 und Phase2 Arbeiten

This commit is contained in:
chk
2026-06-26 15:28:34 +02:00
parent 933a017e2e
commit 2197a8954f
3 changed files with 30 additions and 4 deletions

View File

@@ -126,6 +126,8 @@ Umgesetzt:
Stellung (`|y| = l1+l2+l3`) ist eine Handgelenk-Singularität, in der die IK `a`/`c` nicht Stellung (`|y| = l1+l2+l3`) ist eine Handgelenk-Singularität, in der die IK `a`/`c` nicht
bestimmen kann (Müll wie `a=135°, c=45°` → Finger schräg). G28 setzt dort die Motorwerte bestimmen kann (Müll wie `a=135°, c=45°` → Finger schräg). G28 setzt dort die Motorwerte
**direkt** (`alpha=beta=a=c=0`, `b=π` = gerade Hand) und füllt die Pose per FK. **direkt** (`alpha=beta=a=c=0`, `b=π` = gerade Hand) und füllt die Pose per FK.
**Interim:** G28 lässt den Greifer (`e`/`eMotor`) **unangetastet** — sonst ergäbe
`eMotor = ebc` bei `b=π` den Wert 180° → Finger-Anschlag-Slam (Phase 2 behebt das mit `b=0`).
- **Tests:** `test/Robot.Kinematics.NegativeY.test.js` (Grundstellung 590, Homing-Pose - **Tests:** `test/Robot.Kinematics.NegativeY.test.js` (Grundstellung 590, Homing-Pose
in y, Round-Trip in y, a=0 → Knick-Achse ∥ x). in y, Round-Trip in y, a=0 → Knick-Achse ∥ x).
- **Migration:** `Robot.02_UpperArm` und der G28-Test auf y umgestellt. - **Migration:** `Robot.02_UpperArm` und der G28-Test auf y umgestellt.
@@ -176,9 +178,21 @@ Fundstellen:
- Aufgabe: Kopplung gegen die echte Sehnenmechanik validieren, toten x-Port-Pfad + - Aufgabe: Kopplung gegen die echte Sehnenmechanik validieren, toten x-Port-Pfad +
`factorOpenTurn` aufräumen, **Vorzeichen** je nach Motor-Verkabelung prüfen. `factorOpenTurn` aufräumen, **Vorzeichen** je nach Motor-Verkabelung prüfen.
3. **B-Konvention (gerade = 0°).** Durchgängig: 3. **B-Konvention (gerade = 0°).**
**Verifizierter Mismatch Homing ↔ Driver:** Das appRobotHoming meldet für die **gerade**
Hand **B ≈ 0** (Messung: `B=-6.92`), der Driver rechnet aber mit **gerade = b = 180°**.
Der Driver interpretiert das empfangene `b≈0` daher als Knick `1800 = 180°` (fast voll
zurückgeklappt) → im Modell zeigt der Finger nach **+y (rückwärts)** statt y. D.h. **nach
dem Homing ist der interne Hand-Zustand des Drivers falsch** (gefaltet), was Folge-Moves
verfälscht. Das ist das beobachtete „Driver interpretiert als B=180".
→ Konsequenz: Driver auf **B=0=gerade** umstellen (passt dann ohne Umrechnung zum Homing),
**oder** appRobotHoming sendet `B+180`. (C ist konsistent: Homing `C=90`=flach = Driver `c=90`=flach,
also `C=0`=aufrecht — kein Versatz.)
Umstellung durchgängig:
- FK/IK in `Arm3SegmentLinearX` (b-Definition / acos-Zweig), - FK/IK in `Arm3SegmentLinearX` (b-Definition / acos-Zweig),
- `gripperMotorFromOpening` nachziehen, - `gripperMotorFromOpening` nachziehen (behebt auch den G28-Greifer-Slam),
- G92-Eingabe (`b = B/D`) + M1 + G28, - G92-Eingabe (`b = B/D`) + M1 + G28,
- `portInverse.js` (Umkehrung), - `portInverse.js` (Umkehrung),
- **Sender-Formeln so kompensieren, dass die FluidNC-Ports unverändert bleiben** — - **Sender-Formeln so kompensieren, dass die FluidNC-Ports unverändert bleiben** —
@@ -193,8 +207,9 @@ Fundstellen:
(`|Hand.to[1]| + |FingerA.to[1]|` = 35 + 60 = **95**) statt aus dem Ellbogen-Versatz (90). (`|Hand.to[1]| + |FingerA.to[1]|` = 35 + 60 = **95**) statt aus dem Ellbogen-Versatz (90).
Zusätzlich sind `kinematics.l1/l2/l3` in robot.json **explizit überschreibbar** (Vorrang Zusätzlich sind `kinematics.l1/l2/l3` in robot.json **explizit überschreibbar** (Vorrang
vor der Ableitung) — zum Kalibrieren auf die gemessene Reichweite. vor der Ableitung) — zum Kalibrieren auf die gemessene Reichweite.
⚠️ Geometrie liefert Reichweite 595, beobachtet wurden **~550** → l3 (oder l1/l2) sollte Reichweite damit 595 — passt zur aktuellen Hardware (60 mm Finger). Die früher beobachteten
per `kinematics.l3` explizit kalibriert werden (deutet auf l3 ≈ 50, falls l1=l2=250 stimmen). ~550 stammten von **kürzeren 50 mm-Greifern**. Bei Greifer-Wechsel `kinematics.l3` per
Override anpassen (oder Finger-Geometrie in robot.json pflegen).
6. **Tests + Doku** nachziehen: Round-Trip mit neuer Konvention, Greifer-Kopplung, 6. **Tests + Doku** nachziehen: Round-Trip mit neuer Konvention, Greifer-Kopplung,
G92-Referenztabellen in `Info_G92.md`, sowie diese Datei. G92-Referenztabellen in `Info_G92.md`, sowie diese Datei.

View File

@@ -11236,3 +11236,12 @@
2026-06-26T10:26:52.112Z ::ffff:127.0.0.1: M114 2026-06-26T10:26:52.112Z ::ffff:127.0.0.1: M114
2026-06-26T10:26:52.341Z ::ffff:127.0.0.1: G1 X1 Y2 Z3 2026-06-26T10:26:52.341Z ::ffff:127.0.0.1: G1 X1 Y2 Z3
2026-06-26T10:26:52.567Z ::ffff:127.0.0.1: G1 X1 2026-06-26T10:26:52.567Z ::ffff:127.0.0.1: G1 X1
2026-06-26T13:23:39.999Z ::ffff:127.0.0.1: FList
2026-06-26T13:23:40.023Z ::ffff:127.0.0.1: FPlus
2026-06-26T13:23:40.048Z ::ffff:127.0.0.1: FLoad nichtda
2026-06-26T13:23:40.086Z ::ffff:127.0.0.1: FShow
2026-06-26T13:23:40.410Z ::ffff:127.0.0.1: M114
2026-06-26T13:23:40.444Z ::ffff:127.0.0.1: G1 X1 Y2 Z3
2026-06-26T13:23:40.597Z ::ffff:127.0.0.1: M114
2026-06-26T13:23:40.821Z ::ffff:127.0.0.1: G1 X1 Y2 Z3
2026-06-26T13:23:41.051Z ::ffff:127.0.0.1: G1 X1

View File

@@ -14858,3 +14858,5 @@
2026-06-26T10:26:37.324Z ::ffff:127.0.0.1 : Ping 2026-06-26T10:26:37.324Z ::ffff:127.0.0.1 : Ping
2026-06-26T10:26:51.865Z ::ffff:127.0.0.1 : Ping 2026-06-26T10:26:51.865Z ::ffff:127.0.0.1 : Ping
2026-06-26T10:26:51.878Z ::ffff:127.0.0.1 : Ping 2026-06-26T10:26:51.878Z ::ffff:127.0.0.1 : Ping
2026-06-26T13:23:40.342Z ::ffff:127.0.0.1 : Ping
2026-06-26T13:23:40.380Z ::ffff:127.0.0.1 : Ping