Volver a Blog

La recompensas para la manipulación de robots RL: qué funciona y qué no

Guía práctica para la ingeniería de recompensas para la manipulación de robots <unk> recompensas densas vs escasas, configuración basada en el potencial, progresión de recompensas en el currículo, brechas sim-a-real y cómo evitar el hackeo de recompensas.

Parte de: [Guía de armas de robots]

[← Blog] T9)

El diseño de recompensas es la parte de la RL que los libros de texto no explican y los profesionales aprenden a través de una experiencia dolorosa.

Las recompensas densas vs. baratas: el principal tradeoff

Las recompensas escasas son teóricamente limpias y no pueden ser hackeadas. Pero las recompensas escasas fallan catastróficamente para tareas de manipulación que superan los 10 pasos secuenciales debido a la asignación de crédito: cuando la póliza ve una recompensa solo al final del episodio, no tiene señal para explicar cuál de las 200 acciones anteriores contribuyó al éxito. La eficiencia de la muestra disminuye exponencialmente con el horizonte de tareas bajo recompensas escasas.

Las recompensas densas una señal de progreso por paso basada en algún proxy para el avance de la tarea mejoran drásticamente la eficiencia de la muestra. Un aprendizaje de política para colocar un objeto con una recompensa de distancia a la meta densa converge en 1050 × menos pasos de entorno que el equivalente escaso. El costo es el hacking de recompensas: el agente encuentra formas de maximizar su proxy sin resolver su tarea real.

Para poner números en esto: en nuestros índices de referencia de Isaac Lab para una tarea de pick-and-place en un simulado [OpenArm]T10), la recompensa escasa requirió aproximadamente 200M pasos en el entorno (alrededor de 8 horas en un RTX 4090 con 4.096 envs paralelos) para alcanzar el 70% de éxito. Pero el agente de recompensas densas también descubrió tres hacks de recompensas separados en el proceso, que requirieron un rediseño de recompensas iterativo. La habilidad práctica en la manipulación RL es construir recompensas densas que capturan la tarea sin abrir lagunas.

Regla de oro: Utilice recompensas escasas solo cuando su horizonte de tareas es inferior a 50 pasos y la configuración de la meta es inequívoca. Para todo lo demás inserción de peg, montaje, uso de herramientas, cualquier cosa de múltiples fases necesita una formación densa, y necesita presupuestar 25 iteraciones de rediseño de recompensas antes de comenzar el entrenamiento.

La formación basada en el potencial: la recompensa densa teóricamente segura

El teorema Ng, Daswani y Russell (1999) sobre la configuración de recompensas basadas en el potencial proporciona un enfoque matemáticamente basado para agregar recompensas densas sin cambiar la política óptima. La construcción es: T2, donde Φ es cualquier función potencial de valor real sobre los estados. Agregar F a su recompensa base r produce una recompensa en forma r + F que comparte el mismo conjunto de políticas óptimas que r solo.

Para la manipulación, la función potencial más natural es la distancia negativa a la meta: T3. Esto produce un término de formación que da una recompensa positiva cuando el agente mueve el objeto hacia el objetivo y una recompensa negativa cuando se aleja sin nunca recompensar al agente por estar cerca del objeto sin haberlo agarrado (lo cual sería una recompensa densa no basada en el potencial y cambiaría el comportamiento óptimo).

Implementar la formación basada en el potencial en la práctica

El teorema es limpio. La implementación no es. La sutileza principal: la configuración basada en el potencial conserva la óptimalidad solo para el caso de horizonte infinito sin descuento o correctamente descuento. El término de formación puede ahora crear incentivos para prolongar los episodios (acumular formas más positivas) en lugar de completar la tarea rápidamente.

La solución es combinar la formación basada en el potencial con una penalización de tiempo por paso y una recompensa terminal dominante. La penalización de tiempo asegura que los episodios no se arrastran, y la recompensa terminal asegura que la finalización de la tarea siempre domine cualquier señal de formación acumulada.

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

