Pular para o conteúdo principal

Estágio 3 · Capítulo 11 · Prática

11. Calibração de Líder e Seguidor e Teleoperação

Capítulo 11 do Curso para Iniciantes em IA Física da Seeed — configuração do ambiente, calibração dos braços seguidor e líder, mapeamento de juntas, segurança na teleoperação, início da teleoperação mestre-escravo, frequência de controle e latência, e prática hands-on.

11.1 Desembalagem, Fiação e Fixação do Braço​

Configuração

11.1 Desembalagem, Fiação e Fixação do Braço

  • reBot DM
  • reBot RS

11.2 Configuração do Ambiente​

Ambiente

11.2 Configuração do Ambiente

Supondo que você já tenha criado um ambiente virtual no Estágio 2, em seguida só precisamos clonar o repositório e instalar o ambiente no ambiente conda que você criou. NÃO use máquina virtual ou WSL; o ideal é instalar o Ubuntu 22.04 diretamente.

dica

Lembre-se: todas as etapas subsequentes devem ser executadas dentro do ambiente virtual e do ambiente lerobot.

Passo 1: Clonar o repositório Seeed LeRobot

mkdir ~/rebot_lerobot
cd ~/rebot_lerobot
git clone https://github.com/Seeed-Projects/lerobot.git

Passo 2: Entrar no ambiente virtual e instalar o LeRobot e os plugins do reBot

conda create -y -n rebot_arm python=3.12
pip install -e ./lerobot
pip install lerobot-teleoperator-rebot-arm-102
pip install lerobot-robot-seeed-b601
pip install motorbridge

Passo 3: Instalar ffmpeg (dependência de codec de vídeo)

conda install ffmpeg -c conda-forge

Notas de versão:

  • Por padrão, o ffmpeg 7.X será instalado (suporta o codificador libsvtav1).
  • Se você encontrar problemas de compatibilidade de versão, pode especificar o ffmpeg 7.1.1:
conda install ffmpeg=7.1.1 -c conda-forge
  • Você pode verificar via ffmpeg -encoders | grep svtav1 se o codificador libsvtav1 é suportado.

Passo 4: Configuração especial para dispositivos NVIDIA Jetson (ignore este passo em um PC comum)

Para dispositivos Jetson JetPack 6.0+ (certifique-se de ter instalado PyTorch-gpu e Torchvision compatíveis com Jetson antes deste passo):

# Install OpenCV and other dependencies via conda (Jetson JetPack 6.0+ only)
conda install -y -c conda-forge "opencv>=4.10.0.84"
# Uninstall OpenCV
conda remove opencv
# Install specific OpenCV version via pip3
pip3 install opencv-python==4.10.0.84
conda install -y -c conda-forge ffmpeg
conda uninstall numpy
# This version must be compatible with Torchvision
pip3 install numpy==1.26.0

Passo 5: Verificar se a GPU do PyTorch está disponível

python3

import torch
print(torch.cuda.is_available()) # Should output True

Digite exit() para sair.

atenção

Se a saída for False, você instalou a versão para CPU — é necessário reinstalar o PyTorch.

11.3 Calibrando o Braço Seguidor​

Calibração

11.3 Calibrando o Braço Seguidor

  • Em seguida, antes de calibrar, certifique-se de que o robô reBot B601-RS esteja conectado à alimentação e ao cabo de dados.
  • Os arquivos de calibração de Líder e Seguidor são armazenados, respectivamente, em ~/.cache/huggingface/lerobot/calibration/robots e ~/.cache/huggingface/lerobot/calibration/teleoperators. Para recalibrar, exclua os arquivos correspondentes ou simplesmente execute o comando de calibração — o terminal exibirá: pressione C para recalibrar, pressione Enter para usar o arquivo de calibração existente.
  • Se você não conseguir se conectar ao seguidor, consulte o Estágio 2 e use a interface do motorbridge para testar se o braço está funcionando corretamente.
  • Siga as instruções para mover o braço Seguidor para a posição zero mostrada acima. O braço só precisa ser calibrado uma vez no mesmo computador após a montagem. Abaixo estão os comandos de calibração; consulte a posição zero na imagem (o gripper deve estar totalmente fechado).
