
En steg-för-steg-beskrivning av en human-gated DAgger-runda på en SO-100-arm: kör policyn och spela in den, ta över när det går fel, registrera körningen som en korrektion, komponera en blandad datamängd och fortsätt träningen från en checkpoint. Innehåller tangentbords- och reglagevägen för takeover för personer utan en leader-arm, och de fyra misstagen som gör en runda värdelös.
Din policy körs. Den sträcker sig efter kuben, stänger grepparen en centimeter för tidigt och fortsätter som om den hade den. Ingenting felrapporteras, och ingen mängd stirrande på träningsförlusten förklarar det. Fixningen är inte ytterligare 20 000 gradientsteg på samma demonstrationer. Det är att sätta tillbaka din hand på armen exakt där det går fel, spela in vad du gjorde istället och träna nästa checkpoint på de gamla data plus den korrigeringen. Det är en DAgger-runda, och så körs den på en SO-100 med en vision-language-action policy.
Teorin finns någon annanstans: varför datamängdaggregering fungerar överhuvudtaget och vad human gating ändrar om det. Det här är drifthandboken, och den förutsätter en tränad checkpoint, en fungerande kamerauppsättning och en arm som rör sig. De sex stegen nedan är loopen som implementerad på DAgger-sidan på denna plattform, men sekvensen är densamma från dina egna skript.
En runda kortfattat
- •Kör den tränade policyn och spela in den, med körningens uppgiftstext snarare än en generisk teleoperationsetikett.
- •Ta över i det ögonblick beteendet blir fel: en spegelöverlämnande med en leader-arm, omedelbar och manuell över tangentbord eller reglage utan en sådan.
- •Sortera varje körning: registrera den som en korrektion, behåll den som en utvärderingsepisod eller kassera den.
- •Komponera blandningen för hand - ursprungliga demonstrationer plus korrigeringar, episoder valda per källa. Träna aldrig bara på korrigeringar.
- •Fortsätt träningen från den sista checkpointen, och notera vilken checkpoint som producerade vilken blandning.
- •Siffran som säger om rundan var värd något är interventionsfrekvensen, inte träningsförlusten.
Varför andra rundan inte bara är mer data
Beteendekloningen tränar på de tillstånd som en människa besökte. Vid testtillfället besöker policyn de tillstånd som den orsakar, och små handlingsfel förvärras till tillstånd som ingen demonstration täckte. Ross, Gordon och Bagnell formaliserade det misslyckandet för AISTATS 2011 och svarade det med en iterativ algoritm som tränar en stationär deterministisk policy och, under deras reduktion, måste prestera väl under den tillståndsfördelning den framkallar: kör den aktuella policyn, låt experten märka de tillstånd den faktiskt nådde, lägg till dem i datamängden, träna om, upprepa. Kelly et al. gjorde frågan praktisk med HG-DAgger, där människan beslutar när hon ska ta kontroll istället för att märka tillstånd utan att hålla i kontrollerna; de rapporterar förbättrad prestanda jämfört med både DAgger och beteendekloningen på en simulerad och en verklig autonom körningsuppgift. Human gating är vad som gör loopen tål på en skrivbordsarm - du rör bara dina händer när något går fel.
Två konsekvenser spelar större roll i praktiken än teorin gör. Korrigeringar är inte vanliga demonstrationer: de koncentreras vid flaskhalsregionerna som Mandlekar et al. beskriver, där en liten avvikelse faller policyn in i tillstånd som demonstrationerna aldrig täckte. Och en datamängd gjord bara av dessa svåra delar är en dåligt formad datamängd - Belkhale, Cui och Sadigh hävdar från datasidan att tillståndsvariation inte alltid är fördelaktig, och att handlingsdivergering och övergångsdivergering tillsammans avgör datamängdkvalitet. Den blandade datamängden är inte en kompromiss, det är själva poängen.
Frys dessa innan runda ett
En DAgger-runda jämför en policy mot sig själv över tid. Vad som helst du ändrar mellan rundor som inte är datamängden gör denna jämförelse meningslös.
- Kamerapositioner och monteringar, handledskamera inkluderad. Lossa ett spännband och du har ändrat observationsfördelningen, inte policyn.
- Exponering och vitbalans, om din fångsthöghöger låter dig fästa dem. Auto-exponering som driver mellan rundor är en långsam, osynlig domänförskjutning.
- Armkalibrering och servoserienollpositioner. Om du måste omkalibrerit, behandla allt som spelades in före det som en separat datamängd.
- Uppgiftstexten. Varje VLA här villkor på det; omformulering av det mitt i loopen är en annan uppgift.
- Belysning, bordyta, objektuppsättning. Ett nytt objekt är ett nytt experiment, inte nästa runda.
- Inspelningsbildhastigheten. Att jämföra interventionsfrekvenser över två samplingsraster producerar skillnader som kommer från rastret.
Hsu et al. jämförde en handcentrerad vy mot den vanliga tredjeparts-vyn och fann att eye-in-hand-perspektivet konsekvent förbättrade träningseffektiviteten och generaliseringen utanför distributionen, trots att det såg mindre av scenen. På en femledskärm är grippertiming vanligtvis vad dina korrigeringar fixar, och grippertiming är vad handledsvyn bär.
Rundan, från början till slut
- 1Kör interferens och spela in den
Starta körningen mot den checkpoint du vill förbättra, starta sedan inspelningen i inferences rot. Inspelad på det sättet ärver den körningens egen uppgiftstext, vilket är vad policyn tränade på, snarare än standard teleoperationsetiketten. Utan inspelningen kan du titta på misslyckandet men inte träna på det.
bash# two calls, not one: the run, then its recording POST /inference/start # model_id, and hf_repo_id = the checkpoint to drive POST /recording/start # root=inference # root=inference also makes the recording inherit the run's task text - 2Ta över när det går fel
Tryck Ta över och välj indataläge: leader-arm, tangentbord eller reglage. Köraren pausar, du korrigerar, du överlämnar. Bildrutor som spelades in medan du körde flaggas automatiskt som interventioner.
bashPOST /inference/takeover/start # input = leader | keyboard | sliders POST /inference/takeover/nudge # keyboard, relative delta per call POST /inference/takeover/set # sliders, absolute target POST /inference/takeover/stop # back to the policy - 3Sortera episoderna
Bestäm per episod: registrera som korrektion, behåll som utvärdering, eller kassera. En körning som policyn slutförde utan hjälp är utvärderingsdata.
- 4Synkronisera korrektionsdatamängden
Korrigeringar samlas in en lokal datamängd per policy och går till molnlagring genom automatisk synkronisering. Ingenting blandas in som du inte satte dit.
- 5Komponera den blandade datamängden
Kombinera den ursprungliga datamängden med korrektionsdatamängden, välj episoder uttryckligen per källa. Resultatet är en vanlig datamängd från den punkten framåt.
bashPOST /training/datasets/compose sources = [ original_dataset, korrekturen_<policy> ] episodes = explicit selection per source - 6Fortsätt träningen från checkpointen
Träna blandningen från den tidigare checkpointen snarare än basmodellen. Notera vilken checkpoint och vilken blandning; utan det paret är rundan inte återproducerbar.
bash# field on the training job base_checkpoint = s3://ay-robots/checkpoints/<run>/<checkpoint> # the platform passes it to the training pod as BASE_CKPT_S3
Steg 2 i detalj: de två sätten att ta över
Med en leader-arm
I leader-follower läge är övertagandet en överlämnande mellan två armar som inte är i samma position. Att trycka Ta över pausar köraren och driver ledarens på följarens nuvarande position, så ingenting hoppar när vridmomentet överförs. Om den justeringskörningen tar tid, justerar du ledarens för hand och släpper bara när de två är inom fem grader. Från då teleoperar du normalt och åtgärdskolumnen registrerar vad du beordrade.
Var ärlig om denna väg: justeringskörningen och vridmomentöverlämnandet är den minst testade delen av loopen på verklig maskinvara. Testa överlämnandet på en långsam, ofarlig position innan du förlitar dig på det i en körning du bryr dig om. En leader-arm producerar de jämnaste korrigeringarna av de tre lägena, och har också det mesta som kan gå fel mekaniskt.
Utan en leader-arm: tangentbord och reglage
De flesta människor som läser detta äger en arm. Det räcker. Välj tangentbords- eller reglageindatning i det ögonblick du trycker Ta över, och övertagandet är omedelbar och manuell - det finns ingen andra arm att justera, så det finns ingen justeringssteg. Följaren håller sin position och väntar på inmatning.
| Indataläge | Hur armen rör sig | Per-anropsgräns tillämpad av servern | Låst när |
|---|---|---|---|
| Leader-arm | Spegeln driver följaren från ledarens ledvinklar | Inget knuffsteg eller ställ samtal i detta läge; spegeln skriver följarmål kontinuerligt | Aldrig låst, och standardinställningen om inget indataläge ges - men det behöver en andra arm; utan ett leader-id vägrade övertagandet |
| Tangentbord | Relativt knuffsteg per tangenttryckning, skickat till takeover-knuffslutpunkten | Hårt spännband vid 2 grader per led, 4 grader för grepparen | Avvisad med 409 om övertagandet startades i ledarläge |
| Reglage | Absolut målposition, skickad till takeover-ställningslutpunkten | Högst 6 grader resa mot målet per anrop; gränssnittet fortsätter att skicka ungefär tio gånger per sekund | Avvisad med 409 om övertagandet startades i ledarläge |
Tygelmässan tillämpas server-sida, inte i gränssnittet, eftersom en felstavad delta på en busservomotor-arm är en kollision. Tangentbordskorrigeringar kommer stegvis och något grova; reglagekorrigeringar är slätare, eftersom servern går mot målet medan gränssnittet fortsätter strömma. Hur som helst mottar åtgärdskolumnen den fullständiga beordrade positionsvektorn och interventionsmarkeringen är identisk med ledarvägen, så tangentbordskorrigeringar hamnar i samma datamängd utan en formatskillnad.
Q / A joint 1 R / F joint 4
W / S joint 2 T / G joint 5
E / D joint 3 Z / X gripper
När man ska trycka knappen
Tidigare snarare än senare. En korrektion som börjar efter det att grepparen stängts på ingenting lär återställning från ett misslyckande policyn inte borde ha angett, och återställningsdata är långt värd mindre än undvikningsdata. Avbryt i det första ögonblicket du är säker på att banan är fel, korrigera genom den svåra delen, överlämna så fort tillståndet är ett som policyn hanterade tidigare. ThriftyDAgger automatiserar det beslutet genom att grindar interventioner på nyhet och uppskattat risker under en fast människobudget, men på en enskild arm med en människa redan som tittar, är människogrinningen billigare och bättre kalibrerad än allt du kommer att justera.
Möjligt med stacken med öppen källkod och ett par skript. Vad det kostar är bokföring, och bokföring är där DAgger-rundor dör.
- Skriv bildrutor från ditt eget inferences-skript till en LeRobot datamängd, med uppgiftssträngen policyn tränade på.
- Pausera policyloopen, byt kommandokälla och flagga varje bildram du kör som en intervention. Utan flaggan liknar korrigeringar vanliga demonstrationer.
- Bestäm medvetet vad som händer med övergångsramarna mellan policyn som släpper kontrollen och din första inmatning.
- Håll korrigeringar i sin egen datamängd per policy, och spåra episodindekser för hand så att blandningen kan rekonstrueras.
- Peka finjusteringsingstgångspunkten mot den tidigare checkpointen, och kontrollera i loggen att den laddade dessa vikter.
De samma sex stegen finns som knappar. Vad som är automatiserat är det som är lätt att få fel för hand: per-ram interventionsflaggan, uppdelningen mellan korrigeringar och utvärderingar, och registreringen av vilken checkpoint som producerade vilken blandning. Ingenting anger en sammansatt datamängd som du inte valde.
Det bestämmer inte för dig. Vilken körning räknas som en korrektion, vilka episoder som går in i blandningen och när interventionsfrekvensen har slutat att falla förblir bedömningssamtal. Fälten är dokumenterade under träning, inläggen under teleoperation.
Steg 3 i detalj: triage avgör kvaliteten
Efter körningen har du en inspelning med några bildrutor märkta som interventioner. Tre destinationer finns, och den felaktiga tyst förgiftar nästa runda.
- Registrera som korrektion när interventionen var en verklig fix: policyn var på väg någonstans fel och din inmatning visade det rätta från ett tillstånd policyn själv producerade.
- Behåll som utvärdering för rena autonoma körningar och för körningar du tog över av försiktighet. Utvärderingsepisoder är hur du mäter nästa checkpoint, och de får aldrig tränas på.
- Kassera körningar förstörda av något icke relaterat - en tappningarambildruta, en stucken servo, ett objekt du knockade över. En rörig korrektion är värre än ingen korrektion.
Mellan policyn som släpper kontrollen och din första inmatning, håller armen stilla medan inspelaren fortsätter skriva - en körning av identiska positioner parad med något olika bilder. Här dessa överkörningsbildrutor stannar i den rå inspelningen och ut ur korrektionsdatamängden. Om du bygger loopen själv, skär dem medvetet: en policy tränad på dem lär sig att pausa där den borde agera.
Steg 5 i detalj: komponera blandningen
Komposition tar den ursprungliga datamängden plus korrektionsdatamängden och producerar en ny, vanlig LeRobot datamängd som tränar som någon annan. Den viktiga egenskapen är att episodvalet är uttryckligt per källa - ingenting blandas in automatiskt. Det låter mindre viktigt tills första gången en policy beter sig konstigt och du måste rekonstruera vad den tränade på.
Den öppna frågan är förhållandet, och ingen har ett nummer som överför. Vad litteraturen är överens om är att korrigeringar bör räkna för mer än deras ramandel. Mandlekar et al. tränar iterativt på data sitt interventionssystem samlar in, så policyn lär sig att korsa flaskhalsarna, och rapporterar att agenter tränade på det sättet överträffar agenter tränade på ett motsvarande antal prover från icke-interventionella demonstranter. Sirius går längre och viktar om träningsprover genom approximerad människotillit, rapporterar en 8 procents vinst i simulering och 27 procent på verklig maskinvara i policy-framgångsfrekvens mot metoderna den jämför med, vid två gånger konvergenshastigheten. Ingen av träningsinläggen här exponerar ett viktknappar för urval, så det grova substitut är att behålla varje korrektionsepisod medan undersampling av de ursprungliga demonstrationerna - och att skriva ner vad du gjorde.

