AY-Robots offentliga datamängdskatalog som visar LeRobot-datamängder inspelade på SO-100-klassade armar
DatamängderOpen X-EmbodimentDROIDSO-100LeRobot

Använda DROID, BridgeData V2 och Open X på en SO-100

AY-Robots ResearchAugust 23, 202618 minuters läsning

DROID, BridgeData V2 och Open X-Embodiment konverterar till 7-D ändeffektoråtgärder på 6- och 7-DoF-armar. En SO-100 tar 6 ledpositioner. Vad som överförs, vad som inte gör det, vad man ska göra istället.

Den korta versionen

  • LeRobot-byggena av alla tre delar en konvention: en 7-D end-effector-aktion [x, y, z, roll, pitch, yaw, gripper] och ett 8-D tillstånd med en pad-plats. En SO-100 tar sex absoluta ledpositioner.
  • Den 7-D vektorn är omvandlarens artefakt: DROID:s eget RLDS-aktionsfält är 6 ledhastigheter plus en gripareposition, med den kartesiska vyn i action_dict.
  • Fyra klockor: DROID 15 fps, BridgeData V2 5 fps, google_robot-skivan 3 fps, en SO-100-inspelning vid 30 fps.
  • Du kan inte slå samman dem med dina egna data. validate_all_metadata utlöses vid den första av fps, robot_type eller funktioner som skiljer sig, och alla tre skiljer sig.
  • Det som överförs är förtränade vikter, inte episoder. Öppen källkodsdata utgör 9,1 procent av pi0:s förträningsblandning.
  • Deras billigaste verkliga användning är en testfixtur: ett känt, fungerande 2 GB, 100-episoders DROID-exempel som bevisar din pipeline innan du spelar in under en helg.

Det finns en offentlig datamängd med en miljon trajektorier på en Google Cloud-bucket och en SO-100 på skrivbordet som kostade 110 till 150 EUR i delar. Varför kan den första inte lära den andra? Delvis kan den det, men nästan ingen av överföringen sker där folk förväntar sig, och den del som ser enklast ut fungerar inte alls.

Vad som följer: vad som finns inuti DROID, BridgeData V2 och Open X-Embodiment, där var och en kolliderar med en billig 5-DoF-arm, och vad man ska göra istället. Varje siffra nedan kom från den artikel, datamängdskort eller källfil den tillhör.

Vad de tre datamängderna faktiskt innehåller

DROIDBridgeData V2Open X-Embodiment
RobotFranka Panda, 7 DoF, Robotiq 2F-85WidowX 250, 6 DoF, ~4,000 USD rig22 embodiments, 60 datasets, 34 labs
Skala76k trajectories, 350 hours60,096 trajectories1M+ trajectories, 527 skills
Mångfald564 scenes, 84 tasks, 50 collectors24 environments, 13 skills160,266 tasks, 21 institutions
Sammansättningallt fjärrstyrt50 365 fjärrstyrda, 9 731 skriptadeper källaboratorium
Kontrollfrekvens15 Hz5 Hzvarierar, 3 fps uppåt
Kameror2 x ZED 2 exteriör, 1 x ZED Mini handledupp till 4, de flesta episoder endast den fastavad laboratoriet än använde
Rå nedladdning1.7 TB RLDS, 8.7 TB rå stereoJPEG-arkivper-dataset TFDS-hinkar
Ingångspunkten är LeRobot-konverteringen, inte den ursprungliga hinken

Få personer laddar fortfarande ner 1,7 TB RLDS TFRecords. Communityorganisationen IPEC-COMMUNITY har återpublicerat det mesta av Open X-Embodiment i LeRobot-dataset-format med AV1-video, där DROID hamnar på 392 GB. Det är den versionen du kommer att arbeta med, och dess meta/info.json är vad du ska läsa först.

DROID

