Pular para o conteúdo principal
Fase 3 · Capítulo 10 · Prática

10. Calibração e teleoperação de líder e seguidor

Capítulo 10 do curso para iniciantes em SO-ARM Physical AI — calibre os braços líder e seguidor com lerobot-calibrate, entenda o mapeamento de juntas e os arquivos de calibração, e rode sua primeira teleoperação mestre-escravo.

⚠️
Verificação de segurança antes de executar

Retire itens de valor e pessoas alheias a até 1 metro do espaço de trabalho. Antes deste capítulo, confirme que o braço está bem fixado e que energia e cabos estão conectados corretamente.

10.1 Por que a calibração do braço completo importa​

Motivação

10.1 Por que a calibração do braço completo importa

O Capítulo 6 gravou IDs e baud rates; o Capítulo 7 verificou os neutros. A calibração do braço completo é o último passo: ela aprende, para cada junta, o mapeamento entre a leitura bruta do servo e um ângulo físico, de modo que líder e seguidor reportem valores idênticos quando coincidem fisicamente.

Ela é essencial por um motivo mais profundo: permite que uma rede treinada num SO-ARM funcione em outro. Como todo SO-ARM calibrado concorda sobre o que é "zero grau" e "o meio do curso", um dataset gravado no seu seguidor vale no meu.

perigo

Recapitulando as regras de energia: na edição Standard do SO101 toda a alimentação é 5V. Na edição Pro do SO101, calibre e opere o líder com fonte de 5V e o seguidor com fonte de 12V em cada passo.

10.2 Calibrar o braço seguidor​

Calibração

10.2 Calibrar o braço seguidor

Conecte os 6 servos pelos cabos de 3 fios e a placa, conceda permissões e execute:

sudo chmod 666 /dev/ttyACM*
lerobot-calibrate \
--robot.type=so101_follower \
--robot.port=/dev/ttyACM0 \
--robot.id=my_awesome_follower_arm # <- dê um nome único ao robô

O procedimento (mostrado no vídeo):

  1. Posição média: leve o braço para que cada junta fique no meio do curso (aproximadamente a postura "reto para cima") e pressione Enter;
  2. Curso completo: mova cada junta pelo curso todo, uma por vez, enquanto a ferramenta amostra o mínimo/máximo.
dica

Por atualizações do repositório do LeRobot, é normal o terminal não receber sinal do servo 5 durante a calibração do braço líder. Pode continuar a operação.

10.3 Calibrar o braço líder​

Calibração

10.3 Calibrar o braço líder

Os mesmos dois passos (posição média, depois curso completo por junta), com as chaves do teleoperator:

lerobot-calibrate \
--teleop.type=so101_leader \
--teleop.port=/dev/ttyACM1 \
--teleop.id=my_awesome_leader_arm # <- dê um nome único ao líder
dica

Se aparecer Could not connect on port '/dev/ttyACM0'. Make sure you are using the correct port. Try running lerobot-find-port, conceda permissões de novo com sudo chmod 666 /dev/ttyACM*.

Onde a calibração mora (e como refazer)​

Os arquivos de calibração ficam como JSON em ~/.cache/huggingface/lerobot/calibration/robots/ e ~/.cache/huggingface/lerobot/calibration/teleoperators/. Para recalibrar:

  • Opção 1 — apagar os arquivos para começar limpo:
rm -rf ~/.cache/huggingface/lerobot/calibration/robots
rm -rf ~/.cache/huggingface/lerobot/calibration/teleoperators
  • Opção 2 — responder ao prompt. Rodando o comando num braço já calibrado aparece:
Press ENTER to use provided calibration file associated with the id my_awesome_leader_arm, or type 'c' and press ENTER to run calibration:

Digite c + Enter para recalibrar; só Enter mantém os dados existentes.

Quando a calibração falha: Magnitude ... exceeds 2047​

Se a calibração ou teleoperação lançar Magnitude 30841 exceeds 2047 (max for sign_bit_index=11), o offset zero de um servo está anormal. Desligue, reinicie o braço e tente de novo; se persistir, faça antes uma calibração de posição média — com a ferramenta do Capítulo 7 ou com os scripts do Seeed_RoboController:

