Conteúdo detalhado
⚠️ Antes de ligar o braço
Um braço de servos aperta dedo, derruba copo e pode bater em quem estiver perto. Trabalhe com a mesa livre num raio maior que o alcance do braço, com uma chave na fonte dos servos ao alcance da mão e sem crianças ou animais na área. O tópico 6 detalha a rotina.
🤝 O braço SO-101 e o projeto LeRobot
O LeRobot é uma biblioteca aberta da Hugging Face, em Python e PyTorch, que junta tudo o que você precisa para ensinar um robô por demonstração: controlar motores, ler câmeras, gravar episódios, treinar políticas e rodá-las no braço real. O SO-101 é o braço de referência do projeto: seis servos em cada braço, peças que você imprime ou compra prontas e custo de hobby. Com o par líder/seguidor, você mostra a tarefa movendo o líder, e o seguidor repete.
🌱 Novo aqui?
Cada articulação que gira é um grau de liberdade: o SO-101 tem cinco juntas mais a garra. O servo serial de barramento (o STS3215) é um motor com redução, sensor de posição e um pequeno controlador dentro; vários dividem os mesmos fios, e cada um responde só ao seu número (ID). Teleoperação é controlar o robô à distância, aqui pelo braço líder. Uma política é o programa treinado que decide o movimento a partir das câmeras (módulo 5.4).
Como ler: os círculos são as juntas (cinco mais a garra na ponta). O braço ciano é o líder: você o segura e ele só mede posições. O teal, com brilho, é o seguidor: tem força e repete a pose. O computador no meio lê um e manda no outro, dezenas de vezes por segundo.
Arquivos de impressão abertos no repositório do SO-101; também há kits com as peças prontas. PLA comum serve.
STS3215 nos dois braços. No líder, algumas juntas usam reduções diferentes para ficar leve de mover: siga a lista de peças.
Uma por braço: converte a USB do computador para o barramento serial dos servos e recebe a fonte.
Existem versões do STS3215 para tensões diferentes. Confira a tensão dos seus servos antes de ligar a fonte do kit.
Por que aprender
O par SO-101 com o LeRobot é hoje o caminho mais curto e barato entre "tenho um braço" e "o braço aprendeu uma tarefa". Tudo o que você fizer aqui (portas, IDs, calibração) é a base dos módulos 5.4, 5.5 e 5.6.
Conceitos-chave
🔧 Montar, configurar IDs e calibrar servos
Todo STS3215 sai de fábrica com o mesmo ID. Como os seis servos de um braço dividem os mesmos fios, cada um precisa de um ID diferente antes da montagem final: do 1, na base, ao 6, na garra. Depois de montado, a calibração ensina ao software onde fica o meio e os extremos de cada junta, para que líder e seguidor falem a mesma "língua" de posição.
Como ler: a linha teal é o barramento, um fio de dados mais alimentação que passa por todos os servos em corrente. O número em cada caixa é o ID; embaixo, a junta correspondente. Se dois servos tiverem o mesmo ID, ambos respondem juntos e o braço enlouquece: por isso a configuração é feita um a um.
🌱 Novo aqui?
Os comandos abaixo usam o LeRobot, que você instala no tópico 3. Se ainda não instalou, leia este tópico para entender a ordem, faça o tópico 3 e volte. A porta é o nome que o sistema dá ao cabo USB de cada braço: /dev/ttyACM0 no Linux, /dev/tty.usbmodem... no macOS, COM5 no Windows.
Passo a passo
Descubra a porta de cada braço
lerobot-find-port pede para desconectar o cabo e mostra qual porta sumiu. Repita para o outro braço e anote as duas.
Grave os IDs, um servo por vez
lerobot-setup-motors pede para ligar só um servo no cabo, grava o ID e passa ao próximo, começando pela garra. Marque cada servo com caneta.
Monte os braços
Siga o guia de montagem oficial do SO-101, junta por junta, com os IDs na posição certa. Não aperte demais os parafusos em plástico impresso.
Calibre o seguidor e o líder
lerobot-calibrate pede para pôr o braço no meio do curso e depois mover cada junta de um extremo ao outro. Siga as instruções da tela; o resultado fica salvo com o id que você der ao braço.
Objetivo: os comandos dos passos 1, 2 e 4, na sintaxe que rodou no guia INEMA robotica-real2sim com o LeRobot 0.6.1 (out/2026). As flags mudam entre versões: confira com --help e na doc atual.
source ~/lerobot-env/bin/activate # o ambiente do tópico 3
lerobot-find-port # desconecte e reconecte quando pedir: mostra a porta
# IDs dos servos (um servo por vez no cabo, siga a tela)
lerobot-setup-motors --robot.type=so101_follower --robot.port=/dev/ttyACM0
lerobot-setup-motors --teleop.type=so101_leader --teleop.port=/dev/ttyACM1
# calibração (braço montado; o id dá nome ao arquivo de calibração)
lerobot-calibrate --robot.type=so101_follower --robot.port=/dev/ttyACM0 --robot.id=seguidor
lerobot-calibrate --teleop.type=so101_leader --teleop.port=/dev/ttyACM1 --teleop.id=lider
Como verificar
- ✓lerobot-find-port mostra uma porta diferente para cada braço.
- ✓A calibração termina sem erro e informa onde salvou o arquivo do seguidor e do lider.
- ✗"Permission denied" na porta (Linux)? Veja o tópico 3: falta o seu usuário no grupo dialout.
- ✗Servo "não encontrado"? Cabo frouxo, fonte desligada ou ID repetido.
Como ler: o arco cinza é o giro que o servo consegue fazer; o teal é o que a montagem permite antes de uma peça bater na outra. A calibração mede o teal e o meio (linha ciano). Com isso, "50% do cotovelo" significa a mesma pose no líder e no seguidor, mesmo que os servos tenham sido montados em ângulos diferentes.
Por que aprender
Quase todo problema de braço que "treme", "vai para o lado errado" ou "não copia direito" vem de ID trocado ou calibração ruim. Fazer essa etapa com calma poupa horas de busca de defeito no treino do módulo 5.4.
Conceitos-chave
🐍 Instalar o LeRobot (Python)
O LeRobot é instalado pelo pip, dentro de um ambiente virtual só dele (ele traz o PyTorch, que é grande e tem versões próprias). O extra feetech instala o suporte aos servos do SO-101; para treinar no 5.4 você vai precisar de mais extras. A documentação oficial também mostra a instalação com conda e o ffmpeg (usado para gravar vídeo dos episódios). Os nomes dos extras e a versão de Python exigida mudam: confira a página de instalação antes de começar.
Objetivo: criar o ambiente, instalar o LeRobot com suporte aos servos Feetech e liberar a porta USB.
python3 -m venv ~/lerobot-env
source ~/lerobot-env/bin/activate
pip install --upgrade pip
pip install "lerobot[feetech]" # confira a versão e os extras na doc atual
pip show lerobot # mostra a versão instalada
lerobot-find-port --help # os comandos lerobot-* devem existir
# Linux: permissão para usar as portas USB sem sudo (depois saia e entre de novo na sessão)
sudo usermod -aG dialout $USER
Como verificar
- ✓pip show lerobot mostra "Name: lerobot" e um número de versão; anote-o junto do seu projeto.
- ✓lerobot-find-port --help imprime o modo de uso, sem "command not found".
- ✗"command not found"? O ambiente não está ativo: rode o source de novo em cada terminal novo.
✓ Faça
- ✓Um ambiente só para o LeRobot, separado do 5.1 e do 5.2.
- ✓Anotar a versão que funcionou e fixá-la (lerobot==X.Y.Z).
- ✓Ler o --help de cada comando antes de copiar de tutorial.
✗ Não faça
- ✗sudo pip install no Python do sistema.
- ✗Atualizar o LeRobot no meio de um projeto sem testar antes.
- ✗Copiar comandos de vídeos antigos: as flags já mudaram de nome.
💡 Veja também (projetos INEMA)
O guia robotica-so101 monta o gêmeo do SO-101 na simulação, e o robotica-real2sim transforma a foto da mesa numa cena que treina o robô, com um capítulo sobre o braço real. Os comandos deste módulo foram conferidos nesses guias.
Por que aprender
Bibliotecas de IA para robôs mudam rápido. Saber isolar a instalação, conferir a versão e ler o --help é o que separa um projeto que roda de novo daqui a seis meses de um que quebra na primeira atualização.
Conceitos-chave
🎮 Teleoperação líder/seguidor
Na teleoperação, o computador repete um laço curto: lê a posição das seis juntas do líder, converte pela calibração e manda as mesmas posições como alvo para o seguidor. É a mesma coisa que vai acontecer na gravação de demonstrações do módulo 5.4, só que sem salvar nada. Por isso, antes de gravar, treine a mão aqui: movimentos suaves, sem trancos, sempre dentro da área livre.
Como ler: siga as setas teal da esquerda para a direita e volte pela ciano tracejada: é um ciclo sem fim enquanto o comando roda. Se o seguidor parece "atrasado", o ciclo está lento (cabo, computador ocupado ou câmera pesada); se ele vai para o lado errado, o problema está na caixa do meio, a calibração.
Objetivo: a primeira teleoperação, sem câmeras. Use as portas e os id do tópico 2. Antes de apertar Enter, ponha o líder numa pose parecida com a do seguidor: na largada, o seguidor corre para a pose do líder.
lerobot-teleoperate \
--robot.type=so101_follower --robot.port=/dev/ttyACM0 --robot.id=seguidor \
--teleop.type=so101_leader --teleop.port=/dev/ttyACM1 --teleop.id=lider
# Ctrl+C encerra o programa (não substitui a chave na fonte: veja o tópico 6)
Como verificar
- ✓Movendo devagar o líder, o seguidor copia cada junta, inclusive a garra, sem atraso visível.
- ✓Cinco minutos de uso sem tremor e sem servo esquentando ao toque.
- ✗Uma junta espelhada ou com folga grande? Refaça a calibração dela antes de seguir.
✓ Boa teleoperação
- ✓Mover o líder devagar, como se o seguidor fosse frágil.
- ✓Olhar para o seguidor, não para o líder.
- ✓Repetir a mesma tarefa várias vezes do mesmo jeito.
✗ Teleoperação ruim
- ✗Trancos rápidos: o seguidor bate e o servo esquenta.
- ✗Forçar a garra fechada contra um objeto duro por muito tempo.
- ✗Levar o braço até os limites a todo momento.
Por que aprender
A política do módulo 5.4 aprende a imitar exatamente o que você faz na teleoperação, inclusive os trancos e as hesitações. Uma mão calma e repetitiva aqui vale mais do que um modelo maior depois.
Conceitos-chave
📷 Câmeras e espaço de trabalho
As políticas do módulo 5.4 enxergam pelas câmeras, então o cenário precisa ser estável: câmeras fixas, luz constante e fundo simples. O arranjo comum usa duas câmeras USB: uma de frente (ou de cima), que vê a mesa toda, e outra no punho ou ao lado, que vê a garra de perto. O que mudar entre a gravação e o uso (a lâmpada, a toalha da mesa, o ângulo da câmera) confunde a política.
Como ler: visto de cima, o braço (com brilho) fica na borda da mesa; o semicírculo é até onde ele alcança, e os objetos da tarefa ficam dentro dele. As duas câmeras ciano olham para essa área. A moldura vermelha tracejada é a área livre, e a chave da fonte fica fora dela, perto de você.
Objetivo: achar o índice de cada câmera e teleoperar vendo a imagem dela junto com as posições das juntas.
lerobot-find-cameras opencv # lista as câmeras e salva uma foto de cada (veja o índice)
lerobot-teleoperate \
--robot.type=so101_follower --robot.port=/dev/ttyACM0 --robot.id=seguidor \
--robot.cameras="{ frente: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30}}" \
--teleop.type=so101_leader --teleop.port=/dev/ttyACM1 --teleop.id=lider \
--display_data=true
Como verificar: abre uma janela com a imagem da câmera "frente" e as posições das juntas em tempo real enquanto você teleopera. Para a segunda câmera, acrescente outra entrada no dicionário (por exemplo lateral: {type: opencv, index_or_path: 2, ...}) com o índice que o find-cameras mostrou. Sintaxe conferida no LeRobot 0.6.1; confira a versão.
💡 Marque tudo com fita
Cole fita na mesa marcando a base do braço, o pé de cada câmera e a posição inicial dos objetos. Tire uma foto do arranjo. Quando for gravar no módulo 5.4 (ou alguém mexer na bancada), você recoloca tudo no mesmo lugar em um minuto.
Por que aprender
Em aprendizado por demonstração, a câmera é o sensor principal. Um espaço de trabalho repetível faz a diferença entre uma política que acerta quase sempre e uma que só funciona na tarde em que foi gravada.
Conceitos-chave
🛑 Segurança com braço em movimento
O SO-101 é pequeno, mas tem força para prender um dedo na garra, derrubar um copo de água no notebook ou bater no rosto de quem se debruça sobre a mesa. Os riscos crescem quando uma política treinada, e não a sua mão, está no controle (módulo 5.4): ela pode fazer um movimento que você não esperava. A regra é a do módulo 5.1: a parada não depende do software. Uma chave em série com a fonte dos servos, ao alcance da mão, corta a força na hora. Ao cortar, o braço perde a sustentação e cai sobre a mesa, por isso nada frágil embaixo dele.
Rotina antes de cada sessão
Limpe a área
Nada além dos objetos da tarefa dentro do alcance; líquidos, ferramentas e notebook fora da mesa do braço.
Teste a chave da fonte
Ligue, desligue e ligue de novo antes de rodar qualquer comando. Diga em voz alta para quem estiver perto onde ela fica.
Comece devagar
Primeiros segundos de cada execução com a mão perto da chave, olhando o seguidor. Política nova roda primeiro sem objetos na mesa.
✓ Faça
- ✓Fixar a base do braço na mesa (grampo ou parafuso).
- ✓Usar óculos de proteção quando a garra pega objetos rígidos.
- ✓Desligar a fonte ao terminar e ao mexer em cabos.
- ✓Em aula, um aluno por vez dentro da área, os outros atrás da faixa.
✗ Não faça
- ✗Contar com o Ctrl+C como parada de emergência.
- ✗Pôr a mão entre as peças com a fonte ligada.
- ✗Deixar o braço ligado sem ninguém olhando.
- ✗Usar fonte com tensão diferente da dos seus servos.
🌱 Novo aqui?
Torque é a força de giro do servo. Com torque ligado, a junta segura a posição e resiste se você empurrar; com torque desligado, ela fica solta. Ponto de esmagamento é qualquer lugar onde duas peças se aproximam ao mover (a garra, o cotovelo dobrando): é onde dedos se machucam.
Por que aprender
Hábitos de segurança criados com um braço pequeno são os mesmos que a indústria usa com braços grandes: área demarcada, parada física, teste antes de rodar. Quem leva o braço para uma escola ou feira precisa deles desde o primeiro dia.
Conceitos-chave
✅ Resumo do módulo
Para ir além
- Documentação do LeRobot — instalação, SO-101, comandos atuais
- LeRobot no GitHub — código, versões e notas de mudança
- SO-ARM100 / SO-101 (TheRobotStudio) — arquivos de impressão e lista de peças
- Veja também: robotica-so101 (INEMA) — gêmeo do SO-101 na simulação
- Veja também: robotica-real2sim (INEMA) — foto da mesa vira simulação que treina o robô
Próximo módulo
5.4 · Aprender por demonstração: gravar episódios, treinar o ACT e ver o braço repetir a tarefa sozinho.