Posição zero do seguidor

Para calibração do Seguidor DM:

sudo chmod 666 /dev/ttyACM*
cd lerobot
lerobot-calibrate \
--robot.type=seeed_b601_dm_follower \
--robot.port=/dev/ttyACM0 \
--robot.id=follower1 \
--robot.can_adapter=damiao

Para calibração do Seguidor RS:

Se o seu sistema ainda não tiver o driver PCAN instalado, consulte esta página: PCAN driver installed

sudo ip link set can0 down 2>/dev/null
sudo ip link set can0 type can bitrate 1000000
sudo ip link set can0 up
cd lerobot

lerobot-calibrate \
--robot.type=seeed_b601_rs_follower \
--robot.port=can0 \
--robot.id=follower1 \
--robot.can_adapter=socketcan

(Opcional) Se você estiver usando Jetson (Jetpack 6.x), execute o seguinte comando para encontrar o número da porta CAN do seu Jetson:

for i in /sys/class/net/can*; do
[ "$(basename "$(readlink -f "$i/device/driver" 2>/dev/null)")" = "pcan" ] && basename "$i"
done

Exemplo de saída:

can2  # Could also be can0, can1, or other CAN number

O número da porta usado em todos os comandos subsequentes do seguidor deve corresponder à saída aqui.

atenção

Se o seu Jetson não tiver o PCAN driver installed, a comunicação ficará persistentemente anormal.

11.4 Calibrando o Braço Líder​

Calibração

11.4 Calibrando o Braço Líder

Notas de calibração do Líder reBot 102:

  • Quando a calibração começa, a posição atual de cada servo no reBot Arm 102 será redefinida para zero.
  • joint_ranges (limites de junta) vêm do arquivo de configuração config_rebot_arm_102_leader.py, não dos dados de calibração.
  • Se uma junta parecer sempre presa perto de um limite, verifique primeiro a configuração de joint_ranges.
  • As direções das juntas são definidas no arquivo de configuração; se as direções não corresponderem, modifique a configuração em vez de recalibrar.
  • O Líder reBot 102 usa um módulo USB-para-UART, geralmente mapeado para /dev/ttyUSB*.
  • Use ls /dev/ttyUSB* para ver o número real da porta.

Na primeira conexão, você pode receber um erro informando que a porta serial /dev/ttyACM0 não pode ser encontrada — isso ocorre porque o brltty está ocupando a porta. Siga estes passos:

sudo dmesg | grep ttyUSB   # See 'disconnected' on the last line
sudo apt remove brltty # Remove brltty
Porta serial do braço líder

Siga as instruções para mover o braço Líder para a posição zero mostrada acima:

sudo chmod 666 /dev/ttyUSB0

lerobot-calibrate \
--teleop.type=rebot_arm_102_leader \
--teleop.port=/dev/ttyUSB0 \
--teleop.id=rebot_arm_102_leader

Mantenha-o parado e pressione Enter até a calibração ser concluída.

11.5 Mapeamento de Juntas: Direção, Alcance e Gripper​

Mapeamento

11.5 Mapeamento de Juntas: Direção, Alcance e Gripper

Mapeamento de juntas

11.6 Diretrizes de Segurança para Teleoperação​

Segurança

11.6 Diretrizes de Segurança para Teleoperação

Diretrizes de segurança para teleoperação

11.7 Iniciando a Teleoperação Mestre-Escravo​

Teleoperação

11.7 Iniciando a Teleoperação Mestre-Escravo

As mesmas regras de segurança se aplicam a todos os cenários de movimento do braço!

