
DROID, BridgeData V2 i Open X-Embodiment konwertują się na 7-wymiarowe akcje efektora końcowego na ramionach 6- i 7-stopniowych. SO-100 przyjmuje 6 pozycji przegubów. Co się przenosi, co nie, co zrobić zamiast tego.
Wersja skrócona
- •Wersje LeRobot wszystkich trzech współdzielą jedną konwencję: 7-wymiarową akcję efektora końcowego [x, y, z, roll, pitch, yaw, gripper] i 8-wymiarowy stan z miejscem na wypełnienie. SO-100 przyjmuje sześć absolutnych pozycji stawów.
- •Ten 7-wymiarowy wektor jest artefaktem konwertera: własne pole akcji RLDS DROID to 6 prędkości stawów plus pozycja chwytaka, z widokiem kartezjańskim w action_dict.
- •Cztery zegary: DROID 15 fps, BridgeData V2 5 fps, wycinek google_robot 3 fps, nagranie SO-100 przy 30 fps.
- •Nie można ich połączyć z własnymi danymi. validate_all_metadata zgłasza błąd przy pierwszej różnicy w fps, robot_type lub features, a wszystkie trzy się różnią.
- •Przenoszone są wstępnie wytrenowane wagi, a nie epizody. Dane open-source stanowią 9.1 procent mieszanki wstępnego treningu pi0.
- •Ich najtańsze rzeczywiste zastosowanie to stanowisko testowe: sprawdzona próbka DROID o rozmiarze 2 GB i 100 epizodach, która sprawdza Twój potok przed nagrywaniem przez weekend.
Istnieje publiczny zbiór danych miliona trajektorii na zasobniku Google Cloud i SO-100 na biurku, który kosztował od 110 do 150 EUR w częściach. Dlaczego pierwszy nie może nauczyć drugiego? Częściowo może, ale prawie żaden transfer nie zachodzi tam, gdzie ludzie się spodziewają, a część, która wydaje się najłatwiejsza, w ogóle nie działa.
Poniżej: co znajduje się w DROID, BridgeData V2 i Open X-Embodiment, gdzie każdy z nich zderza się z tanim ramieniem 5-DoF, i co zrobić zamiast tego. Każda liczba poniżej pochodzi z artykułu, karty zbioru danych lub pliku źródłowego, do którego należy.
Co faktycznie zawierają te trzy zbiory danych
| DROID | BridgeData V2 | Open X-Embodiment | |
|---|---|---|---|
| Robot | Franka Panda, 7 DoF, Robotiq 2F-85 | WidowX 250, 6 DoF, zestaw za ~4,000 USD | 22 implementacje, 60 zbiorów danych, 34 laboratoria |
| Skala | 76 tys. trajektorii, 350 godzin | 60 096 trajektorii | Ponad 1 mln trajektorii, 527 umiejętności |
| Różnorodność | 564 sceny, 84 zadania, 50 zbieraczy | 24 środowiska, 13 umiejętności | 160 266 zadań, 21 instytucji |
| Kompozycja | wszystkie teleoperowane | 50 365 teleoperowanych, 9 731 skryptowych | na laboratorium źródłowe |
| Częstotliwość sterowania | 15 Hz | 5 Hz | różnie, od 3 kl./s wzwyż |
| Kamery | 2 x ZED 2 zewnętrzne, 1 x ZED Mini na nadgarstku | do 4, większość epizodów tylko stała | cokolwiek użyło laboratorium |
| Pobieranie surowych danych | 1.7 TB RLDS, 8.7 TB surowego stereo | Archiwa JPEG | zasobniki TFDS na zbiór danych |
Niewiele osób nadal pobiera 1.7 TB danych RLDS TFRecords. Organizacja społecznościowa IPEC-COMMUNITY ponownie opublikowała większość Open X-Embodiment w formie zbioru danych LeRobot z wideo AV1, gdzie DROID zajmuje 392 GB. To jest wersja, z którą będziesz pracować, a jej meta/info.json należy przeczytać w pierwszej kolejności.
DROID
Najbardziej ustandaryzowany z trzech. Jeden zestaw wszędzie: Franka Panda z chwytakiem Robotiq 2F-85, dwie regulowane kamery stereo ZED 2 i ZED Mini na nadgarstku, teleoperowany za pomocą kontrolerów Meta Quest 2, nagrywany przez Polymetis z częstotliwością 15 Hz zarówno w przestrzeni stawowej, jak i efektora końcowego przestrzeni. Etykiety językowe pojawiły się później za pośrednictwem tasq.ai, do trzech na epizod.
- 76 tys. trajektorii, 350 godzin, 564 sceny, 84 zadania, 50 kolektorów na trzech kontynentach.
- Głównym wynikiem jest współtrening, a nie samodzielne trenowanie: partie zmieszane 50/50 z demonstracjami w domenie pokonały następną najlepszą metodę o 22 procent bezwzględnego sukcesu w dystrybucji i 17 procent poza nią.
- IPEC-COMMUNITY/droid_lerobot: 92 233 epizody, 27 044 326 klatek, franka, 15 fps, codebase_version v2.0, trzy strumienie AV1 w rozdzielczości 180x320, 392 GB.
- Próbka debugowania o rozmiarze 2 GB, zawierająca 100 epizodów, znajduje się pod adresem gs://gresearch/robotics/droid_100. Zacznij od niej.
BridgeData V2
Najbliżej konfiguracji hobbystycznej: ramię WidowX 250 6-DoF, 60 096 trajektorii w 24 środowiskach i 13 umiejętnościach przy 5 Hz. Zwróć uwagę na skład: 50 365 eksperckich demonstracji teleoperowanych plus 9 731 z losowo skryptowanej polityki podnoszenia i umieszczania, więc około 16 procent nie stanowi demonstracji ludzkich, co ma znaczenie dla uczenia przez naśladowanie jakości. Zwykłe pobranie, IPEC-COMMUNITY/bridge_orig_lerobot, zgłasza 53 192 epizody i 1 893 026 klatek przy 5 fps, robot_type widowx: mniej niż 60 096 z artykułu, więc odczytaj liczbę z meta/info.json zamiast cytować którąkolwiek z nich.
Open X-Embodiment
Nie jest to zbiór danych w tym samym sensie: 60 istniejących zbiorów danych robotów z 34 laboratoriów połączonych w jedną kolekcję RLDS, obejmującą 22 implementacje i ponad milion trajektorii. BridgeData V2 znajduje się w niej jako bridge_orig; wycinek google_robot, fractal20220817_data, konwertuje się na 87 212 epizodów przy 3 fps.
Połączenie to wiąże się z zastrzeżeniem, które artykuł jasno określa. W eksperymentach RT-X autorzy konwertują każde źródło na akcję efektora końcowego 7-DoF, ale nie wyrównują układów współrzędnych między zbiorami danych i pozwalają, aby wartości akcji były pozycjami lub prędkościami absolutnymi lub względnymi, zgodnie z oryginalnym schematem sterowania każdego robota. Ich wniosek: ten sam wektor akcji może wywoływać bardzo różne ruchy dla różnych robotów.

