LeRobot documentation
Entraîner le RL en simulation
Entraîner le RL en simulation
Ce guide explique comment utiliser les environnements de simulation gym_hil comme alternative aux robots réels lors de l'utilisation du framework LeRobot pour l'apprentissage par renforcement avec boucle humaine (Human-In-the-Loop, HIL).
gym_hil est un package qui fournit des environnements de simulation compatibles avec Gymnasium, conçus spécifiquement pour l'apprentissage par renforcement avec intervention humaine (Human-In-the-Loop). Ces environnements vous permettent de :
Entraînez des politiques en simulation pour tester la pile RL avant l'entraînement sur des robots réels
Collecter des démonstrations dans la simulation à l'aide d'appareils externes tels que des manettes ou des claviers
Effectuer des interventions humaines pendant l’apprentissage de la politique
Actuellement, l'environnement principal est une simulation du robot Franka Panda basée sur MuJoCo, avec des tâches telles que la prise d'un cube.
Installation
Installez d'abord le package gym_hil dans l'environnement LeRobot :
pip install -e ".[hilserl]"De quoi ai-je besoin ?
- Une manette de jeu ou un clavier pour contrôler le robot
- Un GPU Nvidia
Configuration
Pour utiliser gym_hil avec LeRobot, vous devez créer un fichier de configuration. Un exemple est fourni ici. Les sections de configuration principales incluent :
Type d'environnement et tâche
{
"env": {
"type": "gym_manipulator",
"name": "gym_hil",
"task": "PandaPickCubeGamepad-v0",
"fps": 10
},
"device": "cuda"
}Tâches disponibles :
PandaPickCubeBase-v0: Environnement de basePandaPickCubeGamepad-v0: avec contrôle par manettePandaPickCubeKeyboard-v0: avec contrôle au clavier
Configuration du processeur
{
"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
}
}
}
}
}Paramètres importants :
gripper.gripper_penalty: Pénalité pour un mouvement excessif du grippergripper.use_gripper: Indique si le contrôle de la pince doit être activéinverse_kinematics.end_effector_step_sizes: Taille des pas sur les axes x, y, z de l'effecteur terminalcontrol_mode: Définir sur"gamepad"pour utiliser un contrôleur manette
Exécution avec le RL HIL de LeRobot
Utilisation de base
Pour exécuter l'environnement, définissez le mode sur null :
python -m lerobot.rl.gym_manipulator --config_path path/to/gym_hil_env.json
Enregistrer un jeu de données
Pour collecter un jeu de données, définissez le mode sur record en précisant le repo_id et le nombre d'épisodes à enregistrer :
{
"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
Entraîner une politique
Pour entraîner une politique, consultez l'exemple de configuration disponible ici et lancez les serveurs learner et actor. Commencez par le learner, car l'actor s'y connecte :
python -m lerobot.rl.learner --config_path path/to/train_gym_hil_env.json
Dans un autre terminal, exécutez le serveur d'acteur :
python -m lerobot.rl.actor --config_path path/to/train_gym_hil_env.json
L'environnement de simulation offre une méthode sûre et reproductible pour développer et tester vos composants d'apprentissage par renforcement avec intervention humaine (Human-In-the-Loop) avant le déploiement sur des robots réels.
Félicitations 🎉, vous avez terminé ce tutoriel !
Si vous avez des questions ou besoin d'aide, n'hésitez pas à nous contacter sur Discord.
Citation de l'article :
@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}
}