LeRobot documentation

Treinar RL em Simulação

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

and get access to the augmented documentation experience

to get started

Treinar RL em Simulação

Este guia explica como usar os ambientes de simulação gym_hil como alternativa a robôs reais ao trabalhar com o framework LeRobot para aprendizado por reforço com intervenção humana (Human-In-the-Loop, HIL).

gym_hil é um pacote que fornece ambientes de simulação compatíveis com Gymnasium, projetados especificamente para aprendizado por reforço com intervenção humana (Human-In-the-Loop). Esses ambientes permitem que você:

  • Treine políticas em simulação para testar a pilha de RL antes de treinar em robôs reais

  • Coletar demonstrações em simulação usando dispositivos externos, como controles de videogame ou teclados

  • Realizar intervenções humanas durante o aprendizado de política

Atualmente, o ambiente principal é uma simulação do robô Franka Panda baseada no MuJoCo, com tarefas como pegar um cubo.

Instalação

Primeiro, instale o pacote gym_hil no ambiente LeRobot:

pip install -e ".[hilserl]"

Do que eu preciso?

  • Um controle de videogame ou teclado para controlar o robô
  • Uma GPU da Nvidia

Configuração

Para usar gym_hil com LeRobot, você precisa criar um arquivo de configuração. Um exemplo está disponível aqui. As principais seções de configuração incluem:

Tipo de Ambiente e Tarefa

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

Tarefas disponíveis:

  • PandaPickCubeBase-v0: Ambiente básico
  • PandaPickCubeGamepad-v0: Com controle por gamepad
  • PandaPickCubeKeyboard-v0: Com controle por teclado

Configuração do Processador

{
  "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: Penalidade para movimento excessivo do garfo
  • gripper.use_gripper: Se deve habilitar o controle do garfo
  • inverse_kinematics.end_effector_step_sizes: Tamanho dos passos nos eixos x, y, z do efector final
  • control_mode: Defina como "gamepad" para usar um controle de gamepad

Executando com RL HIL do LeRobot

Uso Básico

Para executar o ambiente, defina o modo como null:

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

Gravando um Conjunto de Dados

Para coletar um conjunto de dados, defina o modo como record ao definir o repo_id e o número de episódios a serem gravados:

{
  "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

Treinando uma Política

Para treinar uma política, consulte o exemplo de configuração disponível aqui e execute os servidores learner e actor. Inicie o learner primeiro, pois o actor se conecta a ele:

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

Em um terminal diferente, execute o servidor de ator:

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

O ambiente de simulação oferece uma maneira segura e repetível de desenvolver e testar seus componentes de aprendizado por reforço com intervenção humana (Human-In-the-Loop) antes de implantá-los em robôs reais.

Parabéns 🎉, você concluiu este tutorial!

Se você tiver alguma dúvida ou precisar de ajuda, entre em contato no Discord.

Citação do artigo:

@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