Guía de Configuración del SO-101
Desde las piezas hasta la primera recolección de datos. Tiempo estimado: ~3–4 horas (sin contar el tiempo de impresión 3D).
Ensamblaje
~60 min + tiempo de impresiónEl SO-101 es un brazo completamente de código abierto. Todas las partes son impresas en 3D o están disponibles como hardware comercial listado en el BOM de LeRobot en HuggingFace.
Partes que necesitas
- 6× servomotores Feetech STS3215
- Partes estructurales impresas en 3D (archivos STL en el repositorio de GitHub del SO-101)
- Cable adaptador USB a serie (chip CH340 o CP2102)
- Fuente de alimentación de 12V (mínimo 3A)
- Cables de servo y hardware de conectores (según el BOM)
Lista de verificación de ensamblaje
- Imprimir todos los componentes estructurales (base, enlaces, efector final)
- Instalar los servos STS3215 en sus respectivas carcasas de enlace
- Pasar los cables de servo a través de los canales de cable impresos
- Conectar los servos en el orden correcto (IDs 1–6 de la base a la punta)
- Asegurar la base a una superficie estable antes de encender
- Lea el página de seguridad antes de aplicar energía
Impresión 3D de las partes
~8–16 hrs de tiempo de impresiónTodos los componentes estructurales del SO-101 son imprimibles en FDM utilizando impresoras de escritorio estándar. Los archivos STL están organizados en impresiones de archivo único para cada brazo, lo que facilita el corte.
Configuraciones de cortadora recomendadas
Archivos STL — Cuáles imprimir
Impresiones de archivo único preorganizadas están disponibles para tamaños de cama comunes:
- Cama de 220×220 mm (Ender 3):
- Seguidor:
STL/SO101/Follower/Ender_Follower_SO101.stl - Líder:
STL/SO101/Leader/Ender_Leader_SO101.stl
- Seguidor:
- Cama de 205×250 mm (Prusa / UP):
- Seguidor:
STL/SO101/Follower/Prusa_Follower_SO101.stl - Líder:
STL/SO101/Leader/Prusa_Leader_SO101.stl
- Seguidor:
STL/Gauges/ y pruébelos con un ladrillo de Lego o un servo STS3215. Un ajuste correcto en el medidor confirma que la calibración de su impresora es precisa. Ajuste la escala si es necesario antes de comprometerse con la impresión completa.
Instalación de software
~15 minEl SO-101 es compatible de forma nativa con HuggingFace LeRobot. No se necesita ningún complemento adicional: solo instale LeRobot.
Instalar LeRobot
# Using pip
pip install lerobot
# Or with uv (recommended)
uv pip install lerobot
permisos del puerto serie de Linux
En Linux, los puertos serie bajo /dev/ttyACM* requieren que el usuario esté en el dialout grupo. Ejecute esto una vez y cierre sesión y vuelva a iniciar sesión:
sudo usermod -aG dialout $USER
# Then log out and back in, or run:
newgrp dialout
Requisitos previos
- Python 3.10+
- Linux (se recomienda Ubuntu 22.04) o macOS
- controlador USB a serie instalado (controlador CH340 en macOS; generalmente preinstalado en Linux)
Detección y calibración de puertos
~20 minEncuentre el puerto serie USB correcto para el brazo, luego ejecute el script de calibración de LeRobot para establecer las posiciones cero del servo.
Encuentre el puerto serie
python lerobot/scripts/find_motors_bus_port.py
Conecte y desconecte el cable USB cuando se le indique. El script identifica a qué puerto está conectado el brazo. Valores típicos:
# Linux: /dev/ttyACM0 (or ttyUSB0 for CH340 adapters)
# macOS: /dev/tty.usbmodem* or /dev/tty.usbserial-*
Ejecutar calibración
Mueva el brazo a través de su rango completo de movimiento cuando se le indique:
python lerobot/scripts/calibrate.py \
--robot.type=so101 \
--robot.port=/dev/ttyACM0
Primera Prueba de Movimiento
~15 minEjecutar el script de teleoperación en modo de un solo brazo para verificar que todas las articulaciones respondan correctamente antes de conectar un brazo líder.
python lerobot/scripts/teleoperate.py \
--robot.type=so101 \
--robot.port=/dev/ttyACM0
Qué verificar
- Las 6 articulaciones responden a los comandos sin omitir.
- Sin advertencias de bloqueo de servo o sobrecarga en el terminal.
- El agarre se abre y cierra a través de todo el rango.
- Sin enganches de cable en ninguna posición de la articulación.
Teleoperación
~30 minEl SO-101 funciona como un brazo independiente o como un brazo seguidor con un brazo líder para teleoperación. Usar un segundo brazo como líder produce demostraciones de mayor calidad para el aprendizaje por imitación.
Modo independiente (teclado / programático).
python lerobot/scripts/teleoperate.py \
--robot.type=so101 \
--robot.port=/dev/ttyACM0
Con un brazo líder (por ejemplo, líder DK1).
python lerobot/scripts/teleoperate.py \
--robot.type=so101 \
--robot.port=/dev/ttyACM0 \
--teleop.type=so101 \
--teleop.port=/dev/ttyACM1
Recolección de Datos
En cursoGrabar demostraciones usando record.py. Los datos se guardan en formato LeRobot y se pueden enviar directamente a HuggingFace Hub para entrenamiento.
Grabación básica.
python lerobot/scripts/record.py \
--robot.type=so101 \
--robot.port=/dev/ttyACM0 \
--dataset.repo_id=your-org/so101-dataset \
--dataset.task="pick cube"
Con una cámara USB.
python lerobot/scripts/record.py \
--robot.type=so101 \
--robot.port=/dev/ttyACM0 \
--robot.cameras.top.type=opencv \
--robot.cameras.top.index=0 \
--dataset.repo_id=your-org/so101-dataset \
--dataset.task="pick cube"
Mejores prácticas de grabación
- Graba al menos 50 demostraciones por tarea antes del entrenamiento
- Varía las posiciones y orientaciones de los objetos a lo largo de los episodios
- Usa descriptivos
--dataset.tasknombres para filtrado posterior - Las cámaras OAK-D o Intel RealSense funcionan bien para la recolección de datos habilitados para profundidad.
- Verificar que el conjunto de datos se suba a HuggingFace Hub después de cada sesión.
Próximos pasos
Una vez que tengas datos recolectados, entrena un modelo de Política ACT o Difusión utilizando los scripts de entrenamiento de LeRobot. Lee el completo Ruta de aprendizaje de SO-101 para una progresión estructurada desde la configuración hasta el despliegue del modelo.