SO-100 гартай анхны LeRobot өгөгдлийн багцаа бичих AY-Robots зааварчилгааны хуудас
LeRobotSO-100Өгөгдлийн багц бичихТелеоперациДуурайх сургалт

SO-100 ашиглан анхны LeRobot өгөгдлийн багцаа бичих

AY-Robots ResearchAugust 23, 202616 мин унших

SO-100 ашиглан ашиглах боломжтой LeRobot өгөгдлийн багцыг бичих: тохируулга, удирдагч-дагагч телеопераци, lerobot-record-ийн бодит флагууд болон анхдагч утгууд, камерын тохиргоо, эпизодын тоо, мөн гүйцэтгэлийг муутгах доголдлууд.

Нэг SO-100 дагагч, ижил загварын удирдагч гар болон хоёр USB камер нь нэг өдрийн дотор бодлогыг нарийн тааруулах боломжтой. Ижилхэн туршилтын тавцан нь файлын хөтөч дээр эрүүл харагдах жаран ангийг амархан үүсгэж, зургаан цагийн GPU ажиллагааг дэмий үрэх боломжтой. Ялгаа нь загварт ховор байдаг; энэ нь серво болон parquet файл хооронд юу болсон бэ гэдэгт оршино.

Энд гарын авлагын зам, дараа нь богино зам байна. Бүх тушаал нь 2026 оны 8-р сарын 3-нд гарсан, PyPI дээрх одоогийн lerobot 0.6.1-ээс авсан болно. Энэ нь консолын нэвтрэх цэгүүд рүү шилжсэн тул python lerobot/scripts/control_robot.py гэж ажиллуулдаг зааварчилгаанууд нь одоо байхгүй болсон файлыг тайлбарлаж байна.

Товч хувилбар

  • lerobot 0.6.1 нь v3.0-ийг бичдэг; GR00T N1.7 болон N1.5 нь v2.1-ийг хүсдэг. Бичихээсээ өмнө форматыг тохируулна уу.
  • Дөрвөн тушаал: lerobot-find-port, lerobot-setup-motors, lerobot-calibrate, lerobot-record. Тохируулгаас ижил --robot.id болон --teleop.id-г бичлэгийн сесс рүү шилжүүлнэ үү.
  • Бодит анхдагч утгууд: 30 fps, нэг ангид 60 секунд, 60 секундын дахин тохируулга, 50 анги, ойролцоогоор 100 минутын бодит хугацаа.
  • Энд хамгийн бага анги: SmolVLA-д 30, бусдад 50.
  • Олон янз байдал нь тоо хэмжээнээс илүү чухал. Өгөгдлийн багцууд дөрвөн зүйлээс болж үхдэг: камерын индексийг сольсон, хаягдсан эсвэл хөлдсөн фрэймүүд, үеийг хязгаарт нь байрлуулсан, уншигдахгүй даалгаврын мөр.

Бичлэгийн сесс юуг барьж авдаг вэ

A LeRobot өгөгдлийн сан нь видеоны хавтас биш, харин видео хавсаргасан цаг хугацаагаар индекслэгдсэн хүснэгт юм: удирдлагын гогцооны алхам бүр тушаагдсан үйлдэл, дагагчийн хүрсэн төлөв, камер тус бүрээс нэг фрэйм, цагийн тэмдэг болон индекстэй нэг мөрийг бичдэг. Бодлого нь зөвхөн эдгээр багануудыг хардаг. lerobot/svla_so100_pickplace-ийн схем нь түүний meta/info.json-оос уншигдсан.

ОнцлогӨгөгдлийн төрөлХэлбэрЮу болох
actionfloat32[6]удирдагч гарын үений зорилтот байрлалууд
observation.statefloat32[6]дагагчийн хүрсэн үений байрлалууд
observation.images.topvideo[480, 640, 3]үзэгдлийн камер, MP4 (энд av1)
observation.images.wristvideo[480, 640, 3]бугуйн камер, ижил хурдтай
timestampfloat32[1]эпизод эхэлснээс хойших секунд
frame_index, episode_index, index, task_indexint64[1]автоматаар бөглөгдсөн бүртгэл

Үеүүд нь main_shoulder_pan, main_shoulder_lift, main_elbow_flex, main_wrist_flex, main_wrist_roll болон main_gripper юм: SO-100-ийн зургаан эрх чөлөөний зэрэг. Үйлдэл болон төлөв нь ижил хэлбэртэй байдаг, учир нь удирдагч-дагагч телеопераци нь зорилтот байрлал болон нэг алхмын дараа хүрсэн байрлалыг бүртгэдэг. Энэ ялгаа нь мэдээлэл юм: гар таталцлын хүч эсвэл гацсан объекттой хаана тэмцсэн бэ гэдгийг харуулна. Эдгээр мөрүүд нь тухайн өгөгдлийн сангийнх юм. Өнөөдөр 0.6.1 хувилбараар бүртгэгдсэн сесс нь shoulder_pan.pos-оос gripper.pos хүртэл, автобусан дээрх 1-ээс 6 хүртэлх ID-тай мэдээллийг бичдэг: ижил зургаан үе, гэхдээ өөр түлхүүрүүдтэй, энэ нь тохиргоо нь онцлогийг нэрээр нь хандах үед чухал юм.

