Recolección de Datos
Graba la presión de contacto junto con el estado de las articulaciones del robot y el video de la cámara. El guante añade una modalidad táctil que captura qué tan difícil lo que la pinza del robot está presionando — información invisible solo para la visión.
Conexiones del sistema
Conecta todos los dispositivos antes de iniciar cualquier software. El guante está estrictamente cableado por USB; no hay modo inalámbrico.
Brazo robótico + mano
Mano Orca (recomendada) u otro efector final. Conectado a través de un adaptador USB de Feetech o CAN, dependiendo del brazo.
/dev/ttyUSB0 or CAN0Guantee Juqiao
USB-C a PC host. Aparece como serial CDC-ACM. Cable de 1.5 m; usa una extensión USB si es necesario para mayor libertad de movimiento.
/dev/ttyACM0Cámara de muñeca
Cámara USB o GigE montada en la muñeca del robot, proporcionando una vista centrada en el objeto para el entrenamiento.
/dev/video0 or GigE IPCámara aérea
Cámara de espacio de trabajo fija para contexto de escena. Combínala con la cámara de muñeca para conjuntos de datos de múltiples vistas.
/dev/video2 or GigE IPDispositivo de teleoperación
Brazo líder (SO-101 / líder OpenArm), controlador VR o SpaceMouse que controla el robot seguidor.
Puerto líder / HIDGrabación paso a paso
Levanta el brazo y la mano robóticos
Inicia el controlador del brazo (y el controlador de la Mano Orca si es aplicable) en terminales separadas. Verifica que joint_states esté publicando antes de continuar.
Iniciar el controlador del guante Juqiao
Lanzar el nodo ROS2 del guante. Verifique que los datos de 200 Hz estén fluyendo antes de comenzar cualquier sesión de grabación.
Lanzar cámaras
Iniciar nodos de cámara para vistas de muñeca y cenital. Confirme que los temas de imagen se están publicando a la tasa de fotogramas objetivo (típicamente 30 fps).
Verifique que todos los flujos estén sincronizados
para usar ros2 topic list para confirmar que todos los temas requeridos están presentes. Verifique que las marcas de tiempo estén dentro de 20 ms entre modalidades antes de grabar cualquier episodio.
Grabar un conjunto de datos con LeRobot
Utilice el script de grabación de LeRobot. El --tactile-topic indicador agrega el flujo de presión del guante como una columna de conjunto de datos junto a los estados de las articulaciones y las imágenes.
Revisa los episodios antes de enviar
Reproduce cada episodio con la superposición del mapa de calor para verificar la calidad de los datos táctiles antes de comprometerse con el HuggingFace Hub.
Empuje al HuggingFace Hub
Sube el conjunto de datos validado. La tarjeta del conjunto de datos se genera automáticamente con descripciones de modalidad que incluyen táctil.
Esquema del conjunto de datos
Cada cuadro en el conjunto de datos contiene las siguientes columnas. Todos los arreglos se almacenan como columnas Parquet float32; imágenes como secuencias de video MP4.
| Columna | Forma/Tipo | Descripción |
|---|---|---|
| observación.estado | float32[6] | Posiciones de las articulaciones del brazo robótico (radianes). El índice 6 es la apertura del agarre si se utiliza un brazo de 6 grados de libertad. |
| observation.hand_state | float32[17] | Posiciones de las articulaciones de la mano Orca (radianes), 17 grados de libertad. Omitir si no hay mano hábil. Etiquetado por nombre de articulación en los metadatos. |
| observación.presiones_táctiles | float32[64] | Presión normalizada del guante Juqiao por nodo, de 0.0 (sin contacto) a 1.0 (escala completa). 200 Hz submuestreado para coincidir con la tasa de fotogramas del robot. |
| observación.presiones_táctiles_crudas | uint16[64] | Valores crudos de ADC de 16 bits. Conservar para re-normalización después de la recalibración. Opcional; omitir para reducir el tamaño del conjunto de datos. |
| observación.región_de_agarrado | str | Heurística de región de contacto activa: "palma", "pulgar", "índice", "medio", "Cancelar", "meñique", oh "" (sin contacto). |
| observación.imágenes.muñeca | uint8[H, W, 3] | Marco RGB de la cámara de la muñeca a 30 fps, almacenado como secuencia de video MP4. |
| observación.imágenes.sobrehead | uint8[H, W, 3] | Marco RGB de cámara superior a 30 fps. |
| acción | flotador32[6 o 23] | Posiciones de las articulaciones objetivo para el brazo (6) y opcionalmente la mano (17). La forma depende de si la mano hábil está presente. |
| instrucción_de_idioma | str | Descripción de la tarea, por ejemplo. "recoge el huevo sin romperlo". Habilita el entrenamiento de políticas condicionado al lenguaje. |
| índice_de_episodio | int | Número de episodio dentro del conjunto de datos. |
| índice_de_frame | int | Número de frame dentro del episodio (indexado desde 0). |
| marca de tiempo | float64 | Segundos transcurridos desde el inicio del episodio. |
Submuestreo táctil
El guante transmite a 200 Hz; el robot y las cámaras generalmente funcionan a 30–100 Hz. El grabador alinea los frames utilizando coincidencia de marcas de tiempo de vecino más cercano. Para preservar el flujo táctil completo de 200 Hz como un array separado:
Lista de Verificación de Calidad del Episodio
Revisa cada episodio contra estos criterios antes de incluirlo en tu conjunto de datos. Un mal episodio puede introducir patrones táctiles espurios que degradan el entrenamiento de políticas.
-
El flujo táctil es continuo — sin huecos de frames. para comprobar marco.secuencia incrementos sin saltos. Las caídas de frames aparecen como valores repetidos en la columna táctil.
-
La línea base en reposo está cerca de cero (< 0.03) Al inicio del episodio (antes de cualquier contacto), el nodo de presión máxima debe leer por debajo de 0.03. Un desplazamiento por encima de 0.05 en reposo indica que el guante necesita recalibración.
-
Los eventos de contacto se alinean con los agarres visibles en el video Repetir con --superponer-táctilLos picos de presión (nodo máximo > 0.4) deben coincidir con el cierre visible del agarre en la cámara de la muñeca.
-
La región de agarre es consistente durante la fase de contacto región_de_agarre debe estabilizarse en una o dos regiones durante cada agarre (por ejemplo, "palma" + "índice"). Las regiones que cambian rápidamente indican desalineación del guante o señal ruidosa.
-
Latencia del guante < 20 ms en relación con el estado del robot Comparar el inicio del evento táctil con el pico de velocidad del agarre. Una latencia > 20 ms sugiere congestión en el hub USB — conecta el guante directamente a un puerto USB del host.
-
La instrucción en lenguaje coincide con la tarea demostrada Para conjuntos de datos condicionados por lenguaje, asegúrate de que la instrucción ingresada al inicio del episodio describa con precisión lo que el operador realmente demostró.
-
Sin interferencia de cables con el movimiento del robot El cable USB de 1.5 m no debe restringir los movimientos de la mano del operador ni quitar el guante durante el episodio. Usa un clip de gestión de cables en el antebrazo.
Entrenamiento con Observaciones Táctiles
Las políticas que consumen entrada táctil típicamente ven una mejora del 15–30% en tareas sensibles al contacto (manejo de objetos frágiles, inserción de clavijas, plegado de telas) en comparación con líneas base solo de visión.