AY-Robots offentlige datasætmappe, der viser LeRobot datasæt optaget på SO-100 klasse arme
DatasætOpen X-EmbodimentDROIDSO-100LeRobot

Brug af DROID, BridgeData V2 og Open X på en SO-100

AY-Robots ResearchAugust 23, 202618 min læsning

DROID, BridgeData V2 og Open X-Embodiment konverterer til 7-D end-effector handlinger på 6 og 7-DoF arme. En SO-100 tager 6 ledpositioner. Hvad der overføres, hvad der ikke gør, hvad man skal gøre i stedet.

Den korte version

  • LeRobot-builds af alle tre deler én konvention: en 7-D end-effector-handling [x, y, z, roll, pitch, yaw, gripper] og en 8-D tilstand med en pad-slot. En SO-100 tager seks absolutte ledpositioner.
  • Den 7-D vektor er konverterens artefakt: DROID's eget RLDS-handlingsfelt er 6 ledhastigheder plus en gribeposition, med det kartesiske syn i action_dict.
  • Fire ure: DROID 15 fps, BridgeData V2 5 fps, google_robot-udsnittet 3 fps, en SO-100-optagelse ved 30 fps.
  • Du kan ikke flette dem med dine egne data. validate_all_metadata udløses ved den første af fps, robot_type eller features, der afviger, og alle tre afviger.
  • Det, der overføres, er forudtrænede vægte, ikke episoder. Open-source data udgør 9.1 procent af pi0's forudtræningsblanding.
  • Deres billigste reelle anvendelse er en testopstilling: en kendt-god 2 GB, 100-episode DROID-prøve, der beviser din pipeline, før du optager en weekend.

Der er et offentligt datasæt med en million-trajektorier på en Google Cloud bucket og en SO-100 på skrivebordet, der kostede 110 til 150 EUR i dele. Hvorfor kan den første ikke lære den anden? Det kan den delvist, men næsten ingen af overførslen sker, hvor folk forventer det, og den del, der ser nemmest ud, virker slet ikke.

Hvad følger: hvad der er inde i DROID, BridgeData V2 og Open X-Embodiment, hvor hver især kolliderer med en billig 5-DoF arm, og hvad man skal gøre i stedet. Hvert tal nedenfor kom fra den artikel, datasætkort eller kildefil, det tilhører.

Hvad de tre datasæt faktisk indeholder

DROIDBridgeData V2Open X-Embodiment
RobotFranka Panda, 7 DoF, Robotiq 2F-85WidowX 250, 6 DoF, ~4.000 USD rig22 implementeringer, 60 datasæt, 34 laboratorier
Skala76k trajektorier, 350 timer60.096 trajektorier1M+ trajektorier, 527 færdigheder
Diversitet564 scener, 84 opgaver, 50 indsamlere24 miljøer, 13 færdigheder160.266 opgaver, 21 institutioner
Sammensætningalt teleopereret50.365 teleopereret, 9.731 scriptetpr. kildelaboratorium
Kontrolfrekvens15 Hz5 Hzvarierer, 3 fps og opefter
Kameraer2 x ZED 2 eksteriør, 1 x ZED Mini håndledop til 4, de fleste episoder kun den fastehvad laboratoriet brugte
Rå download1.7 TB RLDS, 8.7 TB rå stereoJPEG-arkiverTFDS-buckets pr. datasæt
Indgangspunktet er LeRobot-konverteringen, ikke den originale bucket

Få mennesker downloader stadig 1.7 TB RLDS TFRecords. Fællesskabsorganisationen IPEC-COMMUNITY har genudgivet det meste af Open X-Embodiment i LeRobot datasæt-form med AV1-video, hvor DROID fylder 392 GB. Det er den version, du vil arbejde med, og dens meta/info.json er det, du skal læse først.

DROID

Den mest standardiserede af de tre. Én opsætning overalt: en Franka Panda med en Robotiq 2F-85 griber, to justerbare ZED 2 stereokameraer og et ZED Mini håndledskamera, teleopereret med Meta Quest 2 controllere, optaget via Polymetis ved 15 Hz i både led- og end-effektor rum. Sprog-labels kom senere via tasq.ai, op til tre pr. episode.

  • 76k trajektorier, 350 timer, 564 scener, 84 opgaver, 50 indsamlere på tre kontinenter.
  • Hovedresultatet er co-træning, ikke selvstændig træning: batches blandet 50/50 med in-domain demonstrationer slår den næstbedste metode med 22 procent absolut succes i distribution, 17 procent udenfor.
  • IPEC-COMMUNITY/droid_lerobot: 92,233 episodes, 27,044,326 frames, franka, 15 fps, codebase_version v2.0, three AV1 streams at 180x320, 392 GB.
  • En 2 GB, 100-episode debugging-prøve findes på gs://gresearch/robotics/droid_100. Start der.

