7. Depuração de servos com a ferramenta de ajuste
Capítulo 7 do curso para iniciantes em SO-ARM Physical AI — use a ferramenta de depuração Seeed_RoboController para detectar servos, reprogramar IDs, gravar valores neutros, controlar servos individuais e ler o estado deles.
7.1 Para que serve a ferramenta
7.1 Para que serve a ferramenta
A ferramenta de depuração de servos (Seeed_RoboController) é uma ferramenta gráfica para braços robóticos LeRobot / SO-ARM. Com ela você pode:
- Detectar rapidamente o estado dos servos;
- Reprogramar IDs duplicados ou errados;
- Gravar valores neutros (posição média);
- Controlar servos individuais e ler tensão, temperatura, velocidade, carga e corrente;
- Gerenciar registros avançados, baud rate e restauração de fábrica.
Roda em Windows, Ubuntu e Mac, e é sua primeira parada quando um braço se comporta de forma estranha — antes de recalibrar no LeRobot, antes de desmontar e antes de assumir servo queimado.
7.2 Instalação
7.2 Instalação
1. Clone o repositório:
git clone https://github.com/Seeed-Projects/Seeed_RoboController.git
2. Instale as dependências. Recomendado dentro do ambiente conda do LeRobot do Capítulo 5. Para uma instalação isolada, crie um ambiente virtual novo para não poluir o Python do sistema:
pip install -r requirements.txt
3. Verifique o ambiente. Se retornar [OK] Environment check passed, está pronto:
python setup.py
4. Inicie a ferramenta:
python -m src.gui.factory_calibration_tool
Isso abre a seleção interativa de porta. (Opcional) Especifique as portas manualmente se estiverem ocupadas:
python -m src.gui.factory_calibration_tool --port1 /dev/ttyUSB0 --port2 /dev/ttyUSB1
7.3 Checar se os servos estão normais
7.3 Checar se os servos estão normais
Primeiro, selecione a porta correspondente no seletor. Se os servos 1-6 forem todos detectados, os servos estão reconhecidos e as funções básicas funcionam.

Se alguns aparecerem como não detectados:
- Confira o cabeamento; feche a página e abra de novo.
- Se persistir, os IDs podem estar duplicados — possivelmente porque o comando de calibração do braço foi executado por engano como o de calibração de servos. Nesse caso, reprograme esses IDs (próxima seção).

7.4 Reprogramar IDs de servo
7.4 Reprogramar IDs de servo
Do Capítulo 4: todos compartilham o barramento, então gravar um ID afeta todos os servos com aquele ID. Por isso os demais devem ser desconectados e reprogramados um a um.
Passo 1 — remova os chicotes entre servos adjacentes, da garras rumo à base:


Passo 2 — conecte um servo por vez. Garanta que só um servo esteja ligado à placa. Por exemplo, conecte o servo #6 conforme a figura — os outros seguem o mesmo padrão, então dá para corrigir IDs sem desmontar o braço.

Passo 3 — regrave o ID. No exemplo, só o servo #4 é reconhecido, mas o conectado é o #6 — o ID está errado e precisa voltar a 6.

Clique no servo #4 e mude o ID para 6. Repita com os demais.

Concluída a correção, reconecte os cabos um a um.
7.5 Gravar o valor neutro no servo
7.5 Gravar o valor neutro no servo
A posição neutra (média) é a postura "reta" da qual toda calibração posterior é medida — internamente corresponde ao valor 2048.

- Clique em Serial Port Neutral Test para conferir se o neutro do braço bate com a referência. Se for parecido, o valor está normal.
- Se não, leve o braço à posição neutra e clique em Serial Port Neutral Calibration — a posição atual é gravada como neutro.
- Clique em Serial Port Disable Motors e o braço fica frouxo — segure-o com a mão.

Esta também é a solução para o erro do LeRobot Magnitude 30841 exceeds 2047 (max for sign_bit_index=11): a mensagem indica offset zero anormal num servo. Faça aqui uma calibração de posição média (ou com o script servo_middle_calibration.py do mesmo repositório) e refaça a calibração completa do Capítulo 10.
7.6 Controle e status de servos individuais
7.6 Controle e status de servos individuais
Por padrão, todos os servos da página estão na posição neutra.

1. Habilite o torque e mova um servo. Habilite todos de uma vez ou um individual, e arraste o controle deslizante. Vá com calma: as peças impressas bloqueiam fisicamente certas posições, então não arraste até 0 nem ao máximo. Desabilitando o torque, o braço fica frouxo.

2. Manutenção por servo. Dá para calibrar o neutro de um único servo e limpar o neutro, máximo e mínimo internos dele.
3. Painel de status:
| Campo | Significado |
|---|---|
| Pos | Posição |
| V | Tensão |
| T | Temperatura |
| Spd | Velocidade |
| Carga | Torque |
| Cur | Corrente |
| Mov | Estado de movimento |
| Modelo | Modelo, autoridade |
| Status | Normal / Sobrecorrente / Sobrecarga |
Temperatura subindo com carga após longas teleoperações é normal no seguidor; Sobrecorrente ou Sobrecarga persistente em repouso normalmente indica junta travada ou neutro errado.
7.7 Ferramentas avançadas
7.7 Ferramentas avançadas
Para depurar mais a fundo dá para ler e gravar registros brutos, mudar o baud rate e restaurar o padrão de fábrica.

Gravar registros e restaurar de fábrica às cegas pode inutilizar a configuração de um servo. Prefira as funções guiadas (seções 7.3-7.6) e toque em registros brutos só quando um guia específico mandar.
7.8 Resumo
7.8 Resumo
- A ferramenta de depuração é o console de manutenção do barramento de servos: detectar, corrigir IDs, ajustar neutros, mover servos, ler status.
- IDs de servo são sempre regravados um servo conectado por vez.
- Um neutro correto (2048) é a base de toda a calibração seguinte.
Com os braços montados e cada servo verificado, a Fase 2 está completa. A Fase 3 começa explicando por que braços robóticos precisam de aprendizado — e depois coloca seu SO-ARM para coletar dados e treinar políticas.