¡Construye tu propio robot SO-101!

Obtenga las piezas para el SO-101

Siga este README. Incluye la lista de materiales con un enlace a las fuentes de las piezas, así como las instrucciones para imprimir en 3D las piezas. Además, indique si es la primera vez que imprime o si no posee una impresora 3D.

Instalar LeRobot

Para instalar LeRobot, siga Guía de instalación.
Además de estas instrucciones, debe instalar el Feetech SDK:
 pip install -e ".[feetech]"

Instrucciones de ensamblaje paso a paso

El brazo seguidor usa 6 motores STS3215 con engranaje 1/345. Sin embargo, el líder utiliza tres motores con diferentes engranajes para asegurar que pueda soportar su propio peso y moverse con un esfuerzo mínimo. La tabla a continuación muestra qué motor se requiere para cada articulación.
Eje del brazo líder Motor Relación de engranajes
Base / Giro de hombro 1 1 / 191
Elevación de hombro 2 1 / 345
Flexión de codo 3 1 / 191
Flexión de muñeca 4 1 / 147
Rotación de muñeca 5 1 / 147
Pinza 6 1 / 147

Limpie las partes del SO-101

Retire todo el material de soporte de las piezas impresas en 3D. La forma más fácil es deslizar un pequeño destornillador debajo del material de soporte para retirarlo.
Después de colocar los motores, instale un cable de 3 pines en cada motor antes de continuar con el ensamblaje.

Instalar la Articulación 1

  1. Inserte el primer motor en la base.
  2. Asegure el motor con cuatro tornillos M2x6mm (los tornillos más pequeños): dos desde arriba y dos desde abajo.
  3. Deslice el primer soporte del motor sobre el motor y fíjelo con dos tornillos M2x6mm (uno a cada lado).
  4. Coloque ambos cuernos del motor y asegure el cuerno superior con un tornillo M3x6mm.
  5. Monte la parte del hombro.
  6. Asegure la parte del hombro con cuatro tornillos M3x6mm en la parte superior y cuatro tornillos M3x6mm en la parte inferior.
  7. Instale el soporte del motor del hombro.

Instalar la Articulación 2

  1. Deslice el segundo motor hacia abajo en su lugar desde la parte superior.
  2. Asegure el segundo motor con cuatro tornillos M2x6mm.
  3. Coloque ambos cuernos del motor en el motor 2 y asegure el cuerno superior con un tornillo M3x6mm.
  4. Fije el brazo superior, asegurándolo con cuatro tornillos M3x6mm a cada lado.

Instalar la Articulación 3

  1. Inserte el motor 3 y asegúrelo con cuatro tornillos M2x6mm.
  2. Instale ambos cuernos del motor en el motor 3, asegurando uno de ellos con un tornillo de cuerno M3x6mm.
  3. Fije el antebrazo al motor 3, usando cuatro tornillos M3x6mm a cada lado.

Instalar la Articulación 4

  1. Deslice el soporte del motor 4 en su posición.
  2. Inserte el motor 4.
  3. Asegure el motor 4 con cuatro tornillos M2x6mm, luego coloque sus cuernos de motor y fije uno con un tornillo de cuerno M3x6mm.

Instale la Articulación 5

  1. Inserte el motor 5 en el soporte de la muñeca y fíjelo con dos tornillos frontales M2x6mm.
  2. Coloque un solo cuerno de motor en el motor de la muñeca y asegúrelo con un tornillo de cuerno M3x6mm.
  3. Coloque la muñeca en el motor 4, fijándola con cuatro tornillos M3x6mm a cada lado.

Instale el Agarre / Mango

Follower

  1. Monte el agarre en el motor 5 fijándolo al cuerno del motor de la muñeca con cuatro tornillos M3x6mm.
  2. Inserte el motor del agarre y asegúrelo con dos tornillos M2x6mm a cada lado.
  3. Coloque los cuernos del motor y fije uno con un tornillo de cuerno M3x6mm.
  4. Instale la garra del agarre y asegúrela con cuatro tornillos M3x6mm a cada lado.