BridgeData V2

Det tætteste på et hobby-setup: en WidowX 250 6-DoF arm, 60.096 trajektorier fordelt på 24 miljøer og 13 færdigheder ved 5 Hz. Bemærk sammensætningen: 50.365 ekspert-teleopererede demonstrationer plus 9.731 fra en randomiseret scriptet pick-and-place politik, så omkring 16 procent er ikke menneskelig demonstration, hvilket er vigtigt for imitationslæring kvalitet. Den sædvanlige download, IPEC-COMMUNITY/bridge_orig_lerobot, rapporterer 53.192 episoder og 1.893.026 frames ved 5 fps, robot_type widowx: færre end papirets 60.096, så læs antallet fra meta/info.json i stedet for at citere nogen af dem.

Open X-Embodiment

Ikke et datasæt i samme forstand: 60 eksisterende robotdatasæt fra 34 laboratorier samlet i én RLDS-samling, der dækker 22 udførelsesformer og over en million trajektorier. BridgeData V2 ligger i den som bridge_orig; google_robot-udsnittet, fractal20220817_data, konverteres til 87.212 episoder ved 3 fps.

Samlingen indeholder et forbehold, som artiklen direkte angiver. Til RT-X-eksperimenterne konverterer forfatterne hver kilde til en 7-DoF end-effector-handling, men justerer ikke koordinatsystemer på tværs af datasæt og tillader, at handlingsværdier er absolutte eller relative positioner eller hastigheder, i henhold til hver robots originale kontrolskema. Deres konklusion: den samme handlingsvektor kan fremkalde meget forskellige bevægelser for forskellige robotter.

AY-Robots datasætmappen, der viser offentlige LeRobot-datasæt med antal episoder og opgavebeskrivelser
Den offentlige datasætmappe på /directory: datasæt allerede i LeRobot-form, der allerede matcher en understøttet arm.

Uoverensstemmelsen, i fire dele

Uoverensstemmelse i legemliggørelse behandles normalt som ét vagt problem. Det er fire, de fejler forskelligt, og to kan ikke løses med scripting.

1. Frihedsgrader

En SO-100 har fem armled plus en griber. Talt som motorer er det en 6-DoF arm, og SmolVLA-papiret kalder den det; talt som en positioneringsmekanisme er det 5-DoF, og LeRobot kalder den det i sin inverse-kinematik docstring, som beskriver soft-orientation IK på den 5-DOF SO-101, hvor håndleddet kun delvist sporer orientering. En Franka har syv positioneringsled. Det gab afgør, hvilke positioner der eksisterer: en 5-DoF arm kan generelt ikke nå en vilkårlig position og orientering på én gang, så løseren returnerer det tætteste, den kan, en anden bevægelse end den demonstrerede. Baggrund: frihedsgrader.

python
# 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-D
Venstre: LeRobots SO-følger, fra src/lerobot/robots/so_follower/so_follower.py. Højre: openpis DROID-politikinput. Seks mod otte.

Så et færdigt DROID-checkpoint er ingen genvej. Physical Intelligence leverer pi05_droid på gs://openpi-assets/checkpoints/pi05_droid, og den samme README, der roser dens bredde, advarer om, at disse ekspert-checkpoints muligvis ikke generaliserer til din opsætning. Dens tilstand er otte Franka-lednumre, og dens billednøgler er exterior_image_1_left og wrist_image_left. Ingen flag omdanner det til en seks-motor SO-100 kommando.

2. Hvad handlingsvektoren faktisk siger

Dybere end dimensionalitet. I LeRobot-konverteringerne angiver alle tre, hvor griberen skal bevæge sig hen, i kartesisk rum. En SO-100 angiver, hvor seks servoer skal bevæge sig hen. Konvertering kræver en kinematisk model og en løser, ikke en omformning.

