Belohnungsschöpfung für Robotermanipulation RL: Was funktioniert und was nicht
Praktische Leitfaden für die Belohnungsanlagen für die Roboternmanipulation <unk> Dichte vs. geringe Belohnungen, potenziell basierte Gestaltung, Lehrplan Belohnung Fortschritt, Sim-zu-Reale Lücken und wie das Belohnung Hacking zu vermeiden.
Teil von: [Roboterwaffen-Leitfaden]
[← Blog]
Belohnung ist der Teil von RL, den Lehrbücher nicht erklären und Praktiker durch schmerzhafte Erfahrungen überlernen.
Die Hauptverhandlung
Sparse Rewards
Eine Politik, die die Effizienz der Proxy drastisch verbessert. Ein Lernen, ein Objekt mit einer dichten Entfernung-zu-Ziel-Lohn zu platzieren, konvergiert in 10
Um dies zu beurteilen: in unseren Benchmarks für eine Pick-and-Place-Tasche auf einem simulierten [OpenArm]
Fingerregel: Verwenden Sie spärliche Belohnungen nur, wenn Ihr Aufgabenhorizont unter 50 Schritten liegt und die Zielkonfiguration eindeutig ist. Für alles andere
Potenzialgestützte Gestaltung: Die theoretisch sichere, dichte Belohnung
Das Ng, Daswani und Russell-Theorem über die potenziell basierende Belohnungsschaltung (1999) bietet einen mathematisch begründeten Ansatz zur Zugabe dichter Belohnungen ohne die optimale Politik zu ändern.
Für die Manipulation ist die natürlichste Funktion der Potenzial negative Entfernung zum Ziel:
Die Umsetzung der potenziellen Formung in der Praxis
Das Theorem ist klar. Die Implementierung ist nicht. Die Hauptsubtilität: potenziell basierende Gestaltung behält nur die Optimierung für den nicht oder ordnungsgemäß diskonteten Fall mit unendlichem Horizont. In der Praxis laufen Sie endliche Episoden mit vorzeitiger Beendigung aus, was die theoretische Garantie bricht. Der Begriff "Formen" kann nun Anreize zur Verlängerung von Episoden (die Akkumulation von positiveren Formen) schaffen, anstatt die Aufgabe schnell zu beenden.
Die Lösung besteht darin, potenziell basierende Formatierung mit einer Zeitstrafe pro Schritt und einer dominierenden Endgebühr zu kombinieren. Die Zeitstrafe sorgt dafür, dass Episoden nicht weiterziehen, und die Endgebühr gewährleistet, dass die Aufgabe immer das angesammelte Formatierungssignal dominiert.
def compute_reward(self, obs, action, next_obs, done, info):
# Potential-based shaping (preserves optimal policy)
phi_current = -torch.norm(obs["object_pos"] - obs["target_pos"], dim=-1)
phi_next = -torch.norm(next_obs["object_pos"] - next_obs["target_pos"], dim=-1)
shaping = self.gamma * phi_next - phi_current
# Grasp bonus: activated only on first contact
grasp_reward = 0.0
if info["contact_force"] > self.contact_threshold and not info["has_grasped"]:
grasp_reward = 0.5
# Sparse task completion (dominates all dense signals)
success = next_obs["object_at_target"].float()
task_reward = 10.0 * success
# Time penalty (discourages episode prolongation)
time_penalty = -0.01
# Action smoothness penalty
jerk = torch.norm(action - 2 * obs["prev_action"] + obs["prev_prev_action"], dim=-1)
smooth_penalty = -0.02 * jerk
total = task_reward + 0.3 * shaping + grasp_reward + time_penalty + smooth_penalty
return total
Die wichtigsten Verhältnisse: Die Belohnung für die Befüllung der Aufgabe (10.0) sollte mindestens 10x die maximale kumulative Formung über eine Episode sein. Mit einer Arbeitsflächendiagonale von ~ 1.0m und Episoden von 200 Schritten ist die maximale kumulative Formung ungefähr 0,3 × 1,0 = 0,3 pro Schritt oder 60 über eine Episode. So ist eine Aufgabe Belohnung von 10,0 eigentlich zu niedrig
Mehrphasige Potenzialfunktionen
Viele Manipulationsarbeiten haben mehrere aufeinanderfolgende Phasen: Ansatz, Greifen, Transport, Ort. Eine einzige potentielle Funktion (Distanz bis zum Endziel) liefert kein Gestaltungssignal für die Ansatz- und Greifenphasen.
- Phase 1
Ansatz: Φ(s) = −d(end_effector, Objekt). Gibt einen Verzögerungsschritt zum Objekt. - Phase 2
Griffe: Φ(s) = −d(End_Effektor, Objekt) + Griffe_Qualität(s). - Phase 3
Transport: Φ(s) = −d(Objekt, Ziel). Nur aktiv nach dem Greifen wird erkannt. - Phase 4
Ort: Φ(s) = −d(Objekt, Ziel) − Orientierung_error(Objekt, Ziel_Orientierung). Aktiv, wenn sich das Objekt innerhalb von 5 cm vom Ziel befindet.
Die Phaseübergangsweise sollte durch physische Signale (Kontaktkraftschwellen, Objekthöhenänderungen) erkannt werden, nicht durch Zeitschritte.
Die Komponenten der Prämien, die für Manipulationen spezifisch sind
| Component | Normalization | Weight | Activate When | Purpose |
|---|---|---|---|---|
| EE-to-Object Distance | Arbeitsraum diagonal (0.8–1.2m) | 0.1–0.3× | Before first contact | Encourage approach |
| Object-to-Target Distance | Arbeitsraum diagonal | 0.4–0.6× | After grasp detected | Primary transport signal |
| Grasp Quality | [0, 1] continuous | 0.1–0.2× | During contact | Prevent dragging |
| Orientation Alignment | Quaternion error [0, π] | 0.1–0.2× | Last 20% of transport | Correct placement angle |
| Action Smoothness (jerk) | Max expected jerk | −0.05–0.1× | Always | Hardware-safe motions |
| Joint Limit Penalty | Binary per joint | −0.1× per violation | Always | Stay within workspace |
| Collision Penalty | Binary | −1.0 terminal | Self-collision or table | Physical safety |
| Time Penalty | Constant per step | −0.01× | Always | Discourage stalling |
Endeffektor zu Objektentfernung: Normalisieren Sie sich nach Arbeitsplatzdiagonal (typischerweise 0,8
Objekt für Zielentfernung: Aktivieren Sie erst nach Erkennung der Greifung (Kontaktkraft > Schwelle). Normalisieren Sie nach Arbeitsraum. Gewicht: 0,4
Grasp-Qualität: Ein binäres oder kontinuierliches Maß für die Kontaktstabilität
Action Smoothness: Strafverletzung von Junk (dritte Derivative der gemeinsamen Position) um junky Bewegungen zu entmutigen, die die Hardware beschädigen. Berechnen Sie als
Belohnung beim Hacken: Ein Feldführer
Die folgenden Hacks erscheinen immer wieder in Manipulationen-Lohn-Designs. Sie werden als Warnungen aufgeführt, nicht als Entdeckungen.
| Hack Name | Mechanism | Frequency | Fix |
|---|---|---|---|
| Hover Exploitation | EE hovers near object, accumulating proximity reward without grasping | Very common | Disable EE-proximity after first contact; add time penalty for non-contact phases |
| Table Push for Termination | Pushes object off table to trigger early episode end (less accumulated negative reward) | Common | Large negative terminal reward (−10×) for out-of-bounds; verify termination conditions |
| Success Oscillation | Rapidly oscillates object through target zone to trigger success on rolling window check | Common | Require success maintained for 10+ consecutive steps |
| Gravity Exploitation | Drops object near target from height, scoring placement reward during free-fall | Moderate | Check that EE is within 5cm of object at success time; require low object velocity (<0.05 m/s) |
| Contact Cycling | Repeatedly touches and releases object to accumulate first-contact bonus | Moderate | Make grasp bonus one-time per episode using a boolean flag |
| Joint Limit Surfing | Jams joints against limits to achieve workspace positions unreachable with smooth motion | Occasional | Add continuous joint-limit proximity penalty, not just at-limit penalty |
| Sim Physics Exploitation | Exploits penetration or tunneling bugs to teleport objects | Rare but catastrophic | Validate object positions between steps; flag teleports >5cm as invalid |
Prinzipien des Anti-Hacking-Designs
- Dominante Endlohn: Die Endlohn für die Erfüllung einer Aufgabe sollte mindestens 10x die maximal mögliche kumulative Dichte Belohnung über eine Episode betragen. Dies stellt sicher, dass die Politik immer die tatsächliche Erfüllung der Aufgabe vorzieht, als die Ausbeutung dichte Belohnungsaufhalte. Berechnen Sie das Maximum: (maximal Formverteilung pro Schritt) × (maximal Episodelänge) × (Formgewicht). Ihre endgültige Belohnung muss diese um eine Größenordnung übersteigen.
- Komponentennormalization: Alle dichten Belohnungskomponenten in [-1, 1] behalten und explizite Gewichte festlegen. Unnormalized Belohnungskomponenten in verschiedenen Skalen interagieren unvorhersehbar und machen die Belohnungfunktion sehr empfindlich für Implementierungsdetails. Log die Laufstatistiken jeder Komponente während des Trainings
wenn die Variance eines Komponenten >10x eines anderen ist, haben Sie ein Normalizationsproblem. - Adversarial Testing: Bevor das Training läuft, testen Sie Ihre Belohnungsanwendung mit einer scripted adversarial-Politik, die absichtlich versucht, die Belohnung zu maximieren, ohne die Aufgabe zu beenden. Wenn der Gegner einen hohen Belohnungspfad findet, der nicht die Aufgabe beendet, gestalten Sie das Projekt neu, bevor Sie GPU-Zeit verschwenden. Sie dauern 5 Minuten und sparen Tage.
- Logging der Belohnungskomponenten: Melde jede Belohnungskomponente während des Trainings individuell ein, nicht nur die Gesamtzahl. Wenn die Belohnungskurven gesund aussehen, aber die Erfolgsrate stallt, zeigt die Komponentenverteilung, welchen Begriff der Agent nutzt.
Weiterentwicklung des Lehrplans
Für komplexe mehrphasige Aufgaben
Stufe 1: Grobereistung (Schritte 05M)
Die Zielgruppe ist die Lernung von Grundlagen für die Armsteuerung und die Navigation im Arbeitsplatz. Erfolgsschwelle: EE innerhalb von 5 cm vom Objekt.
Stufe 2: Erlangung von Graden (Schritte 5M20M)
Zugabe die Qualitäts Belohnung. Verstärke die Nähe Schwelle. Der Agent muss nun tatsächlich die Finger um das Objekt schließen und einen stabilen Kontakt herstellen. Erfolgs Schwelle: Objekt, das 10 cm über der Tischoberfläche erhöht wird.
Stufe 3: Transport (Schritte 20M50M)
Aktivieren Sie die Entfernung von Objekt zu Ziel Belohnung. Der Agent muss das Objekt greifen, heben und in Richtung Ziel bewegen. Erfolgsschwelle: Objekt innerhalb von 5 cm vom Ziel.
Stufe 4: Präzisionsanbringung (Schritte 50M100M)
Alle Schwellenwerte verschärfen. Orientierungsausrichtung Belohnung hinzufügen. Aktivieren Sie den exponentiellen Präzisionsbonus. Erfolgsschwelle: Gegenstand innerhalb von 2 mm vom Ziel mit Orientierungsfehler <5 Grad. Hier benötigen Sie die meisten Geduld und die sorgfältigste Belohnung.
class CurriculumRewardManager:
"""Manages reward curriculum progression based on training progress."""
def __init__(self, env_cfg):
self.stages = [
{"name": "reach", "threshold": 0.70, "min_steps": 2_000_000},
{"name": "grasp", "threshold": 0.60, "min_steps": 5_000_000},
{"name": "transport", "threshold": 0.50, "min_steps": 10_000_000},
{"name": "precise", "threshold": None, "min_steps": 0},
]
self.current_stage = 0
self.total_steps = 0
def maybe_advance(self, success_rate, steps_in_stage):
stage = self.stages[self.current_stage]
if (stage["threshold"] is not None
and success_rate >= stage["threshold"]
and steps_in_stage >= stage["min_steps"]
and self.current_stage < len(self.stages) - 1):
self.current_stage += 1
print(f"Advancing to stage: {self.stages[self.current_stage]['name']}")
def get_reward_weights(self):
"""Returns reward component weights for current curriculum stage."""
if self.current_stage == 0: # reach
return {"ee_dist": 1.0, "grasp": 0.0, "obj_dist": 0.0, "orient": 0.0}
elif self.current_stage == 1: # grasp
return {"ee_dist": 0.5, "grasp": 0.5, "obj_dist": 0.0, "orient": 0.0}
elif self.current_stage == 2: # transport
return {"ee_dist": 0.2, "grasp": 0.3, "obj_dist": 0.5, "orient": 0.0}
else: # precise
return {"ee_dist": 0.1, "grasp": 0.2, "obj_dist": 0.4, "orient": 0.3}
Die Stufenfortschrittsschwellen (70%, 60%, 50%) werden absichtlich unter 100% gesetzt. Sie möchten, dass die Politik nach dem Lernen des wesentlichen Verhaltens in jeder Stufe weitergeht, nicht nach der Überpassung zur einfachen Version. Wenn Sie auf einen 95%igen Erfolg warten, entwickelt die Politik Gewohnheiten, die für die einfache Belohnung optimiert sind, die schwer zu entlernen sind, wenn die Präzisionsanforderungen zunehmen.
Die Unterschiede zwischen Sim und Real
Eine Belohnung, die perfekt in Simulationen funktioniert, kann auch bei Domänenrandomisierung völlig anderes Verhalten auf der realen Hardware erzeugen.
1. Kontakt Dynamik Fehlverhältnis
Sim-Kontaktmodelle (MuJoCo's Soft-Contact, Isaac Sim's GPU-beschleunigter starrer Körper) unterscheiden sich von der Realität in Reibungskoeffizienten, Kontaktstiffheit und Verformungsverhalten. Eine Belohnung, die von feinen Kontaktzuständen (Grapsqualität, schieberige Reibung) abhängt, wird unterschiedliche Gradienten im Sim versus real erzeugen. Mitigation: Randomisieren Sie die Reibungskoeffizienten (0,3
2. Beobachtungsverzögerung
Echte Roboterbeobachtungen kommen mit variabler Latenz (1
3. Aktualisierungsmodell Fehlverhältnis
Simulierte Motoren reagieren sofort und genau auf Befehle. Echte Servos haben Bandbreitebegrenzungen (typischerweise 5
Praktischer Test: Bevor Sie eine sim-trained-Politik einsetzen, bewerten Sie sie in Simulationen mit allen Randomisierungen, die auf ihre Extreme gleichzeitig eingestellt sind (Schlimmste Reibung, maximale Verzögerung, geringste Aktorenbandbreite). Wenn die Erfolgsrate über 50% bleibt, ist die Politik wahrscheinlich robust genug für eine reale Einsatzzahl. Wenn sie unter 30% fällt, fügen Sie während des Trainings mehr Randomisierungen hinzu.
Belohnungsschwerpunkte für bestimmte Aufgaben
Nachfolgend sind Feldversuche der Belohnungsspezifikationen für gemeinsame Manipulationsarbeiten, die durch mehrere Design-Iterationen im RCSV abgestimmt sind:
Wählen und Platzieren (einfach)
Zwei-Phase: Annäherung + Transport. EE-Distanzformung (Gewicht 0,3) bis zum Kontakt, dann Objekt-Distanzformung (Gewicht 0,5) nach dem Greifen. Terminal: +100 für ein Objekt innerhalb von 3 cm vom Ziel für 10 Schritte. Zeitstrafe: −0,01/Schritt. Gesamttraining: ~15M Schritte in Isaac Lab (4096 envs), ~45 Minuten auf RTX 4090.
Einfügung von Peg (Tengtoleranz < 1 mm)
Die Grundsatz: Verwenden Sie in der letzten Einfügungsphasen eine Kraft-basierte Belohnung anstelle von Position. Der Grund ist, dass die Positiongenauigkeit unter Millimeter nicht von der Vision zuverlässig ist, aber das Kraftprofil während der erfolgreichen Einfügung ist unverwechselbar und konsistent. Bezahl die charakteristische Kraftsignatur (steigende Z-Kraft mit begrenzten XY-Kräften) anstelle der Position.
Objekt-Reorientierung (in Hand)
Einphasige, aber erfordert eine geschickte Fingersteuerung. Belohnung: Orientierungsfehler zwischen Strom- und Ziellistung, gemessen als geodesischer Entfernung auf SO(3). Kritische Ergänzung: Strafe gegen die objektive lineare Geschwindigkeit (das Objekt sollte an Ort und Stelle rotieren, nicht über den Arbeitsplatz fliegen). Diese Aufgabe ist bekanntlich schwierig
Zweimalgerichtete Versammlung
Für jede Hand wird ein separater Belohnungsschlag sowie ein Koordinierungsbonus benötigt. Hier wird die Bezeichnung für die Belohnung wirklich schwierig: zu viel Gewicht bei der Koordinierung führt dazu, dass beide Arme in der richtigen relativen Pose einfrieren, ohne die Aufgabe tatsächlich zu vollenden; zu wenig Gewicht und die Arme kollidieren.
Häufige Fehler beim Entwerfen von Belohnungen
- Lohn für Beobachtung, nicht angegeben: Berechnungs Belohnung aus Kamerabeobachtungen (die Lärm haben) anstatt privilegierten Sim-Zustand (was genau ist). Während der Sim-Ausbildung berechnen Sie immer die Belohnung aus dem Grund-Wahrheit-Zustand.
- Vergessen Sie die Episodegrenzen: Potenzialbasierte Gestaltung muss die Reset-Episode korrekt behandeln. Wenn Sie das Potenzial beim Episodestart nicht ausnulln, erhält der erste Schritt jeder Episode ein falsches großes Gestaltungssignal aus der Differenz zwischen dem Terminal-Zustandspotenzial und dem Anfangszustandpotenzial.
- Reward Delay Mismatch: Wenn Ihre Belohnung von der Kontaktdetection abhängt und Ihre Kontaktdetection eine 2-Schritt-Verzögerung hat, kommt das Belohnungssignal 2 Schritte später an. Die Politik lernt, 2 Schritte voraus zu handeln, wenn sie "bürden" und Schwingungen verursachen sollte. Stellen Sie sicher, dass die Berechnung der Belohnung und das Beobachtungszeitraum ausgerichtet sind.
- ** Nicht bei Grenzen testen:** Ihre Belohnung kann für Objekte in der Mitte des Arbeitsplatzes funktionieren, aber für Objekte in der Nähe von Rändern (wo sich die Entfernungsanordnung anders verhält) oder in der Nähe der gemeinsamen Grenzen des Roboters (wo die Reichbarkeitsbeschränkungen mit dem Belohnungsgradieent interagieren) brechen.
- ** Einzel-Samen-Evaluierung:** RL ist bekannt für die Samenempfindlichkeit. Eine Belohnung, die 90% Erfolg auf einem Samen erzeugt, kann 20% auf einem anderen erzeugen. Bewertet immer mindestens 3 Samen, bevor Sie Ihre Belohnungsabschlüsse abschließen.
Werkzeuge und Rahmenwerke
Die folgenden Rahmenbedingungen bieten eine Belohnungsinfrastruktur für die Manipulation von RL:
- Isaac Lab (NVIDIA): GPU-parallelierte Envs mit eingebauten Belohnungsklassen. Am besten für Skala (4.096
16.384 Parallelen Envs). Die T6 -Klasse unterstützt gewichtete Mehrkomponenten Belohnungen mit Pro-Komponenten-Logging aus der Box. - MuJoCo + Gymnasium: Genauerere Kontaktphysik, weniger parallele Envs (typischerweise 1
64 mit CPU). Besser für Belohnung Prototypen, wo Sie einzelne Episoden im Detail inspizieren müssen. - robosuite (Stanford): Vorgebaute Manipulationsaufgaben mit Standard-Lohnfunktionen. Guter Ausgangspunkt für die Lohngestaltung
Lernen Sie ihre Implementierungen, bevor Sie Ihre eigenen schreiben. Die Aufzüge, Stapel und Nuss-Assembly-Lohn sind gut getestet. - RCSV RL Umgebung: Vorkonfigurierte Isaac Lab Umgebungen mit OpenArm und anderen RCSV Hardware-Modellen, validierte Belohnung Funktionen und Domänen-Randomisierung Voreinstellungen.
Verwandte Lesungen
Gemässliche Fehler beim Imitationslernen · Aktpolitik erklärt · Roboter Startup Tech Stack · Robotik Glossar · RCSV RL Umgebungen
Die Simulationsumgebung des RCSV umfasst Referenz-Lohnimplementierungen für Standard-Manipulationsaufgaben mit integrierten Sicherheitsmaßnahmen gegen Hacking.
Simulationsumgebungen für Manipulationen RL
RCSV bietet vorkonfigurierte Simulationsumgebungen mit validierten Belohnungsschutzfunktionen für gemeinsame Manipulationsarbeiten.
Erforschen Sie RL-Umgebungen Sprechen Sie mit einem Lösungsingenieur