Бодит өгөгдлийн сангаас авсан хэмжүүр

Энэхүү өгөгдлийн сан нь 50 эпизод болон 19,631 фрэймийг 30 fps хурдтайгаар агуулдаг: эпизод тутамд ойролцоогоор 393 фрэйм буюу 13 секунд. Хэрэв таных дунджаар нэг минут байвал та илүү хэцүү зүйл хийж байгаа эсвэл хоёр талд нь ашиггүй цаг хугацааг бичиж байна гэсэн үг.

AY-Robots-ийн LeRobot өгөгдлийн сангийн форматын тайлбар толь бичиг, директорын бүтэц болон мета өгөгдлийн файлуудыг харуулсан.
data/, videos/, meta/ дотор юу байдаг, мөн ямар бодлогууд ямар хувилбарыг уншдаг вэ.

Тавцан дээр танд юу хэрэгтэй вэ

ЗүйлДэлгэрэнгүйТайлбар
Дагагч гарSO-100, зургаан Feetech STS3215 сервосэлбэг хэрэгсэлд ойролцоогоор 110-150 EUR
Удирдагч гархоёр дахь SO-100, арааг нь салгасанбүх зургаан удирдагч моторын арааг салгасан: зөвхөн энкодер, үрэлт багатай
Цахилгаан хангамжматериалын жагсаалтад байгаа 7.4 V STS3215 хувилбарт тохируулсандоорх анхааруулгыг үзнэ үү
Камеруудхоёр USB камер, 640x480, 30 fpsнэг нь үзэгдлийн харагдац, нэг нь бугуй дээр
ХостPython 3.12 эсвэл түүнээс шинэ, ffmpegrequires-python >= 3.12
Хуб бүртгэлHugging Face бичих токенoptional with --dataset.push_to_hub=false
7.4 V, 12 V биш

STS3215 нь хоёр хувилбартай: SO-ARM100 README нь 7.4 V хувилбарыг 6 V-д хэмжсэн 16.5 kg.cm зогсолтын эргүүлэх моменттой, харин 12 V хувилбарыг 30 kg.cm-ээр үнэлдэг бөгөөд 12 V мотор авах нь 5 V-ийн оронд 12 V 5 A+ тэжээл худалдаж авахыг мөн хэлнэ гэж тэмдэглэжээ. Материалын жагсаалтад 7.4 V серво моторууд байна. 7.4 V-ээр үнэлэгдсэн серво моторууд руу 12 V тэжээл өгөх нь тэдгээрийг гэмтээх тул ямар нэгэн холболт хийхээсээ өмнө моторын шошгыг уншина уу. Серво хариу өгөхгүй байна.

Хэрэв гар одоогоор угсрагдаагүй бол энэ нь тусдаа ажил юм: эхлэхдээ SO-100 эхлэх болон SO-100-ийн бүрэн тохиргооны гарын авлага-ыг үзнэ үү. Хэрэв та юу ч худалдаж аваагүй бол эхлээд SO-100 болон SO-101-ийн харьцуулалт-ыг уншина уу: SO-101 нь сайжруулсан утас болон араа салгах алхамгүй шинэ хувилбар бөгөөд бичлэгийн ажлын урсгал ижил байна.

lerobot 0.6.1 суулгах

bash
conda create -y -n lerobot python=3.12
conda activate lerobot

# TorchCodec is the default video decoder and needs ffmpeg
conda install ffmpeg -c conda-forge

# core_scripts = dataset + hardware + viz extras (record, replay, calibrate)
# feetech     = SDK for the STS3215 bus servos in the SO-100
pip install 'lerobot[core_scripts,feetech]'

lerobot-info
lerobot-info нь системийн хураангуйг, түүний дотор PATH дээрээс олж чадах ffmpeg хувилбарыг хэвлэнэ.

Нэмэлтүүд хүмүүсийг их төөрөгдүүлдэг. pip install lerobot нь зөвхөн үндсэн ML хамаарлыг суулгадаг, роботтой харилцах зүйл байхгүй. Koch гарнууд dynamixel -ийн оронд feetech хэрэгтэй. Хэрэв таны shell lerobot-record-ийн талаар хэзээ ч сонсож байгаагүй бол энэ нь шалтгаан юм.

Портууд, моторын ID болон тохируулга

