LeRobot documentation

LeIsaac × LeRobot EnvHub

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

LeIsaac × LeRobot EnvHub

LeRobot EnvHub kini mendukung belajar imitasi dalam simulasi dengan LeIsaac. Jalankan tugas manipulasi sehari-hari, operasikan robot secara teleoperasi, kumpulkan demo, unggah ke Hub, dan latih kebijakan di LeRobot — semuanya dalam satu alur.

LeIsaac terintegrasi dengan IsaacLab dan setup Leader/Follower SO101 untuk menyediakan:

  • 🕹️ Alur kerja yang mengutamakan teleoperasi untuk pengumpulan data
  • 📦 Konversi data bawaan siap untuk pelatihan LeRobot
  • 🤖 Keterampilan sehari-hari seperti memetik jeruk, mengangkat kubus, membersihkan meja, dan melipat kain
  • ☁️ Upgrade yang sedang berlangsung dari LightWheel: simulasi cloud, dukungan EnvHub, tooling Sim2Real, dan lainnya

Di bawah ini Anda akan menemukan tugas-tugas LeIsaac yang saat ini didukung melalui LeRobot EnvHub.

Lingkungan yang Tersedia

Tabel berikut mencantumkan semua tugas dan lingkungan yang tersedia di LeIsaac x LeRobot EnvHub. Anda juga dapat memperoleh daftar lingkungan terbaru dengan menjalankan perintah berikut:

python scripts/environments/list_envs.py
TugasID LingkunganDeskripsi TugasRobot Terkait
LeIsaac-SO101-PickOrange-v0

LeIsaac-SO101-PickOrange-Direct-v0
Pilih tiga jeruk dan letakkan ke dalam piring, kemudian atur ulang lengan ke keadaan istirahat.Single-Arm SO101 Follower
LeIsaac-SO101-LiftCube-v0

LeIsaac-SO101-LiftCube-Direct-v0
Angkat kubus merah ke atas.Single-Arm SO101 Follower
LeIsaac-SO101-CleanToyTable-v0

LeIsaac-SO101-CleanToyTable-BiArm-v0

LeIsaac-SO101-CleanToyTable-BiArm-Direct-v0
Pilih dua objek huruf e ke dalam kotak, dan atur ulang lengan ke keadaan istirahat.Single-Arm SO101 Follower

Bi-Arm SO101 Follower
LeIsaac-SO101-FoldCloth-BiArm-v0

LeIsaac-SO101-FoldCloth-BiArm-Direct-v0
Lipat kain, lalu atur ulang lengan ke keadaan istirahat.

Catatan: Hanya DirectEnv yang mendukung check_success dalam tugas ini.
Bi-Arm SO101 Follower

Muat LeIsaac langsung di LeRobot dengan satu baris kode

EnvHub: Bagikan lingkungan LeIsaac melalui HuggingFace

EnvHub adalah hub lingkungan yang dapat direproduksi. Jalankan simulasi yang sudah dikemas dalam satu baris, langsung bereksperimen, dan terbitkan tugas Anda sendiri untuk komunitas.

LeIsaac menawarkan dukungan EnvHub sehingga Anda dapat mengonsumsi atau membagikan tugas hanya dengan beberapa perintah.

Cara memulai, Pengaturan lingkungan

Jalankan perintah berikut untuk menyiapkan lingkungan kode Anda:

# Refer to Getting Started/Installation to install leisaac firstly
conda create -n leisaac_envhub python=3.11
conda activate leisaac_envhub

conda install -c "nvidia/label/cuda-12.8.1" cuda-toolkit
pip install -U torch==2.7.0 torchvision==0.22.0 --index-url https://download.pytorch.org/whl/cu128
pip install 'leisaac[isaaclab] @ git+https://github.com/LightwheelAI/leisaac.git#subdirectory=source/leisaac' --extra-index-url https://pypi.nvidia.com

