
Сними употреблив LeRobot збир на податоци со SO-100: калибрација, телеоперација водач-следбеник, вистинските lerobot-record знаменца и стандардни вредности, поставување камера, број на епизоди и дефектите што ја уништуваат сесијата.
Следач SO-100, водечка рака со ист дизајн и две USB камери можат да дотераат политика за едно попладне. Истата клупа може исто толку лесно да произведе шеесет епизоди кои изгледаат здрави во прелистувач на датотеки и да потроши шестчасовно GPU извршување. Разликата ретко е моделот; таа е во она што се случило помеѓу сервомоторите и parquet датотеката.
Еве го рачниот пат, а потоа пократкиот. Секоја команда е од lerobot 0.6.1, објавена на 3 август 2026 година и актуелна на PyPI. Се префрли на влезни точки на конзолата, така што упатствата што извршуваат 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 s по епизода, 60 s ресетирање, 50 епизоди, околу 100 минути реално време.
- •Минимум епизоди овде: 30 за SmolVLA, 50 за останатите.
- •Разновидноста е подобра од обемот. Сетовите на податоци умираат од четири работи: заменети индекси на камери, испуштени или замрзнати рамки, зглоб паркиран на неговата граница, нечитлив низа на задачи.
Што снима една сесија за снимање
Еден LeRobot збир на податоци не е папка со видеа, туку временски индексирана табела со прикачено видео: секој такт на контролната јамка запишува еден ред што ја содржи наредбената акција, состојбата што ја достигнал следбеникот, една рамка по камера, временски печат и индекси. Политиката ги гледа само тие колони. Шемата на lerobot/svla_so100_pickplace, прочитана од нејзиниот meta/info.json.
| Карактеристика | dtype | Облик | Што е тоа |
|---|---|---|---|
| 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: шесте степени на слобода. Акцијата и состојбата делат иста форма бидејќи телеоперација водач-следбеник снима цел и позицијата достигната еден чекор подоцна. Таа празнина е информација: каде раката се борела со гравитацијата или заглавен објект. Тие низи се од тој збир на податоци. Сесија снимена со 0.6.1 денес запишува shoulder_pan.pos преку gripper.pos, ID-а од 1 до 6 на магистралата: истите шест зглобови, различни клучеви, што е важно во моментот кога конфигурацијата адресира карактеристика по име.
Тој збир на податоци содржи 50 епизоди и 19.631 рамки со 30 fps: околу 393 рамки, или 13 секунди, по епизода. Ако вашите во просек траат една минута, правите нешто потешко или снимате мртво време на двата краја.