Durante a teleoperação, se os cabos de alimentação se soltarem, a conexão de energia estiver ruim ou os cabos de sinal se desconectarem, você deve primeiro parar o código, retornar o braço à sua posição inicial zero, então reconectar a alimentação e reiniciar o programa — para evitar que corrupção de dados faça o braço sair de controle e crie perigo.

Teleoperação DM — primeiro conceda permissões às portas seriais:

# leader
sudo chmod 666 /dev/ttyUSB*
# follower
sudo chmod 666 /dev/ttyACM*

Execute a teleoperação:

lerobot-teleoperate \
--robot.type=seeed_b601_dm_follower \
--robot.port=/dev/ttyACM0 \
--robot.id=follower1 \
--robot.can_adapter=damiao \
--teleop.type=rebot_arm_102_leader \
--teleop.port=/dev/ttyUSB0 \
--teleop.id=rebot_arm_102_leader

Teleoperação RS — primeiro conceda permissões às portas seriais:

# leader
sudo chmod 666 /dev/ttyUSB*
# follower
sudo ip link set can0 down 2>/dev/null
sudo ip link set can0 type can bitrate 1000000
sudo ip link set can0 up

Execute a teleoperação:

lerobot-teleoperate \
--robot.type=seeed_b601_rs_follower \
--robot.port=can0 \
--robot.id=follower1 \
--robot.can_adapter=socketcan \
--teleop.type=rebot_arm_102_leader \
--teleop.port=/dev/ttyUSB0 \
--teleop.id=rebot_arm_102_leader

11.8 Frequência de Controle e Latência​

Desempenho

11.8 Frequência de Controle e Latência

Se a teleoperação parece "responsiva" depende de duas coisas: quantos loops o circuito de encaminhamento executa por segundo (frequência) e quanto atraso existe entre a sua mão e o braço (latência).

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

Latency sources

O que é a frequência de controle? Ela pode ser configurada?​

O loop de teleoperação é, por padrão, 60 Hz — completando 60 loops por segundo de "ler Leader → mapear → enviar CAN → ler de volta"; cada loop tem um orçamento de tempo de 16,7 ms. Essa frequência pode ser ajustada por meio do parâmetro fps da configuração de teleoperação, mas tenha duas coisas em mente:

  • O limite superior é determinado pelo tempo do circuito de hardware, não pelo software. A cadeia acima por si só leva mais de dez milissegundos por loop, então o limite superior prático para este hardware é em torno de 60–100 Hz. Configurar acima disso é inútil: a frequência real não aumentará, e você só verá avisos de estouro de período.
  • 60 Hz já está muito acima do necessário. Os movimentos conscientes humanos mais rápidos são apenas 5–10 Hz; 60 Hz é como tirar dez instantâneos de cada pequeno movimento, então a densidade de amostragem cobre totalmente a largura de banda da mão.

11.9 Prática Guiada​

Prática

11.9 Prática Guiada: Agarrar, Transportar e Posicionar

A teleoperação é estável, mas "conseguir se mover" e "conseguir trabalhar" ainda exigem prática deliberada. A qualidade dos dados no Capítulo 13 depende da sua proficiência atual. Pratique em três níveis:

  • Exercício 1: Transferência de objetos sem carga (familiarizar-se com a sensação). Coloque alguns blocos leves na área de trabalho. Prática: mover acima do alvo → descer → fechar o gripper → erguer. Objetivo: 10 repetições sem colisões ou quedas no meio da execução, com cada execução fluindo suavemente, sem hesitação.
  • Exercício 2: Transporte e posicionamento (cadeia completa de tarefas). Complete todo o fluxo de trabalho "agarrar → transportar → colocar no recipiente designado". Objetivo: 10 repetições consecutivas com poses iniciais e finais quase idênticas a cada vez.
  • Padrão de aprovação: você consegue completar 20 tarefas completas seguidas em um ritmo constante sem se sentir sobrecarregado — então você está pronto para o próximo capítulo.
Loading Comments...