Эд ангиуд болон ажиллаж буй телеоп гогцооны хооронд гурван удаагийн алхам бий. нь таны гарт сургасан бодлогыг өөр хүний гарт ажиллуулж, түүхий энкодерын тоог нийтлэг үений конвенц руу зурагладаг.

  1. 1
    Гар тус бүрийн USB портыг олох

    Хоёр гарыг хоёуланг нь залгаад ажиллуулж, таних гэж буй гараа салгахыг хүсэхэд аль порт алга болсныг тэмдэглэж аваарай. Линукс дээр танд sudo chmod 666 /dev/ttyACM0 хэрэгтэй байж магадгүй.

    bash
    lerobot-find-port
    # Finding all available ports for the MotorsBus.
    # Ports before disconnecting: ['/dev/ttyACM0', '/dev/ttyACM1']
    # Remove the USB cable from your MotorsBus and press Enter when done.
    # The port of this MotorsBus is '/dev/ttyACM1'
    # Reconnect the USB cable.
  2. 2
    Моторын ID болон бодрейтыг бичих

    ID-г нэг моторыг нэг нэгээр нь бичдэг бөгөөд баримт бичигт үүнийг хэрхэн хийх талаар хатуу заасан байдаг: хянагчийн самбарт яг нэг моторыг холбоно, бусадтай гинжин холбоогүй байна. Скрипт нь гинжийг арагш нь алхаж, эхлээд баригчийг асууж, түүнд 6-р ID өгч, дараа нь wrist_roll-д 5, shoulder_pan-д 1 гэх мэтээр өгнө. Үүнийг угсрахаас өмнө хийнэ үү.

    bash
    lerobot-setup-motors \
        --robot.type=so100_follower \
        --robot.port=/dev/ttyACM0
    
    lerobot-setup-motors \
        --teleop.type=so100_leader \
        --teleop.port=/dev/ttyACM1
  3. 3
    Хоёр гарыг хоёуланг нь тохируулах

    Бүх үеийг хөдөлгөөнийх нь дунд хэсэгт аваачиж, Enter дарна уу, дараа нь тус бүрийг бүрэн хөдөлгөөнөөр нь гүйлгэнэ. id нь профайлын файлын нэр болно.

    bash
    lerobot-calibrate \
        --robot.type=so100_follower \
        --robot.port=/dev/ttyACM0 \
        --robot.id=my_so100_follower
    
    lerobot-calibrate \
        --teleop.type=so100_leader \
        --teleop.port=/dev/ttyACM1 \
        --teleop.id=my_so100_leader
  4. 4
    Юу ч бичихээс өмнө телеопераци хийх

    Дээр дурдсан бүх зүйлийн хүлээн авах тест. Хэрэв телеопераци салганасан, толин тусгалтай эсвэл нэг үе нь дагахгүй байвал бичлэг нь үүнийг 50 ангид хадгална.

    bash
    lerobot-teleoperate \
        --robot.type=so100_follower \
        --robot.port=/dev/ttyACM0 \
        --robot.id=my_so100_follower \
        --teleop.type=so100_leader \
        --teleop.port=/dev/ttyACM1 \
        --teleop.id=my_so100_leader \
        --display_data=true
Тохируулга хаана хадгалагддаг, мөн ID яагаад чухал болох нь

Профайлууд $HF_LEROBOT_CALIBRATION руу, анхдагчаар ~/.cache/huggingface/lerobot/calibration руу очих бөгөөд ID нь хайлтын түлхүүр болно. lerobot-record-д тохируулсан ID өгөхөд профайлыг дахин ашиглахын тулд Enter эсвэл дахин хийхийн тулд c-г санал болгоно. Хэрэв үл мэдэгдэх ID өгвөл файл байхгүй тул сессийн дундуур тохируулга руу шилжинэ.

Камерууд бодлого юу харахыг шийддэг

bash
lerobot-find-cameras opencv   # or: lerobot-find-cameras realsense

# --- Detected Cameras ---
# Camera #0:
#   Name: OpenCV Camera @ 0
#   Type: OpenCV
#   Id: 0
#   Backend api: AVFOUNDATION
#   Default stream profile:
#     Format: 16.0
#     Width: 1920
#     Height: 1080
#     Fps: 15.0
Үүнийг сесс бүрт ажиллуулна уу: баримт бичигт эдгээр танигчууд үйлдлийн системээс хамаарч дахин ачаалах эсвэл дахин залгасны дараа өөрчлөгдөж болзошгүйг анхааруулсан байдаг.

Хоёр харагдац, тэдгээрийн байршил чухал: ажлын талбарыг хамарсан тогтмол үзэгдлийн камер, болон гарын бугуйн камер төгсгөлийн эффект баригч юунд хүрэх гэж байгааг харуулна. LeRobot-ын олон нийтийн өгөгдлийн багцын шалгах хуудас нь 480x640 / 720p эсвэл түүнээс дээш нягтралтай хоёр харагдац, тогтмол суурь, төвийг сахисан тогтвортой гэрэлтүүлэг, мөн удирдагч гар болон хүний мөчдийг хүрээнээс гадуур байлгахыг хүсдэг. Бичлэгийн гарын авлага нь дараах ерөнхий дүрмийг нэмж хэлдэг: та зөвхөн камерын зургийг хараад л даалгаврыг өөрөө гүйцэтгэх боломжтой байх ёстой.

Камерын индекс нь тогтвортой танигч биш

OpenCV-ийн индекстүүд жагсаалтын дарааллаас үүсдэг тул дахин ачаалах эсвэл дахин залгах нь индекс 0 ба 2-ыг байр солиулж, бугуйн харагдацыг бүхэл бүтэн сессийн турш хамгийн дээд хэсэгт байрлуулах боломжтой. lerobot өөрөө хэлэхдээ: түүний камерын класс нь төхөөрөмжийн замыг болон бүхэл тоог авдаг бөгөөд индекстүүд дахин ачаалах эсвэл портын өөрчлөлтөөр, ялангуяа Linux дээр тогтворгүй байдаг гэж анхааруулдаг. index_or_path-ийг жагсаалтын дарааллаас илүү төхөөрөмжийг дагадаг /dev/v4l/by-id/ доорх udev симлинк рүү чиглүүлнэ үү. Энэ нь өгөгдлийн багц дотооддоо зөрчилтэй болох хамгийн түгээмэл арга бөгөөд сургалт үүнийг засах боломжгүй. Камер илрээгүй.