EgenskabOXE, DROID og Bridge i LeRobot-formSO-100 i LeRobot
Handlingsvektor7-D: x, y, z, roll, pitch, yaw, gripper6-D: én målposition pr. motor
Tilstandsvektor8-D, med en pad-slot (google_robot bruger en kvaternion)6-D, én pr. motor
RammeKartesisk, ikke-justeret på tværs af datasætledrum, pr. arm-kalibrering
Absolut eller relativenten, bestemt af kildelaboratorietabsolutte målpositioner
Enhedernormaliseret pr. datasæt, derefter diskretiseretgrader som standard (use_degrees=True), ellers -100 til 100
Stille fejlen delta læst som en absoluten ukalibreret arm
Den 7-D kartesiske vektor er konverterens konvention, ikke DROID's

openx2lerobot README dokumenterer en samlet 8-dim tilstand og 7-dim handling for hvert datasæt, det konverterer, hvilket er der, pad-pladsen kommer fra. DROID's eget RLDS-skema adskiller sig: dets top-niveau action er en 7-vektor af 6 ledhastigheder plus 1 gribeposition, med cartesian_position, cartesian_velocity, joint_position og joint_velocity under action_dict. openpi læser ledrumsvisningen, LeRobot-buildet giver dig den kartesiske. Ingen af dem er seks absolutte servovinkler.

LeRobot leverer den manglende brik: SO-følgeren har en kinematikprocessor med InverseKinematicsEEToJoints- og ForwardKinematicsJointsToEE-trin. Dens nøgler er ee.x, ee.y, ee.z plus en rotationsvektor ee.wx, ee.wy, ee.wz og ee.gripper_pos, så selv orienteringskodningen adskiller sig fra roll-pitch-yaw i filerne. IK-trinnet tager en orientation_weight, standard 0.01, hvis docstring siger, at man skal sætte 0.0 for position-only IK på underaktiverede arme. Du kan bygge broen, men orienteringshalvdelen af hver lånt handling forbliver approksimeret.

3. Kontrolfrekvens

DROID er 15 Hz, BridgeData V2 5 Hz, google_robot-udsnittet 3 fps; pi0's forfattere beskriver den open source-del af deres blanding som lavfrekvent kontrol mellem 2 og 10 Hz. LeRobots DatasetRecordConfig har standardindstillingerne fps 30, episode_time_s 60, reset_time_s 60, num_episodes 50. En trænet på 5 Hz data lærte, at én handling dækker 200 ms. Afspil det ved 30 Hz, og armen kravler; gensample naivt, og du udvisker rammen, hvor griberen lukker. Det interagerer også dårligt med : et 100-trins segment er 20 sekunder ved 5 Hz, 3.3 ved 30 Hz.

4. Kameraer

BridgeData V2 randomiserede to kamerapositioner hver 50. trajektorie, og dets projektside bemærker, at det meste af dataene alligevel kun indeholder den faste visning. DROID brugte justerbare ZED 2-beslag plus en håndleds-ZED Mini. Du har to USB-webkameraer placeret efter øjemål. Kameraposition er ikke en generende variabel for en ; det er meget af det, den visuelle encoder fokuserede på, og intet i filformatet fortæller dig, at positionerne er forskellige.

Fælden der æder en dag

Delene passer godt nok sammen til at køre. Datasættet indlæses, træningen starter, tabet falder, checkpoints vises, intet fejler. Derefter gør politikken intet genkendeligt på armen, og du bruger en dag på at jage en fejl i dit træningsscript. Der er ingen fejl: modellen lærte en kartesisk handlingsfordeling for en robot, der ikke eksisterer i dit rum. Start ved tabet falder, politikken gør intet, ikke ved dine hyperparametre.

Hvad sker der, når du alligevel forsøger at flette dataene

Den oplagte plan er at sammenkæde: et par tusind DROID-episoder plus dine 50. LeRobot nægter, og nægtelsen nævner de tre ting, der adskiller sig.

  1. 1
    Hent 100-episode-eksemplet, ikke de fulde 1,7 TB

    2 GB er nok til at se strukturen.

    bash
    pip install gsutil tensorflow tensorflow-datasets
    gsutil -m cp -r gs://gresearch/robotics/droid_100 ~/tensorflow_datasets/
  2. 2
    Konverter RLDS til LeRobot-format

    openx2lerobot omslutter OXE's standardtransformationer og annoterer robottype og kontrolfrekvens. README'en placerer dette i convert.sh.

    bash
    git 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
  3. 3
    Læs meta/info.json før noget andet

    Denne fil afgør, om resten af din dag fungerer.

    bash
    python -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'])"
  4. 4
    Prøv sammenfletningen og læs fejlen

    merge indlæser hvert datasæt, hvorefter validate_all_metadata kontrollerer fps, robot_type og features mod det første på listen og udløser en fejl ved første uoverensstemmelse.

    bash
    lerobot-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.