git clone https://github.com/Seeed-Projects/Seeed_RoboController.git
cd Seeed_RoboController
pip install -r requirements.txt

python -m src.tools.servo_disable # (opcional) desabilita o torque para mover juntas à mão
python -m src.tools.servo_middle_calibration # grava a posição atual como 2048
python -m src.tools.servo_center_test # move para 2048 para verificar

Depois volte ao lerobot-calibrate e refaça a calibração completa.

10.4 Mapeamento de juntas: direção, curso e garras​

Mapeamentos

10.4 Mapeamento de juntas: direção, curso e garras

Depois de calibrar, verifique manualmente:

  • Direção: girar a junta 1 do líder no sentido horário deve girar a 1 do seguidor no horário. Se alguma junta for ao contrário, a calibração foi feita com o braço em postura espelhada — refaça essa junta.
  • Curso: leve cada junta do líder aos dois limites; o seguidor deve atingir os limites correspondentes sem forçar contra as peças impressas.
  • Garras: feche totalmente o punho do líder — a garras do seguidor deve fechar totalmente; a abertura total mapeia para abertura total.
dica

Lembre do Capítulo 9: o --robot.id / --teleop.id escolhido aqui fica ligado ao arquivo de calibração. Use exatamente os mesmos ids ao teleoperar, gravar e avaliar depois.

10.5 Iniciar a teleoperação mestre-escravo​

Teleoperação

10.5 Iniciar a teleoperação mestre-escravo

Agora o momento em que os dois braços viram um sistema só. Conceda permissões e inicie:

sudo chmod 666 /dev/ttyACM*
lerobot-teleoperate \
--robot.type=so101_follower \
--robot.port=/dev/ttyACM0 \
--robot.id=my_awesome_follower_arm \
--teleop.type=so101_leader \
--teleop.port=/dev/ttyACM1 \
--teleop.id=my_awesome_leader_arm

O comando teleoperate automaticamente:

  1. Detecta calibrações faltantes e inicia o procedimento;
  2. Conecta o robô e o teleoperator e começa a teleoperação.

Diretrizes de segurança na teleoperação​

  • Sustente o seguidor na primeira vez que o torque ativar — ele salta para a postura calibrada.
  • Mova o líder devagar; o seguidor segue com torque total.
  • Mantenha os dedos longe da garras do seguidor e dos pontos de pinçamento.
  • Se o seguidor atrasar, tremer ou uma junta parar de responder: pare, desligue e confira o cabo de barramento daquele servo (LED apagado indica o cabo frouxo anterior a ele).

10.6 Frequência de controle e latência​

Desempenho

10.6 Frequência de controle e latência

De onde vem a latência? Por que é inevitável?​

Cada ciclo lê o líder, envia alvos ao seguidor e (depois) lê câmeras. Câmeras USB entregam quadros no próprio ritmo. O ciclo é rápido — dezenas de milissegundos — mas não zero, então movimentos rápidos do líder sempre parecem um pouco suavizados no seguidor. É normal.

O que é a frequência de controle? Dá para configurar?​

O LeRobot roda o ciclo num fps configurado (30 por padrão nos fluxos do SO-ARM; o --dataset.fps posterior precisa casar). Se a teleoperação engasgar:

  • Evite hubs USB — conecte braços e câmeras direto ao computador;
  • Verifique se nenhum outro processo prende as portas seriais;
  • Confirme com lerobot-find-port que nenhum outro dispositivo divide o barramento.

10.7 Prática​

Prática

10.7 Prática

  1. Calibre líder e seguidor; encontre os dois JSON em ~/.cache/huggingface/lerobot/calibration/.
  2. Teleopere por 5 minutos: toque os quatro cantos do tapete com a garras e pegue um objeto pequeno.
  3. Experimente deliberadamente o caminho do erro: rode teleoperate com um --robot.id errado e leia o erro — você nunca mais o esquecerá.
  4. Pratique a recalibração pelo prompt c.

Com a cadeia de controle verificada, o próximo capítulo projeta os dados da sua primeira política.

Loading Comments...