Líder

  1. Monte el soporte líder en la muñeca y fíjelo con cuatro tornillos M3x6mm.
  2. Coloque el mango en el motor 5 usando un tornillo M2x6mm.
  3. Inserte el motor del agarre y asegúrelo con dos tornillos M2x6mm a cada lado; coloque un cuerno de motor y fíjelo con un tornillo de cuerno M3x6mm.
  4. Coloque el disparador seguidor usando cuatro tornillos M3x6mm.

Configure los motores del SO-101

Localice los puertos USB correspondientes a cada brazo

Para identificar el puerto de cada adaptador de servo de bus, conecte el MotorBus a su computadora con USB y alimentación. Ejecute el siguiente script y desconecte el MotorBus cuando se le indique:
 lerobot-find-port

Mac

Ejemplo de salida:
 Buscando todos los puertos disponibles para el MotorBus.
['/dev/tty.usbmodem575E0032081', '/dev/tty.usbmodem575E0031751']
Desconecta el cable USB de tu MotorsBus y presiona [Enter] cuando termines.

[...Disconnect corresponding leader or follower arm and press Enter...]

El puerto de este MotorsBus es /dev/tty.usbmodem575E0032081
Vuelve a conectar el cable USB.
El puerto detectado es /dev/tty.usbmodem575E0032081, que corresponde a tu brazo líder o seguidor.

Linux

En Linux, puede que necesites otorgar acceso a los puertos USB ejecutando:

 sudo chmod 666 /dev/ttyACM0

 sudo chmod 666 /dev/ttyACM1

Ejemplo de salida:
 Buscando todos los puertos disponibles para el MotorBus. 
['/dev/ttyACM0', '/dev/ttyACM1']

Desconecta el cable usb de tu MotorsBus y presiona [Enter] cuando termines.

[...Disconnect corresponding leader or follower arm and press Enter...]

El puerto de este MotorsBus es /dev/ttyACM1
Vuelve a conectar el cable USB.

El puerto detectado es /dev/ttyACM1, que corresponde a tu brazo líder o seguidor.

Asigna los IDs de los motores y configura sus baudrates

Cada motor tiene un ID único en el bus. Los motores nuevos normalmente vienen con un ID de 1. Para una comunicación adecuada entre los motores y el controlador, cada motor debe tener un ID distinto. El baudrate determina la velocidad de transmisión de datos en el bus; el controlador y todos los motores deben compartir el mismo baudrate para comunicarse.
Para hacer esto, conecta cada motor individualmente con el controlador y configura su ID y baudrate. Estos ajustes se escriben en la memoria no volátil (EEPROM) del motor, por lo que el proceso solo debe hacerse una vez.
Si vas a reutilizar motores de otro robot, probablemente necesites repetir este paso porque sus IDs y baudrate pueden no coincidir.
El video a continuación demuestra el procedimiento paso a paso para configurar los IDs de los motores.

Follower

Conecte el cable USB desde su computadora y la fuente de alimentación a la placa controladora del brazo follower. Luego ejecute el comando a continuación (o ejecute el ejemplo de la API) usando el puerto que obtuvo anteriormente. También asigne un nombre a su brazo líder usando el parámetro id.
Comando:

 lerobot-setup-motors \
      --robot.type=so101_follower \
      --robot.port=/dev/tty.usbmodem585A0076841 # <- pegue aquí el puerto encontrado en el paso anterior

Ejemplo de API:
 from lerobot.robots.so101_follower import SO101Follower, SO101FollowerConfig

config = SO101FollowerConfig(
      port="/dev/tty.usbmodem585A0076841",
      id="my_awesome_follower_arm",
)
follower = SO101Follower(config)
follower.setup_motors()
Verá la siguiente instrucción.
 Conecte la placa controladora solo al motor 'gripper' y presione enter.
Según las indicaciones, conecte el motor del gripper—asegúrese de que sea el único motor conectado a la placa y que no esté en cadena con otros. Cuando presione [Enter], el script configurará automáticamente el ID y la velocidad en baudios de ese motor.
Solución de problemas:
Si ocurre un error, verifique todas las conexiones de los cables:
  • Fuente de alimentación
  • Cable USB entre su computadora y la placa controladora
  • Cable de 3 pines desde la placa controladora al motor