Referenceværdierne kommer fra det datasæt, du listede først, hvilket er grunden til, at meddelelsen klager over dine 30 fps i stedet for DROID's 15. Ret fps, og du rammer robot_type-kontrollen; ret den, og du rammer feature-kontrollen, 7 mod 6 for handlingen. Ingen rækkefølge slipper igennem, og den samme kontrol kører ved optagelsestidspunktet via sanity_check_dataset_robot_compatibility.

Hardkod ikke robot_type for at omgå kontrollen

På den nuværende LeRobot main er so100_follower og so101_follower begge registreret på én delt SOFollowerRobotConfig, så strengen fra en reel optagelse er ikke nødvendigvis den, du forventer. Læs den fra din egen meta/info.json, og betragt en kontrol, du måtte deaktivere, som en kontrol, der fortalte dig noget.

Så hvad overføres egentlig?

Vægte, ikke episoder. Enhver moderne generalistpolitik har absorberet noget af det i fortræning, og når du fra et udgivet arver du det allerede afstemt af folk med den nødvendige regnekraft til at gøre det ordentligt. pi0's artikel er ærlig omkring proportionen: 9,1 procent af dens fortræningsblanding, talt i timesteps, er open source-data inklusive OXE, Bridge v2 og DROID. Dette tal er pi0's; hver leverandørs blanding er forskellig.

Offentlige tværgående data om et SO-100 projekt
Fordele
  • Visuelle og sproglige forforståelser: encoderen har set tusindvis af køkkener og krus og ved, hvad "den røde blok" refererer til.
  • En forforståelse af manipulationsstruktur: tilgang, luk, løft, transport, slip, uafhængig af udførelsesform, selv når tallene ikke er det.
  • Et kendt, godt datasæt til test. Hvis dit job ikke kan overfitte 100 DROID-episoder, er problemet din opsætning.
  • Referencepunkter: på små datasæt-domæner opnåede RT-1-X en 50 procent højere gennemsnitlig succesrate end den originale metode eller RT-1, og RT-2-X slog RT-2 med omkring 3x på nye færdigheder.
Kompromiser
  • Ingen brugbar handlingssupervision. Et 7-D kartesisk mål er ikke en 6-D ledkommando.
  • Ingen kamera-pose-overførsel, og intet i dataene fortæller dig, at poserne er forskellige.
  • Ingen timing-overførsel: 3, 5 og 15 fps kilder mod en 30 fps optager.
  • Ingen griber-overførsel. En Robotiq 2F-85 og en printet kæbe på en STS3215 adskiller sig i kraft, slaglængde og dynamik.
  • Skala alene var ikke nok, selv for dens forfattere: i de store datasæt-domæner slog RT-1-X ikke en RT-1 trænet på det datasæt alene.
  • Ingen reduktion i hvor mange af dine egne episoder du har brug for.
ModellagOverføres?Hvorfor
Vision encoderJa, stærktObjekter og scener er uafhængige af udførelsesform
SprogforankringJaInstruktioner er tekst, ikke geometri
Krydsmodal fusionFor det mesteFokuserer på det objekt, der er nævnt i prompten
Proprioception encoderNejInputdimension og ledsemantik er forskellige
Action headNejTrænet på et 7-D kartesisk rum, du ikke befinder dig i
NormaliseringsstatistikkerNej, og farligtFremmede statistikker ændrer hver kommando

Dette er grunden til, at SmolVLA opfører sig anderledes på en billig arm. Dets artikel udvælger 481 fællesskabsdatasæt fra Hugging Face, filtreret efter embodiment-type, antal episoder, datakvalitet og billeddækning: 22.9K episoder, 10.6M frames, evalueret på rigtige SO-100 og SO-101 arme. Lille og matchet slår stor og uoverensstemmende. Sammenlign på ACT mod SmolVLA.

Tre veje værd at tage