Las relaciones clave: la recompensa de finalización de tareas (10.0) debe ser al menos 10 veces la forma acumulada máxima en un episodio. Con una diagonal del espacio de trabajo de ~ 1.0 m y episodios de 200 pasos, la forma acumulada máxima es aproximadamente 0.3 × 1.0 = 0.3 por paso, o 60 en un episodio. Así que una recompensa de tareas de 10.0 es en realidad demasiado baja querrías 100+ para garantizar el dominio. Aquí usamos 10.0 para claridad; en producción, escalar adecuadamente.

Funciones potenciales en múltiples fases

Muchas tareas de manipulación tienen múltiples fases secuenciales: enfoque, agarre, transporte, lugar. Una sola función potencial (distancia al objetivo final) no proporciona ninguna señal de formación para las fases de acercamiento y agarre. La solución son las funciones potenciales conscientes de fase que cambian según el progreso de la tarea:

  • Fase 1 Aproximación: Φ(s) = −d(fin_efector, objeto). Proporciona gradiente hacia el objeto.
  • Fase 2 Captura: Φ(s) = −d(fin_efector, objeto) + captura_qualidad(s). Premia el contacto estable.
  • Fase 3 Transporte: Φ(s) = −d(objeto, objetivo). Sólo se detecta activo después de la captura.
  • Fase 4 Lugar: Φ(s) = −d(objeto, objetivo) − orientación_errore(objeto, objetivo_orientación).

Las transiciones de fase deben ser detectadas por señales físicas (umbrales de fuerza de contacto, cambios de altura del objeto), no por pasos en el tiempo.

Componentes de recompensas específicas para la manipulación

Component Normalization Weight Activate When Purpose
EE-to-Object Distance Espacio de Trabajo diagonal (0.8–1.2m) 0.1–0.3× Before first contact Encourage approach
Object-to-Target Distance Espacio de Trabajo 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 Cuaternión 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

** Efecto final a la distancia del objeto:** Normaliza por diagonal del espacio de trabajo (típicamente 0.81.2m) para mantener el componente en [0, 1). Peso: 0.10.3× escala de recompensa total. Propósito: fomentar el acercamiento al objeto. Deshabilitar después del primer contacto para evitar el hackeo de objetos cerca de los objetos. En la práctica, usamos un peso de activación de descomposición: peso completo cuando no se ha producido contacto, descomposición lineal a cero más de 10 pasos después del primer contacto, luego apagado permanentemente.

Objeto a distancia objetivo: Activar sólo después de que se detecta el agarre (fuerza de contacto > umbral). Normaliza por espacio de trabajo. Peso: 0.40.6×. Esta es la señal densa primaria para la fase de transporte. Para tareas con tolerancias de colocación apretadas (<2mm), añadir un bono exponencial en los últimos 5cm: T4 donde d es en metros. Esto crea un fuerte gradiente para la fase de colocación de precisión sin afectar el comportamiento de transporte más amplio.

** Calidad de grabación:** Una medida binaria o continua de la estabilidad de contacto por ejemplo, si las normas de contacto forman un cierre de fuerza positiva, o un puntaje GQ-CNN si lo tienes. Peso: 0.10.2×. Sin esto, el agente aprende a arrastrar objetos en lugar de agarrarlos. En la simulación, se puede calcular la calidad de agarre de los antípodos a partir de los puntos de contacto y las normas proporcionadas por el motor físico. En MuJoCo: compruebe que existen al menos 2 puntos de contacto en lados opuestos del objeto con ángulos normales que difieren en > 150 grados.

Listo de acción: Penaliza el jerk (tercer derivado de la posición conjunta) para desalentar movimientos jerky que dañan el hardware. Calcule como T5. Peso: 0.050.1× como una penalidad negativa. Es crítico para la transferencia sim-real ya que las políticas de jerky sim fallan en el hardware real debido a la elasticidad conjunta no modelada. En OpenArm, en concreto, encontramos que las políticas entrenadas sin penalidades de empuje causaron que el servo articular de la muñeca se sobrecalentara dentro de 15 minutos de operación continua.

Hacking de recompensas: una guía de campo