Што ви е потребно на работната маса
| Ставка | Детали | Забелешка |
|---|---|---|
| Следечка рака | SO-100, six Feetech STS3215 servos | околу 110 до 150 ЕУР во делови |
| Водечка рака | втора SO-100, отстранети запчаници | запчаници отстранети од сите шест водечки мотори: само енкодер, помалку триење |
| Напојување | соодветно на варијантата STS3215 од 7.4 V во спецификацијата на материјали | видете го предупредувањето подолу |
| Камери | two USB cameras, 640x480 at 30 fps | еден поглед на сцената, еден на зглобот |
| Домаќин | Python 3.12 or newer, ffmpeg | requires-python >= 3.12 |
| Сметка на Hub | Hugging Face write token | optional with --dataset.push_to_hub=false |
STS3215 доаѓа во две верзии: SO-ARM100 README ја оценува верзијата од 7.4 V на 16.5 kg.cm вртежен момент на застој измерен на 6 V, а верзијата од 12 V на 30 kg.cm, и забележува дека земањето на 12 V мотори исто така значи купување на напојување од 12 V 5 A+ наместо она од 5 V. Спецификацијата на материјали наведува серва од 7.4 V. Напојувањето на серва со 12 V кои се оценети за 7.4 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. Ако вашата школка никогаш не слушнала за lerobot-record, ова е причината.
Порти, ID на мотори и калибрација
Три еднократни чекори стојат помеѓу деловите и функционална телеоп јамка. овозможува политика тренирана на вашата рака да работи на туѓа, мапирајќи ги суровите вредности на енкодерот на заедничка конвенција за зглобови.
- 1Најдете ја USB портата на секоја рака
Стартувајте го со двете раце приклучени, исклучете ја онаа што ја идентификувате кога ќе бидете прашани и забележете која порта исчезнува. На Linux можеби ќе ви треба
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, потоа 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 кон udev симлинкот под /dev/v4l/by-id/, кој го следи уредот наместо редоследот на набројување. Ова е најчестиот начин на кој податочното множество завршува внатрешно неконзистентно, а обуката не може да го поправи. Камерата не е детектирана.
Командата за запис и секој флаг
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 | празно | име; временски печат се додава стандардно |
| --dataset.single_task | празно | стринг на задача зачуван со секоја епизода |
| --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 во dataclass, true во табелата со документација | кодирај за време на снимањето; постави го експлицитно |
| --dataset.encoder_queue_maxsize | 30 | баферирани кадри по камера, ~1 с при 30 fps |
| --dataset.encoder_threads | null (кодекот одлучува) | нишки по енкодер; намали ако снимањето сецка |
| --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 станува задолжително. Побарајте 50 на множество податоци од 30 епизоди и ќе добиете 80.
Контрола со тастатура за време на сесија
- Десна стрелка или
n: завршете ја епизодата или ресетирајте ја фазата порано. Ова е копчето што најмногу го користите, бидејќи чистото фаќање ретко бара 25 секунди. - Лева стрелка или
r: отфрлете ја епизодата и повторете ја. Лошото снимање не чини ништо сега, а многу подоцна. - Escape или
q: запрете ја сесијата, завршете го кодирањето, поставете. - Овие работат на X11, Wayland и headless SSH: без глобален позадински систем за клучеви, lerobot-record ги чита истите клучеви од контролниот терминал. Буквите преживуваат бавни SSH врски, каде што секвенците на стрелки се делат.
- Тастатурната телеоперација е различна и бара глобален позадински систем: X11, Windows или macOS со Accessibility.
Колку епизоди, и како изгледа добрата
Водичот за снимање предлага најмалку 50 епизоди за прва задача, околу 10 по локација на објект. Страниците со политики наведуваат минимум по модел, под кој извршувањето не вреди за времето на графичкиот процесор.
| Политика | Мин. епизоди | Формат на податочно множество | Ниво на графички процесор | Цена по извршување |
|---|---|---|---|---|
| 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 |
Подоброто прашање е колку од што. Закони за скалирање на податоци во учењето со имитација за роботска манипулација (Лин и сор., 2024) собраа над 40.000 демонстрации и извршија повеќе од 15.000 реални извршувања. Генерализацијата следеше приближно степенски законски однос со бројот на околини и објекти, а по надминување на прагот по околина или објект, дополнителните демонстрации имаа минимален ефект. На една клупа: поместете го објектот, променете го осветлувањето, заменете ја коцката, наместо да повторувате едно снимање.
- Континуирани траектории на зглобовите што серво може да ги репродуцира, за разлика од тастатура или гејмпад
- Акцијата и состојбата делат координатна конвенција, така што политиката учи цел што може директно да ја командува
- Епизода од 25 секунди плус ресетирање од 10 секунди е приближно 100 епизоди на час
- Операторот чувствува кога следбеникот застанува или се врзува, така што грешките излегуваат на површина пред да се внесат податоците
- Втора рака приближно ја удвојува цената на деловите
- Демонстрациите ги наследуваат навиките на операторот; Мандлекар и сор. открија дека квалитетот на политиката во голема мера зависи од квалитетот на демонстрациите
- Водачот се зема примерок со брзина на јамка, така што паузите стануваат речиси идентични редови кои ја учат политиката да чека
- Ништо не ја наметнува конзистентноста помеѓу сесиите: камера поместена 5 cm е скриена промена на дистрибуцијата
Добра епизода е досадна: повторлива почетна поза, една работа завршена, завршена откако објектот е во корпата, низа на задача од 25 до 50 знаци како што препорачува контролната листа. Земи ја црвената коцка и стави ја во кутијата е низа на задача; task1 е анти-шаблонот што контролната листа експлицитно го именува. Нејасните анотации се на врвот на листата на проблеми, и тие се најважни за , каде што низата е влез за моделот, а не име на датотека.
Дефекти кои тивко уништуваат збир на податоци
Ниту еден не фрла исклучок. Сите преживуваат до обуката, појавувајќи се како крива на загуба која изгледа добро и робот кој не прави ништо. Проверете додека сцената е поставена.
| Дефект | Како изгледа | Од каде доаѓа | Како да се открие |
|---|---|---|---|
| Заменети погледи на камерата | слика од зглобот под горниот клуч | прераспределба на индексот по повторно приклучување | lerobot-find-cameras each session; by-id paths |
| Замрзнати кадри | истата слика за десетици редови | камерата престанува да испорачува; јамката го повторува последниот кадар | scrub it in lerobot-dataset-viz |
| Испуштени кадри | број на редови под fps пати секунди | редот се прелева, испушта наместо да блокира | 'Encoder queue full' in the log; rows vs fps times duration |
| Зглоб на својата граница | еден зглоб рамно на мин или макс | опсегот на лидерот го надминува оној на следбеникот, или лоша средна поза | per-joint min/max in ds.meta.stats; lerobot-find-joint-limits beforehand |
| Слика и акција надвор од чекор | политиката предвидува или заостанува | камери со различен fps од јамката | keep every camera at --dataset.fps |
| Мртво време | долги низи на идентични редови на акција | операторот паузирал додека снимачот работел | удел на последователни идентични редови на акција |
| Неупотреблива низа на задача | task1, demo2, test | брзо пишување | meta/tasks.parquet in v3.0 (it was meta/tasks.jsonl in v2.1); fix with 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 логира навестување препорачувајќи го секогаш кога ќе започне со исклучено знаменце.
Проверете го множеството податоци пред да изнајмите графичка картичка
Тестот за прифаќање од документацијата: споредете го времетраењето на видеото со времетраењето на епизодата што го пријави 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 датотеки | парчиња parquet под meta/episodes/, преку стекот на податочни множества |
| Стриминг од 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 на моделот, го извршува тренерот и запишува контролни точки во складиштето за објекти.
- 1Инсталирајте го клиентот
На страницата за преземање; поставување во документацијата за клиентот.
- 2Снимајте од сесија за телеоперација
Возете ја раката; клиентот запишува епизоди во LeRobot формат. Упатство: снимите го вашиот прв сет на податоци.
- 3Или донесете свои податоци
Сет на податоци може да дојде и од Hugging Face repo id или од вашата машина: документација за сетови на податоци, јавен директориум.
- 4Обучете и извршете ја назад
Изберете ја комбинацијата на матрицата за обука, потоа извршете ја политиката назад на раката. Приближно 1 до 3 УСД на нивото од 24 GB, 4 до 12 на нивото A100 или H100.
Не ја склопува или калибрира вашата рака, ниту пак поправа неисправна епизода, така што чекорот на инспекција сè уште важи. Постои и тврда граница на другиот крај: за брзи задачи, заклучувањето мора да биде до серво моторите. Контролната јамка работи од 20 до 485 ms по чекор на акција, а дополнителните кружни патувања преку јавниот интернет ја претвораат работната политика во колеблива.
Снимајте LeRobot сетови на податоци без сами да го поврзувате цевководот
Десктоп клиентот на AY-Robots снима епизоди, видео преноси од камери и состојби на зглобови во LeRobot формат од сесија за телеоперација, а потоа го предава сетот на податоци на тренерот.
Преземете го десктоп клиентотОд збир на податоци до политика
Педесет чисти епизоди се користат за секое извршување овде. се тренира од нула само на вашата задача, околу 80 милиони параметри со приближно 20 ms по чекор на акција, единствениот од петте кој е удобен со брзо движење. е околу 450 милиони параметри на картичка од 24 GB. е приближно 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 издание, 3 август 2026
- DatasetRecordConfig: вистинските стандардни поставки за снимање
- lerobot_record.py: јамка за снимање и ракување со продолжување
- TheRobotStudio/SO-ARM100: репозиториум за изградба и спецификација на материјали
- Hugging Face: Контролна листа за LeRobot заедницата на множества податоци
- lerobot/svla_so100_pickplace: 50 епизоди, 19,631 рамки
- 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