Niezgodność, w czterech częściach
Niezgodność ucieleśnienia jest zazwyczaj traktowana jako jeden niejasny problem. Jest ich cztery, psują się inaczej, a dwóch nie da się naprawić skryptowaniem.
1. Stopnie swobody
SO-100 ma pięć przegubów ramienia plus chwytak. Licząc jako silniki, jest to ramię 6-DoF, i tak nazywa je artykuł SmolVLA; licząc jako mechanizm pozycjonujący, jest to 5-DoF, i tak nazywa je LeRobot w swoim docstringu kinematyki odwrotnej, który opisuje IK z miękką orientacją na 5-DOF SO-101, gdzie nadgarstek śledzi orientację tylko częściowo. Franka ma siedem przegubów pozycjonujących. Ta różnica decyduje o tym, jakie pozy istnieją: ramię 5-DoF nie może zazwyczaj osiągnąć jednocześnie dowolnej pozycji i orientacji, więc solver zwraca najbliższą możliwą, ruch inny niż zademonstrowany. Tło: stopnie swobody.
# src/lerobot/robots/so_follower/so_follower.py
motors = {
"shoulder_pan": Motor(1, "sts3215", norm_mode_body),
"shoulder_lift": Motor(2, "sts3215", norm_mode_body),
"elbow_flex": Motor(3, "sts3215", norm_mode_body),
"wrist_flex": Motor(4, "sts3215", norm_mode_body),
"wrist_roll": Motor(5, "sts3215", norm_mode_body),
"gripper": Motor(6, "sts3215", MotorNormMode.RANGE_0_100),
}
# action keys are "<motor>.pos"; send_action sync_writes them to
# "Goal_Position" -> a 6-D ABSOLUTE JOINT POSITION command
# openpi/src/openpi/policies/droid_policy.py
def make_droid_example() -> dict:
return {
"observation/exterior_image_1_left": np.random.randint(256, size=(224, 224, 3), dtype=np.uint8),
"observation/wrist_image_left": np.random.randint(256, size=(224, 224, 3), dtype=np.uint8),
"observation/joint_position": np.random.rand(7), # seven Franka joints
"observation/gripper_position": np.random.rand(1),
"prompt": "do something",
}
# state = concat(joint_position, gripper_pos) -> 8-DZatem gotowy punkt kontrolny DROID nie jest skrótem. Physical Intelligence dostarcza pi05_droid pod adresem gs://openpi-assets/checkpoints/pi05_droid, a ten sam plik README, który chwali jego szeroki zakres, ostrzega, że te eksperckie punkty kontrolne mogą nie uogólniać się do Twojej konfiguracji. Jego stan to osiem numerów stawów Franka, a klucze obrazów to exterior_image_1_left i wrist_image_left. Żadna flaga nie zamienia tego w sześciomotorowe polecenie SO-100.
2. Co faktycznie mówi wektor akcji
Głębiej niż wymiarowość. W konwersjach LeRobot wszystkie trzy mówią, gdzie powinien iść chwytak, w przestrzeni kartezjańskiej. SO-100 mówi, gdzie powinno iść sześć serwomechanizmów. Konwersja wymaga modelu kinematycznego i solwera, a nie zmiany kształtu.
| Właściwość | OXE, DROID i Bridge w formie LeRobot | SO-100 w LeRobot |
|---|---|---|
| Wektor akcji | 7-D: x, y, z, roll, pitch, yaw, gripper | 6-D: jedna pozycja docelowa na silnik |
| Wektor stanu | 8-D, z miejscem na wypełnienie (google_robot używa kwaternionu) | 6-D, jeden na silnik |
| Układ odniesienia | Kartezjański, niespójny między zbiorami danych | przestrzeń stawów, kalibracja dla każdego ramienia |
| Absolutny czy względny | dowolny, decyzja laboratorium źródłowego | absolutne pozycje docelowe |
| Jednostki | znormalizowane na zbiór danych, następnie dyskretyzowane | stopnie domyślnie (use_degrees=True), w przeciwnym razie -100 do 100 |
| Cicha awaria | delta odczytana jako wartość absolutna | niekalibrowane ramię |
Plik README openx2lerobot dokumentuje ujednolicony 8-wymiarowy stan i 7-wymiarową akcję dla każdego konwertowanego zbioru danych, skąd pochodzi slot pad. Własny schemat RLDS DROIDa różni się: jego najwyższego poziomu action to 7-wektor 6 prędkości stawów plus 1 pozycja chwytaka, z cartesian_position, cartesian_velocity, joint_position i joint_velocity pod action_dict. openpi odczytuje widok w przestrzeni stawów, kompilacja LeRobot dostarcza widok kartezjański. Żaden z nich nie jest sześcioma absolutnymi kątami serwomechanizmów.
LeRobot dostarcza brakujący element: moduł SO follower posiada procesor kinematyki z krokami InverseKinematicsEEToJoints i ForwardKinematicsJointsToEE. Jego klucze to ee.x, ee.y, ee.z plus wektor rotacji ee.wx, ee.wy, ee.wz i ee.gripper_pos, więc nawet kodowanie orientacji różni się od roll-pitch-yaw w plikach. Krok IK przyjmuje orientation_weight, domyślnie 0.01, którego docstring mówi, aby ustawić 0.0 dla IK tylko pozycyjnego na ramionach niedostatecznie sterowanych. Możesz zbudować most, ale połowa orientacji każdej pożyczonej akcji pozostaje przybliżona.
3. Częstotliwość sterowania
DROID działa z częstotliwością 15 Hz, BridgeData V2 5 Hz, wycinek google_robot 3 fps; autorzy pi0 opisują otwartą część swojej mieszanki jako sterowanie niskiej częstotliwości między 2 a 10 Hz. DatasetRecordConfig LeRobot domyślnie ustawia fps 30, episode_time_s 60, reset_time_s 60, num_episodes 50. A wytrenowana na danych 5 Hz nauczyła się, że jedna akcja obejmuje 200 ms. Odtwórz to z częstotliwością 30 Hz, a ramię będzie się czołgać; naiwnie resampluj, a rozmyjesz klatkę, w której chwytak się zamyka. Źle współdziała również z : 100-krokowy fragment to 20 sekund przy 5 Hz, 3.3 przy 30 Hz.
4. Kamery
BridgeData V2 losowo ustawiało dwie pozycje kamery co 50 trajektorii, a strona projektu zauważa, że większość danych i tak zawiera tylko stały widok. DROID używał regulowanych mocowań ZED 2 oraz nadgarstkowego ZED Mini. Masz dwie kamery internetowe USB ustawione na oko. Pozycja kamery nie jest zmienną uciążliwą dla ; jest to w dużej mierze to, na czym opierał się koder wizualny, a nic w formacie pliku nie wskazuje na to, że pozycje się różnią.
Elementy pasują do siebie na tyle dobrze, by uruchomić system. Zbiór danych się ładuje, trening się rozpoczyna, strata spada, pojawiają się punkty kontrolne, nic nie zgłasza błędów. Następnie polityka nie wykonuje niczego rozpoznawalnego na ramieniu, a Ty spędzasz dzień na szukaniu błędu w swoim skrypcie treningowym. Nie ma błędu: model nauczył się kartezjańskiego rozkładu akcji dla robota, który nie istnieje w Twoim pokoju. Zacznij od strata spada, polityka nic nie robi, a nie od swoich hiperparametrów.
Co się dzieje, gdy mimo wszystko próbujesz połączyć dane
Oczywisty plan to konkatenacja: kilka tysięcy epizodów DROID plus twoje 50. LeRobot odmawia, a odmowa wymienia trzy rzeczy, które się różnią.
- 1Pobierz 100-epizodową próbkę, nie pełne 1.7 TB
2 GB wystarczy, aby zobaczyć strukturę.
bashpip install gsutil tensorflow tensorflow-datasets gsutil -m cp -r gs://gresearch/robotics/droid_100 ~/tensorflow_datasets/ - 2Konwertuj RLDS do formatu LeRobot
openx2lerobot opakowuje standardowe transformacje OXE i dodaje adnotacje dotyczące typu robota oraz częstotliwości sterowania. Plik README umieszcza to w convert.sh.
bashgit clone https://github.com/Tavish9/any4lerobot.git cd any4lerobot/openx2lerobot python openx_rlds.py \ --raw-dir ~/tensorflow_datasets/droid_100/1.0.0 \ --local-dir ~/lerobot_droid100 \ --repo-id you/droid100_lerobot \ --use-videos - 3Przeczytaj meta/info.json przed czymkolwiek innym
Ten plik decyduje, czy reszta twojego dnia będzie działać.
bashpython -c "import json;d=json.load(open('meta/info.json'));\ print(d['codebase_version'], d['robot_type'], d['fps']);\ print(d['features']['action']['shape'], d['features']['observation.state']['shape'])" - 4Wypróbuj scalanie i przeczytaj błąd
merge ładuje każdy zbiór danych, a następnie validate_all_metadata sprawdza fps, robot_type i features w porównaniu z pierwszym na liście, zgłaszając błąd przy pierwszym niedopasowaniu.
bashlerobot-edit-dataset \ --new_repo_id you/mixed \ --operation.type merge \ --operation.repo_ids "['you/droid100_lerobot', 'you/my_so100_task']" # ValueError: Same fps is expected, but got fps=30 instead of 15.
Wartości referencyjne pochodzą z tego zbioru danych, który wymieniłeś jako pierwszy, dlatego komunikat narzeka na twoje 30 fps, a nie na 15 fps DROID. Napraw fps, a trafisz na sprawdzenie robot_type; napraw to, a trafisz na sprawdzenie features, 7 przeciwko 6 dla akcji. Żadne uporządkowanie nie przechodzi, a ta sama ochrona działa w czasie nagrywania poprzez sanity_check_dataset_robot_compatibility.
W obecnej głównej wersji LeRobot so100_follower i so101_follower są zarejestrowane na jednej współdzielonej SOFollowerRobotConfig, więc ciąg znaków z rzeczywistego nagrania niekoniecznie jest tym, czego oczekujesz. Odczytaj go z własnego pliku meta/info.json i traktuj sprawdzenie, które musiałeś wyłączyć, jako sprawdzenie, które coś ci mówiło.
Więc co właściwie się przenosi?
Wagi, nie epizody. Każda nowoczesna polityka ogólna zaabsorbowała część tego w fazie wstępnego trenowania, a kiedy z wydanego dziedziczysz to już uzgodnione przez osoby posiadające odpowiednią moc obliczeniową, aby zrobić to prawidłowo. Artykuł pi0 otwarcie mówi o proporcji: 9.1 procenta jego mieszanki wstępnego trenowania, liczonej w krokach czasowych, to dane open-source, w tym OXE, Bridge v2 i DROID. Ta liczba dotyczy pi0; mieszanka każdego dostawcy się różni.
- Wizualne i językowe priory: koder widział tysiące kuchni i kubków i wie, do czego odnosi się „czerwony klocek”.
- Prior dotyczący struktury manipulacji: podejście, zamknięcie, podniesienie, transport, zwolnienie, niezależny od ucieleśnienia, nawet jeśli liczby nie są.
- Sprawdzony zbiór danych do testowania. Jeśli Twoje zadanie nie jest w stanie przetrenować 100 epizodów DROID, problem leży w Twojej konfiguracji.
- Punkty odniesienia: w domenach z małymi zbiorami danych RT-1-X osiągnął o 50 procent wyższy średni wskaźnik sukcesu niż oryginalna metoda lub RT-1, a RT-2-X pokonał RT-2 około 3x w zakresie umiejętności emergentnych.
- Brak użytecznego nadzoru nad akcjami. 7-wymiarowy cel kartezjański to nie 6-wymiarowe polecenie stawu.
- Brak transferu pozycji kamery, a nic w danych nie wskazuje na to, że pozycje się różnią.
- Brak transferu synchronizacji: źródła 3, 5 i 15 kl./s w stosunku do rejestratora 30 kl./s.
- Brak transferu chwytaka. Robotiq 2F-85 i drukowana szczęka na STS3215 różnią się siłą, skokiem i dynamiką.
- Sama skala nie wystarczyła nawet dla jej autorów: w domenach z dużymi zbiorami danych RT-1-X nie pokonał RT-1 trenowanego wyłącznie na tym zbiorze danych.
- Brak redukcji liczby własnych epizodów, których potrzebujesz.
| Warstwa modelu | Przenosi się? | Dlaczego |
|---|---|---|
| Koder wizyjny | Tak, silnie | Obiekty i sceny są niezależne od ucieleśnienia |
| Ugruntowanie językowe | Tak | Instrukcje to tekst, nie geometria |
| Fuzja między-modalna | W większości | Zwraca uwagę na obiekt nazwany w podpowiedzi |
| Koder propriocepcji | Nie | Wymiar wejściowy i semantyka stawów różnią się |
| Głowica akcji | Nie | Trenowana w 7-wymiarowej przestrzeni kartezjańskiej, w której się nie znajdujesz |
| Statystyki normalizacji | Nie, i niebezpieczne | Obce statystyki przesuwają każde polecenie |
Dlatego SmolVLA zachowuje się inaczej na ramieniu niskobudżetowym. Jego artykuł wybiera 481 zestawów danych społecznościowych z Hugging Face, filtrowanych według typu ucieleśnienia, liczby epizodów, jakości danych i pokrycia klatek: 22,9 tys. epizodów, 10,6 mln klatek, ocenionych na prawdziwych ramionach SO-100 i SO-101. Małe i dopasowane przewyższa duże i niedopasowane. Porównaj na ACT kontra SmolVLA.
Trzy ścieżki warte podjęcia
Ścieżka A: dostrajanie z punktu kontrolnego, który już przyswoił dane
Większość ludzi powinna wybrać tę ścieżkę. Nigdy nie dotykasz DROID ani Open X-Embodiment: wybierz politykę, której wstępne szkolenie już przyswoiło dane dotyczące różnych ucieleśnień, nagraj własne epizody, dostrój.
| Polityka | Parametry | Min. epizody | Format zbioru danych | Poziom GPU | Inferencja | Bazowy punkt kontrolny |
|---|---|---|---|---|---|---|
| GR00T N1.7 | ~3 B, ~40 M wytrenowane w dostrajaniu | 50 | LeRobot v2.0 or v2.1 | A100 or H100 80 GB | 152 ms na krok | nvidia/GR00T-N1.7-3B |
| GR00T N1.5 | ~3 B | 50 | LeRobot v2.0 or v2.1 | A100 or H100 80 GB | 165 ms | nvidia/GR00T-N1.5-3B |
| Pi0.5 | ~3 B, rdzeń PaliGemma | 50 | LeRobot v3.0 | A100 or H100 80 GB | 485 ms | lerobot/pi05_base |
| SmolVLA | ~450 M | 30 | LeRobot v3.0 | RTX 4090 or any 24 GB | 245 ms | lerobot/smolvla_base |
| ACT | ~80 M | 50 | LeRobot v3.0 | RTX 4090 or any 24 GB | 20 ms | brak, od podstaw |
ACT to uczciwy przypadek brzegowy: brak modelu bazowego, więc żadne dane publiczne nigdy do niego nie docierają. Nie jest to automatycznie wada, ponieważ przy 20 ms na krok akcji jest to jedyny z pięciu, który może zamknąć szybką pętlę, jak strona ACT, przedstawia. Wybierz według zadania, używając wszystkie pięć porównanych, GR00T N1.7 kontra Pi0.5, oraz 332 wyniki benchmarków dla 85 modeli w arena.
Ścieżka B: użyj DROID jako osprzętu testowego
100-epizodyczna próbka to najlepsze 2 GB, jakie pobierzesz w tym miesiącu, i nie służy do trenowania. Jest to zbiór danych, o którym wiesz, że jest poprawny. Uruchom na nim swój konwerter, ładowarkę i krótkie zadanie GPU; wszystko, co zawiedzie, to błąd infrastruktury znaleziony, gdy było to tanie. NVIDIA robi to samo na dużą skalę: karta GR00T N1.7 wymienia cztery warianty po trenowaniu, dla Bridge i Fractal w SimplerEnv, DROID i LIBERO.
Ścieżka C: nagraj własne, celowo
Trzydzieści do pięćdziesięciu brzmi mało w porównaniu do 76 000, dopóki nie przypomnisz sobie, że Twoje są jedynymi z Twoim ramieniem, Twoimi kamerami i Twoim stołem. Przy domyślnych ustawieniach LeRobot, 50 epizodów to 100 minut czasu zegarowego. Zobacz , i .