Los siguientes hacks aparecen repetidamente en los diseños de recompensas de manipulación.

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

Principios de diseño anti-hacking

  • ** Dominancia de la recompensa terminal:** La recompensa terminal para completar una tarea debe ser al menos 10x la máxima recompensa densa acumulada posible en un episodio. Esto garantiza que la política siempre prefiere completar la tarea en realidad en lugar de explotar la acumulación de la recompensa densa. Calcule el máximo: (formación máxima por paso) × (lengitud máxima del episodio) × (peso de formación). Su recompensa terminal debe exceder esto en un orden de magnitud.
  • ** Normalización de componentes:** Mantenga todos los componentes de recompensa densa en [-1, 1] y establezca pesas explícitas. Los componentes de recompensa no normalizados en diferentes escalas interactúan de manera impredecible y hacen que la función de recompensa sea muy sensible a los detalles de implementación. Registre las estadísticas de ejecución de cada componente durante el entrenamiento si la variación de un componente es > 10 × de otro, tiene un problema de normalización.
  • ** Prueba de adversarios:** Antes de que se realice el entrenamiento completo, prueba tu función de recompensa con una política de adversarios scripted que intencionalmente intenta maximizar la recompensa sin completar la tarea. Si el adversario encuentra un camino de alta recompensa que no sea la finalización de la tarea, rediseña antes de perder el tiempo de la GPU. En RCSV mantenemos una biblioteca de ~20 scripts adversarios para tareas comunes de manipulación. Los ejecutar tomará 5 minutos y ahorra días.
  • ** Registro de componentes de recompensa:** Registre cada componente de recompensa individualmente durante el entrenamiento, no solo el total. Cuando las curvas de recompensa parecen saludables pero la tasa de éxito se detiene, la descomposición de componentes revela qué término está explotando el agente. Utilice TensorBoard o Pesas y Prejuicios para rastrear cada componente como un escalar separado.

Progreso en el programa de estudios y en las recompensas

Para tareas complejas de múltiples fases ensamblar un equipo, insertar una peg con un espacio de limpieza <1 mm, ordenar objetos mixtos una función de recompensa estática única rara vez funciona. El enfoque que tiene éxito consistentemente es la progresión de la recompensa del plan de estudios: comienza con una recompensa simplificada que hace que la tarea sea aprendizaje, luego aumente gradualmente la dificultad y los requisitos de precisión.

Etapa 1: Llegado en grueso (pasos 05M)

Recompensa sólo la proximidad del efecto final al objeto. No se requiere calidad de captura, no se requiere precisión de colocación. El objetivo es aprender el control básico de brazos y la navegación en el espacio de trabajo. Umbral de éxito: EE dentro de 5 cm del objeto.

Etapa 2: Adquisición de un título (pasos 5M20M)

Añadir recompensa de calidad de agarre. Aumente el umbral de proximidad. El agente ahora necesita cerrar los dedos alrededor del objeto y establecer contacto estable. Umbral de éxito: objeto levantado 10 cm sobre la superficie de la mesa.

Estación 3: Transporte (pasos 20M50M)

Activar la recompensa de distancia objeto a objetivo. El agente debe agarrar, levantar y mover el objeto hacia el objetivo. Umbral de éxito: objeto dentro de 5 cm del objetivo.

Etapa 4: Colocación de precisión (pasos 50M100M)

Aumente todos los umbrales. Añade la recompensa de alineación de orientación. Habilite el bono de precisión exponencial. Umbra de éxito: objeto dentro de 2 mm del objetivo con error de orientación < 5 grados. Aquí es donde necesita más paciencia y el ajuste de recompensa más cuidadoso.

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}

Los umbrales de avance de etapa (70%, 60%, 50%) se establecen deliberadamente por debajo del 100% usted quiere que la política siga adelante una vez que haya aprendido el comportamiento esencial en cada etapa, no una vez que haya superado la versión fácil. Si espera el éxito del 95% antes de avanzar, la política desarrolla hábitos optimizados para la recompensa fácil que son difíciles de desaprender cuando aumentan los requisitos de precisión.