Den mest standardiserade av de tre. En rigg överallt: en Franka Panda med en Robotiq 2F-85 gripklo, två justerbara ZED 2 stereokameror och en handleds-ZED Mini, fjärrstyrd med Meta Quest 2-kontroller, inspelad via Polymetis vid 15 Hz i både led- och slut-effektor utrymme. Språketiketter kom senare via tasq.ai, upp till tre per episod.

  • 76k trajektorier, 350 timmar, 564 scener, 84 uppgifter, 50 insamlare på tre kontinenter.
  • Huvudresultatet är samträning, inte fristående träning: batchar blandade 50/50 med demonstrationer inom domänen slog den näst bästa metoden med 22 procent absolut framgång i distribution, 17 procent utanför den.
  • 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.
  • Ett 2 GB, 100-episoders felsökningsprov finns på gs://gresearch/robotics/droid_100. Börja där.

BridgeData V2

Det närmaste en hobbymiljö: en WidowX 250 6-DoF-arm, 60 096 trajektorier över 24 miljöer och 13 färdigheter vid 5 Hz. Notera sammansättningen: 50 365 expertteleopererade demonstrationer plus 9 731 från en randomiserad skriptad plock-och-placera-policy, så cirka 16 procent är inte mänsklig demonstration, vilket är viktigt för imitationsinlärning kvalitet. Den vanliga nedladdningen, IPEC-COMMUNITY/bridge_orig_lerobot, rapporterar 53 192 episoder och 1 893 026 bildrutor vid 5 fps, robot_type widowx: färre än uppsatsens 60 096, så läs antalet från meta/info.json istället för att citera något av dem.

Open X-Embodiment

Inte en datamängd i samma bemärkelse: 60 befintliga robotdatamängder från 34 laboratorier samlade i en RLDS-samling som täcker 22 utföranden och över en miljon trajektorier. BridgeData V2 finns inuti den som bridge_orig; google_robot-skivan, fractal20220817_data, konverteras till 87 212 episoder vid 3 fps.

Samlingen medför en reservation som artikeln uttryckligen anger. För RT-X-experimenten konverterar författarna varje källa till en 7-DoF end-effector-aktion, men de anpassar inte koordinatsystemen mellan datamängderna, och tillåter att aktionsvärden är absoluta eller relativa positioner eller hastigheter, enligt varje robots ursprungliga kontrollschema. Deras slutsats: samma aktionsvektor kan inducera mycket olika rörelser för olika robotar.

AY-Robots datamängdskatalog som listar publika LeRobot-datamängder med antal episoder och uppgiftsbeskrivningar
Den publika datamängdskatalogen på /directory: datamängder redan i LeRobot-format, som redan matchar en stödd arm.

Mismatchningen, i fyra delar

Kroppslig inkompatibilitet behandlas oftast som ett vagt problem. Det är fyra, de misslyckas på olika sätt, och två kan inte åtgärdas med skriptning.

1. Frihetsgrader

En SO-100 har fem armleder plus en gripklo. Räknat som motorer är det en 6-DoF-arm, och SmolVLA-artikeln kallar den det; räknat som en positioneringsmekanism är den 5-DoF, och LeRobot kallar den det i sin docstring för invers kinematik, som beskriver mjukorienterad IK på den 5-DOF SO-101 där handleden endast delvis spårar orientering. En Franka har sju positioneringsleder. Detta gap avgör vilka poser som existerar: en 5-DoF-arm kan i allmänhet inte nå en godtycklig position och orientering samtidigt, så lösaren returnerar det närmaste den kan, en annan rörelse än den som demonstrerades. Bakgrund: frihetsgrader.

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
Vänster: LeRobots SO-följare, från src/lerobot/robots/so_follower/so_follower.py. Höger: openpis DROID-policyinput. Sex mot åtta.

