LeRobot documentation

OpenArm

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

OpenArm

OpenArm es un brazo humanoide de 7DOF de código abierto diseñado para la investigación y el despliegue de IA física.

Para obtener tu OpenArm, ya sea ensamblado o de bricolaje, y unirte a la comunidad global, explora a los fabricantes verificados y certificados de todo el mundo en openarm.dev.

¿Qué lo hace único?

  • Diseño a escala humana: OpenArm está diseñado con proporciones similares a las humanas, escalado para una persona de aproximadamente 160-165 cm de estatura. Esto proporciona un equilibrio óptimo entre un alcance práctico y una inercia manejable para una operación segura y receptiva.

  • Arquitectura centrada en la seguridad: Construido con motores retroaccionables QDD y alta compliancia, OpenArm prioriza la interacción segura entre humanos y robots, al tiempo que mantiene capacidades de carga prácticas (6,0 kg pico / 4,1 kg nominal) para tareas del mundo real.

  • Diseñado para durar: Los componentes estructurales críticos utilizan una construcción de aluminio y acero inoxidable, lo que garantiza un rendimiento robusto para la recopilación repetitiva de datos y el uso continuo en investigación.

  • Totalmente accesible y fabricable: Cada componente, desde piezas de CNC y carcasas impresas en 3D hasta el cableado eléctrico, está diseñado para que investigadores individuales y laboratorios puedan comprarlo y fabricarlo, con los datos de fabricación completos proporcionados.

  • Práctico y asequible: Por 6.500 USD por un sistema bimanual completo, OpenArm ofrece capacidades de grado de investigación por una fracción del costo de los robots humanoides tradicionales.

Requisitos de la plataforma

**Linux Only**: OpenArm currently only works on Linux. The CAN bus USB adapter does not have macOS drivers and has not been tested on Windows.

Guía de seguridad

Antes de operar OpenArm, lea la guía de seguridad oficial. Puntos clave:

  • Instalación segura: Fije el brazo a una superficie plana y estable con tornillos o abrazaderas
  • Distancia de seguridad: Mantén las partes del cuerpo y los objetos fuera del rango de movimiento durante la operación
  • Equipo de protección: Use siempre gafas de seguridad; utilice EPI adicionales según sea necesario
  • Límites de carga: No exceda los límites de carga especificados (6,0 kg pico / 4,1 kg nominal por brazo)
  • Parada de emergencia: Conozca la ubicación y el funcionamiento del dispositivo de parada de emergencia
  • Inspección regular: Verifique los tornillos flojos, los límites mecánicos dañados, los ruidos inusuales y los daños en el cableado

Configuración del hardware

Siga la documentación oficial de hardware de OpenArm para:

  • Lista de materiales y aprovisionamiento
  • Instrucciones para impresión 3D
  • Ensamblaje mecánico
  • Instalación eléctrica

Los repositorios de hardware están disponibles en github.com/enactic/openarm.

Configuración del bus CAN

OpenArm utiliza comunicación por bus CAN con motores Damiao. Una vez que el adaptador USB de bus CAN esté conectado a su PC con Linux, siga la guía de motores Damiao y bus CAN para configurar la interfaz.

Configuración rápida:

# Setup CAN interfaces
lerobot-setup-can --mode=setup --interfaces=can0,can1

# Test motor communication
lerobot-setup-can --mode=test --interfaces=can0,can1

Instalar LeRobot 🤗

Siga nuestra Guía de instalación y luego instale el soporte del motor Damiao:

pip install -e ".[damiao]"

Uso

Brazo seguidor (Robot)

Comando
Ejemplo de API
lerobot-calibrate \
    --robot.type=openarm_follower \
    --robot.port=can0 \
    --robot.side=right \
    --robot.id=my_openarm_follower

Brazo líder (teleoperador)

El brazo líder se utiliza para la teleoperación: se mueve manualmente para controlar el brazo seguidor.

Comando
Ejemplo de API
lerobot-calibrate \
    --teleop.type=openarm_leader \
    --teleop.port=can1 \
    --teleop.id=my_openarm_leader

Teleoperación