# Install lerobot
pip install lerobot==0.4.1

# Fix numpy version
pip install numpy==1.26.0

Contoh Penggunaan

EnvHub mengekspos setiap tugas yang didukung LeIsaac dalam antarmuka yang seragam. Contoh di bawah ini memuat so101_pick_orange dan mendemonstrasikan rollout aksi acak serta teleoperasi interaktif.

Aksi Acak

Click to expand code example
# envhub_random_action.py

import torch
from lerobot.envs import make_env

# Load from the hub
envs_dict = make_env("LightwheelAI/leisaac_env:envs/so101_pick_orange.py", n_envs=1, trust_remote_code=True)

# Access the environment
suite_name = next(iter(envs_dict))
sync_vector_env = envs_dict[suite_name][0]
# retrieve the isaac environment from the sync vector env
env = sync_vector_env.envs[0].unwrapped

# Use it like any gym environment
obs, info = env.reset()

while True:
    action = torch.tensor(env.action_space.sample())
    obs, reward, terminated, truncated, info = env.step(action)
    if terminated or truncated:
        obs, info = env.reset()

env.close()
python envhub_random_action.py

Anda seharusnya melihat lengan SO101 bergerak dengan perintah yang sepenuhnya acak.

Teleoperasi

Stack teleoperation LeRobot dapat menggerakkan lengan yang disimulasikan.

Hubungkan pengendali SO101 Leader, jalankan perintah kalibrasi di bawah ini.

lerobot-calibrate \
    --teleop.type=so101_leader \
    --teleop.port=/dev/ttyACM0 \
    --teleop.id=leader

Lalu, jalankan skrip teleop.

Click to expand code example
# envhub_teleop_example.py

import logging
import time
import gymnasium as gym

from dataclasses import asdict, dataclass
from pprint import pformat

from lerobot.teleoperators import (  # noqa: F401
    Teleoperator,
    TeleoperatorConfig,
    make_teleoperator_from_config,
    so_leader,
    bi_so_leader,
)
from lerobot.utils.robot_utils import precise_sleep
from lerobot.utils.utils import init_logging
from lerobot.envs import make_env


@dataclass
class TeleoperateConfig:
    teleop: TeleoperatorConfig
    env_name: str = "so101_pick_orange"
    fps: int = 60


@dataclass
class EnvWrap:
    env: gym.Env


def make_env_from_leisaac(env_name: str = "so101_pick_orange"):
    envs_dict = make_env(
        f'LightwheelAI/leisaac_env:envs/{env_name}.py',
        n_envs=1,
        trust_remote_code=True
    )
    suite_name = next(iter(envs_dict))
    sync_vector_env = envs_dict[suite_name][0]
    env = sync_vector_env.envs[0].unwrapped

    return env


def teleop_loop(teleop: Teleoperator, env: gym.Env, fps: int):
    from leisaac.devices.action_process import preprocess_device_action
    from leisaac.assets.robots.lerobot import SO101_FOLLOWER_MOTOR_LIMITS
    from leisaac.utils.env_utils import dynamic_reset_gripper_effort_limit_sim

    env_wrap = EnvWrap(env=env)

    obs, info = env.reset()
    while True:
        loop_start = time.perf_counter()
        if env.cfg.dynamic_reset_gripper_effort_limit:
            dynamic_reset_gripper_effort_limit_sim(env, 'so101leader')

        raw_action = teleop.get_action()
        processed_action = preprocess_device_action(
            dict(
                so101_leader=True,
                joint_state={
                    k.removesuffix(".pos"): v for k, v in raw_action.items()},
                motor_limits=SO101_FOLLOWER_MOTOR_LIMITS),
            env_wrap
        )
        obs, reward, terminated, truncated, info = env.step(processed_action)
        if terminated or truncated:
            obs, info = env.reset()

        dt_s = time.perf_counter() - loop_start
        precise_sleep(max(1 / fps - dt_s, 0.0))
        loop_s = time.perf_counter() - loop_start
        print(f"\ntime: {loop_s * 1e3:.2f}ms ({1 / loop_s:.0f} Hz)")


