Guia de Configuração do SO-101
Das peças à primeira coleta de dados. Tempo estimado: ~3–4 horas (sem contar o tempo de impressão 3D).
Montagem
~60 min + tempo de impressãoO SO-101 é um braço totalmente de código aberto. Todas as peças são ou impressas em 3D ou disponíveis como hardware comercial listado na lista de materiais do LeRobot no HuggingFace.
Peças que você precisa
- 6× motores servo Feetech STS3215
- Peças estruturais impressas em 3D (arquivos STL no repositório do SO-101 no GitHub)
- Cabo adaptador USB-para-serial (chip CH340 ou CP2102)
- Fonte de alimentação de 12V (mínimo de 3A)
- Cabos de servo e hardware de conectores (conforme a lista de materiais)
Lista de verificação de montagem
- Imprima todos os componentes estruturais (base, links, efetor final)
- Instale os servos STS3215 em suas respectivas carcaças de link
- Roteie os cabos dos servos pelos canais de cabo impressos
- Conecte os servos em cadeia na ordem correta (IDs 1–6 da base à ponta)
- Prenda a base a uma superfície estável antes de ligar
- Leia o página de segurança antes de aplicar energia
Impressão 3D das Peças
~8–16 hrs de tempo de impressãoTodos os componentes estruturais do SO-101 são imprimíveis em FDM usando impressoras de mesa padrão. Os arquivos STL estão organizados em impressões de arquivo único para cada braço, tornando o fatiamento simples.
Configurações de Fatiamento Recomendadas
Arquivos STL — Quais Imprimir
Impressões em arquivo único pré-arranjadas estão disponíveis para tamanhos de mesa comuns:
- Mesa de 220×220 mm (Ender 3):
- Seguidor:
STL/SO101/Follower/Ender_Follower_SO101.stl - Líder:
STL/SO101/Leader/Ender_Leader_SO101.stl
- Seguidor:
- Mesa de 205×250 mm (Prusa/UP):
- Seguidor:
STL/SO101/Follower/Prusa_Follower_SO101.stl - Líder:
STL/SO101/Leader/Prusa_Leader_SO101.stl
- Seguidor:
STL/Gauges/ e testá-los contra um bloco Lego ou um servo STS3215. Um ajuste correto no medidor confirma que a calibração da sua impressora está precisa. Ajuste a escala se necessário antes de se comprometer com a impressão completa.
Instalação de Software
~15 minO SO-101 é suportado nativamente pelo HuggingFace LeRobot. Nenhum plugin adicional é necessário — apenas instale o LeRobot.
Instale o LeRobot
# Using pip
pip install lerobot
# Or with uv (recommended)
uv pip install lerobot
permissões da porta serial do Linux
No Linux, as portas seriais sob /dev/ttyACM* exigem que o usuário esteja no dialout grupo. Execute isso uma vez e faça logout e login novamente:
sudo usermod -aG dialout $USER
# Then log out and back in, or run:
newgrp dialout
Pré-requisitos
- Python 3.10+
- Linux (Ubuntu 22.04 recomendado) ou macOS
- driver USB-para-serial instalado (driver CH340 no macOS; geralmente pré-instalado no Linux)
Detecção e Calibração de Portas
~20 minEncontre a porta serial USB correta para o braço, em seguida, execute o script de calibração do LeRobot para definir as posições zero do servo.
Encontre a porta serial
python lerobot/scripts/find_motors_bus_port.py
Conecte e desconecte o cabo USB quando solicitado. O script identifica a qual porta o braço está conectado. Valores típicos:
# Linux: /dev/ttyACM0 (or ttyUSB0 for CH340 adapters)
# macOS: /dev/tty.usbmodem* or /dev/tty.usbserial-*
Executar calibração
Mova o braço através de todo o seu alcance de movimento quando solicitado:
python lerobot/scripts/calibrate.py \
--robot.type=so101 \
--robot.port=/dev/ttyACM0
Primeiro Teste de Movimento
~15 minExecute o script de teleoperação em modo de braço único para verificar se todas as articulações respondem corretamente antes de conectar um braço líder.
python lerobot/scripts/teleoperate.py \
--robot.type=so101 \
--robot.port=/dev/ttyACM0
O que verificar
- Todas as 6 articulações respondem aos comandos sem pular.
- Sem avisos de travamento de servo ou sobrecarga no terminal.
- O gripper abre e fecha em toda a sua extensão.
- Sem enrosco de cabos em qualquer posição da articulação.
Teleoperação
~30 minO SO-101 funciona como um braço autônomo ou como um braço seguidor com um braço líder para teleoperação. Usar um segundo braço como líder produz demonstrações de maior qualidade para aprendizado por imitação.
Modo autônomo (teclado / programático).
python lerobot/scripts/teleoperate.py \
--robot.type=so101 \
--robot.port=/dev/ttyACM0
Com um braço líder (por exemplo, líder DK1).
python lerobot/scripts/teleoperate.py \
--robot.type=so101 \
--robot.port=/dev/ttyACM0 \
--teleop.type=so101 \
--teleop.port=/dev/ttyACM1
Coleta de Dados
Em andamentoGrave demonstrações usando record.py. Os dados são salvos no formato LeRobot e podem ser enviados diretamente para o HuggingFace Hub para treinamento.
Gravação básica.
python lerobot/scripts/record.py \
--robot.type=so101 \
--robot.port=/dev/ttyACM0 \
--dataset.repo_id=your-org/so101-dataset \
--dataset.task="pick cube"
Com uma câmera USB.
python lerobot/scripts/record.py \
--robot.type=so101 \
--robot.port=/dev/ttyACM0 \
--robot.cameras.top.type=opencv \
--robot.cameras.top.index=0 \
--dataset.repo_id=your-org/so101-dataset \
--dataset.task="pick cube"
Melhores práticas de gravação
- Grave pelo menos 50 demonstrações por tarefa antes do treinamento
- Varie as posições e orientações dos objetos entre os episódios
- Use descritivos
--dataset.tasknomes para filtragem posterior - Câmeras OAK-D ou Intel RealSense funcionam bem para coleta de dados com profundidade.
- Verifique se o conjunto de dados é enviado para o HuggingFace Hub após cada sessão.
Próximos passos
Uma vez que você tenha os dados coletados, treine um modelo de Política ACT ou Difusão usando os scripts de treinamento do LeRobot. Leia o completo Caminho de aprendizado SO-101 para uma progressão estruturada desde a configuração até a implantação do modelo.