LeRobot documentation

Kısa özet

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

Kısa özet

LeRobot komutlarının tümü tek bir yerde. Belirli bir komutun nasıl kullanılacağını unuttuysanız veya yeni bir komut hakkında bilgi edinmek istiyorsanız bunu burada yapabilirsiniz.

Aşağıda listelenen tüm komutlar için portları/adları/kimlikleri kendi değerlerinizle değiştirmeyi unutmayın!

Tüm komutları incelemenin ve bunları kendi özel kurulumunuza göre yapılandırmanın harika bir başka yolu da bu Jupyter Notebook'u kullanmaktır.

Kurulum ve yükleme

Kurulum için LeRobot Kurulumu bölümüne bakın.

İşinize yarayacak araçlar

Portu bul

Robotlarınızın hangi seri portlara bağlı olduğunu belirlemek için bunu kullanın. Terminaldeki talimatları izleyin: USB kablosunu çıkarması ve Enter tuşuna basmanız istenecektir. Betik, ardından o robot için doğru seri portu algılayıp yazdırır.

lerobot-find-port
Kameraları bul

Kamera indekslerini hızla bulun ve çıktıları doğrulayın. Bu komut, kamera bilgilerini terminalde görüntüler ve her algılanan kameradan test karelerini outputs/captured_images dizinine kaydeder.

lerobot-find-cameras

Kalibrasyon

Çoğu durumda, her robot ve teleoperasyon cihazı için kalibrasyonu yalnızca bir kez yapmanız gerekir. Kalibrasyonu yapmadan önce, tüm eklemlerin yaklaşık orta konumda olduğundan emin olun.

lerobot-calibrate \
    --robot.type=so101_follower \
    --robot.port=/dev/ttyACM0 \
    --robot.id=my_follower_arm

Kalibrasyon sırasında kullanılan aynı kimlikleri (ID) daha sonraki diğer betiklerde de kullandığınızdan emin olun. LeRobot, kalibrasyon dosyalarını bu şekilde bulur.

Teleoperasyon

İki kamera ile teleoperasyon ve Rerun ile veri görüntüleme.

lerobot-teleoperate \
    --robot.type=so101_follower \
    --robot.port=/dev/ttyACM0 \
    --robot.id=my_follower_arm \
    --robot.cameras="{ top: {type: opencv, index_or_path: 1, width: 640, height: 480, fps: 30}, wrist: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30} }" \
    --teleop.type=so101_leader \
    --teleop.port=/dev/ttyACM1 \
    --teleop.id=my_leader_arm \
    --display_data=true

Bir veri seti kaydetme

Veri seti, repo_id altında Hugging Face Hub'a otomatik olarak yüklenir. CLI ile HF hesabınıza giriş yaptığınızdan emin olun (https://huggingface.co/settings/tokens adresinden bir token alabilirsiniz) ve aşağıdaki komutların kullandığı kullanıcı adınızı HF_USER değişkeninde saklayın:

lerobot-record \
    --robot.type=so101_follower \
    --robot.port=/dev/ttyACM0 \
    --robot.id=my_follower_arm \
    --robot.cameras="{ top: {type: opencv, index_or_path: 1, width: 640, height: 480, fps: 30}, wrist: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30} }" \
    --teleop.type=so101_leader \
    --teleop.port=/dev/ttyACM1 \
    --teleop.id=my_leader_arm \
    --dataset.repo_id=${HF_USER}/so101_dataset_test \
    --dataset.num_episodes=30 \
    --dataset.single_task="put the red brick in a bowl" \
    --dataset.streaming_encoding=true \
    --display_data=true

Veri setini toplarken süreci klavyenizle kontrol edebilirsiniz:

  • Sağ Ok (→) veya n tuşuna basın: Bölümü kaydet ve sonrakine geç.
  • Sol Ok (←) veya r tuşuna basın: Mevcut bölümü silin ve yeniden deneyin.
  • Escape (ESC) veya q tuşuna basın: Durdurun, videoları kodlayın ve yükleyin.

lerobot-record, oturumun tarih ve saatini --dataset.repo_id sonuna ekler; bu nedenle ${HF_USER}/so101_dataset_test, ${HF_USER}/so101_dataset_test_YYYYMMDD_HHMMSS olarak kaydedilir. Tam adı Hugging Face profilinizde veya ls ~/.cache/huggingface/lerobot/${HF_USER} komutuyla bulabilir ve aşağıdaki eğitim komutlarında kullanabilirsiniz. Adı aynen korumak için --dataset.no_stamp=true ekleyin.

Derinlik kaydı

Intel RealSense kameraları (type: intelrealsense), use_depth: true ayarlandığında derinlik akışı kaydeder. Derinlik, 12 bit kodlara kuantize edilir ve kendi videosu olarak saklanır.

