
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-оос уншигдсан.
| Онцлог | Өгөгдлийн төрөл | Хэлбэр | Юу болох |
|---|---|---|---|
| action | float32 | [6] | удирдагч гарын үений зорилтот байрлалууд |
| observation.state | float32 | [6] | дагагчийн хүрсэн үений байрлалууд |
| observation.images.top | video | [480, 640, 3] | үзэгдлийн камер, MP4 (энд av1) |
| observation.images.wrist | video | [480, 640, 3] | бугуйн камер, ижил хурдтай |
| timestamp | float32 | [1] | эпизод эхэлснээс хойших секунд |
| frame_index, episode_index, index, task_index | int64 | [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 секунд. Хэрэв таных дунджаар нэг минут байвал та илүү хэцүү зүйл хийж байгаа эсвэл хоёр талд нь ашиггүй цаг хугацааг бичиж байна гэсэн үг.

Тавцан дээр танд юу хэрэгтэй вэ
| Зүйл | Дэлгэрэнгүй | Тайлбар |
|---|---|---|
| Дагагч гар | SO-100, зургаан Feetech STS3215 серво | сэлбэг хэрэгсэлд ойролцоогоор 110-150 EUR |
| Удирдагч гар | хоёр дахь SO-100, арааг нь салгасан | бүх зургаан удирдагч моторын арааг салгасан: зөвхөн энкодер, үрэлт багатай |
| Цахилгаан хангамж | материалын жагсаалтад байгаа 7.4 V STS3215 хувилбарт тохируулсан | доорх анхааруулгыг үзнэ үү |
| Камерууд | хоёр USB камер, 640x480, 30 fps | нэг нь үзэгдлийн харагдац, нэг нь бугуй дээр |
| Хост | Python 3.12 эсвэл түүнээс шинэ, ffmpeg | requires-python >= 3.12 |
| Хуб бүртгэл | Hugging Face бичих токен | optional with --dataset.push_to_hub=false |
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 суулгах
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Нэмэлтүүд хүмүүсийг их төөрөгдүүлдэг. pip install lerobot нь зөвхөн үндсэн ML хамаарлыг суулгадаг, роботтой харилцах зүйл байхгүй. Koch гарнууд dynamixel -ийн оронд feetech хэрэгтэй. Хэрэв таны shell lerobot-record-ийн талаар хэзээ ч сонсож байгаагүй бол энэ нь шалтгаан юм.
Портууд, моторын ID болон тохируулга
Эд ангиуд болон ажиллаж буй телеоп гогцооны хооронд гурван удаагийн алхам бий. нь таны гарт сургасан бодлогыг өөр хүний гарт ажиллуулж, түүхий энкодерын тоог нийтлэг үений конвенц руу зурагладаг.
- 1Гар тус бүрийн USB портыг олох
Хоёр гарыг хоёуланг нь залгаад ажиллуулж, таних гэж буй гараа салгахыг хүсэхэд аль порт алга болсныг тэмдэглэж аваарай. Линукс дээр танд
sudo chmod 666 /dev/ttyACM0хэрэгтэй байж магадгүй.bashlerobot-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Моторын ID болон бодрейтыг бичих
ID-г нэг моторыг нэг нэгээр нь бичдэг бөгөөд баримт бичигт үүнийг хэрхэн хийх талаар хатуу заасан байдаг: хянагчийн самбарт яг нэг моторыг холбоно, бусадтай гинжин холбоогүй байна. Скрипт нь гинжийг арагш нь алхаж, эхлээд баригчийг асууж, түүнд 6-р ID өгч, дараа нь wrist_roll-д 5, shoulder_pan-д 1 гэх мэтээр өгнө. Үүнийг угсрахаас өмнө хийнэ үү.
bashlerobot-setup-motors \ --robot.type=so100_follower \ --robot.port=/dev/ttyACM0 lerobot-setup-motors \ --teleop.type=so100_leader \ --teleop.port=/dev/ttyACM1 - 3Хоёр гарыг хоёуланг нь тохируулах
Бүх үеийг хөдөлгөөнийх нь дунд хэсэгт аваачиж, Enter дарна уу, дараа нь тус бүрийг бүрэн хөдөлгөөнөөр нь гүйлгэнэ.
idнь профайлын файлын нэр болно.bashlerobot-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Юу ч бичихээс өмнө телеопераци хийх
Дээр дурдсан бүх зүйлийн хүлээн авах тест. Хэрэв телеопераци салганасан, толин тусгалтай эсвэл нэг үе нь дагахгүй байвал бичлэг нь үүнийг 50 ангид хадгална.
bashlerobot-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
Профайлууд $HF_LEROBOT_CALIBRATION руу, анхдагчаар ~/.cache/huggingface/lerobot/calibration руу очих бөгөөд ID нь хайлтын түлхүүр болно. lerobot-record-д тохируулсан ID өгөхөд профайлыг дахин ашиглахын тулд Enter эсвэл дахин хийхийн тулд c-г санал болгоно. Хэрэв үл мэдэгдэх ID өгвөл файл байхгүй тул сессийн дундуур тохируулга руу шилжинэ.
Камерууд бодлого юу харахыг шийддэг
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 симлинк рүү чиглүүлнэ үү. Энэ нь өгөгдлийн багц дотооддоо зөрчилтэй болох хамгийн түгээмэл арга бөгөөд сургалт үүнийг засах боломжгүй. Камер илрээгүй.
Бичлэг хийх тушаал болон бүх флагууд
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_id | empty | нэр; анхдагчаар цагийн тэмдэглэгээ нэмэгдэнэ |
| --dataset.single_task | empty | ангилал бүрт хадгалагдах даалгаврын мөр |
| --dataset.root | $HF_LEROBOT_HOME/repo_id | бичих зам, анхдагч утга ~/.cache/huggingface/lerobot/ |
| --dataset.fps | 30 | хяналтын давталтын хурд болон өгөгдлийн багцын фрэймийн хурд |
| --dataset.episode_time_s | 60 | ангилал автоматаар урагшлахаас өмнөх секунд |
| --dataset.reset_time_s | 60 | үзэгдлийг дахин тохируулах; гар хөдөлнө, юу ч хадгалагдахгүй |
| --dataset.num_episodes | 50 | энэ сессээр бичигдсэн ангилалууд |
| --dataset.push_to_hub | true | сессийн төгсгөлд байршуулах; false бол локал хэвээр үлдэнэ |
| --dataset.streaming_encoding | false in the dataclass, true in the docs table | бичлэг хийх үед кодлох; үүнийг тодорхой зааж өгнө |
| --dataset.encoder_queue_maxsize | 30 | камер тутамд буферлагдсан фрэймүүд, 30 fps-ээр ~1 секунд |
| --dataset.encoder_threads | null (codec decides) | кодлогч тутамд ашиглах урсгалууд; бичлэг гацах үед багасгана |
| --dataset.no_stamp | false | repo_id-г яг бичсэнээр нь хадгалах |
| --resume | false | одоо байгаа өгөгдлийн багцад нэмэх; --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 зэрэглэл | Нэг гүйцэтгэлийн зардал |
|---|---|---|---|---|
| SmolVLA | 30 | LeRobot v3.0 | RTX 4090 or any 24 GB card | about 1 to 3 USD |
| ACT | 50 | LeRobot v3.0 | RTX 4090 or any 24 GB card | about 1 to 3 USD |
| GR00T N1.7 | 50 | LeRobot v2.0 or v2.1 | A100 80 GB or H100 80 GB | about 4 to 12 USD |
| GR00T N1.5 | 50 | LeRobot v2.0 or v2.1 | A100 80 GB or H100 80 GB | about 4 to 12 USD |
| Pi0.5 | 50 | LeRobot v3.0 | A100 80 GB or H100 80 GB | about 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-ийг үргэлжлэх хугацаагаар үржүүлсэнтэй тэнцэж байгаа эсэхийг баталгаажуулна. Нийт дүнгээр биш, ангилал тус бүрээр.
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"])Дараа нь үүнийг харна уу. lerobot-dataset-viz нь камерын харагдацын хажууд үе мөчний мөрүүдтэй хамт нэг ангийг фрэймээр нь Rerun эсвэл Foxglove-д дахин тоглуулдаг. Солигдсон камерууд болон хөлдсөн фрэймүүд аравхан секундын дотор гарч ирдэг. Хүмүүс энэ алхмыг алгасах нь бий.
# 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]"
v2.1 эсвэл v3.0: бичихээсээ өмнө шийдээрэй
v2.1 нь нэг ангид нэг parquet болон нэг MP4 файл бичдэг байсан. v3.0 нь олон ангийг хуваалцсан шардууд руу нэгтгэж, метадатагаас хил хязгаарыг дахин үүсгэдэг тул info.json нь ангийн дугаарын оронд зам загваруудыг агуулдаг, тухайлбал data/chunk-{chunk_index:03d}/file-{file_index:03d}.parquet гэх мэт. Үүний үндэслэл нь цөөн, том файлуудтай байх: хурдан эхлүүлэх, өргөтгөх үед файлын системийн ачааллыг багасгах явдал юм.
| LeRobot v2.1 | LeRobot v3.0 | |
|---|---|---|
| Байршил | нэг ангид нэг parquet болон нэг MP4 | нэг шардад олон анги |
| Ангийн метадата | JSONL файлууд | meta/episodes/ доорх хуваагдсан parquet, datasets стекийг ашиглан |
| Hub-аас стриминг хийх | үгүй | тийм, StreamingLeRobotDataset-ээр дамжуулан |
| lerobot 0.6.1-ээр бичигдсэн | үгүй | тийм, өнөөдөр таны авч байгаа хувилбар |
| GR00T N1.7 болон N1.5-аар уншигдана | тийм | үгүй, доош хөрвүүлэх шаардлагатай |
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 хувилбараар татгалзсан датасет.
# 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Нэг өгөгдлийн багцад хүрэх хоёр зам
Дээрх бүх зүйл, таны өөрийн машинд: та USB-ийн жагсаалт, ffmpeg-ийн угсралт, кодлогчийн тохируулга болон калибровкийн файлуудыг эзэмшинэ. Дамжуулах хоолойг ойлгох, ер бусын камерын тохиргоог ажиллуулах, эсвэл өгөгдлийг дотооддоо хадгалах зөв зам.
Цаг хугацаа: гар тус бүрийг угсрахад нэг орой, нарийн төвөгтэй анхны калибровк, мөн камер буруу үүрэнд байсан тул таны хаясан анхны сесс.
Ширээний клиент нь LeRobot-форматын өгөгдлийн багц, ангиуд, камерын урсгал болон үений төлөвийг шууд телеоперацийн сессээс бичдэг. Энэхүү өгөгдлийн багц нь сургалтын маягтыг тэжээдэг: загвар, өгөгдлийн багц болон хэт параметрүүдийг сонгож, арын систем нь загварын VRAM-аар хэмжигдсэн GPU-г түрээсэлж, сургагчийг ажиллуулж, шалган нэвтрүүлэх цэгүүдийг объектын санд бичдэг.
- 1Клиентийг суулгах
Татаж авах хуудас дээр; клиентийн баримт бичигт тохируулах.
- 2Телеоперацийн сессээс бичих
Гарыг жолоодох; клиент нь LeRobot форматаар ангиудыг бичдэг. Алхам алхмаар заавар: анхны өгөгдлийн багцаа бичих.
- 3Эсвэл өөрийн өгөгдлөө авчрах
Өгөгдлийн багц нь Hugging Face репо ID эсвэл таны өөрийн машинаас ирж болно: өгөгдлийн багцын баримт бичиг, нийтийн сан.
- 4Сургаж, буцааж ажиллуулах
Сургалтын матриц дээр хослолыг сонгоод, дараа нь бодлогыг буцааж гарт ажиллуулна. 24 ГБ түвшинд ойролцоогоор 1-3 ам.доллар, A100 эсвэл H100 түвшинд 4-12 ам.доллар.
Энэ нь таны гарыг угсрах эсвэл калибровк хийхгүй, мөн гэмтэлтэй ангийг засахгүй, тиймээс шалгалтын алхам хэвээр үйлчилнэ. Нөгөө талд бас хатуу хязгаарлалт бий: хурдан даалгавруудын хувьд дүгнэлт нь сервогийн хажууд байх ёстой. Хяналтын давталт нь үйлдлийн алхам тутамд 20-485 мс ажилладаг бөгөөд нийтийн интернетийн эргэлтийн аялал нь ажиллаж буй бодлогыг эргэлзээтэй болгодог.
Дамжуулах хоолойг өөрөө холбохгүйгээр 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 руу хөрвүүлэгчийг нийлүүлдэг бөгөөд эсрэгээрээ байхгүй.
Sources
- LeRobot: Бодит ертөнцийн роботууд дээрх дуурайн суралцах
- LeRobot: SO-100 угсралт, моторын тохиргоо ба тохируулга
- LeRobot: Камерууд ба lerobot-find-cameras
- LeRobot: Суулгалт ба нэмэлт матриц
- LeRobotDataset v3.0: бүтэц ба v2.1 шилжүүлэг
- LeRobot: Видео дамжуулалтын кодчилол ба алдагдсан фрэймүүд
- LeRobot: Том өгөгдлийн багцуудыг v3.0 (DROID) руу шилжүүлэх
- lerobot v0.6.1 release, 3 August 2026
- DatasetRecordConfig: бодит бичлэгийн анхдагч тохиргоонууд
- lerobot_record.py: бичлэгийн давталт ба үргэлжлүүлэх удирдлага
- TheRobotStudio/SO-ARM100: репо үүсгэх ба материалын жагсаалт
- Hugging Face: LeRobot олон нийтийн өгөгдлийн багцын шалгах хуудас
- lerobot/svla_so100_pickplace: 50 episodes, 19,631 frames
- Lin et al. (2024), Дуурайн суралцахуйн өгөгдлийн масштаблах хуулиуд
- Mandlekar et al. (2021), Хүний офлайн үзүүлбэрээс суралцахад юу чухал вэ
Sources
- LeRobot: Imitation Learning on Real-World Robots
- LeRobot: SO-100 assembly, motor setup and calibration
- LeRobot: Cameras and lerobot-find-cameras
- LeRobot: Installation and the extras matrix
- LeRobotDataset v3.0: layout and v2.1 migration
- LeRobot: Streaming video encoding and dropped frames
- LeRobot: Porting large datasets to v3.0 (DROID)
- lerobot v0.6.1 release, 3 August 2026
- DatasetRecordConfig: the real recording defaults
- lerobot_record.py: record loop and resume handling
- TheRobotStudio/SO-ARM100: build repo and bill of materials
- Hugging Face: LeRobot Community Datasets checklist
- lerobot/svla_so100_pickplace: 50 episodes, 19,631 frames
- Lin et al. (2024), Data Scaling Laws in Imitation Learning
- Mandlekar et al. (2021), What Matters in Learning from Offline Human Demonstrations
Ready for high-quality robotics data?
AY-Robots connects your robots to skilled operators worldwide.
Get Started