LeRobot documentation

Huấn luyện RL trong Mô phỏng

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

Huấn luyện RL trong Mô phỏng

Hướng dẫn này giải thích cách sử dụng các môi trường mô phỏng gym_hil như một phương án thay thế cho robot thực khi làm việc với framework LeRobot cho học tăng cường Human-In-the-Loop (HIL).

gym_hil là một gói cung cấp các môi trường mô phỏng tương thích với Gymnasium, được thiết kế đặc biệt cho học tăng cường có sự tham gia của con người (Human-In-the-Loop). Các môi trường này cho phép bạn:

  • Huấn luyện các chính sách trong mô phỏng để kiểm tra hệ thống RL trước khi huấn luyện trên robot thực

  • Thu thập các bản demo trong mô phỏng bằng các thiết bị bên ngoài như tay cầm chơi game hoặc bàn phím

  • Thực hiện can thiệp của con người trong quá trình học chính sách

Hiện tại, môi trường chính là mô phỏng robot Franka Panda dựa trên MuJoCo, với các tác vụ như nhặt khối lập phương.

Cài đặt

Đầu tiên, cài đặt gói gym_hil trong môi trường LeRobot:

pip install -e ".[hilserl]"

Tôi cần những gì?

  • Một tay cầm hoặc bàn phím để điều khiển robot
  • Một GPU Nvidia

Cấu hình

Để sử dụng gym_hil với LeRobot, bạn cần tạo một tệp cấu hình. Một ví dụ được cung cấp tại đây. Các phần cấu hình chính bao gồm:

Loại Môi trường và Nhiệm vụ

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

Các tác vụ khả dụng:

  • PandaPickCubeBase-v0: Môi trường cơ bản
  • PandaPickCubeGamepad-v0: Với điều khiển bằng tay cầm
  • PandaPickCubeKeyboard-v0: Với điều khiển bằng bàn phím

Cấu hình bộ xử lý

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

Các tham số quan trọng:

  • gripper.gripper_penalty: Phạt cho việc di chuyển kẹp quá mức
  • gripper.use_gripper: Có bật điều khiển gắp hay không
  • inverse_kinematics.end_effector_step_sizes: Kích thước của các bước trên các trục x, y, z của end-effector
  • control_mode: Đặt thành "gamepad" để sử dụng bộ điều khiển gamepad

Chạy với HIL RL của LeRobot

Cách sử dụng cơ bản

Để chạy môi trường, đặt mode thành null:

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

Ghi lại một Tập dữ liệu

Để thu thập một bộ dữ liệu, hãy đặt chế độ thành record đồng thời định nghĩa repo_id và số lượng episode cần ghi lại:

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

Huấn luyện một Policy

Để huấn luyện một policy, hãy xem ví dụ cấu hình có sẵn tại đây và chạy các server learner và actor. Hãy khởi động learner trước, vì actor sẽ kết nối đến nó:

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

Trong một terminal khác, chạy actor server:

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

Môi trường mô phỏng cung cấp một cách an toàn và có thể lặp lại để phát triển và kiểm tra các thành phần học tăng cường Human-In-the-Loop của bạn trước khi triển khai lên các robot thực.

Chúc mừng 🎉, bạn đã hoàn thành hướng dẫn này!

Nếu bạn có bất kỳ câu hỏi nào hoặc cần hỗ trợ, vui lòng liên hệ trên Discord.

Trích dẫn bài báo:

@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