Бичлэг хийх тушаал болон бүх флагууд

bash
HF_USER=$(NO_COLOR=1 hf auth whoami | awk -F': *' 'NR==1 {print $2}')

lerobot-record \
    --robot.type=so100_follower \
    --robot.port=/dev/ttyACM0 \
    --robot.id=my_so100_follower \
    --robot.cameras="{ top: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30}, wrist: {type: opencv, index_or_path: 2, width: 640, height: 480, fps: 30}}" \
    --teleop.type=so100_leader \
    --teleop.port=/dev/ttyACM1 \
    --teleop.id=my_so100_leader \
    --display_data=true \
    --dataset.repo_id=${HF_USER}/so100_pick_cube \
    --dataset.single_task="Pick the red cube and drop it in the box" \
    --dataset.num_episodes=50 \
    --dataset.fps=30 \
    --dataset.episode_time_s=25 \
    --dataset.reset_time_s=10 \
    --dataset.streaming_encoding=true \
    --dataset.encoder_threads=2
Камерын толь бичиг нь нэг бүрхүүлээр иш татсан мөр юм; үүрлэсэн хаалтууд нь бүрхүүлийн синтакс биш.

Доорх анхдагч утгууд нь src/lerobot/configs/dataset.py үндсэн хувилбараас ирсэн бөгөөд заавар биш юм. Зарим нь хүмүүсийн таамаглаж байснаас өөр байдаг.

ФлагАнхдагч утгаҮүрэг
--dataset.repo_idemptyнэр; анхдагчаар цагийн тэмдэглэгээ нэмэгдэнэ
--dataset.single_taskemptyангилал бүрт хадгалагдах даалгаврын мөр
--dataset.root$HF_LEROBOT_HOME/repo_idбичих зам, анхдагч утга ~/.cache/huggingface/lerobot/
--dataset.fps30хяналтын давталтын хурд болон өгөгдлийн багцын фрэймийн хурд
--dataset.episode_time_s60ангилал автоматаар урагшлахаас өмнөх секунд
--dataset.reset_time_s60үзэгдлийг дахин тохируулах; гар хөдөлнө, юу ч хадгалагдахгүй
--dataset.num_episodes50энэ сессээр бичигдсэн ангилалууд
--dataset.push_to_hubtrueсессийн төгсгөлд байршуулах; false бол локал хэвээр үлдэнэ
--dataset.streaming_encodingfalse in the dataclass, true in the docs tableбичлэг хийх үед кодлох; үүнийг тодорхой зааж өгнө
--dataset.encoder_queue_maxsize30камер тутамд буферлагдсан фрэймүүд, 30 fps-ээр ~1 секунд
--dataset.encoder_threadsnull (codec decides)кодлогч тутамд ашиглах урсгалууд; бичлэг гацах үед багасгана
--dataset.no_stampfalserepo_id-г яг бичсэнээр нь хадгалах
--resumefalseодоо байгаа өгөгдлийн багцад нэмэх; --dataset.root шаардлагатай
Гэнэтийн байдлаар цаг үрсэн хоёр флаг

Таны өгөгдлийн багц таны бичсэн нэрээр нэрлэгдээгүй байна. lerobot нь огноо-цагийн тэмдэглэгээг нэмдэг тул so100_pick_cube нь so100_pick_cube_20260823_141530 болно. Тогтвортой нэр ашиглахын тулд --dataset.no_stamp=true-г хэрэглээрэй. Үргэлжлүүлэх нь нийлбэрийг биш, нэмэлтийг тооцдог. --resume=true-г ашиглахад --dataset.num_episodes нь нэмэлт эпизодуудыг тоолж, --dataset.root нь заавал байх шаардлагатай болно. 30 эпизодтой өгөгдлийн багцад 50-г хүсвэл та 80-г авах болно.

Сессийн үеийн гарны удирдлага

  • Баруун сум эсвэл n: эпизодыг дуусгах эсвэл үе шатыг эрт эхлүүлэх. Таны хамгийн их ашигладаг товчлуур, учир нь цэвэрхэн атгахад 25 секунд ховорхон шаардлагатай байдаг.
  • Зүүн сум эсвэл r: эпизодыг хаях, дахин хийх. Муу бичлэг одоо юу ч үнэгүй, харин дараа нь их үнэтэй.
  • Escape эсвэл q: сессийг зогсоох, кодчилолыг дуусгах, байршуулах.
  • Эдгээр нь X11, Wayland болон headless SSH дээр ажилладаг: дэлхийн түлхүүрийн бэкэндгүйгээр lerobot-record нь хяналтын терминалаас ижил түлхүүрүүдийг уншдаг. Үсгүүд нь удаан SSH холболтуудад ч ажилладаг, хаана сумын дараалал хуваагддаг.
  • Гарны телеопераци нь өөр бөгөөд дэлхийн бэкэнд шаарддаг: X11, Windows, эсвэл Accessibility-тэй macOS.

Хэдэн эпизод, мөн сайн эпизод ямар харагддаг вэ