Si usa una placa controladora Waveshare, confirme que ambos jumpers estén configurados en el canal B (USB).
Después de eso, debería ver el siguiente mensaje:
 ID del motor 'gripper' configurado a 6
Siga con la siguiente instrucción:
 Conecte la placa controladora solo al motor 'wrist_roll' y presione enter.
Puede desconectar el cable de 3 pines de la placa controladora pero deje su otro extremo conectado al motor del gripper, ya que ese extremo ya está en posición. A continuación, conecte un cable nuevo de 3 pines desde la placa controladora al motor de rotación de la muñeca. Como antes, asegúrese de que este motor sea el único conectado a la placa y que no esté en cadena con ningún otro motor.
Repita este procedimiento para cada motor según las indicaciones.
Antes de presionar [Enter] cada vez, verifica todas las conexiones de cables — el cable de alimentación, por ejemplo, puede aflojarse mientras manipulas la placa.
Cuando el script termine, los motores estarán configurados y listos. Luego puedes encadenar en serie los cables de 3 pines de motor a motor, y conectar el cable del primer motor (el shoulder pan con id=1) a la placa controladora, que puede montarse en la base del brazo.

Líder

Realiza los mismos pasos para el brazo leader.
Comando:
 lerobot-setup-motors \
      --teleop.type=so101_leader \
      --teleop.port=/dev/tty.usbmodem575E0031751 # <- pega aquí el puerto encontrado en el paso anterior
Ejemplo de API:
 from lerobot.teleoperators.so101_leader import SO101Leader, SO101LeaderConfig
config = SO101LeaderConfig(
      port="/dev/tty.usbmodem585A0076841",
      id="my_awesome_leader_arm",
)
leader = SO101Leader(config)
leader.setup_motors()

Calibra tu Robot

A continuación, calibra el robot para que los brazos leader y follower reporten valores de posición idénticos cuando ocupen la misma pose física. Esta calibración es crucial porque permite que una red neuronal entrenada en un robot funcione correctamente en otro.

Follower

Ejecuta el comando a continuación (o usa el ejemplo de la API) para calibrar el brazo follower:
Comando:
 lerobot-calibrate \
      --robot.type=so101_follower \
      --robot.port=/dev/tty.usbmodem58760431551 \ # <- El puerto de tu robot
      --robot.id=my_awesome_follower_arm # <- Dale al robot un nombre único
Ejemplo de API:
 from lerobot.robots.so101_follower import SO101FollowerConfig, SO101Follower

config = SO101FollowerConfig(
      port="/dev/tty.usbmodem585A0076891",
      id="my_awesome_follower_arm",
)
follower = SO101Follower(config)
follower.connect(calibrate=False)
follower.calibrate()
follower.disconnect()
El video a continuación demuestra la calibración: primero posiciona el robot para que cada articulación esté centrada en su rango, luego presiona [Enter] y mueve cada articulación a través de todo su rango de movimiento.

Líder

Realiza los mismos pasos para calibrar el brazo líder — ejecuta el comando a continuación o usa el ejemplo de API:
Comando:
 lerobot-calibrate \
      --teleop.type=so101_leader \
      --teleop.port=/dev/tty.usbmodem58760431551 \ # <- El puerto de tu robot
      --teleop.id=my_awesome_leader_arm # <- Dale al robot un nombre único
Ejemplo de API:
 from lerobot.teleoperators.so101_leader import SO101LeaderConfig, SO101Leader
config = SO101LeaderConfig(
      port="/dev/tty.usbmodem58760431551",
      id="my_awesome_leader_arm",
)

leader = SO101Leader(config)
leader.connect(calibrate=False)
leader.calibrate()
leader.disconnect()

Barra lateral

Última publicación

Esta sección actualmente no incluye ningún contenido. Agrega contenido a esta sección usando la barra lateral.

Regístrate para nuestro boletín

Obtenga la información más reciente sobre nuestros productos y ofertas especiales.