Para teleoperar OpenArm con control líder-seguidor:

lerobot-teleoperate \
    --robot.type=openarm_follower \
    --robot.port=can0 \
    --robot.side=right \
    --robot.id=my_openarm_follower \
    --teleop.type=openarm_leader \
    --teleop.port=can1 \
    --teleop.id=my_openarm_leader

Usa el mismo --robot.id y --teleop.id que durante la calibración, para que LeRobot encuentre los archivos de calibración.

Teleoperación bimanual

Para teleoperar una configuración bimanual de OpenArm con dos brazos líderes y dos seguidores:

lerobot-teleoperate \
    --robot.type=bi_openarm_follower \
    --robot.left_arm_config.port=can0 \
    --robot.left_arm_config.side=left \
    --robot.right_arm_config.port=can1 \
    --robot.right_arm_config.side=right \
    --robot.id=my_bimanual_follower \
    --teleop.type=bi_openarm_leader \
    --teleop.left_arm_config.port=can2 \
    --teleop.right_arm_config.port=can3 \
    --teleop.id=my_bimanual_leader

Registro de datos

Para registrar un conjunto de datos durante la teleoperación:

lerobot-record \
    --robot.type=openarm_follower \
    --robot.port=can0 \
    --robot.side=right \
    --robot.id=my_openarm_follower \
    --teleop.type=openarm_leader \
    --teleop.port=can1 \
    --teleop.id=my_openarm_leader \
    --dataset.repo_id=${HF_USER}/my_openarm_dataset \
    --dataset.single_task="Describe your task here" \
    --dataset.fps=30 \
    --dataset.num_episodes=10

lerobot-record añade la fecha y la hora de la sesión al nombre del conjunto de datos, por lo que se guarda como my_hf_username/my_openarm_dataset_YYYYMMDD_HHMMSS. Consulta la guía de grabación para conocer las cámaras, los controles de teclado y el resto del flujo de trabajo.

Opciones de configuración

Configuración del seguidor

ParámetroPredeterminadoDescripción
port-Interfaz CAN (p. ej., can0)
sideNoneLado del brazo: "left", "right" o None para límites personalizados
use_can_fdTrueHabilitar CAN FD para tasas de datos más altas
can_bitrate1000000Tasa de bits nominal (1 Mbps)
can_data_bitrate5000000Tasa de bits de datos CAN FD (5 Mbps)
max_relative_targetNoneLímite de seguridad para las posiciones relativas objetivo
position_kpPor articulaciónGanancias proporcionales de control de posición
position_kdPor articulaciónGanancias derivadas de control de posición

Configuración del líder

ParámetroPredeterminadoDescripción
port-Interfaz CAN (p. ej., can1)
manual_controlTrueDesactivar el par para el movimiento manual
use_can_fdTrueHabilitar CAN FD para tasas de datos más altas
can_bitrate1000000Tasa de bits nominal (1 Mbps)
can_data_bitrate5000000Tasa de bits de datos CAN FD (5 Mbps)

Configuración del motor

OpenArm utiliza motores Damiao con la siguiente configuración predeterminada:

ConjuntoTipo de motorEnviar IDID de recepción
joint_1 (Giro del hombro)DM80090x010x11
joint_2 (Elevación de hombro)DM80090x020x12
joint_3 (Rotación del hombro)DM43400x030x13
joint_4 (Flexión del codo)DM43400x040x14
joint_5 (Giro de muñeca)DM43100x050x15
joint_6 (Inclinación de la muñeca)DM43100x060x16
joint_7 (Rotación de la muñeca)DM43100x070x17
gripperDM43100x080x18

Solución de problemas

Sin respuesta de los motores

  1. Comprueba las conexiones de la fuente de alimentación
  2. Verify CAN wiring (CAN-H, CAN-L, GND)
  3. Ejecute diagnósticos: lerobot-setup-can --mode=test --interfaces=can0
  4. Consulte la guía de solución de problemas de Damiao para obtener más detalles

No se encontró la interfaz CAN

Asegúrese de que la interfaz CAN esté configurada:

ip link show can0

Recursos

Update on GitHub