Så en färdig DROID-checkpoint är ingen genväg. Physical Intelligence levererar pi05_droid på gs://openpi-assets/checkpoints/pi05_droid, och samma README som berömmer dess bredd varnar för att dessa expert-checkpoints kanske inte generaliserar till din installation. Dess tillstånd är åtta Franka-lednummer och dess bildnycklar är exterior_image_1_left och wrist_image_left. Ingen flagga förvandlar det till ett sex-motorigt SO-100-kommando.

2. Vad aktionsvektorn faktiskt säger

Djupare än dimensionalitet. I LeRobot-konverteringarna säger alla tre vart gripdonet ska gå, i kartesiskt rum. En SO-100 säger vart sex servon ska gå. Konvertering kräver en kinematisk modell och en lösare, inte en omformning.

EgenskapOXE, DROID och Bridge i LeRobot-formSO-100 i LeRobot
Aktionsvektor7-D: x, y, z, roll, pitch, yaw, gripdon6-D: en målposition per motor
Tillståndsvektor8-D, med en utfyllnadsplats (google_robot använder en kvaternion)6-D, en per motor
RamKartesisk, ej anpassad över datasetledrum, per-armkalibrering
Absolut eller relativantingen, bestäms av källaboratorietabsoluta målpositioner
Enheternormaliserad per dataset, sedan diskretiseradgrader som standard (use_degrees=True), annars -100 till 100
Tyst felen delta läst som en absoluten okalibrerad arm
Den 7-D kartesiska vektorn är konverterarens konvention, inte DROID:s

openx2lerobot README dokumenterar ett enhetligt 8-dimensionellt tillstånd och 7-dimensionell åtgärd för varje dataset det konverterar, vilket är var pad-platsen kommer ifrån. DROID:s eget RLDS-schema skiljer sig: dess toppnivå action är en 7-vektor av 6 ledhastigheter plus 1 gripardimension, med cartesian_position, cartesian_velocity, joint_position och joint_velocity under action_dict. openpi läser ledutrymmesvyn, LeRobot-bygget ger dig den kartesiska. Ingen av dem är sex absoluta servovinklar.

LeRobot levererar den saknade biten: SO follower har en kinematikprocessor med stegen InverseKinematicsEEToJoints och ForwardKinematicsJointsToEE. Dess nycklar är ee.x, ee.y, ee.z plus en rotationsvektor ee.wx, ee.wy, ee.wz och ee.gripper_pos, så även orienteringskodningen skiljer sig från roll-pitch-yaw i filerna. IK-steget tar en orientation_weight, standard 0.01, vars docstring säger att man ska sätta 0.0 för position-only IK på underaktiverade armar. Du kan bygga bron, men orienteringshalvan av varje lånad åtgärd förblir approximerad.

3. Kontrollfrekvens

DROID är 15 Hz, BridgeData V2 5 Hz, google_robot-skivan 3 fps; pi0:s författare beskriver den öppen källkodsdelen av sin blandning som lågfrekvent kontroll mellan 2 och 10 Hz. LeRobot:s DatasetRecordConfig har standardvärdena fps 30, episode_time_s 60, reset_time_s 60, num_episodes 50. En tränad på 5 Hz data lärde sig att en åtgärd täcker 200 ms. Spela upp den vid 30 Hz och armen kryper; omsampla naivt och du smetar ut ramen där griparen stängs. Det interagerar också dåligt med : en 100-stegs chunk är 20 sekunder vid 5 Hz, 3.3 vid 30 Hz.

4. Kameror

BridgeData V2 randomiserade två kamerapositioner var 50:e bana, och dess projektsida noterar att det mesta av datan ändå bara innehåller den fasta vyn. DROID använde justerbara ZED 2-fästen plus en handledsmonterad ZED Mini. Du har två USB-webbkameror placerade på fri hand. Kameraposition är inte en störande variabel för en ; det är mycket av vad den visuella kodaren fokuserade på, och inget i filformatet berättar att positionerna skiljer sig åt.

Fällan som slukar en dag