Dwa sposoby na przejście od danych publicznych do działającej polityki
All of this runs on your own machine plus a rented GPU. Knowing the manual path matters because when something breaks you will know which layer broke.
- 1Install LeRobot with the extras the scripts need
The record and train entry points each declare their own extra.
bashpip install 'lerobot[core_scripts]' # lerobot-record pip install 'lerobot[training]' # lerobot-train pip install gsutil tensorflow tensorflow-datasets - 2Get a small, known-good slice
100 DROID episodes, 2 GB.
bashgsutil -m cp -r gs://gresearch/robotics/droid_100 ~/tensorflow_datasets/ - 3Convert to LeRobot form
Writes the unified 8-D state and 7-D action, annotating robot type and control frequency.
bashpython openx_rlds.py \ --raw-dir ~/tensorflow_datasets/droid_100/1.0.0 \ --local-dir ~/lerobot_droid100 \ --repo-id you/droid100_lerobot \ --use-videos - 4Check the version against your trainer
The converter README documents v3.0 output; the published IPEC-COMMUNITY datasets report v2.0. GR00T wants v2.0 or v2.1 and crashes on v3.0; Pi0.5, SmolVLA and ACT want v3.0. Mind the gap: the only conversion script on LeRobot main goes 2.1 to 3.0.
bashpython src/lerobot/scripts/convert_dataset_v21_to_v30.py \ --repo-id=you/droid100_lerobot - 5Record your own episodes
Defaults: 30 fps, 60 s per episode, 60 s reset, 50 episodes. The teleoperator type is so100_leader.
bashlerobot-record \ --robot.type=so100_follower \ --robot.port=/dev/ttyACM0 \ --robot.cameras="{front: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30}}" \ --teleop.type=so100_leader \ --teleop.port=/dev/ttyACM1 \ --dataset.repo_id=you/so100_pick_block \ --dataset.num_episodes=50 \ --dataset.single_task="Pick up the red block and put it in the bowl" - 6Fine-tune on your data only
Weights from public data, actions from your own. Do not mix the datasets.
bashlerobot-train \ --policy.path=lerobot/smolvla_base \ --dataset.repo_id=you/so100_pick_block \ --policy.device=cuda \ --batch_size=4 \ --steps=20000
Not in training; the GPU job is hours. The conversion, the version mismatch and the moment you find your dataset is v2.0 and your trainer wants v3.0 are days. Read dataset rejected as v3 first.
The platform removes the GPU and pipeline plumbing. It does not remove the embodiment mismatch: point the trainer at a converted DROID dataset and you get a policy trained on Franka actions, exactly as you would locally.
- 1Pick a policy, not a dataset
The five trainable policies, with parameter counts, GPU tiers and latencies, are at /policies.
- 2Record with the desktop client
It writes LeRobot-format datasets, episodes, camera streams and joint states, straight out of a teleop session. No conversion step to get wrong.
- 3Or bring a dataset you already have
The training form accepts one from /directory, a Hugging Face repo id, or your own machine. A repo id means a converted OXE dataset will load, and the mismatch loads with it.
- 4Train on a rented GPU
The backend rents a card on a spot market by required VRAM. SmolVLA or ACT on 24 GB: 2 to 5 hours, about 1 to 3 USD. GR00T or Pi0.5 on A100 or H100: 3 to 6 hours, about 4 to 12 USD. See /pricing.
- 5Serve it back to the arm
/api/inference/pod auto-provisions a GPU pod serving the policy; the local client talks to that endpoint. Pods carry an idle watchdog and destroy themselves, so nothing keeps billing silently.
Inference has to sit next to the servos for fast tasks. The control loop is 20 to 485 ms per action step depending on the model, and public-internet round trips turn a working policy into a hesitant one. Remote inference is fine for slow pick-and-place, not fast reactive motion.
The platform helps with the boring parts: the right format for the right arm at the right frame rate, and no babysitting a spot instance. It helps with nothing else in this article.

