
DROID, BridgeData V2 y Open X-Embodiment se convierten en acciones de efector final 7-D en brazos de 6 y 7 GDL. Un SO-100 toma 6 posiciones de articulación. Qué se transfiere, qué no, qué hacer en su lugar.
La versión corta
- •Las compilaciones de LeRobot de los tres comparten una convención: una acción del efector final 7-D [x, y, z, roll, pitch, yaw, gripper] y un estado 8-D con una ranura de relleno. Un SO-100 toma seis posiciones articulares absolutas.
- •Ese vector 7-D es el artefacto del convertidor: el propio campo de acción RLDS de DROID es de 6 velocidades articulares más una posición del gripper, con la vista cartesiana en action_dict.
- •Cuatro relojes: DROID 15 fps, BridgeData V2 5 fps, el segmento google_robot 3 fps, una grabación SO-100 a 30 fps.
- •No puedes fusionarlos con tus propios datos. validate_all_metadata se activa en el primero de fps, robot_type o características que difieren, y los tres difieren.
- •Lo que se transfiere son pesos preentrenados, no episodios. Los datos de código abierto representan el 9.1 por ciento de la mezcla de preentrenamiento de pi0.
- •Su uso real más económico es un dispositivo de prueba: una muestra DROID de 2 GB y 100 episodios, conocida por ser buena, que prueba tu pipeline antes de grabar durante un fin de semana.
Hay un conjunto de datos público de un millón de trayectorias en un bucket de Google Cloud y un SO-100 en el escritorio que costó de 110 a 150 EUR en piezas. ¿Por qué el primero no puede enseñar al segundo? En parte sí puede, pero casi ninguna de la transferencia ocurre donde la gente espera, y la parte que parece más fácil no funciona en absoluto.
Lo que sigue: qué hay dentro de DROID, BridgeData V2 y Open X-Embodiment, dónde cada uno choca con un brazo de 5 GDL de bajo costo, y qué hacer en su lugar. Cada número a continuación proviene del artículo, la tarjeta del conjunto de datos o el archivo fuente al que pertenece.
Lo que realmente contienen los tres conjuntos de datos
| DROID | BridgeData V2 | Open X-Embodiment | |
|---|---|---|---|
| Robot | Franka Panda, 7 DoF, Robotiq 2F-85 | WidowX 250, 6 DoF, equipo de ~4,000 USD | 22 implementaciones, 60 conjuntos de datos, 34 laboratorios |
| Escala | 76k trayectorias, 350 horas | 60,096 trayectorias | Más de 1M de trayectorias, 527 habilidades |
| Diversidad | 564 escenas, 84 tareas, 50 recolectores | 24 entornos, 13 habilidades | 160,266 tareas, 21 instituciones |
| Composición | todo teleoperado | 50,365 teleoperadas, 9,731 programadas | por laboratorio de origen |
| Frecuencia de control | 15 Hz | 5 Hz | varía, 3 fps en adelante |
| Cámaras | 2 x ZED 2 exterior, 1 x ZED Mini de muñeca | hasta 4, la mayoría de los episodios solo la fija | lo que haya usado el laboratorio |
| Descarga sin procesar | 1.7 TB RLDS, 8.7 TB estéreo sin procesar | Archivos JPEG | cubos TFDS por conjunto de datos |
Pocas personas aún descargan 1.7 TB de TFRecords RLDS. La organización comunitaria IPEC-COMMUNITY ha republicado la mayor parte de Open X-Embodiment en formato de conjunto de datos LeRobot con video AV1, donde DROID ocupa 392 GB. Esa es la versión con la que trabajarás, y su meta/info.json es lo primero que debes leer.
DROID
El más estandarizado de los tres. Un equipo en todas partes: un Franka Panda con una pinza Robotiq 2F-85, dos cámaras estéreo ZED 2 ajustables y una ZED Mini de muñeca, teleoperado con controladores Meta Quest 2, grabado a través de Polymetis a 15 Hz tanto en el espacio de articulación como en el de efector final. Las etiquetas de idioma llegaron más tarde a través de tasq.ai, hasta tres por episodio.
- 76k trayectorias, 350 horas, 564 escenas, 84 tareas, 50 recolectores en tres continentes.
- El resultado principal es el co-entrenamiento, no el entrenamiento independiente: los lotes mezclados 50/50 con demostraciones en el dominio superan al siguiente mejor método en un 22 por ciento de éxito absoluto en la distribución, y un 17 por ciento fuera de ella.
- IPEC-COMMUNITY/droid_lerobot: 92,233 episodios, 27,044,326 fotogramas, franka, 15 fps, codebase_version v2.0, tres transmisiones AV1 a 180x320, 392 GB.
- Una muestra de depuración de 2 GB y 100 episodios se encuentra en gs://gresearch/robotics/droid_100. Empiece por ahí.
BridgeData V2
Lo más parecido a una configuración de aficionado: un brazo WidowX 250 de 6 GDL, 60,096 trayectorias en 24 entornos y 13 habilidades a 5 Hz. Nótese la composición: 50,365 demostraciones teleoperadas por expertos más 9,731 de una política de recogida y colocación (pick-and-place) aleatoria y programada, por lo que aproximadamente el 16 por ciento no es una demostración humana, lo cual es importante para aprendizaje por imitación la calidad. La descarga habitual, IPEC-COMMUNITY/bridge_orig_lerobot, informa de 53,192 episodios y 1,893,026 fotogramas a 5 fps, robot_type widowx: menos que los 60,096 del artículo, así que lea el recuento de meta/info.json en lugar de citar cualquiera de los dos.
Open X-Embodiment
No es un conjunto de datos en el mismo sentido: 60 conjuntos de datos de robots existentes de 34 laboratorios agrupados en una colección RLDS que cubre 22 implementaciones y más de un millón de trayectorias. BridgeData V2 se encuentra dentro como bridge_orig; la porción google_robot, fractal20220817_data, se convierte en 87.212 episodios a 3 fps.
La agrupación conlleva una advertencia que el artículo establece explícitamente. Para los experimentos RT-X, los autores convierten cada fuente en una acción de efector final de 7 GDL, pero no alinean los sistemas de coordenadas entre los conjuntos de datos, y permiten que los valores de acción sean posiciones o velocidades absolutas o relativas, según el esquema de control original de cada robot. Su conclusión: el mismo vector de acción puede inducir movimientos muy diferentes para distintos robots.