Delarna passar tillräckligt bra för att köra. Datasetet laddas, träningen startar, förlusten minskar, kontrollpunkter visas, inga fel uppstår. Sedan gör policyn inget igenkännbart på armen och du tillbringar en dag med att jaga en bugg i ditt träningsskript. Det finns ingen bugg: modellen lärde sig en kartesisk handlingsdistribution för en robot som inte finns i ditt rum. Börja vid förlusten minskar, policyn gör ingenting, inte vid dina hyperparametrar.

Vad händer när du ändå försöker slå samman datan

Den uppenbara planen är att sammanfoga: några tusen DROID-episoder plus dina 50. LeRobot vägrar, och vägran nämner de tre saker som skiljer sig åt.

  1. 1
    Hämta 100-episodersprovet, inte hela 1.7 TB

    2 GB räcker för att se strukturen.

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

    openx2lerobot omsluter OXE:s standardtransformationer och annoterar robottyp och kontrollfrekvens. README-filen placerar detta 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öre något annat

    Denna fil avgör om resten av din dag fungerar.

    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
    Prova sammanslagningen och läs felet

    merge laddar varje dataset, sedan kontrollerar validate_all_metadata fps, robot_type och features mot den första i listan, och utlöser ett fel vid första avvikelsen.

    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.

Referensvärdena kommer från det dataset du listade först, vilket är anledningen till att meddelandet klagar på dina 30 fps istället för DROID:s 15. Fixa fps och du stöter på robot_type-kontrollen; fixa det och du stöter på feature-kontrollen, 7 mot 6 för åtgärden. Ingen ordning fungerar, och samma skydd körs vid inspelningstillfället via sanity_check_dataset_robot_compatibility.

Hårdkoda inte robot_type för att kringgå kontrollen

På nuvarande LeRobot main är so100_follower och so101_follower båda registrerade på en delad SOFollowerRobotConfig, så strängen från en verklig inspelning är inte nödvändigtvis den du förväntar dig. Läs den från din egen meta/info.json, och betrakta en kontroll du var tvungen att inaktivera som en kontroll som försökte berätta något för dig.

Så vad överförs egentligen?

Vikter, inte episoder. Varje modern generalistpolicy har absorberat en del av det under förträning, och när du finjusterar från en släppt kontrollpunkt ärver du det redan avstämt av personer med beräkningskraft att göra det korrekt. pi0:s rapport är uppriktig om proportionen: 9,1 procent av dess förträningsblandning, räknat i tidssteg, är öppen källkodsdata inklusive OXE, Bridge v2 och DROID. Den siffran är pi0:s; varje leverantörs blandning skiljer sig åt.

Offentlig data för kors-inkarnation i ett SO-100-projekt
Fördelar
  • Visuella och språkliga förkunskaper: kodaren har sett tusentals kök och muggar och vet vad "det röda blocket" syftar på.
  • En förkunskap om manipulationsstruktur: närma sig, stänga, lyfta, transportera, släppa, inkarnations-oberoende även när siffrorna inte är det.
  • Ett känt, bra dataset för testning. Om ditt jobb inte kan överanpassa 100 DROID-episoder, är problemet din inställning.
  • Referenspunkter: inom domäner med småskaliga dataset uppnådde RT-1-X en 50 procent högre genomsnittlig framgångsfrekvens än den ursprungliga metoden eller RT-1, och RT-2-X slog RT-2 med cirka 3 gånger på framväxande färdigheter.
Kompromisser
  • Ingen användbar åtgärdsövervakning. Ett 7-D kartesiskt mål är inte ett 6-D ledkommando.
  • Ingen överföring av kameraposition, och inget i datan säger dig att positionerna skiljer sig åt.
  • Ingen tidsöverföring: 3, 5 och 15 fps källor mot en 30 fps inspelare.
  • Ingen gripöverföring. En Robotiq 2F-85 och en utskriven käke på en STS3215 skiljer sig åt i kraft, slag och dynamik.
  • Skala ensam var inte tillräckligt ens för dess författare: inom domäner med stora dataset slog RT-1-X inte en RT-1 tränad enbart på det datasetet.
  • Ingen minskning av hur många egna episoder du behöver.