Las diferencias entre las recompensas sim-real

Una función de recompensa que funciona perfectamente en la simulación puede producir un comportamiento completamente diferente en el hardware real, incluso con la aleatorización de dominios.

1. Desajuste de Dinámica de Contacto

Los modelos de contacto Sim (el contacto blando de MuJoCo, el cuerpo rígido acelerado por la GPU de Isaac Sim) difieren de la realidad en coeficientes de fricción, rigidez de contacto y comportamiento de deformación. Mitigación: rango de fricción de los coeficientes de fricción (0,31.2× nominal), rigidez de contacto (±50%), y masa de objeto (±30%) durante el entrenamiento.

2. Retraso en la observación

Las observaciones reales de robots llegan con latencia variable (115ms para codificadores conjuntos, 3080ms para marcos de cámara). Los componentes de recompensa calculados a partir de observaciones que están obsoletas por diferentes cantidades producen señales inconsistentes. En sim, todas las observaciones se sincronizan. Mitigation: agregar retrasos de observación aleatorios (02 pasos de control) a los sensores simulados durante el entrenamiento. Esto es más importante de lo que la mayoría de los practicantes se dan cuenta hemos visto políticas que logran un 90% de éxito en la simulación bajar a 30% en el hardware real puramente por el retraso de la observación.

3. Desajuste del modelo de actuador

Los motores simulados responden a los comandos de forma instantánea y exacta. Los servos reales tienen límites de ancho de banda (generalmente 515 Hz para los servos controlados por posición), reacción de contraposición (0,10,5 grados en unidades armónicas típicas) y ondulación de par. Las recompensas que dependen del posicionamiento preciso del efecto final se ven afectadas porque el robot real no puede alcanzar las posiciones que espera la política de sim. Mitigation: el modelo de dinámica del actuador como un filtro de bajo paso de primer orden con frecuencia aleatoria entre 520 Hz, y añadir ruido de reacción de reacción uniforme de ±0.3 grados por articulación.

** Prueba práctica:** Antes de implementar una política simulada, evalúala en simulación con todas las aleatorizaciones fijadas a sus extremos simultáneamente (fricción en el peor de los casos, retraso máximo, ancho de banda más bajo del actuador). Si la tasa de éxito se mantiene por encima del 50%, la política es probablemente lo suficientemente robusta para un despliegue real.

Funciones de recompensa para tareas específicas

Las siguientes son las especificaciones de recompensa probadas en el campo para las tareas comunes de manipulación, sintonizadas a través de múltiples iteraciones de diseño en RCSV:

Selección y ubicación (simples)

Dos fases: aproximación + transporte. Formación de distancia EE (peso 0.3) hasta el contacto, luego formación de distancia objeto (peso 0.5) después de la captura. Terminal: +100 para objeto dentro de 3 cm del objetivo para 10 pasos. Penalidad de tiempo: −0.01/paso. Entrenamiento total: ~15M pasos en Isaac Lab (4096 envs), ~45 minutos en RTX 4090.

Inserción de peg (tolerancia firme < 1 mm)

El programa de estudios de cuatro fases es necesario. Aproximación, agarre, alineación gruesa (eje de peg dentro de 10 grados del eje del agujero), inserción fina. La visión crítica: usar recompensas basadas en la fuerza en la fase de inserción final en lugar de basadas en la posición. La razón es que la precisión de la posición sub-milimétrica es poco confiable desde la visión, pero el perfil de fuerza durante la inserción exitosa es distintivo y consistente. Recompensa la firma de fuerza característica (fuerza Z creciente con fuerzas XY limitadas) en lugar de posición.

Reorientación de objetos (en mano)

