LeRobot documentation
İnsan-Döngüde Veri Toplama
İ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:
- İzle politikayı otonom olarak çalışırken
- Duraklat başarısızlık kaçınılmaz olduğunda, robot konumunu korur
- Kontrolü ele alın ve robotu iyi bir duruma geri döndürmek için (kurtarma) teleoperasyon yapın, ardından davranışı düzeltin
- Kontrolü politika (policy)ya geri ver, politika otonom çalışmayı sürdürür
- Olay sırasında adım 2–4'ü gerektiği kadar tekrarlayın
- 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 Miniso100_leader/so101_leader- SO100 / SO101 lider kolbi_so_leader- İki kollu SO100 / SO101 lider kollar
Sağlanan komutlar varsayılan olarak
bi_openarm_follower+bi_openarm_minikullanır. SO100 / SO101 kurulumları aynı şekilde çalışır, örneğin--robot.type=so101_followerile--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:
| Mod | Bayrak | Modeller |
|---|---|---|
| Standart (varsayılan) | (bayrak gerekmez) | ACT, Diffusion Policy |
| Gerçek Zamanlı Parçalama (RTC) | --inference.type=rtc | Pi0, Pi0.5, SmolVLA |
| Uzak | --inference.type=remote | lerobot-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=50000Adı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=3Kontroller:
| Anahtar | Eylem |
|---|---|
Space | Politikayı duraklat / politikayı yeniden başlat |
Tab | Düzeltmeyi başlat/durdur (yalnızca duraklatılmışken); düzeltmeler kaydedilir |
Enter | Veri setini Hub'a gönder (yalnızca düzeltme modu) |
ESC | Oturumu 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ü:
- Politikanın otonom olarak çalıştığını izleyin (teleop boşta/serbest)
- Yaklaşan bir arızayı fark ettiğinizde
Spacebası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
- Bas
Tabkontrolü 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
- Bas
Tabyine düzeltmeyi sonlandırmak için, ardındanSpaceile 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)
- Varsayılan modda her düzeltme kendi başına bir bölüm olarak kaydedilir.
--strategy.record_autonomous=trueile her şey kaydedilir ve bölümlere otomatik olarak ayrılır - Oturumu durdurmak için
ESCtuş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-kbdAdı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=20000Ardı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-rolloutiç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}
}