LeRobot documentation

İnsan-Döngüde Veri Toplama

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

İnsan-Döngüde Veri Toplama

İnsan-Döngüde (HIL) veri toplama, bir insan operatörün izleme yaptığı ve gerektiğinde müdahale ettiği gerçek bir robot üzerinde eğitim almış bir politikayı dağıtarak onu iyileştirmenizi sağlar. Müdahale verileri (kurtarma hareketleri ve düzeltmeler), otonom bölümlerle birlikte kaydedilir ve politikaya hataları nasıl ele alacağını öğreten daha zengin bir eğitim veri seti oluşturulur.


Neden İnsan-Döngüde (Human-In-the-Loop)?

Standart davranış klonlama, politikaları yalnızca başarılı gösterimler üzerinde eğitir. Dağıtım sırasında küçük hatalar birikebilir ve robotu eğitim sırasında hiç görülmemiş durumlara sürükleyebilir (dağılım kayması). HIL veri toplama, bunu şu şekilde ele alır:

  • Eğitilen politikayı gerçek robot üzerinde çalıştırma
  • Robotun başarısız olmaya yaklaştığı anda bir insanın devreye girmesi
  • İnsanın kurtarma ve düzeltme sürecinin eğitim verisi olarak kaydedilmesi
  • Birleşik veri kümesinde politikanın ince ayarı

Bu, yalnızca görevi nasıl gerçekleştireceğini değil, işler ters gittiğinde nasıl toparlanacağını da bilen bir politika üretir.


Nasıl Çalışır

Bir HIL oturumu sırasında, insan operatör her bölümde şu döngüyü izler:

  1. İzle politikayı otonom olarak çalışırken
  2. Duraklat başarısızlık kaçınılmaz olduğunda, robot konumunu korur
  3. Kontrolü ele alın ve robotu iyi bir duruma geri döndürmek için (kurtarma) teleoperasyon yapın, ardından davranışı düzeltin
  4. Kontrolü politika (policy)ya geri ver, politika otonom çalışmayı sürdürür
  5. Olay sırasında adım 2–4'ü gerektiği kadar tekrarlayın
  6. Görev tamamlandığında epizodu sonlandırın, kaydedin ve sonraki rollout'a geçin

Varsayılan olarak yalnızca insan kontrolündeki segmentler (kurtarma ve düzeltme) kaydedilir ve her düzeltme kendi başına bir epizot oluşturur. --strategy.record_autonomous=true ile otonom segmentler de kaydedilir: politika ve insan birden fazla kez kontrolü devralabilir ve otonom yürütme, kurtarma ile düzeltme tek bir kesintisiz yörüngede yakalanır. Her iki modda da robot, her devir teslimden sonra mevcut durumundan devam eder (müdahale gerçekleştiği için sıfırlama gerekmez). Toplama işleminden sonra, birleşik veri seti (orijinal gösterimler + HIL verisi) politikanın ince ayarı için kullanılır.

Bu süreç yinelemeli olarak tekrarlanabilir: dağıt, topla, ince ayar yap, tekrarla. Her tur, mevcut politikanın başarısızlık modlarını hedefler.

┌─────────────────────────────────────────────────────────────────────────┐
│  Policy v0 (trained on demos)                                           │
│       ↓                                                                 │
│  HIL Collection (target current failure modes) → Fine-tune → Policy v1  │
│       ↓                                                                 │
│  HIL Collection (target new failure modes) → Fine-tune → Policy v2      │
│       ↓                                                                 │
│  ... (repeat until satisfactory performance)                            │
└─────────────────────────────────────────────────────────────────────────┘

Donanım Gereksinimleri

Teleoperatör Gereksinimleri

lerobot-rollout --strategy.type=dagger modu, aşağıdakileri yapabilecek aktif motorlara sahip teleoperatörler gerektirir:

  • Torku programatik olarak etkinleştirme/devre dışı bırakma
  • Hedef konumlara geç (durdurma sırasında robot durumunu yansıtmak için)

Duraklattığınızda, lider kol robotla eşleşmek üzere hareket eder; böylece kontrol, politika ile insan arasında sıçramalar olmadan el değiştirir. Sıçramalar, kaydedilen düzeltmelere yansıyacak ve politikanın sarsak yörüngeler öğrenmesine neden olacaktır.

