PTENES
MÓDULO 5.3 · PRÁCTICA

🦾 Brazo SO-101 y LeRobot

O SO-101 es un brazo abierto, de piezas impresas en 3D y servos Feetech STS3215, que viene en par: un líder que mueves con la mano y un seguidor que copia. En este módulo configuras los servos, los calibras, instalas LeRobot de Hugging Face y haces la primera teleoperación, con cámaras y reglas de seguridad.

6
Temas
Avanzado
Nivel
Práctica
Tipo
Par SO-101
Hardware
0%
0 de 0 temas leídos · Sección 1 de 6

Contenido detallado

⚠️ Antes de encender el brazo

Un brazo con servos puede apretarte un dedo, tirar un vaso y golpear a quien esté cerca. Trabaja con la mesa despejada en un radio mayor que el alcance del brazo, con un interruptor para la fuente de los servos al alcance de la mano y sin niños ni animales en el área. El tema 6 detalla la rutina.

1

🤝 El brazo SO-101 y el proyecto LeRobot

O LeRobot es una biblioteca abierta de Hugging Face, en Python y PyTorch, que reúne todo lo que necesitas para enseñar a un robot mediante demostraciones: controlar motores, leer cámaras, grabar episodios, entrenar políticas y ejecutarlas en el brazo real. El SO-101 es el brazo de referencia del proyecto: seis servos en cada brazo, piezas que imprimes o compras listas y un costo de afición. Con el par líder/seguidor, muestras la tarea moviendo el líder y el seguidor la repite.

🌱 ¿Eres nuevo aquí?

Cada articulación que gira es un grado de libertad: el SO-101 tiene cinco articulaciones más la pinza. El servo serial de bus (el STS3215) es un motor con reducción, sensor de posición y un pequeño controlador integrado; varios comparten los mismos cables y cada uno responde solo a su número (ID). Teleoperación es controlar el robot a distancia, en este caso mediante el brazo líder. Una política es el programa entrenado que decide el movimiento a partir de las cámaras (módulo 5.4).

LÍDERlo mueves con la manoSEGUIDORcopia la posecomputadora 6 servos STS3215 en cada brazo, un cable USB por cada uno

Cómo leer: Los círculos son las articulaciones (cinco más la pinza en la punta). El brazo cian es el líder: lo sostienes y solo mide posiciones. El teal, con brillo, es el seguidor: tiene fuerza y repite la pose. La computadora en medio lee uno y envía las órdenes al otro, decenas de veces por segundo.

🖨️ Piezas

Archivos de impresión abiertos en el repositorio del SO-101; también hay kits con las piezas listas. El PLA común sirve.

⚙️ Servos

STS3215 en ambos brazos. En el líder, algunas articulaciones usan reducciones diferentes para que sea fácil moverlo: sigue la lista de piezas.

🔌 Placa adaptadora

Una por brazo: convierte la conexión USB de la computadora al bus serial de los servos y recibe la fuente de alimentación.

🔋 Fuente de alimentación

Hay versiones del STS3215 para diferentes voltajes. Comprueba el voltaje de tus servos antes de conectar la fuente del kit.

Por qué aprender

La combinación del SO-101 con LeRobot es hoy el camino más corto y económico entre «tengo un brazo» y «el brazo aprendió una tarea». Todo lo que hagas aquí (puertos, IDs, calibración) es la base de los módulos 5.4, 5.5 y 5.6.

Conceptos clave

Grados de libertad
cada articulación que gira
Líder / seguidor
tú lo mueves, él lo copia
STS3215
servo serial con sensor
LeRobot
del motor a la política
2

🔧 Montar, configurar los IDs y calibrar los servos

Todos los STS3215 salen de fábrica con el mismo ID. Como los seis servos de un brazo comparten los mismos cables, cada uno necesita un ID diferente antes del montaje final: del 1, en la base, al 6, en la pinza. Después de montarlo, la calibración le enseña al software dónde están el centro y los extremos de cada articulación, para que el líder y el seguidor hablen el mismo «idioma» de posición.

placaUSB + fuente de alimentación123 456basehombrocodo muñecagiropinzalos mismos cables para todos: cada servo solo obedece a su propio IDconfigura un servo a la vez, solo en el cable

Cómo leer: la línea teal es el bus: un cable de datos más alimentación que pasa por todos los servos en cadena. El número en cada cuadro es el ID; debajo aparece la articulación correspondiente. Si dos servos tienen el mismo ID, ambos responden al mismo tiempo y el brazo se vuelve loco: por eso la configuración se hace de uno en uno.

🌱 ¿Eres nuevo aquí?

Los comandos de abajo usan LeRobot, que instalas en el tema 3. Si todavía no lo instalaste, lee este tema para entender el orden, completa el tema 3 y vuelve. La puerto es el nombre que el sistema le da al cable USB de cada brazo: /dev/ttyACM0 en Linux, /dev/tty.usbmodem... en macOS, COM5 en Windows.

