LeRobot documentation

Entrenar RL en simulación

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.7.0).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Entrenar RL en simulación

Esta guía explica cómo usar los entornos de simulación gym_hil como alternativa a los robots reales al trabajar con el marco LeRobot para el aprendizaje por refuerzo con intervención humana (HIL).

gym_hil es un paquete que proporciona entornos de simulación compatibles con Gymnasium, diseñados específicamente para el aprendizaje por refuerzo con intervención humana (Human-In-the-Loop). Estos entornos le permiten:

  • Entrena políticas en simulación para probar el stack de RL antes de entrenar en robots reales

  • Recopilar demostraciones en simulación usando dispositivos externos como mandos o teclados

  • Realizar intervenciones humanas durante el aprendizaje de la política

Actualmente, el entorno principal es una simulación de un robot Franka Panda basada en MuJoCo, con tareas como recoger un cubo.

Instalación

Primero, instala el paquete gym_hil en el entorno de LeRobot:

pip install -e ".[hilserl]"

¿Qué necesito?

  • Un gamepad o teclado para controlar el robot
  • Una GPU de Nvidia

Configuración

Para usar gym_hil con LeRobot, es necesario crear un archivo de configuración. Se proporciona un ejemplo aquí. Las secciones clave de la configuración incluyen:

Tipo de entorno y tarea

{
  "env": {
    "type": "gym_manipulator",
    "name": "gym_hil",
    "task": "PandaPickCubeGamepad-v0",
    "fps": 10
  },
  "device": "cuda"
}

Tareas disponibles:

  • PandaPickCubeBase-v0: Entorno básico
  • PandaPickCubeGamepad-v0: Con control de mandos
  • PandaPickCubeKeyboard-v0: Con control de teclado

Configuración del procesador

{
  "env": {
    "processor": {
      "control_mode": "gamepad",
      "gripper": {
        "use_gripper": true,
        "gripper_penalty": -0.02
      },
      "reset": {
        "control_time_s": 15.0,
        "fixed_reset_joint_positions": [
          0.0, 0.195, 0.0, -2.43, 0.0, 2.62, 0.785
        ]
      },
      "inverse_kinematics": {
        "end_effector_step_sizes": {
          "x": 0.025,
          "y": 0.025,
          "z": 0.025
        }
      }
    }
  }
}

Parámetros importantes:

  • gripper.gripper_penalty: Penalización por movimiento excesivo del agarre
  • gripper.use_gripper: Si se habilita el control de la pinza
  • inverse_kinematics.end_effector_step_sizes: Tamaño de los pasos en los ejes x, y, z del efector final
  • control_mode: Establecerlo en "gamepad" para usar un control de mandos

Ejecución con RL HIL de LeRobot

Uso básico

Para ejecutar el entorno, establezca mode en null:

python -m lerobot.rl.gym_manipulator --config_path path/to/gym_hil_env.json

Grabación de un conjunto de datos

Para recopilar un conjunto de datos, establezca el modo en record mientras define el repo_id y el número de episodios a registrar:

{
  "env": {
    "type": "gym_manipulator",
    "name": "gym_hil",
    "task": "PandaPickCubeGamepad-v0"
  },
  "dataset": {
    "repo_id": "username/sim_dataset",
    "root": null,
    "task": "pick_cube",
    "num_episodes_to_record": 10,
    "replay_episode": null,
    "push_to_hub": true
  },
  "mode": "record"
}
python -m lerobot.rl.gym_manipulator --config_path path/to/gym_hil_env.json

Entrenamiento de una política

Para entrenar una política, consulte el ejemplo de configuración disponible aquí y ejecute los servidores learner y actor. Inicie primero el learner, ya que el actor se conecta a él:

python -m lerobot.rl.learner --config_path path/to/train_gym_hil_env.json

En una terminal diferente, ejecuta el servidor de actor:

python -m lerobot.rl.actor --config_path path/to/train_gym_hil_env.json

El entorno de simulación ofrece una forma segura y repetible de desarrollar y probar los componentes de aprendizaje por refuerzo con intervención humana (Human-In-the-Loop) antes de desplegarlos en robots reales.

¡Felicidades 🎉, has completado este tutorial!

Si tienes alguna pregunta o necesitas ayuda, comunícate con nosotros en Discord.

Cita del artículo:

@article{luo2024precise,
  title={Precise and Dexterous Robotic Manipulation via Human-in-the-Loop Reinforcement Learning},
  author={Luo, Jianlan and Xu, Charles and Wu, Jeffrey and Levine, Sergey},
  journal={arXiv preprint arXiv:2410.21845},
  year={2024}
}
Update on GitHub