Saltar al contenido principal

Etapa 3 · Capítulo 11 · Práctica

11. Calibración de Líder y Seguidor y Teleoperación

Capítulo 11 del Curso de Introducción a la IA Física de Seeed: configuración del entorno, calibración del brazo seguidor y del brazo líder, mapeo de articulaciones, seguridad en la teleoperación, inicio de la teleoperación maestro‑esclavo, frecuencia de control y latencia, y práctica guiada.

11.1 Desempaquetado, cableado y montaje del brazo​

Configuración

11.1 Desempaquetado, cableado y montaje del brazo

  • reBot DM
  • reBot RS

11.2 Configuración del entorno​

Entorno

11.2 Configuración del entorno

Suponiendo que ya has creado un entorno virtual en la Etapa 2, a continuación solo necesitamos clonar el repositorio e instalar el entorno en el entorno conda que creaste. NO uses una máquina virtual ni WSL; es mejor instalar directamente Ubuntu 22.04.

tip

Recuerda: todos los pasos posteriores deben realizarse dentro del entorno virtual y del entorno lerobot.

Paso 1: Clonar el repositorio Seeed LeRobot

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

Paso 2: Entrar en el entorno virtual e instalar LeRobot y los plugins de 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

Paso 3: Instalar ffmpeg (dependencia de códec de vídeo)

conda install ffmpeg -c conda-forge

Notas de versión:

  • De forma predeterminada, se instalará ffmpeg 7.X (compatible con el codificador libsvtav1).
  • Si encuentras problemas de compatibilidad de versión, puedes especificar ffmpeg 7.1.1:
conda install ffmpeg=7.1.1 -c conda-forge
  • Puedes comprobar si se admite el codificador libsvtav1 mediante ffmpeg -encoders | grep svtav1.

Paso 4: Configuración especial para dispositivos NVIDIA Jetson (omite este paso en un PC normal)

Para dispositivos Jetson JetPack 6.0+ (asegúrate de haber instalado PyTorch-gpu y Torchvision compatibles con Jetson antes de este paso):

# 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

Paso 5: Comprobar si la GPU de PyTorch está disponible

python3

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

Escribe exit() para salir.

aviso

Si muestra False, instalaste la versión para CPU: necesitas reinstalar PyTorch.

11.3 Calibración del brazo seguidor​

Calibración

11.3 Calibración del brazo seguidor

  • A continuación, antes de calibrar, asegúrate de que el robot reBot B601-RS esté conectado a la alimentación y al cable de datos.
  • Los archivos de calibración de Líder y Seguidor se almacenan respectivamente en ~/.cache/huggingface/lerobot/calibration/robots y ~/.cache/huggingface/lerobot/calibration/teleoperators. Para recalibrar, elimina los archivos correspondientes o simplemente ejecuta el comando de calibración: la terminal mostrará un mensaje indicando que pulses C para recalibrar o pulses Enter para usar el archivo de calibración existente.
  • Si no puedes conectarte al seguidor, consulta la Etapa 2 y usa la interfaz de motorbridge para comprobar si el brazo funciona correctamente.
  • Sigue las indicaciones para mover el brazo Seguidor a la posición cero que se muestra arriba. El brazo solo necesita calibrarse una vez en el mismo ordenador después del montaje. A continuación se muestran los comandos de calibración; consulta la posición cero en la imagen (la pinza debe estar completamente cerrada).
Follower zero position

Para la calibración del 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 la calibración del Seguidor RS:

Si tu sistema aún no tiene instalado el controlador PCAN, consulta 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) Si estás usando Jetson (Jetpack 6.x), ejecuta el siguiente comando para encontrar el número de puerto CAN de tu Jetson:

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

Ejemplo de salida:

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

El número de puerto usado en todos los comandos posteriores del seguidor debe coincidir con el resultado mostrado aquí.

aviso

Si tu Jetson no tiene el PCAN driver installed, la comunicación será persistentemente anómala.

11.4 Calibración del brazo líder​

Calibración

11.4 Calibración del brazo líder

Notas de calibración del Líder reBot 102:

  • Cuando comienza la calibración, la posición actual de cada servo en el reBot Arm 102 se restablecerá a cero.
  • joint_ranges (límites de articulación) provienen del archivo de configuración config_rebot_arm_102_leader.py, no de los datos de calibración.
  • Si una articulación parece quedarse siempre atascada cerca de un límite, comprueba primero la configuración de joint_ranges.
  • Las direcciones de las articulaciones se definen en el archivo de configuración; si las direcciones no coinciden, modifica la configuración en lugar de recalibrar.
  • El Líder reBot 102 utiliza un módulo USB‑a‑UART, que normalmente se asigna a /dev/ttyUSB*.
  • Usa ls /dev/ttyUSB* para ver el número de puerto real.