El desajuste, en cuatro partes
La falta de coincidencia de encarnación (embodiment mismatch) suele tratarse como un problema vago. Son cuatro, fallan de manera diferente, y dos no se pueden solucionar con scripts.
1. Grados de libertad
Un SO-100 tiene cinco articulaciones en el brazo más una pinza. Contado como motores, es un brazo de 6 GDL, y el artículo de SmolVLA lo llama así; contado como mecanismo de posicionamiento es de 5 GDL, y LeRobot lo llama así en su docstring de cinemática inversa, que describe la cinemática inversa de orientación suave en el SO-101 de 5 GDL donde la muñeca sigue la orientación solo parcialmente. Un Franka tiene siete articulaciones de posicionamiento. Esa brecha decide qué poses existen: un brazo de 5 GDL generalmente no puede alcanzar una posición y orientación arbitrarias a la vez, por lo que el solucionador devuelve lo más cercano que puede, un movimiento diferente al demostrado. Antecedentes: .
# 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-DAsí que un punto de control DROID prefabricado no es un atajo. Physical Intelligence distribuye pi05_droid en gs://openpi-assets/checkpoints/pi05_droid, y el mismo README que elogia su amplitud advierte que estos puntos de control expertos pueden no generalizarse a tu configuración. Su estado son ocho números de articulación de Franka y sus claves de imagen son exterior_image_1_left y wrist_image_left. Ninguna bandera convierte eso en un comando SO-100 de seis motores.
2. Lo que realmente dice el vector de acción
Más allá de la dimensionalidad. En las conversiones de LeRobot, los tres indican dónde debe ir el efector final, en el espacio cartesiano. Un SO-100 indica dónde deben ir seis servomotores. La conversión requiere un modelo cinemático y un solucionador, no una remodelación.
| Propiedad | OXE, DROID y Bridge en formato LeRobot | SO-100 en LeRobot |
|---|---|---|
| Vector de acción | 7-D: x, y, z, balanceo, cabeceo, guiñada, pinza | 6-D: una posición objetivo por motor |
| Vector de estado | 8-D, con una ranura de relleno (google_robot usa un cuaternión) | 6-D, uno por motor |
| Marco | Cartesiano, no alineado entre conjuntos de datos | espacio articular, calibración por brazo |
| Absoluto o relativo | cualquiera, decidido por el laboratorio de origen | posiciones objetivo absolutas |
| Unidades | normalizadas por conjunto de datos, luego discretizadas | grados por defecto (use_degrees=True), de lo contrario -100 a 100 |
| Fallo silencioso | un delta leído como un absoluto | un brazo sin calibrar |
El README de openx2lerobot documenta un estado unificado de 8 dimensiones y una acción de 7 dimensiones para cada conjunto de datos que convierte, de donde proviene el slot pad. El propio esquema RLDS de DROID difiere: su action de nivel superior es un vector de 7 elementos de 6 velocidades articulares más 1 posición del gripper, con cartesian_position, cartesian_velocity, joint_position y joint_velocity bajo action_dict. openpi lee la vista del espacio articular, la compilación de LeRobot le entrega la cartesiana. Ninguna de las dos son seis ángulos absolutos de servo.
LeRobot sí incluye la pieza que falta: el seguidor SO tiene un procesador de cinemática con pasos InverseKinematicsEEToJoints y ForwardKinematicsJointsToEE. Sus claves son ee.x, ee.y, ee.z más un vector de rotación ee.wx, ee.wy, ee.wz y ee.gripper_pos, por lo que incluso la codificación de orientación difiere del roll-pitch-yaw en los archivos. El paso IK toma un orientation_weight, por defecto 0.01, cuya docstring indica establecer 0.0 para IK solo de posición en brazos subactuados. Se puede construir el puente, pero la mitad de orientación de cada acción prestada permanece aproximada.
3. Frecuencia de control
DROID es de 15 Hz, BridgeData V2 de 5 Hz, el segmento google_robot de 3 fps; los autores de pi0 describen la parte de código abierto de su mezcla como control de baja frecuencia entre 2 y 10 Hz. DatasetRecordConfig de LeRobot por defecto tiene fps 30, episode_time_s 60, reset_time_s 60, num_episodes 50. Una entrenada con datos de 5 Hz aprendió que una acción cubre 200 ms. Si se reproduce a 30 Hz, el brazo se arrastra; si se remuestrea ingenuamente, se difumina el fotograma donde el gripper se cierra. También interactúa mal con : un fragmento de 100 pasos es de 20 segundos a 5 Hz, 3.3 a 30 Hz.
4. Cámaras
BridgeData V2 aleatorizó dos poses de cámara cada 50 trayectorias, y su página de proyecto señala que la mayoría de los datos solo contienen la vista fija de todos modos. DROID utilizó soportes ajustables ZED 2 más una ZED Mini en la muñeca. Tienes dos cámaras web USB posicionadas a ojo. La pose de la cámara no es una variable molesta para un ; es gran parte de lo que el codificador visual se basó, y nada en el formato de archivo indica que las poses difieran.
Las piezas encajan lo suficientemente bien como para funcionar. El conjunto de datos se carga, el entrenamiento comienza, la pérdida disminuye, aparecen los puntos de control, no hay errores. Luego, la política no hace nada reconocible en el brazo y pasas un día buscando un error en tu script de entrenamiento. No hay ningún error: el modelo aprendió una distribución de acción cartesiana para un robot que no existe en tu habitación. Empieza en la pérdida disminuye, la política no hace nada, no en tus hiperparámetros.
¿Qué sucede cuando intentas fusionar los datos de todos modos?
El plan obvio es concatenar: unos pocos miles de episodios DROID más tus 50. LeRobot se niega, y la negativa nombra las tres cosas que difieren.
- 1Descarga la muestra de 100 episodios, no los 1.7 TB completos
2 GB son suficientes para ver la estructura.
bashpip install gsutil tensorflow tensorflow-datasets gsutil -m cp -r gs://gresearch/robotics/droid_100 ~/tensorflow_datasets/ - 2Convierte RLDS al formato LeRobot
openx2lerobot envuelve las transformaciones estándar de OXE y anota el tipo de robot y la frecuencia de control. El README lo incluye en 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 - 3Lee meta/info.json antes que nada
Este archivo decide si el resto de tu día 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'])" - 4Intenta la fusión y lee el error
merge carga cada conjunto de datos, luego validate_all_metadata verifica los fps, robot_type y las características contra el primero de la lista, generando un error en la primera discrepancia.
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.
Los valores de referencia provienen del conjunto de datos que listaste primero, por lo que el mensaje se queja de tus 30 fps en lugar de los 15 de DROID. Corrige los fps y te encontrarás con la verificación de robot_type; corrige eso y te encontrarás con la verificación de características, 7 contra 6 para la acción. Ningún ordenamiento funciona, y la misma protección se ejecuta en el momento de la grabación a través de sanity_check_dataset_robot_compatibility.
En la rama principal actual de LeRobot, so100_follower y so101_follower están registrados en una única SOFollowerRobotConfig compartida, por lo que la cadena de una grabación real no es necesariamente la que esperas. Léela de tu propio meta/info.json, y trata una verificación que tuviste que deshabilitar como una verificación que te estaba diciendo algo.
¿Qué se transfiere realmente?
Pesos, no episodios. Cada política generalista moderna absorbió parte de esto en el preentrenamiento, y cuando desde un lo heredas ya reconciliado por personas con la capacidad de cómputo para hacerlo correctamente. El artículo de pi0 es sincero sobre la proporción: el 9.1 por ciento de su mezcla de preentrenamiento, contada en pasos de tiempo, son datos de código abierto que incluyen OXE, Bridge v2 y DROID. Esa cifra es de pi0; la mezcla de cada proveedor difiere.
- Priors visuales y de lenguaje: el codificador ha visto miles de cocinas y tazas y sabe a qué se refiere "el bloque rojo".
- Un prior sobre la estructura de manipulación: acercar, cerrar, levantar, transportar, soltar, independiente de la encarnación incluso cuando los números no lo son.
- Un conjunto de datos conocido y bueno para pruebas. Si tu trabajo no puede sobreajustar 100 episodios de DROID, el problema es tu configuración.
- Puntos de referencia: en dominios de conjuntos de datos a pequeña escala, RT-1-X alcanzó una tasa de éxito media un 50 por ciento mayor que el método original o RT-1, y RT-2-X superó a RT-2 en aproximadamente 3x en habilidades emergentes.
- Sin supervisión de acción utilizable. Un objetivo cartesiano 7-D no es un comando de articulación 6-D.
- Sin transferencia de pose de cámara, y nada en los datos indica que las poses difieran.
- Sin transferencia de tiempo: fuentes de 3, 5 y 15 fps frente a un grabador de 30 fps.
- Sin transferencia de pinza. Una Robotiq 2F-85 y una mordaza impresa en un STS3215 difieren en fuerza, carrera y dinámica.
- La escala por sí sola no fue suficiente ni siquiera para sus autores: en los dominios de grandes conjuntos de datos, RT-1-X no superó a un RT-1 entrenado solo con ese conjunto de datos.
- No hay reducción en la cantidad de episodios propios que necesitas.
| Capa del modelo | ¿Se transfiere? | Por qué |
|---|---|---|
| Codificador de visión | Sí, fuertemente | Los objetos y las escenas son independientes de la encarnación |
| Fundamentación del lenguaje | Sí | Las instrucciones son texto, no geometría |
| Fusión transmodal | Mayormente | Presta atención al objeto nombrado en la instrucción |
| Codificador de propiocepción | No | La dimensión de entrada y la semántica de las articulaciones difieren |
| Cabezal de acción | No | Entrenado en un espacio cartesiano 7-D en el que no te encuentras |
| Estadísticas de normalización | No, y peligroso | Las estadísticas externas desplazan cada comando |
Esta es la razón por la que SmolVLA se comporta de manera diferente en un brazo de bajo costo. Su artículo selecciona 481 conjuntos de datos de la comunidad de Hugging Face, filtrados por tipo de encarnación, recuento de episodios, calidad de los datos y cobertura de fotogramas: 22.9K episodios, 10.6M fotogramas, evaluados en brazos reales SO-100 y SO-101. Pequeño y emparejado supera a grande y desemparejado. Compare en ACT contra SmolVLA.
Tres caminos que vale la pena tomar
Ruta A: ajuste fino desde un punto de control que ya absorbió los datos
La mayoría de la gente debería tomar este camino. Nunca toque DROID ni Open X-Embodiment: elija una política cuyo preentrenamiento ya haya absorbido datos de encarnación cruzada, grabe sus propios episodios, realice un ajuste fino.
| Política | Parámetros | Episodios mínimos | Formato del conjunto de datos | Nivel de GPU | Inferencia | Punto de control base |
|---|---|---|---|---|---|---|
| GR00T N1.7 | ~3 B, ~40 M entrenados en ajuste fino | 50 | LeRobot v2.0 o v2.1 | A100 o H100 80 GB | 152 ms por paso | nvidia/GR00T-N1.7-3B |
| GR00T N1.5 | ~3 B | 50 | LeRobot v2.0 o v2.1 | A100 o H100 80 GB | 165 ms | nvidia/GR00T-N1.5-3B |
| Pi0.5 | ~3 B, backbone PaliGemma | 50 | LeRobot v3.0 | A100 o H100 80 GB | 485 ms | lerobot/pi05_base |
| SmolVLA | ~450 M | 30 | LeRobot v3.0 | RTX 4090 o cualquier 24 GB | 245 ms | lerobot/smolvla_base |
| ACT | ~80 M | 50 | LeRobot v3.0 | RTX 4090 o cualquier 24 GB | 20 ms | ninguno, desde cero |
ACT es el caso límite honesto: sin modelo base, por lo que ninguno de los datos públicos lo alcanza. No es automáticamente una desventaja, ya que a 20 ms por paso de acción es el único de los cinco que puede cerrar un bucle rápido, como la página de ACT se detalla. Elija por tarea usando los cinco comparados, GR00T N1.7 contra Pi0.5, y los 332 resultados de referencia en 85 modelos en la arena.
Ruta B: usar DROID como dispositivo de prueba
La muestra de 100 episodios es la mejor de 2 GB que descargará este mes, y no para entrenamiento. Es un conjunto de datos que sabe que es correcto. Ejecute su convertidor, cargador y un trabajo corto de GPU en él; cualquier cosa que falle es un error de infraestructura encontrado mientras era barato. NVIDIA hace lo mismo a escala: la tarjeta GR00T N1.7 enumera cuatro variantes post-entrenadas, para Bridge y Fractal en SimplerEnv, DROID y LIBERO.
Ruta C: graba tus propios datos, deliberadamente
Treinta a cincuenta suena poco al lado de 76,000 hasta que recuerdas que los tuyos son los únicos con tu brazo, tus cámaras y tu mesa. Con los valores predeterminados de LeRobot, 50 episodios equivalen a 100 minutos de tiempo real. Consulta , y .