Бичлэгийн гарын авлагад эхний даалгаварт дор хаяж 50 анги, объектын байршил тутамд ойролцоогоор 10 анги байхыг зөвлөж байна. бодлогын хуудсууд нь загвар тутамд хамгийн бага хэмжээг жагсаасан бөгөөд үүнээс доош гүйцэтгэл нь GPU-ийн цаг хугацааг үнэ цэнэтэй болгохгүй.

БодлогоХамгийн бага ангиӨгөгдлийн багцын форматGPU зэрэглэлНэг гүйцэтгэлийн зардал
SmolVLA30LeRobot v3.0RTX 4090 or any 24 GB cardabout 1 to 3 USD
ACT50LeRobot v3.0RTX 4090 or any 24 GB cardabout 1 to 3 USD
GR00T N1.750LeRobot v2.0 or v2.1A100 80 GB or H100 80 GBabout 4 to 12 USD
GR00T N1.550LeRobot v2.0 or v2.1A100 80 GB or H100 80 GBabout 4 to 12 USD
Pi0.550LeRobot v3.0A100 80 GB or H100 80 GBabout 4 to 12 USD

Илүү чухал асуулт бол юуг хэр олон удаа хийх вэ гэдэг. Data Scaling Laws in Imitation Learning for Robotic Manipulation (Lin et al., 2024) нь 40,000 гаруй үзүүлбэр цуглуулж, бодит ертөнцөд 15,000 гаруй удаа туршилт хийсэн. Ерөнхийлөн дүгнэх нь орчин болон объектуудын тоотой ойролцоогоор зэрэгцсэн хамааралтай байсан бөгөөд орчин эсвэл объект тутамд тодорхой босго хэмжээнээс хэтэрсэн нэмэлт үзүүлбэрүүд нь хамгийн бага нөлөө үзүүлсэн. Нэг туршилтын талбар дээр: нэг үйлдлийг давтахын оронд объектыг хөдөлгөх, гэрэлтүүлгийг өөрчлөх, кубыг солих гэх мэт.

Удирдагч-дагагч телеопераци нь өгөгдлийн эх үүсвэр болгон
Давуу талууд
  • Гар эсвэл тоглоомын удирдлагаас ялгаатай нь серво хуулбарлах боломжтой тасралтгүй үений траектор
  • Үйлдэл болон төлөв нь зохицуулалтын конвенцийг хуваалцдаг тул бодлого нь шууд удирдах боломжтой зорилгыг сурдаг
  • 25 секундын анги дээр 10 секундын дахин тохируулга нэмэхэд цагт ойролцоогоор 100 анги болно
  • Оператор нь дагагч гацсан эсвэл уягдсаныг мэдэрдэг тул өгөгдөл оруулахаас өмнө алдаа илэрдэг
Сул талууд
  • Хоёр дахь гар нь эд ангиудын зардлыг ойролцоогоор хоёр дахин нэмэгдүүлдэг
  • Үзүүлбэрүүд нь операторын зуршлыг өвлөн авдаг; Mandlekar нар бодлогын чанар нь үзүүлбэрийн чанараас ихээхэн хамаардаг болохыг тогтоосон
  • Удирдагчийг давталтын хурдаар түүвэрлэдэг тул түр зогсолт нь бодлогыг хүлээхэд сургадаг бараг ижил мөрүүд болдог
  • Сессүүдийн хоорондын уялдаа холбоог юу ч баталгаажуулдаггүй: 5 см хөдөлгөсөн камер нь далд тархалтын өөрчлөлт юм

Сайн эпизод нь уйтгартай байдаг: давтагдах боломжтой эхлэх байрлал, нэг зүйл хийгдсэн, объект саванд ормогц дууссан, шалгах хуудас зөвлөсөн 25-50 тэмдэгтийн хоорондох даалгаврын мөр. Улаан кубыг аваад хайрцагт хий нь даалгаврын мөр юм; task1 нь шалгах хуудас тодорхой нэрлэсэн эсрэг загвар юм. Тодорхойгүй тайлбарууд нь асуудлын жагсаалтыг тэргүүлдэг бөгөөд тэдгээр нь хамгийн чухал нь хараа-хэл-үйлдэл загварууд, учир нь мөр нь загварын оролт бөгөөд файлын нэр биш юм.

Өгөгдлийн багцыг чимээгүйхэн сүйтгэдэг алдаанууд

Аль нь ч алдаа гаргадаггүй. Бүгд сургалтанд үлдэж, хэвийн харагдах алдагдлын муруй болон юу ч хийдэггүй робот болж илэрдэг. Үзэгдлийг тохируулах үед шалгана уу.

