LeRobot documentation
OpenArm
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,can1Instalar LeRobot 🤗
Siga nuestra Guía de instalación y luego instale el soporte del motor Damiao:
pip install -e ".[damiao]"Uso
Brazo seguidor (Robot)
lerobot-calibrate \
--robot.type=openarm_follower \
--robot.port=can0 \
--robot.side=right \
--robot.id=my_openarm_followerfrom lerobot.robots.openarm_follower import OpenArmFollower, OpenArmFollowerConfig
config = OpenArmFollowerConfig(
port="can0",
side="right", # or "left" for left arm
id="my_openarm_follower",
)
follower = OpenArmFollower(config)
follower.connect()
# Read current state
obs = follower.get_observation()
print(obs)
# Send action (position in degrees)
action = {
"joint_1.pos": 0.0,
"joint_2.pos": 0.0,
"joint_3.pos": 0.0,
"joint_4.pos": 45.0,
"joint_5.pos": 0.0,
"joint_6.pos": 0.0,
"joint_7.pos": 0.0,
"gripper.pos": 0.0,
}
follower.send_action(action)
follower.disconnect()Brazo líder (teleoperador)
El brazo líder se utiliza para la teleoperación: se mueve manualmente para controlar el brazo seguidor.
lerobot-calibrate \
--teleop.type=openarm_leader \
--teleop.port=can1 \
--teleop.id=my_openarm_leaderfrom lerobot.teleoperators.openarm_leader import OpenArmLeader, OpenArmLeaderConfig
config = OpenArmLeaderConfig(
port="can1",
id="my_openarm_leader",
manual_control=True, # Disable torque for manual movement
)
leader = OpenArmLeader(config)
leader.connect()
# Read current position (as action to send to follower)
action = leader.get_action()
print(action)
leader.disconnect()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_leaderUsa 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_leaderRegistro 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=10lerobot-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ámetro | Predeterminado | Descripción |
|---|---|---|
port | - | Interfaz CAN (p. ej., can0) |
side | None | Lado del brazo: "left", "right" o None para límites personalizados |
use_can_fd | True | Habilitar CAN FD para tasas de datos más altas |
can_bitrate | 1000000 | Tasa de bits nominal (1 Mbps) |
can_data_bitrate | 5000000 | Tasa de bits de datos CAN FD (5 Mbps) |
max_relative_target | None | Límite de seguridad para las posiciones relativas objetivo |
position_kp | Por articulación | Ganancias proporcionales de control de posición |
position_kd | Por articulación | Ganancias derivadas de control de posición |
Configuración del líder
| Parámetro | Predeterminado | Descripción |
|---|---|---|
port | - | Interfaz CAN (p. ej., can1) |
manual_control | True | Desactivar el par para el movimiento manual |
use_can_fd | True | Habilitar CAN FD para tasas de datos más altas |
can_bitrate | 1000000 | Tasa de bits nominal (1 Mbps) |
can_data_bitrate | 5000000 | Tasa de bits de datos CAN FD (5 Mbps) |
Configuración del motor
OpenArm utiliza motores Damiao con la siguiente configuración predeterminada:
| Conjunto | Tipo de motor | Enviar ID | ID de recepción |
|---|---|---|---|
| joint_1 (Giro del hombro) | DM8009 | 0x01 | 0x11 |
| joint_2 (Elevación de hombro) | DM8009 | 0x02 | 0x12 |
| joint_3 (Rotación del hombro) | DM4340 | 0x03 | 0x13 |
| joint_4 (Flexión del codo) | DM4340 | 0x04 | 0x14 |
| joint_5 (Giro de muñeca) | DM4310 | 0x05 | 0x15 |
| joint_6 (Inclinación de la muñeca) | DM4310 | 0x06 | 0x16 |
| joint_7 (Rotación de la muñeca) | DM4310 | 0x07 | 0x17 |
| gripper | DM4310 | 0x08 | 0x18 |
Solución de problemas
Sin respuesta de los motores
- Comprueba las conexiones de la fuente de alimentación
- Verify CAN wiring (CAN-H, CAN-L, GND)
- Ejecute diagnósticos:
lerobot-setup-can --mode=test --interfaces=can0 - 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 can0Recursos
- Sitio web de OpenArm
- Documentación de OpenArm
- GitHub de OpenArm
- Guía de seguridad
- Damiao Motors y CAN Bus