Dos formas de pasar de datos públicos a una 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.

Lo que cuesta cada ruta
| Ruta | Almacenamiento | Tiempo humano | Costo de GPU | Probabilidad de que mueva tu brazo |
|---|---|---|---|---|
| DROID convertido solo | 392 GB | días de conversión | 4 to 12 USD | muy baja, espacio de acción incorrecto |
| DROID fusionado con tus episodios | ambos | blocked by validate_all_metadata | n/a | ninguna, no se ejecuta |
| SmolVLA, 30 a 50 episodios propios | unos pocos GB | 100 min de grabación | 1 to 3 USD | alta |
| GR00T N1.7, 50 episodios propios | unos pocos GB | 100 min de grabación | 4 to 12 USD | alta |
| ACT desde cero, 50 episodios propios | unos pocos GB | 100 min de grabación | 1 to 3 USD | alta, 20 ms de inferencia |
| Muestra de DROID como dispositivo de prueba | 2 GB | una tarde | una ejecución corta | alta, como validación |
La asimetría es el punto clave: la ruta que toma prestados más datos es la más cara y la menos probable de mover tu brazo. Menos de dos horas de tu propia teleoperación superan un terabyte de una Franka ajena. ¿Aún no tienes un brazo? /live transmite un SO-100 físico sin necesidad de registrarse. Luego entrena tu primera política, y SmolVLA en SO-100 para la guía específica.
Descarga la muestra DROID de 2 GB y úsala para probar tu pipeline. Ignora los otros 1.7 TB. Graba 50 episodios de una tarea con cámaras fijas. Ajusta SmolVLA primero, porque con un mínimo de 30 episodios en una tarjeta de 24 GB es lo más económico para iterar, luego prueba GR00T N1.7 con los mismos datos. Compara en tu tarea, no en un benchmark.
Graba conjuntos de datos que ya coincidan con tu brazo
El cliente de escritorio escribe conjuntos de datos en formato LeRobot directamente desde una sesión de teleoperación: brazo correcto, velocidad de fotogramas correcta, espacio de acción correcto. Sin conversión RLDS, sin remapeo.
Obtener el cliente de escritorio¿Puedo entrenar una política en DROID y ejecutarla en mi SO-100?▾
No directamente. En la compilación de LeRobot, las acciones de DROID son comandos de efector final 7-D en una Franka Panda a 15 fps; en el RLDS sin procesar son 6 velocidades de articulación más una posición de pinza. Un SO-100 toma 6 posiciones de articulación absolutas. Necesitarías una capa de cinemática inversa, e incluso entonces una muñeca de 5 GDL no puede reproducir poses arbitrarias de 6 GDL.
¿Puedo mezclar episodios de DROID o Bridge con mis propios episodios de SO-100?▾
No. validate_all_metadata requiere fps, robot_type y esquema de características idénticos y genera un ValueError en la primera discrepancia. Los tres difieren: 15 o 5 fps frente a 30, franka o widowx frente a tu brazo, formas de acción de 7 frente a 6. Reescribir los metadatos para pasar la verificación no soluciona la semántica.
¿Es entonces Open X-Embodiment inútil para un brazo de bajo costo?▾
No, pero su valor te llega a través de pesos preentrenados, no de episodios. Los conjuntos de datos de código abierto, incluidos OXE, Bridge v2 y DROID, representan el 9.1 por ciento de la mezcla de preentrenamiento de pi0, y NVIDIA distribuye variantes de GR00T N1.7 post-entrenadas en Bridge, Fractal, DROID y LIBERO. Lo que no puedes hacer es añadir esos episodios a tu propia grabación.
¿Qué política se beneficia más de los datos públicos de cross-embodiment?▾
Pi0.5 y los modelos GR00T conllevan la mayor parte del preentrenamiento cross-embodiment, pero SmolVLA a menudo se comporta mejor en un brazo de bajo costo: su conjunto de preentrenamiento consta de 481 conjuntos de datos de la comunidad, 22.9K episodios y 10.6M fotogramas, evaluados en brazos reales SO-100 y SO-101. ACT es lo opuesto: sin modelo base, 20 ms por paso de acción.
¿Cuántos de mis propios episodios necesito realmente?▾
30 para SmolVLA, 50 para GR00T N1.7, GR00T N1.5, Pi0.5 y ACT. Con los valores predeterminados de LeRobot de 60 s por episodio y 60 s de reinicio, 50 episodios equivalen a 100 minutos de tiempo real. Los datos cross-embodiment prestados no reducen esos números.
Sources
- DROID: Un conjunto de datos de manipulación de robots a gran escala en entornos reales
- Documentación de DROID: tamaños de descarga y el esquema de episodios RLDS
- BridgeData V2: Un conjunto de datos para el aprendizaje de robots a escala
- Página del proyecto BridgeData V2: composición y cobertura de cámaras
- Open X-Embodiment: Conjuntos de datos de aprendizaje robótico y modelos RT-X
- Página del proyecto Open X-Embodiment
- google-deepmind/open_x_embodiment: lista de conjuntos de datos y puntos de control RT-1-X
- any4lerobot: el conversor openx2lerobot y su estado unificado de 8 dimensiones, acción de 7 dimensiones
- IPEC-COMMUNITY/droid_lerobot: meta/info.json y tamaño del repositorio
- IPEC-COMMUNITY/bridge_orig_lerobot: meta/info.json
- IPEC-COMMUNITY/fractal20220817_data_lerobot: la porción google_robot a 3 fps
- huggingface/lerobot: seguidor SO, procesador de cinemática, configuraciones de agregación y registro
- openpi: entradas de política DROID y el punto de control pi05_droid
- pi0: Un modelo de flujo de visión-lenguaje-acción para el control general de robots
- SmolVLA: Un modelo de visión-lenguaje-acción para robótica asequible y 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