Modellens lagerÖverförs?Varför
Vision encoderJa, starktObjekt och scener är inkarnations-oberoende
Language groundingJaInstruktioner är text, inte geometri
Cross-modal fusionMestadelsFokuserar på objektet som nämns i prompten
Proprioception encoderNejIndatadimension och ledsemantik skiljer sig åt
Action headNejTränad på ett 7-D kartesiskt utrymme du inte befinner dig i
Normalisation statisticsNej, och farligtFrämmande statistik förskjuter varje kommando

Det är därför SmolVLA beter sig annorlunda på en lågkostnadsarm. Dess publikation väljer 481 gemenskapsdataset från Hugging Face, filtrerade efter typ av utförande, antal episoder, datakvalitet och bildtäckning: 22.9K episoder, 10.6M bilder, utvärderade på verkliga SO-100 och SO-101 armar. Litet och matchat slår stort och omatchat. Jämför på ACT mot SmolVLA.

Tre vägar värda att ta

Väg A: finjustera från en kontrollpunkt som redan har absorberat datan

De flesta bör välja denna. Du rör aldrig DROID eller Open X-Embodiment: välj en policy vars förträning redan har absorberat data för olika utföranden, spela in dina egna episoder, finjustera.

PolicyParametrarMin antal episoderDatasetformatGPU-nivåInferensBas-checkpoint
GR00T N1.7~3 B, ~40 M trained in fine-tuning50LeRobot 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 msnone, from scratch

ACT är det ärliga gränsfallet: ingen basmodell, så ingen av den offentliga datan når den någonsin. Inte automatiskt en nackdel, eftersom den med 20 ms per åtgärdssteg är den enda av de fem som kan sluta en snabb loop, som ACT-sidan beskriver. Välj efter uppgift med hjälp av alla fem jämförda, GR00T N1.7 mot Pi0.5, och de 332 benchmarkresultaten över 85 modeller i arenan.

Väg B: använd DROID som testfixtur

Det 100-episoders urvalet är de bästa 2 GB du kommer att ladda ner denna månad, och inte för träning. Det är ett dataset du vet är korrekt. Kör din konverterare, laddare och ett kort GPU-jobb på det; allt som misslyckas är en infrastruktur-bugg som hittats medan det var billigt. NVIDIA gör detsamma i stor skala: GR00T N1.7-kortet listar fyra eftertränade varianter, för Bridge och Fractal i SimplerEnv, DROID och LIBERO.

Väg C: spela in dina egna, medvetet

Trettio till femtio låter lite bredvid 76 000 tills du kommer ihåg att dina är de enda med din arm, dina kameror och ditt bord. Med LeRobots standardinställningar är 50 episoder 100 minuters verklig tid. Se , och .

The AY-Robots recording tutorial page showing the steps to capture a LeRobot dataset from a teleoperation session
Inspelningsguiden på /learn/record-your-first-dataset: steget som offentlig data inte kan ersätta.

Två sätt att gå från offentlig data till en fungerande policy

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.

Nedladdningssidan för AY-Robots skrivbordsklient, klienten som spelar in LeRobot-formatdatauppsättningar från en teleoperationssession
Skrivbordsklienten på /download skriver LeRobot-datauppsättningar direkt från en teleop-session, och kringgår RLDS-konvertering.

Vad varje sökväg kostar