Vej A: finjuster fra et checkpoint, der allerede har absorberet dataene

De fleste bør vælge denne. Du rører aldrig DROID eller Open X-Embodiment: vælg en politik, hvis fortræning allerede har absorberet tværgående embodiment-data, optag dine egne episoder, finjuster.

PolitikParametreMin. episoderDatasætformatGPU-niveauInferensBasis-checkpoint
GR00T N1.7~3 B, ~40 M trænet i finjustering50LeRobot v2.0 or v2.1A100 or H100 80 GB152 ms per stepnvidia/GR00T-N1.7-3B
GR00T N1.5~3 B50LeRobot v2.0 or v2.1A100 or H100 80 GB165 msnvidia/GR00T-N1.5-3B
Pi0.5~3 B, PaliGemma backbone50LeRobot v3.0A100 or H100 80 GB485 mslerobot/pi05_base
SmolVLA~450 M30LeRobot v3.0RTX 4090 or any 24 GB245 mslerobot/smolvla_base
ACT~80 M50LeRobot v3.0RTX 4090 or any 24 GB20 msingen, fra bunden

ACT er det ærlige grænsetilfælde: ingen basismodel, så ingen af de offentlige data når nogensinde den. Ikke automatisk en ulempe, da den med 20 ms pr. handlingstrin er den eneste af de fem, der kan lukke en hurtig løkke, som ACT-siden beskriver. Vælg efter opgave ved hjælp af alle fem sammenlignet, GR00T N1.7 mod Pi0.5, og de 332 benchmarkresultater på tværs af 85 modeller i arenaen.

Sti B: brug DROID som testarmatur

Den 100-episoders prøve er de bedste 2 GB, du vil downloade denne måned, og ikke til træning. Det er et datasæt, du ved er korrekt. Kør din konverter, loader og et kort GPU-job på det; alt, der fejler, er en infrastrukturfejl fundet, mens det var billigt. NVIDIA gør det samme i stor skala: GR00T N1.7-kortet viser fire eftertrænede varianter, til Bridge og Fractal i SimplerEnv, DROID og LIBERO.

Vej C: optag dine egne, bevidst

Tredive til halvtreds lyder måske af lidt ved siden af 76.000, indtil du husker, at dine er de eneste med din arm, dine kameraer og dit bord. Med LeRobots standardindstillinger er 50 episoder 100 minutters reel tid. Se , og .

AY-Robots' optagelsesvejledningsside, der viser trinene til at indsamle et LeRobot-datasæt fra en teleoperationssession
Optagelsesvejledningen på /learn/record-your-first-dataset: det trin, som offentlige data ikke kan erstatte.

To måder at komme fra offentlige data til en fungerende politik

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.

  1. 1
    Install LeRobot with the extras the scripts need

    The record and train entry points each declare their own extra.

    bash
    pip install 'lerobot[core_scripts]'   # lerobot-record
    pip install 'lerobot[training]'      # lerobot-train
    pip install gsutil tensorflow tensorflow-datasets
  2. 2
    Get a small, known-good slice

    100 DROID episodes, 2 GB.

    bash
    gsutil -m cp -r gs://gresearch/robotics/droid_100 ~/tensorflow_datasets/
  3. 3
    Convert to LeRobot form

    Writes the unified 8-D state and 7-D action, annotating robot type and control frequency.

    bash
    python openx_rlds.py \
        --raw-dir ~/tensorflow_datasets/droid_100/1.0.0 \
        --local-dir ~/lerobot_droid100 \
        --repo-id you/droid100_lerobot \
        --use-videos
  4. 4
    Check 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.

    bash
    python src/lerobot/scripts/convert_dataset_v21_to_v30.py \
        --repo-id=you/droid100_lerobot
  5. 5
    Record your own episodes

    Defaults: 30 fps, 60 s per episode, 60 s reset, 50 episodes. The teleoperator type is so100_leader.

    bash
    lerobot-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"
  6. 6
    Fine-tune on your data only

    Weights from public data, actions from your own. Do not mix the datasets.

    bash
    lerobot-train \
      --policy.path=lerobot/smolvla_base \
      --dataset.repo_id=you/so100_pick_block \
      --policy.device=cuda \
      --batch_size=4 \
      --steps=20000
Where the time actually goes

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.

