
Um relato passo a passo de uma rodada de DAgger com controle humano em um braço SO-100: execute a política e grave-a, assuma o controle quando der errado, arquive a execução como uma correção, componha um conjunto de dados misto e continue o treinamento a partir de um ponto de controle. Inclui o caminho de takeover por teclado e sliders para pessoas sem um braço líder, e os quatro erros que tornam uma rodada inútil.
Sua política é executada. Ela alcança o cubo, fecha o grifo um centímetro muito cedo e continua como se o tivesse. Nada gera erro, e nenhuma quantidade de observação da perda de treinamento explica. A solução não é outros 20 000 passos de gradiente nas mesmas demonstrações. É colocar sua mão de volta no braço exatamente onde erra, gravar o que você fez em vez disso, e treinar o próximo ponto de controle nos dados antigos mais essa correção. Essa é uma rodada de DAgger, e é assim que uma é executada em um SO-100 com uma política de visão-linguagem-ação.
A teoria está em outro lugar: por que a agregação de conjunto de dados funciona e o que o controle humano muda. Este é o manual de operação, e assume um ponto de controle treinado, um conjunto de câmeras funcionando e um braço que se move. Os seis passos abaixo são o loop conforme implementado em a página DAgger desta plataforma, mas a sequência é a mesma a partir de seus próprios scripts.
Uma rodada em resumo
- •Execute a política treinada e grave-a, com o texto da tarefa da execução em vez de um rótulo de teleoperação genérico.
- •Assuma o controle no momento em que o comportamento erra: uma transferência de espelho com um braço líder, imediata e manual por teclado ou sliders sem um.
- •Analise cada execução: arquive-a como uma correção, mantenha-a como um episódio de avaliação ou descarte-a.
- •Componha a mistura manualmente - demonstrações originais mais correções, episódios escolhidos por fonte. Nunca treine apenas em correções.
- •Continue o treinamento a partir do último ponto de controle e anote qual ponto de controle produziu qual mistura.
- •O número que diz se a rodada valeu a pena é a taxa de intervenção, não a perda de treinamento.
Por que a segunda rodada não é apenas mais dados
O aprendizado por imitação treina nos estados que um humano visitou. No tempo de teste, a política visita os estados que causa, e pequenos erros de ação se acumulam em estados que nenhuma demonstração cobriu. Ross, Gordon e Bagnell formalizaram essa falha para AISTATS 2011 e responderam com um algoritmo iterativo que treina uma política determinística estacionária e, sob sua redução, deve executar bem sob a distribuição de estado que induz: execute a política atual, faça um especialista rotular os estados que realmente alcançou, adicione-os ao conjunto de dados, retreine, repita. Kelly et al. tornaram a consulta prática com HG-DAgger, onde o humano decide quando assumir o controle em vez de rotular estados sem manter os controles; eles relatam desempenho melhorado sobre DAgger e aprendizado por imitação em uma tarefa de direção autônoma simulada e real. O controle humano é o que torna o loop tolerável em um braço de mesa - você só move as mãos quando algo está errado.
Duas consequências importam mais na prática do que a teoria. Correções não são demonstrações ordinárias: concentram-se nas regiões de gargalo que Mandlekar et al. descrevem, onde um pequeno desvio coloca a política em estados que nenhuma demonstração cobriu. E um conjunto de dados feito apenas dessas partes difíceis é um conjunto de dados mal formado - Belkhale, Cui e Sadigh argumentam do lado dos dados que a diversidade de estado nem sempre é benéfica, e que divergência de ação e diversidade de transição juntas decidem a qualidade do conjunto de dados. O conjunto de dados misto não é um compromisso, é o ponto.
Congele estes antes da rodada um
Uma rodada de DAgger compara uma política contra si mesma ao longo do tempo. Qualquer coisa que você mude entre rodadas que não seja o conjunto de dados torna essa comparação sem sentido.
- Posições e montes de câmera, incluindo câmera de pulso. Solte um clipe e você mudou a distribuição de observação, não a política.
- Exposição e balanço de branco, se sua pilha de captura deixar você fixá-los. A exposição automática variando entre rodadas é uma mudança de domínio lenta e invisível.
- Calibração do braço e posições zero do servo. Se você deve recalibrar, trate tudo gravado antes disso como um conjunto de dados separado.
- O texto da tarefa. Cada VLA aqui se condiciona a isso; reformular no meio do loop é uma tarefa diferente.
- Iluminação, superfície da mesa, conjunto de objetos. Um novo objeto é um novo experimento, não a próxima rodada.
- A taxa de fotogramas de gravação. Comparar taxas de intervenção em duas grades de amostragem produz diferenças que vêm da grade.
Hsu et al. compararam uma visão centrada na mão contra a visão usual em terceira pessoa e descobriram que a perspectiva do olho em mão melhorou consistentemente a eficiência de treinamento e generalização fora da distribuição, apesar de ver menos da cena. Em um braço de cinco articulações, o tempo do grifo é geralmente o que suas correções estão consertando, e o tempo do grifo é o que a visão do pulso carrega.
A rodada, de ponta a ponta
- 1Execute a inferência e grave-a
Inicie a execução contra o ponto de controle que você deseja melhorar e inicie a gravação na raiz de inferência. Gravado dessa forma, herda o texto de tarefa próprio da execução, que é o que a política foi treinada, em vez do rótulo de teleoperação padrão. Sem a gravação você pode observar a falha, mas não treinar com ela.
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 - 2Assuma o controle quando der errado
Pressione Assumir o controle e escolha o modo de entrada: braço líder, teclado ou sliders. O executor pausa, você corrige, você devolve. Os fotogramas gravados enquanto você estava dirigindo são marcados como intervenções automaticamente.
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 - 3Analise os episódios
Decida por episódio: arquive como correção, mantenha como avaliação ou descarte. Uma execução que a política completou sem ajuda é dados de avaliação.
- 4Sincronize o conjunto de dados de correção
As correções se acumulam em um conjunto de dados local por política e vão para armazenamento em nuvem através da sincronização automática. Nada é misturado naquilo que você não colocou.
- 5Componha o conjunto de dados misto
Combine o conjunto de dados original com o conjunto de dados de correção, escolhendo episódios explicitamente por fonte. O resultado é um conjunto de dados comum desse ponto em diante.
bashPOST /training/datasets/compose sources = [ original_dataset, korrekturen_<policy> ] episodes = explicit selection per source - 6Continue o treinamento a partir do ponto de controle
Treine a mistura a partir do ponto de controle anterior em vez do modelo base. Anote qual ponto de controle e qual mistura; sem esse par a rodada não é reproduzível.
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
Passo 2 em detalhe: os dois modos de assumir o controle
Com um braço líder
Em modo líder-seguidor a transferência é uma transferência entre dois braços que não estão na mesma postura. Pressionar Assumir o controle pausa o executor e coloca o líder na postura atual do seguidor, para que nada pule quando o torque é transferido. Se essa unidade de alinhamento expirar, você alinha o líder manualmente e só libera quando os dois estão a cinco graus de distância. De lá você teleópera normalmente e a coluna de ação registra o que você comandou.
Seja honesto sobre este caminho: a unidade de alinhamento e a transferência de torque são a parte menos testada do loop no hardware real. Teste a transferência em uma postura lenta e inofensiva antes de confiar nela em uma execução que você se importa. Um braço líder produz as correções mais suaves dos três modos, e também tem o máximo que pode dar errado mecanicamente.
Sem um braço líder: teclado e sliders
A maioria das pessoas lendo isto possui um braço. Isso é o suficiente. Escolha entrada por teclado ou slider no momento em que pressionar Assumir o controle, e a transferência é imediata e manual - não há segundo braço para alinhar, então não há etapa de alinhamento. O seguidor mantém sua postura e aguarda entrada.
| Modo de entrada | Como o braço se move | Limite por chamada executado pelo servidor | Bloqueado quando |
|---|---|---|---|
| Braço líder | O espelho conduz o seguidor a partir dos ângulos articulares do líder | Sem chamadas de nudge ou set neste modo; o espelho escreve metas de seguidor continuamente | Nunca bloqueado, e o padrão se nenhum modo de entrada for fornecido - mas precisa de um segundo braço; sem uma id de líder a transferência é recusada |
| Teclado | Nudge relativo por pressionamento de tecla, enviado para o ponto de extremidade de nudge de transferência | Limite rígido de 2 graus por articulação, 4 graus para o grifo | Rejeitado com 409 se a transferência foi iniciada em modo de líder |
| Sliders | Postura alvo absoluta, enviada para o ponto de extremidade de set de transferência | No máximo 6 graus de deslocamento em direção ao alvo por chamada; a interface continua enviando cerca de dez vezes por segundo | Rejeitado com 409 se a transferência foi iniciada em modo de líder |
Os limites são executados no lado do servidor, não na interface, porque um delta digitado incorretamente em um braço com servo de barramento é uma colisão. As correções de teclado saem de forma escalonada e um pouco grosseiras; as correções do slider são mais suaves, porque o servidor caminha em direção ao alvo enquanto a interface continua transmitindo. De qualquer forma, a coluna de ação recebe o vetor de postura comandado completo e a marcação de intervenção é idêntica ao caminho do líder, para que as correções de teclado caiam no mesmo conjunto de dados sem uma diferença de formato.
Q / A joint 1 R / F joint 4
W / S joint 2 T / G joint 5
E / D joint 3 Z / X gripper
Quando pressionar o botão
Mais cedo do que mais tarde. Uma correção que começa depois que o grifo se fechou em nada ensina recuperação de uma falha que a política não deveria ter entrado, e dados de recuperação valem muito menos que dados de prevenção. Interrompa no primeiro momento em que você está confiante de que a trajetória está errada, corrija através da parte difícil, devolva assim que o estado for um que a política tratou antes. ThriftyDAgger automatiza essa decisão portalizando intervenções em novidade e risco estimado sob um orçamento humano fixo, mas em um único braço com um humano já observando, o portão humano é mais barato e melhor calibrado do que qualquer coisa que você sintonizará.
Viável com a pilha de código aberto e alguns scripts. O que custa é a escrituração, e a escrituração é onde as rodadas de DAgger morrem.
- Escreva fotogramas do seu próprio script de inferência em um conjunto de dados LeRobot, com a string de tarefa na qual a política foi treinada.
- Pause o loop de política, mude a fonte de comando e sinalize cada fotograma que você dirige como uma intervenção. Sem a sinalização, as correções parecem demonstrações ordinárias.
- Decida deliberadamente o que acontece aos fotogramas de transição entre a política liberando o controle e sua primeira entrada.
- Mantenha as correções em seu próprio conjunto de dados por política e acompanhe os índices de episódio manualmente para que a mistura possa ser reconstruída.
- Aponte o ponto de entrada de ajuste fino para o ponto de controle anterior e verifique no log que ele carregou esses pesos.
Os mesmos seis passos existem como botões. O que é automatizado é o que é fácil de errar manualmente: a sinalização de intervenção por fotograma, a divisão entre correções e avaliações e o registro de qual ponto de controle produziu qual mistura. Nada entra em um conjunto de dados composto que você não selecionou.
Não decide por você. Qual execução conta como uma correção, quais episódios vão para a mistura e quando a taxa de intervenção parou de cair permanecem julgamentos. Os campos são documentados em treinamento, os modos de entrada em teleoperação.
Passo 3 em detalhe: a triagem decide a qualidade
Após a execução você tem uma gravação com alguns fotogramas marcados como intervenções. Três destinos existem, e o errado envenena silenciosamente a próxima rodada.
- Arquive como correção quando a intervenção foi uma correção genuína: a política estava indo para algum lugar errado e sua entrada mostrou a coisa certa de um estado que a própria política produziu.
- Mantenha como avaliação para execuções autônomas limpas e para execuções nas quais você assumiu o controle por precaução. Episódios de avaliação são como você mede o próximo ponto de controle, e eles nunca devem ser treinados.
- Descarte execuções arruinadas por algo não relacionado - um fotograma de câmera caiu, um servo parou, um objeto que você derrubou. Uma correção bagunçada é pior do que nenhuma correção.
Entre a política liberando o controle e sua primeira entrada, o braço fica parado enquanto o gravador continua escrevendo - uma série de posturas idênticas emparelhadas com imagens ligeiramente diferentes. Aqui esses fotogramas de transferência ficam na gravação bruta e fora do conjunto de dados de correção. Se você construir o loop você mesmo, corte-os deliberadamente: uma política treinada neles aprende a fazer uma pausa onde deveria agir.
Passo 5 em detalhe: compondo a mistura
A composição leva o conjunto de dados original mais o conjunto de dados de correção e produz um novo e comum conjunto de dados LeRobot que treina como qualquer outro. A propriedade importante é que a seleção de episódio é explícita por fonte - nada é mesclado automaticamente. Parece menor até a primeira vez que uma política se comporta estranhamente e você tem que reconstruir no que foi treinada.
A questão aberta é a proporção, e ninguém tem um número que se transfere. O que a literatura concorda é que as correções devem contar por mais do que sua fração de fotograma. Mandlekar et al. retreinam iterativamente nos dados que seu sistema de intervenção coleta, para que a política aprenda a percorrer os gargalos, e relatam que agentes treinados dessa forma superam agentes treinados em um número equivalente de amostras de demonstradores não-intervencionistas. Sirius vai mais longe e repondera amostras de treinamento por confiança humana aproximada, relatando um ganho de 8% em simulação e 27% em hardware real na taxa de sucesso da política contra os métodos com os quais compara, em duas vezes a velocidade de convergência. Nenhum dos pontos de entrada de treinamento aqui expõe um botão de reponderação de amostra, então o substituto bruto é manter cada episódio de correção enquanto subamostragem das demonstrações originais - e escrever o que você fez.

