
DROID, BridgeData V2 e Open X-Embodiment convertem para ações de efetuador final 7-D em braços de 6 e 7 GDL. Um SO-100 aceita 6 posições de junta. O que é transferível, o que não é, e o que fazer em vez disso.
A versão resumida
- •As compilações LeRobot de todos os três compartilham uma convenção: uma ação de efetor final 7-D [x, y, z, roll, pitch, yaw, gripper] e um estado 8-D com um slot de preenchimento. Um SO-100 aceita seis posições absolutas de junta.
- •Esse vetor 7-D é o artefato do conversor: o próprio campo de ação RLDS do DROID é de 6 velocidades de junta mais uma posição de garra, com a visão cartesiana em action_dict.
- •Quatro clocks: DROID 15 fps, BridgeData V2 5 fps, o slice google_robot 3 fps, uma gravação SO-100 a 30 fps.
- •Você não pode mesclá-los com seus próprios dados. validate_all_metadata levanta um erro no primeiro de fps, robot_type ou features que difere, e todos os três diferem.
- •O que é transferido são pesos pré-treinados, não episódios. Dados de código aberto representam 9.1 por cento da mistura de pré-treinamento do pi0.
- •Seu uso real mais barato é um dispositivo de teste: uma amostra DROID de 2 GB e 100 episódios, comprovadamente boa, que valida seu pipeline antes de você gravar por um fim de semana.
Existe um conjunto de dados público de um milhão de trajetórias em um bucket do Google Cloud e um na mesa que custou 110 a 150 EUR em peças. Por que o primeiro não pode ensinar o segundo? Em parte pode, mas quase nenhuma da transferência acontece onde as pessoas esperam, e a parte que parece mais fácil não funciona de forma alguma.
O que se segue: o que está dentro de , e , onde cada um colide com um braço 5-DoF de baixo custo, e o que fazer em vez disso. Cada número abaixo veio do artigo, cartão do conjunto de dados ou arquivo fonte ao qual pertence.
O que os três conjuntos de dados realmente contêm
| DROID | BridgeData V2 | Open X-Embodiment | |
|---|---|---|---|
| Robô | Franka Panda, 7 DoF, Robotiq 2F-85 | WidowX 250, 6 DoF, ~4,000 USD rig | 22 implementações, 60 conjuntos de dados, 34 laboratórios |
| Escala | 76k trajetórias, 350 horas | 60.096 trajetórias | Mais de 1M de trajetórias, 527 habilidades |
| Diversidade | 564 cenas, 84 tarefas, 50 coletores | 24 ambientes, 13 habilidades | 160.266 tarefas, 21 instituições |
| Composição | tudo teleoperado | 50.365 teleoperados, 9.731 roteirizados | por laboratório de origem |
| Taxa de controle | 15 Hz | 5 Hz | varia, 3 fps para cima |
| Câmeras | 2 x ZED 2 exterior, 1 x ZED Mini de pulso | até 4, a maioria dos episódios apenas a fixa | o que o laboratório usou |
| Download bruto | 1.7 TB RLDS, 8.7 TB estéreo bruto | Arquivos JPEG | buckets TFDS por conjunto de dados |
Poucas pessoas ainda baixam 1.7 TB de TFRecords RLDS. A organização comunitária IPEC-COMMUNITY republicou a maior parte do Open X-Embodiment no formato de conjunto de dados LeRobot com vídeo AV1, onde DROID ocupa 392 GB. Essa é a versão com a qual você trabalhará, e seu meta/info.json é o que deve ser lido primeiro.
DROID
O mais padronizado dos três. Um único equipamento em todos os lugares: um Franka Panda com uma garra Robotiq 2F-85, duas câmeras estéreo ZED 2 ajustáveis e uma ZED Mini de pulso, teleoperado com controladores Meta Quest 2, gravado via Polymetis a 15 Hz tanto no espaço articular quanto no efetor final espaço. Rótulos de linguagem vieram depois via tasq.ai, até três por episódio.
- 76k trajetórias, 350 horas, 564 cenas, 84 tarefas, 50 coletores em três continentes.
- O resultado principal é o co-treinamento, não o treinamento autônomo: lotes misturados 50/50 com demonstrações no domínio superam o próximo melhor método em 22 por cento de sucesso absoluto na distribuição, 17 por cento fora dela.
- IPEC-COMMUNITY/droid_lerobot: 92.233 episódios, 27.044.326 quadros, franka, 15 fps, codebase_version v2.0, três fluxos AV1 a 180x320, 392 GB.
- Uma amostra de depuração de 2 GB e 100 episódios está em gs://gresearch/robotics/droid_100. Comece por lá.
BridgeData V2
O mais próximo de uma configuração de hobby: um braço WidowX 250 de 6 GDL, 60.096 trajetórias em 24 ambientes e 13 habilidades a 5 Hz. Observe a composição: 50.365 demonstrações teleoperadas por especialistas mais 9.731 de uma política de pegar e colocar (pick-and-place) roteirizada e aleatória, portanto, cerca de 16 por cento não é demonstração humana, o que é importante para a aprendizagem por imitação qualidade. O download usual, IPEC-COMMUNITY/bridge_orig_lerobot, relata 53.192 episódios e 1.893.026 quadros a 5 fps, robot_type widowx: menos do que os 60.096 do artigo, então leia a contagem de meta/info.json em vez de citar qualquer um.
Open X-Embodiment
Não é um conjunto de dados no mesmo sentido: 60 conjuntos de dados de robôs existentes de 34 laboratórios agrupados em uma coleção RLDS cobrindo 22 implementações e mais de um milhão de trajetórias. BridgeData V2 está contido nela como bridge_orig; a fatia google_robot, fractal20220817_data, converte-se em 87.212 episódios a 3 fps.
O agrupamento apresenta uma ressalva que o artigo declara abertamente. Para os experimentos RT-X, os autores convertem cada fonte em uma ação de efetuador final de 7-DoF, mas não alinham os sistemas de coordenadas entre os conjuntos de dados e permitem que os valores de ação sejam posições ou velocidades absolutas ou relativas, de acordo com o esquema de controle original de cada robô. A conclusão deles: o mesmo vetor de ação pode induzir movimentos muito diferentes para robôs diferentes.

