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 é um braço humanoide de 7 graus de liberdade de código aberto, projetado para pesquisa e implantação em IA física.

Para obter seu OpenArm, montado ou feito por você, e se juntar à comunidade global, explore os fabricantes verificados e certificados ao redor do mundo em openarm.dev.

O que é único?

  • Design em escala humana: O OpenArm é projetado com proporções semelhantes às humanas, dimensionado para uma pessoa de aproximadamente 160-165 cm de altura. Isso oferece um equilíbrio ideal entre alcance prático e inércia gerenciável para uma operação segura e responsiva.

  • Arquitetura com foco em segurança: Construído com motores QDD reversíveis e alta compliância, o OpenArm prioriza a interação segura entre humanos e robôs, mantendo capacidades práticas de carga útil (6,0 kg de pico / 4,1 kg nominal) para tarefas do mundo real.

  • Construído para durabilidade: Os componentes estruturais críticos utilizam construção em alumínio e aço inoxidável, garantindo desempenho robusto para a coleta repetitiva de dados e o uso contínuo em pesquisa.

  • Totalmente acessível e construível: Cada componente, desde peças de CNC e carcaças impressas em 3D até a fiação elétrica, é projetado para ser adquirível e construível por pesquisadores individuais e laboratórios, com dados completos de fabricação fornecidos.

  • Prático e acessível: Por US$ 6.500 por um sistema bimanual completo, o OpenArm oferece capacidades de nível de pesquisa por uma fração dos custos dos robôs humanoides tradicionais.

Requisitos da 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.

Guia de Segurança

Antes de operar o OpenArm, leia o guia de segurança oficial. Pontos principais:

  • Instalação segura: Fixe o braço em uma superfície plana e estável com parafusos ou grampos
  • Distância segura: Mantenha partes do corpo e objetos fora do alcance de movimento durante a operação
  • Equipamento de proteção: Use sempre óculos de segurança; utilize EPIs adicionais conforme necessário
  • Limites de carga: Não exceda os limites de carga especificados (6,0 kg de pico / 4,1 kg nominal por braço)
  • Parada de emergência: Conheça a localização e o funcionamento do dispositivo de parada de emergência
  • Inspecionamento regular: Verifique parafusos frouxos, limites mecânicos danificados, ruídos incomuns e danos à fiação

Configuração de Hardware

Siga a documentação oficial de hardware do OpenArm para:

  • Lista de materiais e suprimentos
  • Instruções de impressão 3D
  • Montagem mecânica
  • Fiação elétrica

Os repositórios de hardware estão disponíveis em github.com/enactic/openarm.

Configuração do Bus CAN

O OpenArm usa comunicação via barramento CAN com os motores Damiao. Depois de conectar o adaptador USB do barramento CAN ao seu PC com Linux, siga o guia de motores Damiao e barramento CAN para configurar a interface.

Configuração rápida:

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

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

Instale o LeRobot 🤗

Siga nosso Guia de Instalação e, em seguida, instale o suporte do motor Damiao:

pip install -e ".[damiao]"

Uso

Braço Seguidor (Robô)

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

Braço Líder (Teleoperador)

O braço líder é usado para teleoperação - movê-lo manualmente para controlar o braço seguidor.

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

Teleoperação

Para teleoperar o OpenArm com controle 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

Use o mesmo --robot.id e --teleop.id que durante a calibração, para que o LeRobot encontre os arquivos de calibração.

Teleoperação Bimanual

Para teleoperar um setup bimanual OpenArm com dois braços líderes e dois braços 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

Registrando Dados

Para gravar um conjunto de dados durante a teleoperação:

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 adiciona a data e a hora da sessão ao nome do conjunto de dados, de modo que ele é salvo como my_hf_username/my_openarm_dataset_YYYYMMDD_HHMMSS. Consulte o guia de gravação para informações sobre câmeras, controles de teclado e o restante do fluxo de trabalho.

Opções de Configuração

Configuração de Seguidor

ParâmetroPadrãoDescrição
port-Interface CAN (por exemplo, can0)
sideNoneLado do braço: "left", "right" ou None para limites personalizados
use_can_fdTrueAtive o CAN FD para taxas de dados mais altas
can_bitrate1000000Taxa de bits nominal (1 Mbps)
can_data_bitrate5000000Taxa de bits dos dados CAN FD (5 Mbps)
max_relative_targetNoneLimite de segurança para posições relativas do alvo
position_kpPor articulaçãoGanhos proporcionais de controle de posição
position_kdPor articulaçãoGanhos derivativos de controle de posição

Configuração do Líder

ParâmetroPadrãoDescrição
port-Interface CAN (por exemplo, can1)
manual_controlTrueDesativar torque para movimento manual
use_can_fdTrueAtive o CAN FD para taxas de dados mais altas
can_bitrate1000000Taxa de bits nominal (1 Mbps)
can_data_bitrate5000000Taxa de bits dos dados CAN FD (5 Mbps)

Configuração do Motor

O OpenArm usa motores Damiao com a seguinte configuração padrão:

ConjuntoTipo de MotorEnviar IDID de Recv
joint_1 (Pan do ombro)DM80090x010x11
joint_2 (Elevação de ombro)DM80090x020x12
joint_3 (Rotação do ombro)DM43400x030x13
joint_4 (Flexão do cotovelo)DM43400x040x14
joint_5 (Rotação do pulso)DM43100x050x15
joint_6 (Pitch do pulso)DM43100x060x16
joint_7 (Rotação do pulso)DM43100x070x17
gripperDM43100x080x18

Solução de problemas

Sem resposta dos motores

  1. Verifique as conexões da fonte de alimentação
  2. Verify CAN wiring (CAN-H, CAN-L, GND)
  3. Execute diagnósticos: lerobot-setup-can --mode=test --interfaces=can0
  4. Consulte o guia de solução de problemas do Damiao para mais detalhes

Interface CAN não encontrada

Verifique se a interface CAN está configurada:

ip link show can0

Recursos

Update on GitHub