Passo 6 em detalhe: o que continuar a partir de um ponto de controle realmente significa
Treinar a mistura a partir do modelo base funciona, mas joga fora a rodada anterior e custa uma execução completa. Continuar a partir do ponto de controle anterior é mais rápido e geralmente melhor. É também mais limitado do que a frase sugere.
Um ponto de controle apenas de pesos contém os parâmetros e nada mais. Carregá-lo dá à próxima execução um ponto de partida melhor do que o modelo base, mas momentos do otimizador, posição do cronograma de taxa de aprendizado e ordem de dados começam do zero. Espere um pico de perda no início da execução continuada, não o leia como uma falha, e não chame a rodada de retomada. É um início quente.
| Política | Tamanho | Nível de GPU | Inferência por etapa de ação | Formato de conjunto de dados | Episódios antes de valer a pena tentar |
|---|---|---|---|---|---|
| GR00T N1.7 | cerca de 3 B, aproximadamente 40 M treinado durante o ajuste fino | A100 80 GB ou H100 80 GB | cerca de 152 ms | LeRobot v2.0 ou v2.1 | 50 |
| GR00T N1.5 | cerca de 3 B | A100 80 GB ou H100 80 GB | cerca de 165 ms | LeRobot v2.0 ou v2.1 | 50 |
| Pi0.5 | cerca de 3 B em um backbone PaliGemma | A100 80 GB ou H100 80 GB | cerca de 485 ms | LeRobot v3.0 | 50 |
| SmolVLA | cerca de 450 M | RTX 4090 ou qualquer placa de 24 GB | cerca de 245 ms | LeRobot v3.0 | 30 |
| ACT | cerca de 80 M, treinado do zero | RTX 4090 ou qualquer placa de 24 GB | cerca de 20 ms | LeRobot v3.0 | 50 |
A latência se acumula dentro de um loop de DAgger de uma forma que não o faz durante uma demonstração: em cerca de 485 ms por etapa de ação você assume o controle porque o braço hesitou, não porque estava errado, e dados de correção de hesitação não valem muito para treinamento. Se você está iterando em dados em vez de perseguir uma taxa de sucesso final, itere em um modelo rápido. Shukor et al. descrevem SmolVLA como projetada para treinar em uma única GPU e implantar em GPUs de consumidor ou CPUs, com uma pilha de inferência assíncrona que desacopla a previsão de ação da execução para permitir taxas de controle mais altas - a propriedade que mantém um loop de transferência responsivo.
Os formatos de conjunto de dados não são intercambiáveis. GR00T leva LeRobot v2.0 ou v2.1, e o repositório Isaac-GR00T descreve sua entrada como um sabor do formato LeRobot v2 com um arquivo de descrição de modalidade adicionado; os treinadores mais novos aqui esperam v3.0. Uma mistura composta na versão errada falha no tempo de carregamento em vez de produzir uma política ruim - o modo de falha melhor, ainda um slot de fila perdido. O documentação do conjunto de dados lista qual formato cada treinador leva.
O loop, com a escrituração já feita
Transferência com um braço líder, teclado ou sliders; marcação de intervenção por fotograma; arquivamento de execuções como correções ou avaliações; composição de um conjunto de dados misto com uma seleção de episódio explícita por fonte; e continuação do treinamento a partir de um ponto de controle em vez do modelo base. O que permanece sua decisão é qual execução conta como uma correção, o que vai para a mistura e quando a taxa de intervenção parou de cair.
Veja como o loop de DAgger é conectadoQuatro maneiras de desperdiçar uma rodada
1. Treinando apenas nas correções
A falha mais comum e o atalho mais tentador. Um conjunto de dados apenas de correção é quase inteiramente o meio difícil da tarefa, com abordagem e recuo ausentes; a política fica melhor na parte difícil e esquece como chegar lá. Agregação não é um detalhe de implementação do método, é o mecanismo: os dados antigos são o que mantém o resto do comportamento no lugar enquanto as correções movem uma parte.
2. Movendo uma câmera entre rodadas
Uma câmera que se desloca dois centímetros entre rodadas produz uma política pior do que aquela com a qual começou, e um diagnóstico que custa um dia. Cada VLA aqui se condiciona em imagens; apenas o estado articular não desambigua onde o objeto está. Fotografe a configuração antes da primeira rodada e verifique essa fotografia antes de cada uma posterior.
3. Deixando artefatos de transferência no treinamento
Coberto acima, e na lista porque é invisível. O sintoma é uma política que fica inativa por uma fração de segundo exatamente onde o operador da rodada anterior assumiu o controle. Parece hesitação; é imitação.
4. Chamando um início quente de retomada
Se você acredita que o estado do otimizador se transferiu, o pico de perda inicial se lê como um bug e você vai procurando por dados corrompidos. Se você sabe que o otimizador começou do zero, o pico é esperado e você olha para o que vem depois. Mesmos números, conclusões opostas.
Medindo a rodada
A métrica para um loop com controle humano é a taxa de intervenção: fotogramas gravados enquanto você estava no controle, dividido por fotogramas totais da execução. Está no status de transferência, e é o único número que responde a pergunta que a rodada fez. A perda de treinamento cai se a política melhorou ou não; a taxa de sucesso é binária e barulhenta nos tamanhos de amostra que um braço de mesa produz. A taxa de intervenção é contínua, medida nos estados que a própria política causou, e cai conforme a política precisa menos de você.
Compare-a apenas em execuções gravadas sob condições idênticas. O argumento completo, e como construir um conjunto de avaliação que sobrevive a mais de duas rodadas, está em o artigo sobre medir um loop de DAgger. A rodada um é realisticamente um teste de viabilidade: você está verificando que a transferência funciona em seu hardware, que as correções chegam com suas sinalizações e que a execução continuada carregou o ponto de controle que você nomeou. As rodadas dois e três são onde a taxa deveria começar a se mover. Se não se moveu na rodada quatro, o problema está a montante de DAgger.
| Escreva por rodada | Por que importa depois |
|---|---|
| Ponto de controle que foi conduzido | Sem ele você não pode atribuir uma melhoria a uma mistura |
| Modo de entrada usado para a transferência | As correções de teclado são mais grosseiras do que as correções de líder, e mostra nos dados |
| Número de execuções e como cada uma foi analisada | Se a rodada teve correções suficientes para importar |
| Taxa de intervenção por execução, e a média | A métrica de progresso do loop |
| Seleção exata de episódio por fonte | A única forma de reproduzir ou desfazer uma rodada |
| Início quente ou treinamento fresco | Explica a curva de perda que você olhará em uma semana |
Se você não tiver um ponto de controle ainda
O loop não tem ponto de entrada sem um. Grave um primeiro conjunto de dados, treine uma primeira política, execute-a - gravação, treinamento e executar a política cobrem esse caminho. O cliente de gravação está em a página de download, níveis de GPU e taxas horárias em a página de preços, e como um episódio utilizável se parece em guia de coleta de dados SO-100. Acerte as demonstrações antes das correções: DAgger é um mecanismo de reparo, e funciona muito melhor em algo que já estava quase certo.
Posso executar um loop de DAgger sem um braço líder?▾
Sim. Escolha entrada por teclado ou slider quando pressionar Assumir o controle: a transferência é imediata e manual, sem segundo braço para alinhar. O teclado envia nudges relativos que o servidor fixa rígido em 2 graus por articulação e 4 para o grifo; os sliders enviam um alvo absoluto e o servidor se move no máximo 6 graus em direção a ele por chamada, enquanto a interface continua transmitindo. A coluna de ação e a marcação de intervenção são as mesmas que no modo de líder, portanto as correções são indistinguíveis no conjunto de dados.
Quantas correções uma rodada precisa?▾
Não há número universal defensável, e a contagem de fotogramas importa mais do que a contagem de episódios. A regra de trabalho é que as correções não devem ser perdidas na mistura: com 200 episódios originais e três episódios de correção, nada se moverá. Procure por correções que cubram o comportamento de falha de várias configurações iniciais em vez de três repetições do mesmo resgate.
Por que treinar apenas em correções é uma ideia tão ruim?▾
Porque as correções são quase inteiramente o meio difícil da tarefa. Abordagem, alinhamento e recuo faltam, portanto a política perde o que já fazia bem enquanto melhora a parte que consertou. Manter os dados antigos e adicionar a eles é o mecanismo em si, não um extra opcional.
Continuar a partir de um ponto de controle retoma a execução de treinamento anterior?▾
Não. Um ponto de controle apenas de pesos restaura parâmetros e nada mais: momentos do otimizador, posição do cronograma de taxa de aprendizado e ordem de dados começam do novo. É um início quente, e um pico de perda inicial é esperado em vez de um sintoma. Escreva qual dos dois você realmente fez, para você ler a curva corretamente uma semana depois.
E se a taxa de intervenção não cair?▾
Pare de adicionar rodadas. Uma taxa plana significa que as correções não estão ensinando o que você pensa. As causas usuais estão a montante: uma câmera se moveu, as correções começam tarde demais para serem dados de prevenção, fotogramas de transferência estão no conjunto de treinamento, ou a tarefa é subdeterminada a partir das observações que a política realmente obtém.
Nada disso é um problema resolvido e nada disso é um clique. O aprendizado interativo por imitação é uma área de pesquisa ativa precisamente porque suas perguntas - quando intervir, como ponderar o que o humano fez, quanto dados antigos manter - não têm respostas liquidadas; a pesquisa de Celemin et al. mapeia o que ainda está aberto. O que o loop tem é convergência mensurável quando é executado cuidadosamente, em hardware que custa algumas centenas de euros. Congele a configuração, intervenha mais cedo, analise com honestidade, componha deliberadamente e registre a taxa de intervenção a cada vez.
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