A incompatibilidade, em quatro partes
A incompatibilidade de incorporação é geralmente tratada como um problema vago. São quatro, falham de maneiras diferentes, e duas não são corrigíveis por script.
1. Graus de liberdade
Um SO-100 tem cinco articulações de braço mais uma garra. Contado como motores, é um braço de 6-DoF, e o artigo SmolVLA o chama assim; contado como um mecanismo de posicionamento, é de 5-DoF, e LeRobot o chama assim em sua docstring de cinemática inversa, que descreve IK de orientação suave no SO-101 de 5-DOF onde o pulso rastreia a orientação apenas parcialmente. Um Franka tem sete articulações de posicionamento. Essa lacuna decide quais poses existem: um braço de 5-DoF geralmente não consegue alcançar uma posição e orientação arbitrárias ao mesmo tempo, então o resolvedor retorna o mais próximo que pode, um movimento diferente do demonstrado. Contexto: graus de liberdade.
# 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-DPortanto, um checkpoint DROID pronto não é um atalho. A Physical Intelligence distribui pi05_droid em gs://openpi-assets/checkpoints/pi05_droid, e o mesmo README que elogia sua abrangência adverte que esses checkpoints especializados podem não se generalizar para sua configuração. Seu estado são oito números de junta Franka e suas chaves de imagem são exterior_image_1_left e wrist_image_left. Nenhuma flag transforma isso em um comando SO-100 de seis motores.
2. O que o vetor de ação realmente diz
Mais profundo que a dimensionalidade. Nas conversões LeRobot, todos os três indicam para onde a garra deve ir, no espaço cartesiano. Um SO-100 indica para onde seis servos devem ir. A conversão requer um modelo cinemático e um resolvedor, não um redimensionamento.
| Propriedade | OXE, DROID e Bridge no formato LeRobot | SO-100 no LeRobot |
|---|---|---|
| Vetor de ação | 7-D: x, y, z, roll, pitch, yaw, gripper | 6-D: uma posição alvo por motor |
| Vetor de estado | 8-D, com um slot de preenchimento (google_robot usa um quatérnio) | 6-D, um por motor |
| Referencial | Cartesiano, desalinhado entre conjuntos de dados | espaço de junta, calibração por braço |
| Absoluto ou relativo | ambos, decidido pelo laboratório de origem | posições alvo absolutas |
| Unidades | normalizado por conjunto de dados, depois discretizado | graus por padrão (use_degrees=True), caso contrário -100 a 100 |
| Falha silenciosa | um delta lido como um absoluto | um braço não calibrado |
O README do openx2lerobot documenta um estado unificado de 8 dimensões e uma ação de 7 dimensões para cada conjunto de dados que ele converte, que é de onde vem o slot `pad`. O próprio esquema RLDS do DROID difere: sua `action` de nível superior é um vetor de 7 *6 velocidades de junta mais 1 posição do gripper*, com `cartesian_position`, `cartesian_velocity`, `joint_position` e `joint_velocity` sob `action_dict`. openpi lê a visão do espaço de junta, a compilação do LeRobot entrega a cartesiana. Nenhuma delas são seis ângulos absolutos de servo.
LeRobot realmente fornece a peça que falta: o seguidor SO possui um processador de cinemática com as etapas InverseKinematicsEEToJoints e ForwardKinematicsJointsToEE. Suas chaves são ee.x, ee.y, ee.z mais um vetor de rotação ee.wx, ee.wy, ee.wz e ee.gripper_pos, então até mesmo a codificação de orientação difere do roll-pitch-yaw nos arquivos. A etapa IK leva um orientation_weight, padrão 0.01, cuja docstring diz para definir 0.0 para IK somente de posição em braços subatuados. Você pode construir a ponte, mas a metade de orientação de cada ação emprestada permanece aproximada.
3. Taxa de controle
DROID é 15 Hz, BridgeData V2 5 Hz, o segmento google_robot 3 fps; os autores de pi0 descrevem a parte de código aberto de sua mistura como controle de baixa frequência entre 2 e 10 Hz. O DatasetRecordConfig do LeRobot padroniza para fps 30, episode_time_s 60, reset_time_s 60, num_episodes 50. Uma treinada com dados de 5 Hz aprendeu que uma ação cobre 200 ms. Reproduza-a a 30 Hz e o braço rasteja; reamostre ingenuamente e você borra o quadro onde o gripper fecha. Também interage mal com : um agrupamento de 100 passos é 20 segundos a 5 Hz, 3.3 a 30 Hz.
4. Câmeras
BridgeData V2 randomizou duas poses de câmera a cada 50 trajetórias, e sua página de projeto observa que a maior parte dos dados carrega apenas a visão fixa de qualquer forma. DROID usou suportes ajustáveis ZED 2 mais um ZED Mini de pulso. Você tem duas webcams USB posicionadas a olho. A pose da câmera não é uma variável incômoda para um ; é muito do que o codificador visual se baseou, e nada no formato do arquivo indica que as poses diferem.
As peças se encaixam bem o suficiente para rodar. O conjunto de dados carrega, o treinamento começa, a perda diminui, os checkpoints aparecem, nada dá erro. Então a política não faz nada reconhecível no braço e você passa um dia caçando um bug no seu script de treinamento. Não há bug: o modelo aprendeu uma distribuição de ação cartesiana para um robô que não existe no seu quarto. Comece em a perda diminui, a política não faz nada, não nos seus hiperparâmetros.
O que acontece quando você tenta mesclar os dados de qualquer forma
O plano óbvio é concatenar: alguns milhares de episódios DROID mais os seus 50. LeRobot recusa, e a recusa nomeia as três coisas que diferem.
- 1Baixe a amostra de 100 episódios, não o total de 1.7 TB
2 GB é suficiente para ver a estrutura.
bashpip install gsutil tensorflow tensorflow-datasets gsutil -m cp -r gs://gresearch/robotics/droid_100 ~/tensorflow_datasets/ - 2Converta RLDS para o formato LeRobot
openx2lerobot encapsula as transformações padrão OXE e anota o tipo de robô e a frequência de controle. O README coloca isso em convert.sh.
bashgit clone https://github.com/Tavish9/any4lerobot.git cd any4lerobot/openx2lerobot python openx_rlds.py \ --raw-dir ~/tensorflow_datasets/droid_100/1.0.0 \ --local-dir ~/lerobot_droid100 \ --repo-id you/droid100_lerobot \ --use-videos - 3Leia meta/info.json antes de qualquer outra coisa
Este arquivo decide se o resto do seu dia funciona.
bashpython -c "import json;d=json.load(open('meta/info.json'));\ print(d['codebase_version'], d['robot_type'], d['fps']);\ print(d['features']['action']['shape'], d['features']['observation.state']['shape'])" - 4Tente a fusão e leia o erro
merge carrega cada conjunto de dados, então validate_all_metadata verifica fps, robot_type e features contra o primeiro da lista, levantando um erro no primeiro desencontro.
bashlerobot-edit-dataset \ --new_repo_id you/mixed \ --operation.type merge \ --operation.repo_ids "['you/droid100_lerobot', 'you/my_so100_task']" # ValueError: Same fps is expected, but got fps=30 instead of 15.
Os valores de referência vêm de qualquer conjunto de dados que você listou primeiro, e é por isso que a mensagem reclama dos seus 30 fps em vez dos 15 do DROID. Corrija o fps e você encontrará a verificação de robot_type; corrija isso e você encontrará a verificação de features, 7 contra 6 para a ação. Nenhuma ordenação passa, e a mesma proteção é executada no momento da gravação via sanity_check_dataset_robot_compatibility.
No LeRobot main atual, so100_follower e so101_follower estão ambos registrados em um SOFollowerRobotConfig compartilhado, então a string de uma gravação real não é necessariamente a que você espera. Leia-a do seu próprio meta/info.json, e trate uma verificação que você teve que desabilitar como uma verificação que estava lhe dizendo algo.
Então, o que realmente é transferido?
Pesos, não episódios. Toda política generalista moderna absorveu parte disso no pré-treinamento, e quando você de um lançado, você o herda já reconciliado por pessoas com o poder de computação para fazê-lo corretamente. O artigo de pi0 é franco sobre a proporção: 9,1 por cento de sua mistura de pré-treinamento, contada em passos de tempo, são dados de código aberto, incluindo OXE, Bridge v2 e DROID. Esse número é de pi0; a mistura de cada fornecedor difere.
- Priors visuais e de linguagem: o codificador viu milhares de cozinhas e canecas e sabe a que se refere "o bloco vermelho".
- Um prior sobre a estrutura de manipulação: abordagem, fechar, levantar, transportar, soltar, independente da corporalidade mesmo quando os números não são.
- Um conjunto de dados comprovadamente bom para testes. Se seu trabalho não consegue superajustar 100 episódios DROID, o problema é sua configuração.
- Pontos de referência: em domínios de conjuntos de dados de pequena escala, o RT-1-X atingiu uma taxa de sucesso média 50 por cento maior do que o método original ou RT-1, e o RT-2-X superou o RT-2 em cerca de 3x em habilidades emergentes.
- Nenhuma supervisão de ação utilizável. Um alvo cartesiano 7-D não é um comando de junta 6-D.
- Nenhuma transferência de pose de câmera, e nada nos dados indica que as poses diferem.
- Nenhuma transferência de tempo: fontes de 3, 5 e 15 fps contra um gravador de 30 fps.
- Nenhuma transferência de garra. Uma Robotiq 2F-85 e uma garra impressa em um STS3215 diferem em força, curso e dinâmica.
- A escala por si só não foi suficiente nem para seus autores: nos domínios de grandes conjuntos de dados, o RT-1-X não superou um RT-1 treinado apenas nesse conjunto de dados.
- Nenhuma redução no número de episódios próprios necessários.
| Camada do modelo | Transfere? | Porquê |
|---|---|---|
| Vision encoder | Sim, fortemente | Objetos e cenas são independentes da corporalidade |
| Language grounding | Sim | As instruções são texto, não geometria |
| Cross-modal fusion | Principalmente | Atende ao objeto nomeado no prompt |
| Proprioception encoder | Não | A dimensão de entrada e a semântica da junta diferem |
| Action head | Não | Treinado em um espaço cartesiano 7-D no qual você não está |
| Normalisation statistics | Não, e perigoso | Estatísticas estrangeiras alteram cada comando |
É por isso que SmolVLA se comporta de forma diferente em um braço de baixo custo. Seu artigo seleciona 481 conjuntos de dados da comunidade do Hugging Face, filtrados por tipo de incorporação, contagem de episódios, qualidade dos dados e cobertura de quadros: 22.9K episódios, 10.6M quadros, avaliados em braços reais SO-100 e SO-101. Pequeno e correspondente supera grande e incompatível. Compare em ACT contra SmolVLA.
Três caminhos que valem a pena seguir
Caminho A: ajuste fino a partir de um checkpoint que já absorveu os dados
A maioria das pessoas deve seguir este. Você nunca toca em DROID ou Open X-Embodiment: escolha uma política cujo pré-treinamento já absorveu dados de incorporação cruzada, grave seus próprios episódios, faça o ajuste fino.
| Política | Parâmetros | Episódios mínimos | Formato do conjunto de dados | Nível da GPU | Inferência | Ponto de verificação base |
|---|---|---|---|---|---|---|
| GR00T N1.7 | ~3 B, ~40 M treinados em ajuste fino | 50 | LeRobot v2.0 ou v2.1 | A100 ou H100 80 GB | 152 ms por passo | nvidia/GR00T-N1.7-3B |
| GR00T N1.5 | ~3 B | 50 | LeRobot v2.0 ou v2.1 | A100 ou H100 80 GB | 165 ms | nvidia/GR00T-N1.5-3B |
| Pi0.5 | ~3 B, backbone PaliGemma | 50 | LeRobot v3.0 | A100 ou H100 80 GB | 485 ms | lerobot/pi05_base |
| SmolVLA | ~450 M | 30 | LeRobot v3.0 | RTX 4090 ou qualquer 24 GB | 245 ms | lerobot/smolvla_base |
| ACT | ~80 M | 50 | LeRobot v3.0 | RTX 4090 ou qualquer 24 GB | 20 ms | nenhum, do zero |
ACT é o caso limite honesto: sem modelo base, então nenhum dos dados públicos o alcança. Não é automaticamente uma desvantagem, já que a 20 ms por passo de ação é o único dos cinco que pode fechar um ciclo rápido, como a página do ACT, estabelece. Escolha por tarefa usando todos os cinco comparados, GR00T N1.7 contra Pi0.5, e os 332 resultados de benchmark em 85 modelos na arena.
Caminho B: usar DROID como um dispositivo de teste
A amostra de 100 episódios é os melhores 2 GB que você baixará este mês, e não para treinamento. É um conjunto de dados que você sabe que está correto. Execute seu conversor, carregador e um trabalho curto de GPU nele; qualquer coisa que falhe é um bug de infraestrutura encontrado enquanto era barato. A NVIDIA faz o mesmo em escala: a placa GR00T N1.7 lista quatro variantes pós-treinadas, para Bridge e Fractal em SimplerEnv, DROID e LIBERO.
Caminho C: grave os seus próprios, deliberadamente
Trinta a cinquenta parece pouco perto de 76.000 até você se lembrar que os seus são os únicos com o seu braço, suas câmeras e sua mesa. Nos padrões do LeRobot, 50 episódios equivalem a 100 minutos de tempo real. Veja , e .

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