Steg 6 i detalj: vad fortsätta från en checkpoint verkligen betyder
Träna blandningen från basmodellen fungerar men kaster bort den tidigare rundan och kostar en full körning. Fortsätta från den tidigare checkpoint är snabbare och vanligtvis bättre. Det är också mer begränsat än frasen föreslår.
En vikter-bara checkpoint innehåller parametrarna och ingenting annat. Att ladda den ger nästa körning en bättre utgångspunkt än basmodellen, men optimizermoment, inlärningskursposition och dataordning börjar alla från noll. Förvänta en förlusspik i början av den fortsatta körningen, läs det inte som ett misslyckande, och anropa inte rundan en résumé. Det är en varm start.
| Policy | Storlek | GPU-nivå | Interferens per handlingsteg | Dataformat | Episoder innan det är värt att försöka |
|---|---|---|---|---|---|
| GR00T N1.7 | ungefär 3 B, ungefär 40 M tränade under finjustering | A100 80 GB eller H100 80 GB | ungefär 152 ms | LeRobot v2.0 eller v2.1 | 50 |
| GR00T N1.5 | ungefär 3 B | A100 80 GB eller H100 80 GB | ungefär 165 ms | LeRobot v2.0 eller v2.1 | 50 |
| Pi0.5 | ungefär 3 B på en PaliGemma-rygg | A100 80 GB eller H100 80 GB | ungefär 485 ms | LeRobot v3.0 | 50 |
| SmolVLA | ungefär 450 M | RTX 4090 eller valfri 24 GB-kort | ungefär 245 ms | LeRobot v3.0 | 30 |
| ACT | ungefär 80 M, tränad från början | RTX 4090 eller valfri 24 GB-kort | ungefär 20 ms | LeRobot v3.0 | 50 |
Latensen förstärks inuti en DAgger-loop på ett sätt som den inte gör under en demo: vid ungefär 485 ms per handlingsteg tar du över för att armen tvekade, inte för att det var fel, och tvekande-korrigeringar är inte användbara träningsdata. Om du upprepar data snarare än jagar en slutgiltigt framgångsfrekvens, upprepa med en snabb modell. Shukor et al. beskriver SmolVLA som utformad för att träna på en enskild GPU och distribuera på konsument-GPU eller CPU, med en asynkron interferensstacka som frikopplar handlingsförutsägelse från genomförande för att möjliggöra högre kontrollfrekvenser - egenskapen som håller en övertagningsloop responsiv.
Dataformaten är inte utbytbara heller. GR00T tar LeRobot v2.0 eller v2.1, och Isaac-GR00T-förvaringsplatsen beskriver sin indata som en smak av LeRobot v2-format med en tillagd modalitets-beskrivningsfil; de nyare tränarna här förväntar v3.0. En blandning sammansatt i fel version misslyckas vid lastid snarare än att producera en dålig policy - det bättre misslyckande, fortfarande en spilld köplats. dataset dokumentation listar vilket format varje tränare tar.
Loopen, med bokföringen redan gjord
Överta med en leader-arm, tangentbord eller reglage; per-ram interventionsmärkning; arkivering av körningar som korrigeringar eller utvärderingar; komponera en blandad datamängd med ett uttryckligt episodval per källa; och fortsätt träning från en checkpoint istället för basmodellen. Vad som förblir ditt beslut är vilken körning som räknas som en korrektion, vad som går in i blandningen och när interventionsfrekvensen har slutat att falla.
Se hur DAgger-loopen är kabellagdFyra sätt att slösa en runda
1. Träna bara på korrigeringarna
Det vanligaste misslyckandet och den mest frestande genvägen. En korrektion-bara datamängd är nästan helt den svåra mitten av uppgiften, med närma och reträtt saknas; policyn blir bättre på den hårda delen och glömmer hur man anländer dit. Aggregering är inte en implementeringsdetalj i metoden, det är mekanismen: de gamla data är vad som håller resten av beteendet på plats medan korrigeringarna flyttar en del av det.
2. Flytta en kamera mellan rundor
En kamera som skiftar två centimeter mellan rundor producerar en policy värre än den du började med, och en diagnos som kostar en dag. Varje VLA här villkor på bilder; ledtillståndet enbart disambiguerar inte var objektet är. Fotografera inställningen före första rundan och kontrollera det fotografiet före varje senare.
3. Låta överlämnandeartefakter in i träning
Täckt ovan, och på listan för att det är osynligt. Symptomet är en policy som stannar i en bråkdel av en sekund exakt där tidigare rundas operatör tog över. Det ser ut som tveksamhet; det är imitation.
4. Kallar en varm start en résumé
Om du tror optimizerstat överfördes, läser den första förlusspiken som en bugg och du går jagt på korrupt data. Om du vet optimizern startade frisk, är spiken förväntad och du tittar på vad som kommer efter det. Samma siffror, motsatta slutsatser.
Mäta rundan
Måttet för en human-gated loop är interventionsfrekvensen: bildrutor spelades in medan du var i kontroll, dividerat med totala bildrutor av körningen. Det är i övertagandestatusen, och det är det enda numret som svarar på frågan rundan ställde. Träningsförlusten faller oavsett om policyn förbättrades; framgångsfrekvensen är binär och bullrig vid de provstorlekar ett skrivbord arm producerar. Interventionsfrekvensen är kontinuerlig, mätt på de tillstånd policyn själv orsakade, och den sjunker när policyn behöver dig mindre.
Jämför det bara över körningar spelade in under identiska förhållanden. Fullständiga argumenten, och hur man bygger en utvärderingssätt som överlever mer än två rundor, finns i artikeln om att mäta en DAgger-loop. Runda ett är realistiskt ett genomförande test: du kontrollerar att övertagandet fungerar på din maskinvara, att korrigeringar landar med sina flaggor, och att den fortsatta körningen laddade checkpointen du namngivna. Rundor två och tre är där hastigheten bör börja röra sig. Om den inte har rört sig i runda fyra är problemet uppströms i DAgger.
| Skriv ner per runda | Varför det spelar senare |
|---|---|
| Checkpoint som kördes | Utan det kan du inte attribuera en förbättring till en blandning |
| Indataläge som användes för övertagandet | Tangentbordskorrigeringar är grövre än ledarkorrigeringar, och det syns i data |
| Antal körningar och hur varje var sorterad | Om rundan hade tillräckligt med korrigeringar för att spela roll |
| Interventionsfrekvens per körning, och medelvärdet | Framstegsåtgärden i loopen |
| Exakt episodval per källa | Det enda sättet att återge eller ångra en runda |
| Varm start eller ny träning | Förklarar förlustkurvan du kommer att titta på om en vecka |
Om du inte har en checkpoint än
Loopen har ingen ingångspunkt utan en sådan. Spela in en första datamängd, träna en första policy, kör den - inspelning, träning och kör policyn täcker det vägen. Inspelningsklienten är på nedladdningssidan, GPU-nivåer och timpriser på prissidan, och vad en använd episod ser ut i SO-100 datainsamlingsguide. Få demonstrationerna rätt före korrigeringarna: DAgger är en reparationsmekanisk, och det fungerar mycket bättre på något som redan var nästan rätt.
Kan jag köra en DAgger-loop utan en leader-arm?▾
Ja. Välj tangentbords- eller reglageindatning när du trycker Ta över: övertagandet är omedelbar och manuell, utan andra arm att justera. Tangentbord skickar relativa knuffsteg som servern håller hårt vid 2 grader per led och 4 för grepparen; reglage skickar ett absolut mål och servern rör högst 6 grader mot det per anrop, medan gränssnittet fortsätter strömma. Åtgärdkolumn och interventionsmärkning är densamma som i ledarläge, så korrigeringarna är omöjliga att skilja i datamängden.
Hur många korrigeringar behöver en runda?▾
Det finns inget försvarbart universellt antal, och ramantal spelar större roll än episodantal. Arbetsregeln är att korrigeringarna inte får gå förlorad i blandningen: med 200 ursprungliga episoder och tre korrektionsepisoder kommer ingenting att röra sig. Syfta på korrigeringar som täcker det misslyckat beteende från flera startningskonfigurationer snarare än tre upprepningar av samma räddning.
Varför är det en så dålig idé att träna bara på korrigeringar?▾
För att korrigeringar är nästan helt den svåra mitten av uppgiften. Närma, justering och reträtt saknas, så policyn förlorar det som den redan gjorde väl medan den förbättras i den delen du fixade. Att hålla de gamla data och lägga till det är själva mekanismen, inte en valfri extra.
Fortsätter från en checkpoint återuppta den tidigare träningskörningen?▾
Nej. En vikter-bara checkpoint återställer parametrar och ingenting annat: optimizermoment, inlärningskursposition och dataordning börjar friska. Det är en varm start, och en initial förlusspik är förväntad snarare än ett symptom. Skriv ner vilken av de två du faktiskt gjorde, så du läser kurvan rätt en vecka senare.
Vad om interventionsfrekvensen inte faller?▾
Sluta lägga till rundor. En platt hastighet betyder att korrigeringarna inte undervisar vad du tror. De vanliga orsakerna är uppströms: en kamera rördes, korrigeringarna börjar för sent för att vara undvikningsdata, överlämnadebildrutor är i träningssatsen, eller uppgiften är underbestämd från observationerna policyn faktiskt får.
Ingenting av detta är ett löst problem och ingenting av det är ett klick. Interaktiv imitationsinlärning är ett aktivt forskningsområde helt för att dess frågor - när man ska ingripa, hur man väger det människan gjorde, hur mycket gamla data man ska behålla - har ingen lösta svar; enkäten av Celemin et al. kartlägger vad som fortfarande är öppet. Vad loopen har är mätbar konvergens när den körs försiktigt, på maskinvara som kostar några hundra euro. Frys inställningen, ingrip tidigt, sortera ärligt, komponera medvetet och registrera interventionsfrekvensen varje gång.
Sources
- Ross, Gordon, Bagnell (AISTATS 2011): A Reduction of Imitation Learning and Structured Prediction to No-Regret Online Learning
- Kelly, Sidrane, Driggs-Campbell, Kochenderfer (2019): HG-DAgger - Interactive Imitation Learning with Human Experts
- Mandlekar et al. (2020): Human-in-the-Loop Imitation Learning using Remote Teleoperation
- Liu, Nasiriany, Zhang, Bao, Zhu (2022): Robot Learning on the Job - Human-in-the-Loop Autonomy and Learning During Deployment (Sirius)
- Hoque et al. (2021): ThriftyDAgger - Budget-Aware Novelty and Risk Gating for Interactive Imitation Learning
- Celemin et al. (2022): Interactive Imitation Learning in Robotics - A Survey
- Belkhale, Cui, Sadigh (2023): Data Quality in Imitation Learning
- Hsu et al. (2022): Vision-Based Manipulators Need to Also See from Their Hands
- Zhao et al. (2023): Learning Fine-Grained Bimanual Manipulation with Low-Cost Hardware (ACT / ALOHA)
- Black et al. (2024): Pi0 - A Vision-Language-Action Flow Model for General Robot Control
- Bjorck et al. (2025): GR00T N1 - An Open Foundation Model for Generalist Humanoid Robots
- Shukor et al. (2025): SmolVLA - A Vision-Language-Action Model for Affordable and Efficient Robotics
- LeRobot documentation (Hugging Face)
- NVIDIA Isaac-GR00T repository
Ready for high-quality robotics data?
AY-Robots connects your robots to skilled operators worldwide.
Get Started