Uyumlu teleoperatörler:

  • bi_openarm_mini - İki Ellli OpenArm Mini
  • so100_leader / so101_leader - SO100 / SO101 lider kol
  • bi_so_leader - İki kollu SO100 / SO101 lider kollar

Sağlanan komutlar varsayılan olarak bi_openarm_follower + bi_openarm_mini kullanır. SO100 / SO101 kurulumları aynı şekilde çalışır, örneğin --robot.type=so101_follower ile --teleop.type=so101_leader.


Betik

HIL veri toplama için lerobot-rollout aracını --strategy.type=dagger ile kullanın. Çıkarım arka ucunu --inference.type=sync|rtc|remote ile seçin:

ModBayrakModeller
Standart (varsayılan)(bayrak gerekmez)ACT, Diffusion Policy
Gerçek Zamanlı Parçalama (RTC)--inference.type=rtcPi0, Pi0.5, SmolVLA
Uzak--inference.type=remotelerobot-policy-server tarafından sunulan checkpoint; bkz. uzaktan dağıtım gereksinimleri

Adım Adım Kılavuz

Adım 1: Temel Bir Politika Ön Eğitimi

Öncelikle, gösterim veri setiniz üzerinde bir politika eğitin. Bu örnek, 2. adımda standart çıkarım ile çalışan ACT'yi eğitir:

lerobot-train \
    --dataset.repo_id=${HF_USER}/demo-dataset \
    --policy.type=act \
    --policy.repo_id=${HF_USER}/act_pretrain \
    --output_dir=outputs/pretrain \
    --batch_size=32 \
    --steps=50000

Adım 2: HIL Verisi Toplayın

Standart çıkarım (ACT, Diffusion Policy):

lerobot-rollout --strategy.type=dagger \
    --robot.type=bi_openarm_follower \
    --robot.left_arm_config.port=can1 \
    --robot.left_arm_config.side=left \
    --robot.right_arm_config.port=can0 \
    --robot.right_arm_config.side=right \
    --robot.cameras='{left_wrist: {type: opencv, index_or_path: "/dev/video0", width: 1280, height: 720, fps: 30}, right_wrist: {type: opencv, index_or_path: "/dev/video4", width: 1280, height: 720, fps: 30}, base: {type: opencv, index_or_path: "/dev/video2", width: 640, height: 480, fps: 30}}' \
    --teleop.type=bi_openarm_mini \
    --teleop.left_arm_config.port=/dev/ttyACM0 \
    --teleop.right_arm_config.port=/dev/ttyACM1 \
    --policy.path=outputs/pretrain/checkpoints/last/pretrained_model \
    --dataset.repo_id=${HF_USER}/rollout_hil_dataset \
    --dataset.single_task="Fold the T-shirt properly" \
    --dataset.fps=30 \
    --strategy.num_episodes=50 \
    --interpolation_multiplier=2