Paso a paso

1

Encuentra el puerto de cada brazo

lerobot-find-port te pide desconectar el cable y muestra qué puerto desapareció. Repite el proceso con el otro brazo y anota ambos puertos.

2

Asigna los IDs, un servo a la vez

lerobot-setup-motors te pide conectar solo un servo al cable, asignarle el ID y pasar al siguiente, empezando por la pinza. Marca cada servo con un marcador.

3

Monta los brazos

Sigue la guía oficial de montaje del SO-101, articulación por articulación, con los IDs en la posición correcta. No aprietes demasiado los tornillos en el plástico impreso.

4

Calibra el seguidor y el líder

lerobot-calibrate te pide poner el brazo en el centro de su recorrido y luego mover cada articulación de un extremo al otro. Sigue las instrucciones en pantalla; el resultado se guarda con el id que le asignes al brazo.

Objetivo: los comandos de los pasos 1, 2 y 4, con la sintaxis que funcionó en la guía INEMA robotica-real2sim con LeRobot 0.6.1 (oct/2026). Las opciones cambian entre versiones: comprueba con --help y en la documentación actual.

terminal
source ~/lerobot-env/bin/activate        # el entorno del tema 3
lerobot-find-port                       # desconecta y vuelve a conectar cuando te lo pida: muestra el puerto

# IDs de los servos (un servo a la vez en el cable, sigue las instrucciones en pantalla)
lerobot-setup-motors --robot.type=so101_follower --robot.port=/dev/ttyACM0
lerobot-setup-motors --teleop.type=so101_leader  --teleop.port=/dev/ttyACM1

# calibración (brazo montado; el id le da nombre al archivo de calibración)
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

Cómo verificar

  • ✓lerobot-find-port muestra un puerto diferente para cada brazo.
  • ✓La calibración termina sin errores e indica dónde guardó el archivo del seguidor y del lider.
  • ✗¿«Permission denied» en el puerto (Linux)? Consulta el tema 3: falta agregar tu usuario al grupo dialout.
  • ✗¿Servo «no encontrado»? Puede ser un cable flojo, la fuente apagada o un ID repetido.
mínimomáximo centrogris: lo que alcanza el servo · teal: lo que permite la piezaguarda:mínimocentromáximo

Cómo leer: el arco gris muestra el giro que puede hacer el servo; el teal, lo que permite el montaje antes de que una pieza choque con otra. La calibración mide el teal y el centro (línea cian). Así, «50 % del codo» significa la misma pose en el líder y el seguidor, aunque los servos estén montados en ángulos diferentes.

Por qué aprender

Casi todos los problemas de un brazo que «tiembla», «se mueve hacia el lado equivocado» o «no copia bien» se deben a un ID incorrecto o a una mala calibración. Hacer esta etapa con calma te ahorra horas buscando fallas durante el entrenamiento del módulo 5.4.

Conceptos clave

ID del servo
1 base … 6 pinza
Bus
los mismos cables para todos
Calibración
mínimo, centro, máximo
--robot.id
nombre del archivo guardado
3

🐍 Instalar LeRobot (Python)

LeRobot se instala mediante pip, dentro de un entorno virtual solo para él (incluye PyTorch, que es grande y tiene sus propias versiones). El extra feetech instala el soporte para los servos del SO-101; para entrenar en el 5.4 necesitarás más extras. La documentación oficial también muestra la instalación con conda y ffmpeg (que se usa para grabar videos de los episodios). Los nombres de los extras y la versión de Python requerida cambian: consulta la página de instalación antes de empezar.

Objetivo: crear el entorno, instalar LeRobot con soporte para los servos Feetech y habilitar el puerto USB.

terminal (Linux / Pi / macOS)
python3 -m venv ~/lerobot-env
source ~/lerobot-env/bin/activate
pip install --upgrade pip
pip install "lerobot[feetech]"           # comprueba la versión y los extras en la documentación actual
pip show lerobot                        # muestra la versión instalada
lerobot-find-port --help                # deben existir los comandos lerobot-*

# Linux: permiso para usar los puertos USB sin sudo (después, sal y vuelve a iniciar sesión)
sudo usermod -aG dialout $USER

Cómo verificar

  • ✓pip show lerobot muestra "Name: lerobot" y un número de versión; anótalo junto con tu proyecto.
  • ✓lerobot-find-port --help imprime el modo de uso, sin "command not found".
  • ✗¿"command not found"? El entorno no está activo: ejecuta el source de nuevo en cada terminal nueva.