Quanto custa cada caminho
| Caminho | Armazenamento | Tempo humano | Custo de GPU | Chance de mover seu braço |
|---|---|---|---|---|
| DROID convertido sozinho | 392 GB | dias de conversão | 4 to 12 USD | muito baixa, espaço de ação errado |
| DROID mesclado com seus episódios | ambos | blocked by validate_all_metadata | n/a | nenhuma, não executa |
| SmolVLA, 30 a 50 episódios próprios | alguns GB | 100 min de gravação | 1 to 3 USD | alta |
| GR00T N1.7, 50 episódios próprios | alguns GB | 100 min de gravação | 4 to 12 USD | alta |
| ACT do zero, 50 episódios próprios | alguns GB | 100 min de gravação | 1 to 3 USD | alta, 20 ms de inferência |
| Amostra DROID como um dispositivo de teste | 2 GB | uma tarde | uma execução curta | alta, como validação |
The asymmetry is the point: the path that borrows the most data is the most expensive and least likely to move your arm. Under two hours of your own teleoperation beats a terabyte of somebody else's Franka. No arm yet? /live streams a physical SO-100 with no signup. Then train your first policy, and SmolVLA on SO-100 for the specific guide.
Baixe a amostra DROID de 2 GB e use-a para testar seu pipeline. Ignore os outros 1.7 TB. Grave 50 episódios de uma tarefa com câmeras fixas. Ajuste fino SmolVLA primeiro, porque com um mínimo de 30 episódios em uma placa de 24 GB é o mais barato para iterar, depois tente GR00T N1.7 com os mesmos dados. Compare na sua tarefa, não em um benchmark.
Grave conjuntos de dados que já correspondem ao seu braço
O cliente de desktop grava conjuntos de dados no formato LeRobot diretamente de uma sessão de teleoperação: braço certo, taxa de quadros certa, espaço de ação certo. Sem conversão RLDS, sem remapeamento.
Obtenha o cliente de desktopPosso treinar uma política em DROID e executá-la no meu SO-100?▾
Não diretamente. Na compilação LeRobot, as ações DROID são comandos de efetor final 7-D em um Franka Panda a 15 fps; no RLDS bruto, são 6 velocidades de junta mais uma posição de garra. Um SO-100 aceita 6 posições absolutas de junta. Você precisaria de uma camada de cinemática inversa, e mesmo assim um pulso de 5-DoF não pode reproduzir poses arbitrárias de 6-DoF.
Posso misturar episódios DROID ou Bridge com meus próprios episódios SO-100?▾
Não. validate_all_metadata requer fps, robot_type e esquema de recursos idênticos e levanta ValueError na primeira incompatibilidade. Todos os três diferem: 15 ou 5 fps contra 30, franka ou widowx contra seu braço, formas de ação de 7 contra 6. Reescrever metadados para passar na verificação não corrige a semântica.
O Open X-Embodiment é inútil para um braço de baixo custo, então?▾
Não, mas seu valor chega até você através de pesos pré-treinados, não de episódios. Conjuntos de dados de código aberto, incluindo OXE, Bridge v2 e DROID, representam 9.1 por cento da mistura de pré-treinamento do pi0, e a NVIDIA envia variantes GR00T N1.7 pós-treinadas em Bridge, Fractal, DROID e LIBERO. O que você não pode fazer é anexar esses episódios à sua própria gravação.
Qual política se beneficia mais dos dados públicos de incorporação cruzada?▾
Pi0.5 e os modelos GR00T carregam a maior parte do pré-treinamento de incorporação cruzada, mas SmolVLA frequentemente se comporta melhor em um braço de baixo custo: seu conjunto de pré-treinamento é composto por 481 conjuntos de dados da comunidade, 22.9K episódios e 10.6M quadros, avaliados em braços SO-100 e SO-101 reais. ACT é o oposto: nenhum modelo base, 20 ms por etapa de ação.
Quantos dos meus próprios episódios eu realmente preciso?▾
30 para SmolVLA, 50 para GR00T N1.7, GR00T N1.5, Pi0.5 e ACT. Nos padrões do LeRobot de 60 s por episódio e 60 s de reinício, 50 episódios equivalem a 100 minutos de tempo real. Dados de incorporação cruzada emprestados não diminuem esses números.
Sources
- DROID: Um Conjunto de Dados de Manipulação Robótica em Grande Escala no Ambiente Real
- Documentação DROID: tamanhos de download e o esquema de episódio RLDS
- BridgeData V2: Um Conjunto de Dados para Aprendizagem Robótica em Escala
- Página do projeto BridgeData V2: composição e cobertura da câmera
- Open X-Embodiment: Conjuntos de Dados para Aprendizagem Robótica e Modelos RT-X
- Página do projeto Open X-Embodiment
- google-deepmind/open_x_embodiment: lista de conjuntos de dados e checkpoints RT-1-X
- any4lerobot: o conversor openx2lerobot e seu estado unificado 8-D, ação 7-D
- IPEC-COMMUNITY/droid_lerobot: meta/info.json e tamanho do repositório
- IPEC-COMMUNITY/bridge_orig_lerobot: meta/info.json
- IPEC-COMMUNITY/fractal20220817_data_lerobot: o recorte google_robot a 3 fps
- huggingface/lerobot: seguidor SO, processador de cinemática, configurações de agregação e gravação
- openpi: entradas da política DROID e o checkpoint pi05_droid
- pi0: Um Modelo de Fluxo Visão-Linguagem-Ação para Controle Robótico Geral
- SmolVLA: Um Modelo Visão-Linguagem-Ação para Robótica Acessível e Eficiente
Sources
- DROID: A Large-Scale In-The-Wild Robot Manipulation Dataset
- DROID docs: download sizes and the RLDS episode schema
- BridgeData V2: A Dataset for Robot Learning at Scale
- BridgeData V2 project page: composition and camera coverage
- Open X-Embodiment: Robotic Learning Datasets and RT-X Models
- Open X-Embodiment project page
- google-deepmind/open_x_embodiment: dataset list and RT-1-X checkpoints
- any4lerobot: the openx2lerobot converter and its unified 8-D state, 7-D action
- IPEC-COMMUNITY/droid_lerobot: meta/info.json and repo size
- IPEC-COMMUNITY/bridge_orig_lerobot: meta/info.json
- IPEC-COMMUNITY/fractal20220817_data_lerobot: the google_robot slice at 3 fps
- huggingface/lerobot: SO follower, kinematics processor, aggregate and record configs
- openpi: DROID policy inputs and the pi05_droid checkpoint
- pi0: A Vision-Language-Action Flow Model for General Robot Control
- SmolVLA: A Vision-Language-Action Model for Affordable and Efficient Robotics
Ready for high-quality robotics data?
AY-Robots connects your robots to skilled operators worldwide.
Get Started