SökvägLagringMänsklig tidGPU-kostnadChans att den rör din arm
Konverterad DROID ensam392 GBdagars konvertering4 till 12 USDmycket låg, fel handlingsutrymme
DROID sammanslagen med dina avsnittbådablockerad av validate_all_metadatan/aingen, den körs inte
SmolVLA, 30 till 50 egna avsnittnågra GB100 min inspelning1 till 3 USDhög
GR00T N1.7, 50 egna avsnittnågra GB100 min inspelning4 till 12 USDhög
ACT från grunden, 50 egna avsnittnågra GB100 min inspelning1 till 3 USDhög, 20 ms inferens
DROID-exempel som testfixtur2 GBen eftermiddagen kort körninghög, som validering

Asymmetrin är poängen: sökvägen som lånar mest data är den dyraste och minst sannolika att flytta din arm. Mindre än två timmar av din egen teleoperation slår en terabyte av någon annans Franka. Ingen arm än? /live strömmar en fysisk SO-100 utan registrering. Sedan träna din första policy, och SmolVLA på SO-100 för den specifika guiden.

En rimlig standardplan

Ladda ner DROID-exemplet på 2 GB och använd det för att bevisa din pipeline. Ignorera de andra 1.7 TB. Spela in 50 avsnitt av en uppgift med fasta kameror. Finjustera SmolVLA först, eftersom det med minst 30 avsnitt på ett 24 GB-kort är billigast att iterera på, prova sedan GR00T N1.7 på samma data. Jämför på din uppgift, inte på ett benchmark.

Spela in dataset som redan matchar din arm

Skrivbordsklienten skriver LeRobot-format dataset direkt från en teleop-session: rätt arm, rätt bildfrekvens, rätt åtgärdsutrymme. Ingen RLDS-konvertering, ingen ommappning.

Hämta skrivbordsklienten
Kan jag träna en policy på DROID och köra den på min SO-100?

Inte direkt. I LeRobot-bygget är DROID-aktioner 7-D end-effector-kommandon på en Franka Panda vid 15 fps; i den råa RLDS är de 6 ledhastigheter plus en gripareposition. En SO-100 tar 6 absoluta ledpositioner. Du skulle behöva ett invers-kinematikskikt, och även då kan en 5-DoF handled inte reproducera godtyckliga 6-DoF poser.

Kan jag blanda DROID- eller Bridge-avsnitt med mina egna SO-100-avsnitt?

Nej. validate_all_metadata kräver identiska fps, robot_type och feature schema och utlöser ValueError vid den första avvikelsen. Alla tre skiljer sig: 15 eller 5 fps mot 30, franka eller widowx mot din arm, aktionsformer på 7 mot 6. Att skriva om metadata för att klara kontrollen åtgärdar inte semantiken.

Är Open X-Embodiment då värdelöst för en lågkostnadsarm?

Nej, men dess värde når dig genom förtränade vikter, inte avsnitt. Öppen källkods-dataset inklusive OXE, Bridge v2 och DROID utgör 9.1 procent av pi0:s förträningsblandning, och NVIDIA levererar GR00T N1.7-varianter eftertränade på Bridge, Fractal, DROID och LIBERO. Vad du inte kan göra är att lägga till dessa avsnitt till din egen inspelning.

Vilken policy drar mest nytta av offentlig data för kors-embodiment?

Pi0.5 och GR00T-modellerna har den mest omfattande förträningen för kors-embodiment, men SmolVLA fungerar ofta bäst på en lågkostnadsarm: dess förträningsset består av 481 community-dataset, 22.9K avsnitt och 10.6M ramar, utvärderade på verkliga SO-100- och SO-101-armar. ACT är motsatsen: ingen basmodell, 20 ms per åtgärdssteg.

Hur många av mina egna avsnitt behöver jag egentligen?

30 för SmolVLA, 50 för GR00T N1.7, GR00T N1.5, Pi0.5 och ACT. Med LeRobots standardinställningar på 60 s per avsnitt och 60 s återställning, är 50 avsnitt 100 minuter i realtid. Lånad data för kors-embodiment sänker inte dessa siffror.

Ready for high-quality robotics data?

AY-Robots connects your robots to skilled operators worldwide.

Get Started