Una fase única pero requiere un control dextero del dedo. Recompensa: error de orientación entre la corriente y la orientación del objetivo, medido como distancia geodésica en SO(3). Adición crítica: penalizar la velocidad lineal del objeto (el objeto debe girar en su lugar, no volar a través del espacio de trabajo). También penalizar los eventos de deslizamiento del dedo-objeto detectados por caídas repentinas en la fuerza de contacto. Esta tarea es notoriamente difícil esperar 200M + pasos y tasas de éxito de 4060% incluso con un diseño de recompensa cuidadoso. Funciona mejor con la mano de Allegro en simulación; en el hardware real, la retroalimentación táctil de la mano de la Sombra ayuda pero introduce ruido de sensor.

Asamblea bimanual

Requiere flujos de recompensa separados para cada brazo, más un bono de coordinación. Cada brazo obtiene sus propias fases de aproximación / agarre / transporte. Es aquí donde el diseño de la recompensa se vuelve realmente difícil: demasiado peso en la coordinación hace que ambos brazos se congelen en la posición relativa correcta sin completar la tarea; demasiado poco peso y los brazos chocan.

Errores comunes en el diseño de las recompensas

  1. ** Recompensa en observación, no se indica:** Recompensa de computación por observaciones de cámaras (que tienen ruido) en lugar de estado de sim privilegiado (que es exacto).
  2. ** Olvidar los límites del episodio:** La configuración basada en el potencial necesita manejar los resets de los episodios correctamente. Si no se cero el potencial al inicio del episodio, el primer paso de cada episodio recibe una señal de configuración grande falsa de la diferencia entre el potencial de estado terminal y el potencial de estado inicial.
  3. ** Desajuste de retraso de la recompensa:** Si su recompensa depende de la detección de contactos y su detección de contactos tiene un retraso de 2 pasos, la señal de recompensa llega 2 pasos tarde. La política aprende a actuar 2 pasos antes de cuando "debería", causando oscilación. Asegúrese de que el cálculo de la recompensa y el tiempo de observación estén alineados.
  4. No se realizan pruebas en los límites: Su recompensa puede funcionar para objetos en el centro del espacio de trabajo, pero se rompe para objetos cerca de los bordes (donde la normalización de la distancia se comporta de manera diferente) o cerca de los límites conjuntos del robot (donde las restricciones de accesibilidad interactúan con el gradiente de recompensa).
  5. Evaluación de semilla única: RL es notoriamente sensible a las semillas. Una recompensa que produce un 90% de éxito en una semilla puede producir un 20% en otra. Siempre evalúa al menos 3 semillas antes de concluir sus trabajos de recompensa. En RCSV, usamos 5 semillas como estándar y reportamos media ± std.

Herramientas y marcos

Los siguientes marcos proporcionan una infraestructura de función de recompensa para la manipulación RL:

  • ** Isaac Lab (NVIDIA):** Env en paralelo con GPU con clases de función de recompensa incorporadas. Mejor para la escala (4,09616,384 env paralelo). La clase T6 admite recompensas ponderadas de varios componentes con registro por componente fuera de la caja. Recomendado para la capacitación de producción.
  • MuJoCo + Gymnasium: Física de contacto más precisa, menos entornos paralelos (típicamente 164 con CPU). Mejor para prototipos de recompensa donde se necesita inspeccionar los episodios individuales en detalle.
  • robosuite (Stanford): tareas de manipulación preconstruidas con funciones de recompensa estándar. Un buen punto de partida para el diseño de recompensas estudiar sus implementaciones antes de escribir la suya.
  • ** Ambiente RL de RCSV:** Ambientes de laboratorio de Isaac preconfigurados con OpenArm y otros modelos de hardware de RCSV, funciones de recompensa validadas y predefinidos de aleatorización de dominios. Ver documentación.

Lectura relacionada

Erros comunes en el aprendizaje por imitación · Explicado en la política de ACT · Palabra de tecnología de inicio de robots · Glosario de robótica · Entornos de RL de RCSV

El entorno de simulación del RCSV incluye implementaciones de recompensas de referencia para tareas de manipulación estándar con garantías anti-hacking incorporadas.

Entornos de simulación para la manipulación RL

RCSV proporciona entornos de simulación preconfigurados con funciones de recompensa validadas para tareas de manipulación comunes.

Explorar los entornos de RL Hablar con un ingeniero de soluciones