En la primera conexión, es posible que aparezca un error indicando que no se puede encontrar el puerto serie /dev/ttyACM0; esto se debe a que brltty está ocupando el puerto. Sigue estos pasos:

sudo dmesg | grep ttyUSB   # See 'disconnected' on the last line
sudo apt remove brltty # Remove brltty
Leader arm serial port

Sigue las indicaciones para mover el brazo Líder a la posición cero que se muestra arriba:

sudo chmod 666 /dev/ttyUSB0

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

Mantenlo inmóvil y luego pulsa Enter hasta que la calibración se complete.

11.5 Mapeo de articulaciones: dirección, rango y pinza​

Mapeo

11.5 Mapeo de articulaciones: dirección, rango y pinza

Joint mapping

11.6 Directrices de seguridad para la teleoperación​

Seguridad

11.6 Directrices de seguridad para la teleoperación

Teleoperation safety guidelines

11.7 Inicio de la teleoperación maestro‑esclavo​

Teleoperación

11.7 Inicio de la teleoperación maestro‑esclavo

¡Las mismas normas de seguridad se aplican a todos los escenarios de movimiento del brazo!

Durante la teleoperación, si los cables de alimentación se aflojan, la conexión de alimentación es deficiente o los cables de señal se desconectan, primero debes detener el código, devolver el brazo a su posición cero inicial y luego volver a conectar la alimentación y reiniciar el programa, para evitar que la corrupción de datos haga que el brazo se salga de control y genere peligro.

Teleoperación DM: primero concede permisos a los puertos serie:

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

Ejecuta la teleoperación:

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

Teleoperación RS — primero concede permisos a los puertos serie:

# 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

Ejecuta la teleoperación:

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 Frecuencia de Control y Latencia​

Rendimiento

11.8 Frecuencia de Control y Latencia

Que la teleoperación se sienta "sensible" depende de dos cosas: cuántos bucles ejecuta por segundo el circuito de reenvío (frecuencia) y cuánta demora hay entre tu mano y el brazo (latencia).

¿De Dónde Viene la Latencia? ¿Por Qué Es Inevitable?​

Latency sources

¿Qué Es la Frecuencia de Control? ¿Se Puede Configurar?​

El bucle de teleoperación usa por defecto 60 Hz — completa 60 bucles por segundo de "leer Leader → mapear → enviar CAN → leer de vuelta"; cada bucle tiene un presupuesto de tiempo de 16,7 ms. Esta frecuencia se puede ajustar mediante el parámetro fps de la configuración de teleoperate, pero ten en cuenta dos cosas:

  • El límite superior está determinado por el tiempo del circuito de hardware, no por el software. La cadena anterior por sí sola tarda más de diez milisegundos por bucle, así que el límite práctico superior para este hardware está alrededor de 60–100 Hz. Configurarlo más alto no tiene sentido: la frecuencia real no aumentará y solo verás advertencias de tiempo de periodo excedido.
  • 60 Hz ya supera con creces lo necesario. Los movimientos humanos conscientes más rápidos son solo de 5–10 Hz; 60 Hz es como tomar diez instantáneas de cada pequeño movimiento, por lo que la densidad de muestreo cubre completamente el ancho de banda de la mano.

11.9 Práctica Guiada​

Práctica

11.9 Práctica Guiada: Agarrar, Transportar y Colocar

La teleoperación es estable, pero "puede moverse" y "puede trabajar" aún requieren práctica deliberada. La calidad de los datos del Capítulo 13 depende de tu nivel de destreza actual. Practica en tres niveles:

  • Ejercicio 1: Transferencia de objetos sin carga (familiarizarse con la sensación). Coloca algunos bloques ligeros en el espacio de trabajo. Practica: moverte sobre el objetivo → descender → cerrar el efector final → levantar. Objetivo: 10 repeticiones sin colisiones ni caídas a mitad de ejecución, con cada ejecución fluyendo de forma suave y sin vacilaciones.
  • Ejercicio 2: Transporte y colocación (cadena completa de tareas). Completa todo el flujo de trabajo de "agarrar → transportar → colocar en el contenedor designado". Objetivo: 10 repeticiones consecutivas con poses de inicio y fin casi idénticas cada vez.
  • Criterio de aprobación: puedes completar 20 tareas completas seguidas a un ritmo constante sin sentirte tenso; entonces estarás listo para el siguiente capítulo.
Loading Comments...