✓ Hazlo

  • ✓Un entorno solo para LeRobot, separado de 5.1 y 5.2.
  • ✓Anota la versión que funcionó y fíjala (lerobot==X.Y.Z).
  • ✓Lee el --help de cada comando antes de copiarlo de un tutorial.

✗ No lo hagas

  • ✗sudo pip install en el Python del sistema.
  • ✗Actualizar LeRobot a mitad de un proyecto sin probar antes.
  • ✗Copiar comandos de videos antiguos: las flags ya cambiaron de nombre.

💡 Consulta también (proyectos INEMA)

La guía robotica-so101 arma el gemelo del SO-101 en la simulación, y robotica-real2sim transforma la foto de la mesa en una escena que entrena al robot, con un capítulo sobre el brazo real. Los comandos de este módulo se verificaron en esas guías.

Por qué aprender

Las bibliotecas de IA para robots cambian rápido. Saber aislar la instalación, comprobar la versión y leer el --help es lo que hace que un proyecto vuelva a funcionar dentro de seis meses, en lugar de romperse con la primera actualización.

Conceptos clave

venv
instalación aislada
extras [feetech]
compatibilidad con los servos
dialout
acceso al puerto USB
Fijar versión
proyecto reproducible
4

🎮 Teleoperación líder/seguidor

En la teleoperación, la computadora repite un ciclo corto: lee la posición de las seis articulaciones del líder, la convierte según la calibración y envía esas mismas posiciones como objetivo al seguidor. Es lo mismo que ocurrirá al grabar demostraciones del módulo 5.4, solo que sin guardar nada. Por eso, antes de grabar, practica aquí: movimientos suaves, sin tirones, siempre dentro del área despejada.

leer líder6 posiciones convertirsegún la calibraciónmover seguidor6 objetivosun ciclo dura unos pocos milisegundosse repite decenas de veces por segundo

Cómo leer: sigue las flechas color teal de izquierda a derecha y vuelve por la línea cian discontinua: es un ciclo infinito mientras el comando está en ejecución. Si el seguidor parece "atrasado", el ciclo es lento (cable, computadora ocupada o cámara pesada); si se mueve hacia el lado equivocado, el problema está en el recuadro del medio: la calibración.

Objetivo: la primera teleoperación, sin cámaras. Usa los puertos y los id del tema 2. Antes de presionar Enter, coloca el líder en una pose parecida a la del seguidor: al comenzar, el seguidor se mueve rápidamente a la pose del líder.

terminal
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 termina el programa (no reemplaza el interruptor en la fuente: consulta el tema 6)

Cómo verificar

  • ✓Al mover lentamente el líder, el seguidor copia cada articulación, incluida la pinza, sin retraso visible.
  • ✓Cinco minutos de uso sin temblores y sin que los servos se calienten al tocarlos.
  • ✗¿Una articulación está invertida o tiene mucha holgura? Vuelve a calibrarla antes de continuar.

✓ Buena teleoperación

  • ✓Mueve el líder lentamente, como si el seguidor fuera frágil.
  • ✓Mira al seguidor, no al líder.
  • ✓Repite la misma tarea varias veces de la misma manera.

✗ Mala teleoperación

  • ✗Tirones rápidos: el seguidor golpea y el servo se calienta.
  • ✗Mantener la pinza cerrada a la fuerza contra un objeto duro durante mucho tiempo.
  • ✗Llevar el brazo hasta los límites todo el tiempo.

Por qué aprender

La política del módulo 5.4 aprende a imitar exactamente lo que haces en la teleoperación, incluidos los tirones y las dudas. Aquí, una mano tranquila y repetitiva vale más que un modelo más grande después.

Conceptos clave

Bucle de control
leer, convertir, mover
Posición objetivo
hacia dónde va el servo
Pose inicial
líder parecido al seguidor
Demostración
lo que imita la política
5

📷 Cámaras y espacio de trabajo

Las políticas del módulo 5.4 ven a través de las cámaras, así que el escenario debe ser estable: cámaras fijas, luz constante e fondo sencillo. La configuración habitual usa dos cámaras USB: una al frente (o desde arriba), que ve toda la mesa, y otra en la muñeca o al lado, que ve la pinza de cerca. Cualquier cambio entre la grabación y el uso (la lámpara, el mantel, el ángulo de la cámara) confunde a la política.

cámara frontal cámaralateralalcance del brazobrazoárea despejada(sin personas) interruptor de la fuente

Cómo leer: Vista desde arriba: el brazo (iluminado) queda en el borde de la mesa; el semicírculo indica hasta dónde llega, y los objetos de la tarea van dentro de él. Las dos cámaras cian apuntan a esa área. El marco rojo discontinuo delimita el área despejada, y el interruptor de la fuente queda fuera, cerca de ti.

Objetivo: encontrar el índice de cada cámara y teleoperar viendo su imagen junto con las posiciones de las articulaciones.