Ile kosztuje każda ścieżka
| Ścieżka | Pamięć | Czas ludzki | Koszt GPU | Szansa, że poruszy twoim ramieniem |
|---|---|---|---|---|
| Sam przekonwertowany DROID | 392 GB | dni konwersji | 4 to 12 USD | bardzo niska, niewłaściwa przestrzeń akcji |
| DROID połączony z twoimi epizodami | both | zablokowane przez validate_all_metadata | n/a | żadna, nie uruchamia się |
| SmolVLA, 30 do 50 własnych epizodów | a few GB | 100 min nagrywania | 1 to 3 USD | wysoka |
| GR00T N1.7, 50 własnych epizodów | a few GB | 100 min nagrywania | 4 to 12 USD | wysoka |
| ACT od zera, 50 własnych epizodów | a few GB | 100 min nagrywania | 1 to 3 USD | wysoka, 20 ms wnioskowania |
| Próbka DROID jako element testowy | 2 GB | popołudnie | one short run | wysoka, jako walidacja |
Asymetria jest kluczowa: ścieżka, która pożycza najwięcej danych, jest najdroższa i najmniej prawdopodobna, aby poruszyć twoim ramieniem. Mniej niż dwie godziny twojej własnej teleoperacji jest lepsze niż terabajt Franki kogoś innego. Nie masz jeszcze ramienia? /live transmituje fizyczny SO-100 bez rejestracji. Następnie trenuj swoją pierwszą politykę, a także SmolVLA na SO-100 dla konkretnego przewodnika.
Pobierz próbkę DROID o rozmiarze 2 GB i użyj jej do sprawdzenia swojego potoku. Zignoruj pozostałe 1.7 TB. Nagraj 50 epizodów jednego zadania ze stałymi kamerami. Dostrój SmolVLA najpierw, ponieważ przy minimum 30 epizodach na karcie 24 GB jest to najtańsze do iteracji, a następnie wypróbuj GR00T N1.7 na tych samych danych. Porównaj na swoim zadaniu, a nie na benchmarku.
Nagrywaj zbiory danych, które już pasują do Twojego ramienia
Klient desktopowy zapisuje zbiory danych w formacie LeRobot bezpośrednio z sesji teleoperacji: odpowiednie ramię, odpowiednia liczba klatek na sekundę, odpowiednia przestrzeń akcji. Bez konwersji RLDS, bez ponownego mapowania.
Pobierz klienta desktopowegoCzy mogę trenować politykę na DROID i uruchamiać ją na moim SO-100?▾
Nie bezpośrednio. W kompilacji LeRobot akcje DROID to 7-wymiarowe polecenia efektora końcowego dla Franka Panda przy 15 fps; w surowym RLDS są to 6 prędkości stawów plus pozycja chwytaka. SO-100 przyjmuje 6 absolutnych pozycji stawów. Potrzebna byłaby warstwa kinematyki odwrotnej, a nawet wtedy nadgarstek 5-DoF nie może odtworzyć dowolnych pozycji 6-DoF.
Czy mogę mieszać epizody DROID lub Bridge z moimi własnymi epizodami SO-100?▾
Nie. validate_all_metadata wymaga identycznych wartości fps, robot_type i schematu cech oraz zgłasza ValueError przy pierwszym niedopasowaniu. Wszystkie trzy się różnią: 15 lub 5 fps kontra 30, franka lub widowx kontra Twoje ramię, kształty akcji 7 kontra 6. Przepisanie metadanych w celu przejścia kontroli nie naprawia semantyki.
Czy Open X-Embodiment jest zatem bezużyteczny dla taniego ramienia?▾
Nie, ale jego wartość dociera do Ciebie poprzez wstępnie wytrenowane wagi, a nie epizody. Zbiory danych open-source, w tym OXE, Bridge v2 i DROID, stanowią 9.1 procent mieszanki wstępnego treningu pi0, a NVIDIA dostarcza warianty GR00T N1.7 potrenowane na Bridge, Fractal, DROID i LIBERO. Czego nie możesz zrobić, to dołączyć tych epizodów do własnego nagrania.
Która polityka najbardziej korzysta z publicznych danych między-embodimentowych?▾
Pi0.5 i modele GR00T posiadają najwięcej wstępnego treningu między-embodimentowego, ale SmolVLA często działa najlepiej na tanim ramieniu: jego zestaw wstępnego treningu to 481 zbiorów danych społeczności, 22.9K epizodów i 10.6M klatek, ocenionych na prawdziwych ramionach SO-100 i SO-101. ACT jest przeciwieństwem: brak modelu bazowego, 20 ms na krok akcji.
Ile moich własnych epizodów faktycznie potrzebuję?▾
30 dla SmolVLA, 50 dla GR00T N1.7, GR00T N1.5, Pi0.5 i ACT. Przy domyślnych ustawieniach LeRobot wynoszących 60 s na epizod i 60 s resetu, 50 epizodów to 100 minut czasu rzeczywistego. Pożyczone dane między-embodimentowe nie obniżają tych liczb.
Sources
- DROID: Duży zbiór danych do manipulacji robotem w rzeczywistych warunkach
- Dokumentacja DROID: rozmiary pobierania i schemat epizodów RLDS
- BridgeData V2: Zbiór danych do uczenia robotów na dużą skalę
- Strona projektu BridgeData V2: skład i zasięg kamer
- Open X-Embodiment: Zbiory danych do uczenia robotów i modele RT-X
- Strona projektu Open X-Embodiment
- google-deepmind/open_x_embodiment: lista zbiorów danych i punkty kontrolne RT-1-X
- any4lerobot: konwerter openx2lerobot i jego ujednolicony 8-wymiarowy stan, 7-wymiarowa akcja
- IPEC-COMMUNITY/droid_lerobot: meta/info.json i rozmiar repozytorium
- IPEC-COMMUNITY/bridge_orig_lerobot: meta/info.json
- IPEC-COMMUNITY/fractal20220817_data_lerobot: wycinek google_robot przy 3 kl./s
- huggingface/lerobot: obserwator SO, procesor kinematyki, konfiguracje agregacji i zapisu
- openpi: wejścia polityki DROID i punkt kontrolny pi05_droid
- pi0: Model przepływu wizja-język-akcja do ogólnego sterowania robotami
- SmolVLA: Model wizja-język-akcja dla przystępnej cenowo i wydajnej robotyki
Sources
- DROID: A Large-Scale In-The-Wild Robot Manipulation Dataset
- DROID docs: download sizes and the RLDS episode schema
- BridgeData V2: A Dataset for Robot Learning at Scale
- BridgeData V2 project page: composition and camera coverage
- Open X-Embodiment: Robotic Learning Datasets and RT-X Models
- Open X-Embodiment project page
- google-deepmind/open_x_embodiment: dataset list and RT-1-X checkpoints
- any4lerobot: the openx2lerobot converter and its unified 8-D state, 7-D action
- IPEC-COMMUNITY/droid_lerobot: meta/info.json and repo size
- IPEC-COMMUNITY/bridge_orig_lerobot: meta/info.json
- IPEC-COMMUNITY/fractal20220817_data_lerobot: the google_robot slice at 3 fps
- huggingface/lerobot: SO follower, kinematics processor, aggregate and record configs
- openpi: DROID policy inputs and the pi05_droid checkpoint
- pi0: A Vision-Language-Action Flow Model for General Robot Control
- SmolVLA: A Vision-Language-Action Model for Affordable and Efficient Robotics
Ready for high-quality robotics data?
AY-Robots connects your robots to skilled operators worldwide.
Get Started