АлдааЯмар харагддаг вэХаанаас үүсдэг вэХэрхэн илрүүлэх вэ
Камерын харагдац солигдсонбугуйн зураг дээд түлхүүрийн доордахин залгасны дараа индексийг дахин оноохlerobot-find-cameras сесс бүрт; by-id замууд
Хөлдсөн фрэймүүдхэдэн арван мөрөнд ижил зурагкамер зураг дамжуулахаа зогсоох; давталт сүүлийн фрэймийг давтахүүнийг lerobot-dataset-viz дотор шалгах
Алдагдсан фрэймүүдмөрийн тоо fps үржүүлэх секундээс багадараалал хэтэрч, хаахын оронд алдагдах'Encoder queue full' логт; мөрүүд vs fps үржүүлэх хугацаа
Үе нь хязгаарт хүрсэннэг үе хамгийн бага эсвэл хамгийн ихдээ тэгштэргүүлэгчийн хүрээ дагагчийнхаас хэтэрсэн, эсвэл буруу дунд байрлалds.meta.stats доторх үе тус бүрийн мин/макс; lerobot-find-joint-limits урьдчилан
Зураг болон үйлдэл зөрчилдсөнбодлого урьдчилан таамаглах эсвэл хоцрохкамерууд давталтаас өөр fps-тэйкамер бүрийг --dataset.fps дээр байлгах
Үхсэн хугацааижил үйлдлийн мөрүүдийн урт үргэлжлэлоператор бичигчийг ажиллуулсан хэвээр түр зогссондараалсан ижил үйлдлийн мөрүүдийн хувь
Ашиглах боломжгүй даалгаврын мөрtask1, demo2, testхурдан бичихmeta/tasks.parquet v3.0 дотор (өмнө нь meta/tasks.jsonl v2.1 дотор байсан); lerobot-edit-dataset modify_tasks ашиглан засах
Хаягдсан фрэймүүд өөрсдийгөө нуудаг

Кодлогч нь камер тус бүрт хязгаарлагдмал дараалал (анхдагчаар 30 фрэйм) үүсгэдэг. Хэрэв гүйцэхгүй бол фрэймүүд хаагдахын оронд хаягддаг: бичлэг үргэлжилж, юу ч унадаггүй. Та Encoder queue full for {camera}, dropped N frame(s) гэсэн мэдэгдэл болон ангиллын төгсгөлд камер тус бүрийн нийт дүнг харах болно. Lerobot-ийн босго: ойролцоогоор 5 хувь дутуу байвал систем хэт ачаалагдсан гэсэн үг, 2 хувь нь эхлүүлэх үеийн хүлээгдэж буй ачаалал юм. Засах арга замууд дарааллаар: --display_data=false, --dataset.encoder_threads-ийг багасгах, vcodec=h264, стриминг унтраах.

Нэг анхааруулга: стриминг-кодчилолын гарын авлагын хүснэгтэд анхдагч утгыг True, харин үндсэн дээрх датакласс нь streaming_encoding: bool = False. Баримт бичиг болон код хоорондоо зөрчилдөж байгаа тул үүнийг тодорхой зааж өгөх хэрэгтэй; lerobot нь тухайн флаг унтарсан үед эхлэх бүрт үүнийг санал болгосон зөвлөмжийг бүртгэдэг.

GPU түрээслэхээс өмнө өгөгдлийн баазыг шалгана уу

Баримт бичигт дурдсан хүлээн авах тест: видеоны үргэлжлэх хугацааг CLI-ийн мэдээлсэн ангиллын үргэлжлэх хугацаатай харьцуулж, мөрийн тоо нь fps-ийг үргэлжлэх хугацаагаар үржүүлсэнтэй тэнцэж байгаа эсэхийг баталгаажуулна. Нийт дүнгээр биш, ангилал тус бүрээр.

python
from lerobot.datasets import LeRobotDataset

ds = LeRobotDataset("your-user/so100_pick_cube_20260823_141530")
print("fps:", ds.fps, "frames:", ds.num_frames)

# In v3.0 the per-episode records live in meta/episodes/ as chunked parquet:
# lengths, tasks and offsets into the shared parquet and mp4 shards.
# They load through the datasets stack, so this is a datasets.Dataset --
# use .column_names and integer indexing, not pandas .columns / .head().
eps = ds.meta.episodes
print(eps.column_names)
print(eps[0])

# Global feature statistics, including per-joint min and max.
# A joint whose min equals its max never moved. A joint sitting at a
# hard limit for most of the run is the one that will stall the policy.
print(ds.meta.stats["observation.state"])
FPS-ийн хугацаанаас хэтэрсэн үргэлжлэх хугацаатай анги нь сургалтад бус, харин устгахад тохиромжтой.

Дараа нь үүнийг харна уу. lerobot-dataset-viz нь камерын харагдацын хажууд үе мөчний мөрүүдтэй хамт нэг ангийг фрэймээр нь Rerun эсвэл Foxglove-д дахин тоглуулдаг. Солигдсон камерууд болон хөлдсөн фрэймүүд аравхан секундын дотор гарч ирдэг. Хүмүүс энэ алхмыг алгасах нь бий.

bash
# Replay one episode with camera views and joint traces
lerobot-dataset-viz \
    --repo-id your-user/so100_pick_cube_20260823_141530 \
    --episode-index 0

# Foxglove instead, for a seekable, scrubbable timeline
lerobot-dataset-viz \
    --repo-id your-user/so100_pick_cube_20260823_141530 \
    --episode-index 0 \
    --display-mode foxglove

# Drop the episodes that did not survive review
lerobot-edit-dataset \
    --repo_id your-user/so100_pick_cube_20260823_141530 \
    --new_repo_id your-user/so100_pick_cube_clean \
    --operation.type delete_episodes \
    --operation.episode_indices "[3, 17, 41]"