terminal
lerobot-find-cameras opencv           # enumera las cámaras y guarda una foto de cada una (consulta el í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

Cómo verificar: abre una ventana con la imagen de la cámara "frente" y las posiciones de las articulaciones en tiempo real mientras teleoperas. Para la segunda cámara, agrega otra entrada al diccionario (por ejemplo lateral: {type: opencv, index_or_path: 2, ...}) con el índice que mostró find-cameras . Sintaxis verificada en LeRobot 0.6.1; comprueba la versión.

💡 Marca todo con cinta

Pega cinta a la mesa para marcar la base del brazo, el pie de cada cámara y la posición inicial de los objetos. Toma una foto del montaje. Cuando vayas a grabar en el módulo 5.4 (o alguien mueva algo en la mesa de trabajo), podrás volver a colocar todo en el mismo lugar en un minuto.

Por qué aprender

En el aprendizaje por demostración, la cámara es el sensor principal. Un espacio de trabajo repetible marca la diferencia entre una política que acierta casi siempre y otra que solo funciona en la tarde en que se grabó.

Conceptos clave

Cámara fija
siempre el mismo ángulo
index_or_path
qué cámara usar
Alcance
hasta dónde llega el brazo
Luz constante
la misma escena para la IA
6

🛑 Seguridad con el brazo en movimiento

El SO-101 es pequeño, pero tiene fuerza suficiente para atraparte un dedo con la pinza, derramar un vaso de agua sobre la laptop o golpear en la cara a quien se incline sobre la mesa. Los riesgos aumentan cuando una política entrenada, y no tu mano, tiene el control (módulo 5.4): puede hacer un movimiento que no esperabas. La regla es la del módulo 5.1: la parada no depende del software. Un interruptor en serie con la fuente de los servos, al alcance de la mano, corta la energía de inmediato. Al cortarla, el brazo pierde el soporte y cae sobre la mesa, por eso no debe haber nada frágil debajo.

Rutina antes de cada sesión

1

Despeja el área

Dentro del alcance, deja solo los objetos de la tarea; líquidos, herramientas y laptop deben quedar fuera de la mesa del brazo.

2

Prueba el interruptor de la fuente

Enciéndelo, apágalo y vuelve a encenderlo antes de ejecutar cualquier comando. Diles en voz alta a quienes estén cerca dónde está.

3

Empieza despacio

Durante los primeros segundos de cada ejecución, mantén la mano cerca del interruptor y observa al seguidor. Prueba primero la política nueva sin objetos sobre la mesa.

✓ Hazlo

  • ✓Fija la base del brazo a la mesa (con una abrazadera o un tornillo).
  • ✓Usa gafas de protección cuando la pinza sujete objetos rígidos.
  • ✓Apaga la fuente al terminar y cuando manipules los cables.
  • ✓En clase, solo un alumno a la vez dentro del área; los demás deben quedarse detrás de la cinta.

✗ No lo hagas

  • ✗Confiar en Ctrl+C como parada de emergencia.
  • ✗Poner la mano entre las piezas con la fuente encendida.
  • ✗Dejar el brazo encendido sin que nadie lo supervise.
  • ✗Usar una fuente con un voltaje distinto al de tus servos.

🌱 ¿Eres nuevo aquí?

Torque es la fuerza de giro del servo. Con el torque activado, la articulación mantiene la posición y ofrece resistencia si la empujas; con el torque desactivado, queda suelta. Un punto de aplastamiento es cualquier lugar donde dos piezas se acercan al moverse (la pinza, el codo al doblarse): ahí es donde puedes lastimarte los dedos.

Por qué aprender

Los hábitos de seguridad que adquieres con un brazo pequeño son los mismos que usa la industria con brazos grandes: área delimitada, parada física y prueba antes de ejecutar. Quien lleve el brazo a una escuela o feria los necesita desde el primer día.

Conceptos clave

Interruptor de la fuente
parada física
Torque
fuerza que mantiene la articulación
Aplastamiento
donde queda atrapado el dedo
Área despejada
fuera del alcance

✅ Resumen del módulo

✓
SO-101 + LeRobot: par líder/seguidor con servos STS3215 y la biblioteca abierta de Hugging Face.
✓
IDs y calibración: un servo a la vez, del 1 en la base al 6 en la pinza; mínimo, medio y máximo de cada articulación.
✓
Instalación aislada: venv, extra feetech, versión anotada, opciones verificadas con --help.
✓
Teleoperación y cámaras: movimientos suaves, cámaras fijas, luz y posiciones marcadas.
✓
Parada física: interruptor de la fuente al alcance, área despejada y nada frágil debajo del brazo.

Para profundizar

Siguiente módulo

5.4 · Aprendizaje por demostración: grabar episodios, entrenar el ACT y ver cómo el brazo repite la tarea por sí solo.