Interrim G28 ohne e
This commit is contained in:
@@ -164,12 +164,17 @@ Fundstellen:
|
||||
|
||||
1. **Finger visualisieren** (User) → Soll-Bild, gegen das kalibriert wird.
|
||||
|
||||
2. **Greifer-Kopplung vereinheitlichen.** Es existieren **zwei widersprüchliche** Kopplungen:
|
||||
- Kinematik: `eMotor = e − b − c` (b,c in rad)
|
||||
- Sender: `e-Port = e + 1.2·b·D − c·D` (b,c in Grad, Faktor **1.2** nur auf b)
|
||||
|
||||
Eine Quelle der Wahrheit festlegen und gegen die echte Sehnenmechanik messen.
|
||||
(`factorOpenTurn = 1.92` im Sender ist deklariert, aber **ungenutzt** → klären/entfernen.)
|
||||
2. **Greifer-Kopplung — aktuell aktiv (identifiziert):** Bei der realen Verkabelung
|
||||
(`hand.axes = ['c','e','b']`) liegt der Greifer auf dem **y-Port**. Gesendet wird daher
|
||||
`mNew.e · D = eMotor · D = (e − b − c) · D` — die Kopplung steckt in
|
||||
`gripperMotorFromOpening` (→ `eMotor`), der Sender hängt nur noch `·180/π` dran.
|
||||
- Die **x-Port-Variante** (`e + 1.2·b·D − c·D`, mit `factorTurnLift = 1.2`) greift nur
|
||||
bei anderer Verkabelung → **derzeit toter Pfad**. (`factorOpenTurn = 1.92` ungenutzt.)
|
||||
- **Folge / Slam:** bei `b = π` (Phase-1-„gerade Hand") wird `eMotor = e−b−c = −π → −180°`
|
||||
an den Finger-Motor gesendet → er fährt an den Anschlag und verdreht über die Sehne die
|
||||
ganze Hand. Phase 2 (`b = 0` = gerade) behebt das automatisch (`eMotor = 0`).
|
||||
- Aufgabe: Kopplung gegen die echte Sehnenmechanik validieren, toten x-Port-Pfad +
|
||||
`factorOpenTurn` aufräumen, **Vorzeichen** je nach Motor-Verkabelung prüfen.
|
||||
|
||||
3. **B-Konvention (gerade = 0°).** Durchgängig:
|
||||
- FK/IK in `Arm3SegmentLinearX` (b-Definition / acos-Zweig),
|
||||
@@ -184,9 +189,12 @@ Fundstellen:
|
||||
ohne die Hand-Parametrierung zu ändern. Bewerten: c als reinen Gelenkwinkel führen
|
||||
(Offset herausrechnen) oder die ψ-Definition anpassen.
|
||||
|
||||
5. **l3-Ableitung korrigieren** (`RobotConfig.js`): `l3` kommt aus
|
||||
`Ellbow.skeleton.to[0] = 90` (Ellbogen-Versatz), **nicht** aus der echten Hand-/Finger-
|
||||
Länge — das erklärt die beobachteten −550 statt −590. Aus der echten Finger-Geometrie ableiten.
|
||||
5. **l3-Ableitung korrigiert** ✅ (`RobotConfig.js`): `l3` kommt jetzt aus **Hand + Finger**
|
||||
(`|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
|
||||
vor der Ableitung) — zum Kalibrieren auf die gemessene Reichweite.
|
||||
⚠️ Geometrie liefert Reichweite 595, beobachtet wurden **~550** → l3 (oder l1/l2) sollte
|
||||
per `kinematics.l3` explizit kalibriert werden (deutet auf l3 ≈ 50, falls l1=l2=250 stimmen).
|
||||
|
||||
6. **Tests + Doku** nachziehen: Round-Trip mit neuer Konvention, Greifer-Kopplung,
|
||||
G92-Referenztabellen in `Info_G92.md`, sowie diese Datei.
|
||||
|
||||
Reference in New Issue
Block a user