lerobot-edit-dataset нь мөн хуваах, нэгтгэх, онцлогийг устгах, даалгаврыг өөрчлөх болон статистикийг дахин тооцоолох үйлдлүүдийг гүйцэтгэдэг. Өгөөмөр устгана уу: нэг муу анги нь нэг ангийн өртөгтэй тэнцэх бол, түүнийг хадгалах нь түүгээр сургагдсан бүх ажиллагааны өртөгтэй тэнцэнэ.
AY-Robots өгөгдлийн багцын сан нь нийтийн LeRobot өгөгдлийн багцуудыг ангийн тоо болон форматаар нь жагсаасан байна.
Харьцуулах боломжтой өгөгдлийн багцуудыг хэрхэн хэмжээлж, тэмдэглэсэн байдал.

v2.1 эсвэл v3.0: бичихээсээ өмнө шийдээрэй

v2.1 нь нэг ангид нэг parquet болон нэг MP4 файл бичдэг байсан. v3.0 нь олон ангийг хуваалцсан шардууд руу нэгтгэж, метадатагаас хил хязгаарыг дахин үүсгэдэг тул info.json нь ангийн дугаарын оронд зам загваруудыг агуулдаг, тухайлбал data/chunk-{chunk_index:03d}/file-{file_index:03d}.parquet гэх мэт. Үүний үндэслэл нь цөөн, том файлуудтай байх: хурдан эхлүүлэх, өргөтгөх үед файлын системийн ачааллыг багасгах явдал юм.

LeRobot v2.1LeRobot v3.0
Байршилнэг ангид нэг parquet болон нэг MP4нэг шардад олон анги
Ангийн метадатаJSONL файлуудmeta/episodes/ доорх хуваагдсан parquet, datasets стекийг ашиглан
Hub-аас стриминг хийхүгүйтийм, StreamingLeRobotDataset-ээр дамжуулан
lerobot 0.6.1-ээр бичигдсэнүгүйтийм, өнөөдөр таны авч байгаа хувилбар
GR00T N1.7 болон N1.5-аар уншигданатиймүгүй, доош хөрвүүлэх шаардлагатай
Өнөөдөр бичих, маргааш GR00T сургах

lerobot 0.6.1 нь v3.0-ийг бичдэг боловч GR00T N1.7 болон N1.5 нь v2.0 эсвэл v2.1-ийг уншиж, алдаа гардаг. Чиглэлийг анхаарна уу: src/lerobot/scripts/ нь convert_dataset_v21_to_v30.py файлыг агуулдаг бөгөөд эсрэг чиглэлд хөрвүүлэх зүйл байхгүй. Хичээл эхлэхээс өмнө үүнийг шийдээрэй. Засвар: v3 хувилбараар татгалзсан датасет.

bash
# Upgrade an older v2.1 dataset to v3.0
python -m lerobot.scripts.convert_dataset_v21_to_v30 \
    --repo-id=your-user/so100_pick_cube

# By default it pushes the converted dataset back to the hub and tags it v3.0.
# To convert a local copy and keep it off the hub:
python -m lerobot.scripts.convert_dataset_v21_to_v30 \
    --repo-id=your-user/so100_pick_cube \
    --root=/path/to/dataset/directory \
    --push-to-hub=false
50 ангид хурдан. Хэмжээ нь өөр ажил: lerobot-ын шилжүүлгийн гарын авлагад, түүхий DROID-ыг v3.0 руу оруулахад, 7+ хоногийн дотоод боловсруулалт болон ойролцоогоор 400 ГБ багцлагдсан байна.

Нэг өгөгдлийн багцад хүрэх хоёр зам

Дээрх бүх зүйл, таны өөрийн машинд: та USB-ийн жагсаалт, ffmpeg-ийн угсралт, кодлогчийн тохируулга болон калибровкийн файлуудыг эзэмшинэ. Дамжуулах хоолойг ойлгох, ер бусын камерын тохиргоог ажиллуулах, эсвэл өгөгдлийг дотооддоо хадгалах зөв зам.

Энэ замын зардал

Цаг хугацаа: гар тус бүрийг угсрахад нэг орой, нарийн төвөгтэй анхны калибровк, мөн камер буруу үүрэнд байсан тул таны хаясан анхны сесс.

Дамжуулах хоолойг өөрөө холбохгүйгээр LeRobot өгөгдлийн багцуудыг бичих

AY-Robots ширээний клиент нь телеоперацийн сессээс LeRobot форматаар ангиуд, камерын урсгал болон үений төлөвийг бичиж, дараа нь өгөгдлийн багцыг сургагчид дамжуулдаг.

Ширээний клиентийг авах

Өгөгдлийн сангаас бодлого хүртэл

Тавин цэвэр эпизод бүрийг тэжээдэг энд ажиллуулна. нь таны даалгавар дээр дангаар нь, ойролцоогоор 80 сая параметр, үйлдлийн алхам тутамд 20 мс орчим хугацаанд сургадаг бөгөөд хурдан хөдөлгөөнд дасан зохицдог таван загварын цорын ганц нь юм. нь 24 ГБ карт дээр ойролцоогоор 450 сая параметр юм. нь ойролцоогоор 3 тэрбум параметртэй суурь загвар бөгөөд ойролцоогоор 40 сая параметртэй харьцдаг, A100 эсвэл H100 шаарддаг бөгөөд v2.1 өгөгдлийн санг хүсдэг.