def teleoperate(cfg: TeleoperateConfig):
    init_logging()
    logging.info(pformat(asdict(cfg)))

    teleop = make_teleoperator_from_config(cfg.teleop)
    env = make_env_from_leisaac(cfg.env_name)

    teleop.connect()
    if hasattr(env, 'initialize'):
        env.initialize()
    try:
        teleop_loop(teleop=teleop, env=env, fps=cfg.fps)
    except KeyboardInterrupt:
        pass
    finally:
        teleop.disconnect()
        env.close()


def main():
    teleoperate(TeleoperateConfig(
        teleop=so_leader.SO101LeaderConfig(
            port="/dev/ttyACM0",
            id='leader',
            use_degrees=False,
        ),
        env_name="so101_pick_orange",
        fps=60,
    ))


if __name__ == "__main__":
    main()
python envhub_teleop_example.py

Menjalankan skrip memungkinkan Anda mengoperasikan lengan simulasi menggunakan perangkat Leader fisik.

☁️ Simulasi Cloud (Tidak Membutuhkan GPU)

Tidak memiliki GPU lokal atau driver yang tepat? Tidak masalah! Anda dapat menjalankan LeIsaac sepenuhnya di cloud tanpa perlu konfigurasi apa pun. LeIsaac berfungsi langsung di NVIDIA Brev, memberikan Anda lingkungan yang sudah dikonfigurasi sepenuhnya langsung di browser Anda.

👉 Mulai di sini: https://lightwheelai.github.io/leisaac/docs/cloud_simulation/nvidia_brev

Setelah instans Anda di-deploy, cukup buka tautan untuk port 80 (HTTP) untuk meluncurkan Visual Studio Code Server (kata sandi default: password). Dari sana, Anda dapat menjalankan simulasi, mengedit kode, dan memvisualisasikan lingkungan IsaacLab — semuanya dari peramban web Anda.

Tanpa GPU, tanpa driver, tanpa instalasi lokal. Cukup klik dan jalankan.

Catatan Tambahan

Kami menjaga cakupan EnvHub agar selaras dengan tugas LeIsaac. Saat ini didukung:

  • so101_pick_orange
  • so101_lift_cube
  • so101_clean_toytable
  • bi_so101_fold_cloth

Ganti tugas dengan menargetkan skrip yang berbeda saat memanggil make_env, misalnya:

envs_dict_pick_orange = make_env("LightwheelAI/leisaac_env:envs/so101_pick_orange.py", n_envs=1, trust_remote_code=True)
envs_dict_lift_cube = make_env("LightwheelAI/leisaac_env:envs/so101_lift_cube.py", n_envs=1, trust_remote_code=True)
envs_dict_clean_toytable = make_env("LightwheelAI/leisaac_env:envs/so101_clean_toytable.py", n_envs=1, trust_remote_code=True)
envs_dict_fold_cloth = make_env("LightwheelAI/leisaac_env:envs/bi_so101_fold_cloth.py", n_envs=1, trust_remote_code=True)

Catatan: saat bekerja dengan bi_so101_fold_cloth, panggil initialize() segera setelah mengambil env sebelum melakukan operasi lain:

Click to expand code example
import torch
from lerobot.envs import make_env

# Load from the hub
envs_dict = make_env("LightwheelAI/leisaac_env:envs/bi_so101_fold_cloth.py", n_envs=1, trust_remote_code=True)

# Access the environment
suite_name = next(iter(envs_dict))
sync_vector_env = envs_dict[suite_name][0]
# retrieve the isaac environment from the sync vector env
env = sync_vector_env.envs[0].unwrapped

# NOTE: initialize() first
env.initialize()

# other operation with env...
Update on GitHub