--interpolation_multiplier=N ile robot, politika eylemi başına N ara değerli komut alır (kontrol fps × N Hz'de çalışır) ancak politika çıkarımı ve veri seti kaydı --fps değerinde kalır; böylece kaydedilen veri seti, beyan edilen FPS değeriyle eşleşir.

Büyük modeller için RTC (Pi0, Pi0.5, SmolVLA):

Yüksek çıkarım gecikmesine sahip modeller için akıcı bir çalışma sağlamak üzere RTC'yi etkinleştirin. Bunun için, 1. adımdaki ACT politikası yerine Pi0, Pi0.5 veya SmolVLA gibi bir VLA taban politikası gereklidir:

lerobot-rollout --strategy.type=dagger \
    --inference.type=rtc \
    --inference.rtc.execution_horizon=20 \
    --inference.rtc.max_guidance_weight=5.0 \
    --inference.rtc.prefix_attention_schedule=LINEAR \
    --robot.type=bi_openarm_follower \
    --robot.left_arm_config.port=can1 \
    --robot.left_arm_config.side=left \
    --robot.right_arm_config.port=can0 \
    --robot.right_arm_config.side=right \
    --robot.cameras='{left_wrist: {type: opencv, index_or_path: "/dev/video0", width: 1280, height: 720, fps: 30}, right_wrist: {type: opencv, index_or_path: "/dev/video4", width: 1280, height: 720, fps: 30}, base: {type: opencv, index_or_path: "/dev/video2", width: 640, height: 480, fps: 30}}' \
    --teleop.type=bi_openarm_mini \
    --teleop.left_arm_config.port=/dev/ttyACM0 \
    --teleop.right_arm_config.port=/dev/ttyACM1 \
    --policy.path=outputs/pretrain/checkpoints/last/pretrained_model \
    --dataset.repo_id=${HF_USER}/rollout_hil_rtc_dataset \
    --dataset.single_task="Fold the T-shirt properly" \
    --dataset.fps=30 \
    --strategy.num_episodes=50 \
    --interpolation_multiplier=3

Kontroller:

AnahtarEylem
SpacePolitikayı duraklat / politikayı yeniden başlat
TabDüzeltmeyi başlat/durdur (yalnızca duraklatılmışken); düzeltmeler kaydedilir
EnterVeri setini Hub'a gönder (yalnızca düzeltme modu)
ESCOturumu durdur

Klavye yerine USB ayak pedalı kullanılabilir; bunun için --strategy.input_device=pedal bayrağını kullanın. DAgger bayraklarının tamamı için Policy Deployment bölümüne bakın.

HIL Protokolü:

  1. Politikanın otonom olarak çalıştığını izleyin (teleop boşta/serbest)
  2. Yaklaşan bir arızayı fark ettiğinizde Space basın durdurmak için
    • Politika durakları
    • Teleoperatör, robot konumunu eşleştirmek üzere hareket eder (tork etkin)
    • Duraklatma sırasında kaydedilen kare yok
  3. Bas Tab kontrolü ele almak için Teleoperator torku devre dışı, serbestçe hareket edilebilir Kurtarma: Robotu teleoperasyonla iyi bir duruma geri getirin Düzeltme: Davranışı düzeltin Tüm hareketler kaydedilir
    • Teleoperatör torku devre dışı, serbestçe hareket edebilir
    • Kurtarma: Robotu iyi bir duruma geri teleoperate edin
    • Düzeltme: Davranışı düzeltin
    • Tüm hareketler kaydedilir
  4. Bas Tab yine düzeltmeyi sonlandırmak için, ardından Space ile kontrolü politika'ya geri ver
    • Policy, mevcut durumdan otonom çalışmayı sürdürür
    • Herhangi bir zamanda tekrar müdahale edebilirsiniz (2–4. adımları tekrarlayın)
  5. Varsayılan modda her düzeltme kendi başına bir bölüm olarak kaydedilir. --strategy.record_autonomous=true ile her şey kaydedilir ve bölümlere otomatik olarak ayrılır
  6. Oturumu durdurmak için ESC tuşuna basın

Pedal Ayarları (Linux):

USB ayak pedalı (PCsensor FootSwitch) kullanılıyorsa, erişimi sağlayın:

sudo setfacl -m u:$USER:rw /dev/input/by-id/usb-PCsensor_FootSwitch-event-kbd

Adım 3: Veri Setlerini Birleştir

lerobot-rollout, veri seti adının başına bir zaman damgası ekler; bu nedenle 2. adımdaki HIL veri seti your-username/rollout_hil_dataset_YYYYMMDD_HHMMSS olarak kaydedilir. Aşağıda bu tam adı kullanın.

HIL veri seti, insan kontrolündeki kareleri işaretleyen ek bir intervention sütununa sahiptir ve veri setleri yalnızca aynı özelliklere sahip olduklarında birleştirilebilir. Önce sütunu kaldırın, ardından HIL verilerini gösterimlerinizle birleştirin:

lerobot-edit-dataset \
    --repo_id ${HF_USER}/rollout_hil_dataset_YYYYMMDD_HHMMSS \
    --new_repo_id ${HF_USER}/hil_dataset_no_intervention \
    --operation.type remove_feature \
    --operation.feature_names "['intervention']"

lerobot-edit-dataset \
    --new_repo_id ${HF_USER}/demo_plus_hil \
    --operation.type merge \
    --operation.repo_ids "['${HF_USER}/demo-dataset', '${HF_USER}/hil_dataset_no_intervention']"

Her iki veri seti de aynı robotu, kameraları ve fps değerini kullanmalıdır. Birleştirme seçenekleri hakkında daha fazla bilgi için Veri Seti Araçlarını Kullanma bölümüne bakın.

Adım 4: Policy'yi ince ayar yap

1. adımdaki politikayı birleştirilmiş veri setinde ince ayarlayın:

lerobot-train \
    --dataset.repo_id=${HF_USER}/demo_plus_hil \
    --policy.path=outputs/pretrain/checkpoints/last/pretrained_model \
    --policy.repo_id=${HF_USER}/act_hil_finetune \
    --output_dir=outputs/hil_finetune \
    --steps=20000

Ardından ince ayarı yapılmış politikayı dağıtın ve kalan başarısızlık modlarını hedeflemek için 2. adımdan itibaren işlemi tekrarlayın.


Etkili HIL Toplama İçin İpuçları

Ne Zade Müdahale Edilmeli

Şu durumlarda müdahale edin:

  • Tersine çevrilemez bir hata yapmaya hazırlanan robot
  • Robotun tereddüt etmesi veya belirsiz davranış sergilemesi
  • Beklenen yörüngeden sapan robot

Kurtarma: İyi Bir Duruma Teleoperasyon

Kurtarma sırasında, robotu şu duruma geri teleopere edin:

  • Robot, tanıdık, dağılım içi bir yapılandırmada
  • Mevcut alt görev hâlâ tamamlanabilir
  • Kurtarma yörüngesinin kendisi bilgilendirici eğitim verisidir

Düzeltmelerin Kalitesi

Düzeltme sırasında:

  • güvenilir ve temiz yörüngeler sağlayın
  • Mevcut alt görevi tamamen tamamlayın
  • Aşırı düzeltme yapmayın veya gereksiz hareketler eklemeyin

İlgili Çalışmalar

Bu HIL veri toplama yaklaşımı, etkileşimli taklit öğrenmesindeki fikirlere dayanır:

  • DAgger (Ross et al., 2011) temel fikri ortaya koydu: yalnızca uzman gösterimleriyle eğitim yapmak yerine, öğrenicinin ziyaret ettiği durumlarda düzeltmeler için uzmana danışılır. Bu, standart davranışsal klonlamadaki bileşik hata döngüsünü, on-policy verileri iteratif olarak toplayarak kırar.

  • HG-DAgger (Kelly et al., 2019) bunu robotik için pratik hale getirdi: insan uzman, robotu izler ve yalnızca gerektiğinde müdahale eder, her durumu etiketlemez. Otonom ve insan kontrolü arasındaki geçiş, buradaki betiklerde kullanılan duraklat → devral → politaya dön döngüsünün ta kendisidir.

  • RaC (Hu et al., 2025), müdahaleleri açıkça recovery (iyi bir duruma teleoperasyonla geri dönme) ve correction (oradan doğru davranışı gösterme) olarak ayırarak bu döngüyü uzun vadeli görevlere ölçekler. Bu ayrıştırma, lerobot-rollout içindeki DAgger stratejisinin izlediği protokoldür.

  • π0.6/RECAP (Physical Intelligence, 2025), VLA modellerinde aynı iteratif topla ve ince ayar yap döngüsünü ölçekli olarak uygulayarak, büyük önceden eğitilmiş politikaların bile kendi başarısızlık modlarına yönelik hedefli insan düzeltmelerinden önemli ölçüde faydalandığını göstermektedir. π0.6, RECAP kullanılarak eğitilmektedir.

@article{ross2011dagger,
  title={A Reduction of Imitation Learning and Structured Prediction to No-Regret Online Learning},
  author={Ross, Stéphane and Gordon, Geoffrey and Bagnell, Drew},
  journal={Proceedings of the Fourteenth International Conference on Artificial Intelligence and Statistics},
  year={2011}
}

@article{kelly2019hgdagger,
  title={HG-DAgger: Interactive Imitation Learning with Human Experts},
  author={Kelly, Michael and Sidrane, Chelsea and Driggs-Campbell, Katherine and Kochenderfer, Mykel J},
  journal={arXiv preprint arXiv:1810.02890},
  year={2019}
}

@article{hu2025rac,
  title={RaC: Robot Learning for Long-Horizon Tasks by Scaling Recovery and Correction},
  author={Hu, Zheyuan and Wu, Robyn and Enock, Naveen and Li, Jasmine and Kadakia, Riya and Erickson, Zackory and Kumar, Aviral},
  journal={arXiv preprint arXiv:2509.07953},
  year={2025}
}

@article{pi2025recap,
  title={π0.6: a VLA That Learns From Experience},
  author={Physical Intelligence},
  year={2025}
}
Update on GitHub