Дараа нь, таны хослолын гарын авлага: , эсвэл ; анхны ажиллуулалтад, нь илүү богино. Хэрэв бодлого ширээн дээр ажиллаж байгаад, та ширээг хөдөлгөхөд л унавал, энэ нь өгөгдлийн асуудал юм: болон нь олон талт байдлыг илүү гүнзгийрүүлэн авч үздэг.

Анхны ажиллах бодлогод хэдэн эпизод хэрэгтэй вэ?

SmolVLA-д гучин, ACT, Pi0.5, GR00T N1.5 болон N1.7-д тавин эпизод, эдгээр нь AY-Robots сургагчдын шаарддаг хамгийн бага хэмжээ юм. LeRobot гарын авлага нь анхны даалгаварт дор хаяж 50, объектын байршил тутамд 10 орчим эпизодыг бие даан зөвлөдөг. Өгөгдөл-масштабчлалын судалгаагаар ерөнхийлөн дүгнэх чадвар нь үзүүлэнгийн тооноос илүү орчин болон объектуудтай хамт өсдөг болохыг тогтоосон тул нэг үзэгдлийн зуун бичлэг нь таван өөр байршилд хийсэн тавин бичлэгээс муу юм.

Надад удирдагч гар хэрэгтэй юу, эсвэл би гар ашиглан алсаас удирдах боломжтой юу?

lerobot нь гар болон тоглоомын удирдлагын телеоператоруудыг нийлүүлдэг тул удирдагч гар заавал шаардлагагүй боловч маш их давуу талтай: удирдагч-дагагч нь бичигдсэн үйлдлийн координатын конвенцид тасралтгүй үений траекторийг өгдөг бол гарын оролт нь бодлогын хувьд огцом хөдөлгөөн гэж сурдаг алхамт хөдөлгөөнийг үүсгэдэг. Гарын телеопераци нь мөн глобал түлхүүрийн бэкенд шаарддаг тул Wayland болон headless систем дээр ажиллахгүй.

Би Raspberry Pi эсвэл жижиг мини компьютер дээр бичих боломжтой юу?

Тийм ээ, тааруулалт хийх боломжтой. Урсгал-кодчилолын гарын авлага нь орчин үеийн 4 цөмт машинууд болон Raspberry Pi 5-ыг хамарсан бага нөөцтэй ангилалтай бөгөөд хоёр камерыг 640x480 нягтралтай, 30 fps хурдтайгаар "зарим тааруулалт шаардлагатай" гэсэн баганад оруулсан. Түүний зөвлөгөө: --dataset.rgb_encoder.vcodec=h264 болон --dataset.streaming_encoding=false ашиглан кодлогчийг барих давталттай өрсөлдүүлэхээ зогсоох. Энэ нь 640x480 нягтралтай хоёр камерыг секундэд ойролцоогоор 55 сая пиксел, 1920x1080 нягтралтай хоёр камерыг ойролцоогоор 373 сая пиксел гэж үнэлдэг.

Би дөнгөж сая бичсэн өгөгдлийн сан эрүүл эсэхийг яаж мэдэх вэ?

Гурван хялбар шалгалт. Эпизод бүрийн видеоны үргэлжлэх хугацааг CLI-ийн мэдээлсэн үргэлжлэх хугацаатай харьцуулж, мөрийн тоо нь нийт дүнгээр бус, эпизод тус бүрээр fps-ийг тухайн үргэлжлэх хугацаагаар үржүүлсэнтэй тэнцэж байгаа эсэхийг баталгаажуулна; энэ нь lerobot-ийн кодчилолын гарын авлагын хүлээн авах тест юм. ds.meta.stats-ийг уншина, үүнд хамгийн бага нь хамгийн ихтэй тэнцүү үе хэзээ ч хөдлөөгүй байна. Дараа нь хоёр эсвэл гурван эпизодыг lerobot-dataset-viz дотор дахин тоглуулна, энэ нь солигдсон харагдац болон царцсан фрэймүүдийг харуулах цорын ганц арга юм. Алдагдсан фрэймүүдийн хувьд гарын авлага нь ойролцоогоор 5 хувь дутуу байвал хязгаар тогтоодог; ойролцоогоор 2 хувь нь хэвийн түр зуурын ачаалал бөгөөд ихэвчлэн эхлүүлэх үед тохиолддог.

Миний сургалтын ажил v3.0 өгөгдлийн санг хүлээж авахаас татгалзлаа. Одоо яах вэ?

GR00T N1.7 болон N1.5 нь LeRobot v2.0 эсвэл v2.1-ийг уншдаг бөгөөд v3.0 дээр унадаг, энэ нь lerobot 0.6.1-ийн бичдэг формат юм. Сургахаасаа өмнө форматыг тохируул, эсвэл v3.0-ийг шууд уншдаг бодлого ашигла: Pi0.5, SmolVLA эсвэл ACT. lerobot нь v2.1-ээс v3.0 руу хөрвүүлэгчийг нийлүүлдэг бөгөөд эсрэгээрээ байхгүй.

Ready for high-quality robotics data?

AY-Robots connects your robots to skilled operators worldwide.

Get Started