AY-Robots desktopklientens downloadside, klienten der optager LeRobot-format datasæt fra en teleoperationssession
Desktopklienten på /download skriver LeRobot datasæt direkte fra en teleop-session, uden om RLDS-konvertering.

Hvad hver sti koster

StiLagerpladsMenneskelig tidGPU-omkostningSandsynlighed for armbevægelse
Konverteret DROID alene392 GBdages konvertering4 to 12 USDmeget lav, forkert handlingsrum
DROID flettet med dine episoderbeggeblocked by validate_all_metadatan/aingen, den kører ikke
SmolVLA, 30 til 50 egne episoderfå GB100 min optagelse1 to 3 USDhøj
GR00T N1.7, 50 egne episoderfå GB100 min optagelse4 to 12 USDhøj
ACT fra bunden, 50 egne episoderfå GB100 min optagelse1 to 3 USDhøj, 20 ms inferens
DROID-eksempel som testfixture2 GBen eftermiddagén kort kørselhøj, som validering

Asymmetrien er pointen: den sti, der låner mest data, er den dyreste og mindst sandsynlige til at bevæge din arm. Under to timer af din egen fjernstyring slår en terabyte af en andens Franka. Ingen arm endnu? /live streamer en fysisk SO-100 uden tilmelding. Derefter træn din første politik, og SmolVLA på SO-100 for den specifikke guide.

En fornuftig standardplan

Download 2 GB DROID-eksemplet og brug det til at bevise din pipeline. Ignorer de andre 1.7 TB. Optag 50 episoder af én opgave med faste kameraer. Finjuster SmolVLA først, fordi det med mindst 30 episoder på et 24 GB kort er billigst at iterere på, prøv derefter GR00T N1.7 på de samme data. Sammenlign på din opgave, ikke på en benchmark.

Optag datasæt, der allerede matcher din arm

Desktopklienten skriver LeRobot-format datasæt direkte fra en teleop-session: den rigtige arm, den rigtige billedhastighed, det rigtige handlingsrum. Ingen RLDS-konvertering, ingen remapping.

Hent desktopklienten
Kan jeg træne en politik på DROID og køre den på min SO-100?

Ikke direkte. I LeRobot-buildet er DROID-handlinger 7-D end-effector kommandoer på en Franka Panda ved 15 fps; i den rå RLDS er de 6 ledhastigheder plus en gribeposition. En SO-100 tager 6 absolutte ledpositioner. Du ville have brug for et invers-kinematik lag, og selv da kan et 5-DoF håndled ikke gengive vilkårlige 6-DoF positioner.

Kan jeg blande DROID- eller Bridge-episoder med mine egne SO-100-episoder?

Nej. validate_all_metadata kræver identisk fps, robot_type og feature schema og udløser en ValueError ved den første uoverensstemmelse. Alle tre er forskellige: 15 eller 5 fps mod 30, franka eller widowx mod din arm, handlingsformer på 7 mod 6. Omskrivning af metadata for at bestå kontrollen løser ikke semantikken.

Er Open X-Embodiment så ubrugeligt for en billig arm?

Nej, men dens værdi når dig gennem forudtrænede vægte, ikke episoder. Open source-datasæt, herunder OXE, Bridge v2 og DROID, udgør 9,1 procent af pi0's forudtræningsblanding, og NVIDIA leverer GR00T N1.7-varianter eftertrænet på Bridge, Fractal, DROID og LIBERO. Hvad du ikke kan gøre, er at tilføje disse episoder til din egen optagelse.

Hvilken politik drager mest fordel af offentlige tværgående data?

Pi0.5 og GR00T-modellerne har den mest omfattende tværgående forudtræning, men SmolVLA fungerer ofte bedst på en billig arm: dets forudtræningssæt består af 481 fællesskabsdatasæt, 22.9K episoder og 10.6M frames, evalueret på rigtige SO-100 og SO-101 arme. ACT er det modsatte: ingen basismodel, 20 ms per handlingstrin.

Hvor mange af mine egne episoder har jeg egentlig brug for?

30 for SmolVLA, 50 for GR00T N1.7, GR00T N1.5, Pi0.5 og ACT. Med LeRobots standardindstillinger på 60 s per episode og 60 s nulstilling er 50 episoder 100 minutters reel tid. Lånte tværgående data reducerer ikke disse tal.

Ready for high-quality robotics data?

AY-Robots connects your robots to skilled operators worldwide.

Get Started