lerobot-record \
    ... \
    --robot.cameras="{ head: {type: intelrealsense, serial_number_or_name: \"0123456789\", width: 640, height: 480, fps: 30, use_depth: true} }" \
    --dataset.repo_id=${HF_USER}/so101_depth_test \
    --dataset.single_task="put the red brick in a bowl" \
    --dataset.depth_encoder.depth_min=0.01 \
    --dataset.depth_encoder.depth_max=10.0 \
    --dataset.depth_encoder.shift=0.0 \
    --dataset.depth_encoder.use_log=true

Video kodlama parametreleri

RGB ve derinlik akışları, --dataset.rgb_encoder.* ve --dataset.depth_encoder.* anahtarları aracılığıyla bağımsız olarak kodlanır.

lerobot-record \
    ... \
    --dataset.rgb_encoder.vcodec=h264 \
    --dataset.rgb_encoder.pix_fmt=yuv420p \
    --dataset.rgb_encoder.crf=23 \
    --dataset.depth_encoder.vcodec=hevc \
    --dataset.depth_encoder.extra_options='{"x265-params": "lossless=1"}'

Eğitim

Donanımınıza bağlı olarak politikanın eğitimi birkaç saat sürebilir. Basit bir ACT politikasını eğitmenin yolu şudur:

lerobot-train \
    --dataset.repo_id=${HF_USER}/so101_dataset_test_YYYYMMDD_HHMMSS \
    --policy.type=act \
    --output_dir=outputs/train/act_so101_test \
    --job_name=act_so101_test \
    --policy.device=cuda \
    --trackio.enable=true \
    --policy.repo_id=${HF_USER}/policy_test \
    --steps=20000
  • Yaygın politika türleri: act, diffusion, multi_task_dit, smolvla, pi0, pi05, pi0_fast, groot, xvla. Her politikanın kenar çubuğundaki Politikalar bölümünde kendi sayfası vardır ve Hesaplama ve Donanım Kılavuzu, hangilerinin GPU'nuzla uyumlu olduğunu gösterir.
  • Cihazlar: cuda (NVIDIA), mps (Apple Silicon), cpu

--policy.type, bu türde yeni bir politika oluşturur ve onu veri setinizde sıfırdan eğitir (bazı politikalar, yapılandırmalarında tanımlanan ön eğitilmiş görme veya dil omurgalarından başlar). Bunun yerine mevcut bir modeli ince ayar yapmak için, yerel bir kontrol noktası veya Hub depo kimliği ile --policy.path parametresini iletin: politika türü ve yapılandırması buradan okunacağı için --policy.type gerekmez.

lerobot-train \
    --dataset.repo_id=${HF_USER}/so101_dataset_test_YYYYMMDD_HHMMSS \
    --policy.path=username/the_policy_to_finetune \
    --policy.device=cuda \
    --policy.repo_id=${HF_USER}/policy_finetuned_test \
    --output_dir=outputs/train/finetuned_so101_test \
    --steps=20000

Yerel GPU yok mu? Herhangi bir komuta --job.target=<flavor> (ör. a10g-small) ekleyin ve lerobot-train bunu Hugging Face Jobs üzerinde çalıştırsın — size özel olarak yalnızca yerel bir veri seti yükler ve eğitilen modeli iter. Lezzetleri listelemek için hf jobs hardware kullanın. İşin metriklerini izlemek için --trackio.enable=true --trackio.space_id=<user>/<space> ekleyin: pod’un yerel Trackio veritabanı işin sona ermesiyle kaybolur.

Devam etmek için --config_path parametresini bir kontrol noktasına yönlendirin ve --resume=true ekleyin. Yerel bir yol veya Hub depo kimliği kabul eder (en son kontrol noktası alınır) ve --job.target=<flavor> ekleyerek yerel olarak veya bir iş üzerinde çalışır:

lerobot-train --config_path=${HF_USER}/policy_test --resume=true --job.target=a10g-small

Çıkarım

Inference, eğitilmiş politika/modelin bir robot üzerinde çalıştırılması anlamına gelir. Bunun için lerobot-rollout kullanılır. Politikanızın yolunu belirtmeniz gerekir. Bu, yerel bir yol veya bir Hugging Face depo kimliği olabilir; örneğin yukarıdaki eğitim komutundaki ${HF_USER}/policy_test. Veri setini toplarken kullandığınızla aynı portu, --robot.id, kamera yapılandırmasını ve görev açıklamasını kullanın. --duration saniye cinsindendir; belirtilmezse politika, durdurulana kadar çalışmaya devam eder.

v0.5.x ve önceki sürümlerde lerobot-rollout mevcut değildir ve bunun yerine lerobot-record kullanmanız gerekir. Daha fazla bilgi burada.

lerobot-rollout \
    --strategy.type=base \
    --policy.path=${HF_USER}/policy_test \
    --robot.type=so101_follower \
    --robot.port=/dev/ttyACM0 \
    --robot.id=my_follower_arm \
    --robot.cameras="{ top: {type: opencv, index_or_path: 1, width: 640, height: 480, fps: 30}, wrist: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30} }" \
    --task="put the red brick in a bowl" \
    --duration=60
Update on GitHub