LeRobot documentation
Koch v1.1
Koch v1.1
En los pasos a continuación, explicamos cómo ensamblar el robot Koch v1.1.
Ordenar y ensamblar las piezas
Siga las instrucciones de adquisición y ensamblaje proporcionadas en este README. Esto le guiará a través de la configuración de ambos brazos, el seguidor y el líder, como se muestra en la imagen siguiente.
Para una explicación visual del proceso de ensamblaje, puede consultar este tutorial en video.
Desde la producción de este video, simplificamos la fase de configuración. Por lo tanto, dos cosas difieren de las instrucciones de ese video:
- No conecte todos los cables del motor de inmediato y espere a que se le indique hacerlo en Configurar los motores.
- No fije la placa del controlador (PCB) a la base de inmediato y espere a que se le indique hacerlo en Configure the motors.
Instalar LeRobot 🤗
Para instalar LeRobot, siga nuestra Guía de instalación
Además de estas instrucciones, debe instalar el SDK de Dynamixel (si instaló LeRobot desde PyPI, ejecute pip install 'lerobot[dynamixel]' en su lugar):
pip install -e ".[dynamixel]"Configura los motores
1. Encuentra los puertos USB asociados con cada brazo
Para encontrar el puerto de cada adaptador de servos de bus, ejecute este script:
lerobot-find-port
Ejemplo de salida:
Finding all available ports for the MotorBus.
['/dev/tty.usbmodem575E0032081', '/dev/tty.usbmodem575E0031751']
Remove the USB cable from your MotorsBus and press Enter when done.
[...Disconnect corresponding leader or follower arm and press Enter...]
The port of this MotorsBus is /dev/tty.usbmodem575E0032081
Reconnect the USB cable.Donde se encuentra el puerto: /dev/tty.usbmodem575E0032081 correspondiente a su brazo líder o seguidor.
En Linux, es posible que necesites otorgar acceso a los puertos USB ejecutando:
sudo chmod 666 /dev/ttyACM0
sudo chmod 666 /dev/ttyACM1Ejemplo de salida:
Finding all available ports for the MotorBus.
['/dev/ttyACM0', '/dev/ttyACM1']
Remove the usb cable from your MotorsBus and press Enter when done.
[...Disconnect corresponding leader or follower arm and press Enter...]
The port of this MotorsBus is /dev/ttyACM1
Reconnect the USB cable.Donde se encuentra el puerto: /dev/ttyACM1 correspondiente a su brazo líder o seguidor.
2. Establecer los ids de los motores y las tasas de baudios
Cada motor se identifica mediante un id único en el bus. Cuando son nuevos, los motores suelen venir con un id predeterminado de 1. Para que la comunicación funcione correctamente entre los motores y el controlador, primero es necesario asignar un id único y diferente a cada motor. Además, la velocidad a la que se transmiten los datos en el bus está determinada por el baudrate. Para que el controlador y todos los motores puedan comunicarse entre sí, es necesario configurar todos con el mismo baudrate.
Para ello, primero necesitamos conectar individualmente a cada motor con el controlador para establecer estos parámetros. Dado que escribiremos estos parámetros en la sección no volátil de la memoria interna de los motores (EEPROM), solo tendremos que hacerlo una vez.
Si estás reutilizando motores de otro robot, probablemente también necesites realizar este paso, ya que los ids y la velocidad de baudios probablemente no coincidirán.
Seguidor
Conecte el cable USB desde su computadora y la fuente de alimentación de 12V a la placa de control del brazo seguidor (el brazo líder utiliza la fuente de alimentación de 5V). Luego, ejecute el siguiente comando o ejecute el ejemplo de la API con el puerto que obtuvo en el paso anterior. También deberá asignar un nombre a su brazo seguidor con el parámetro id.
Para una referencia visual sobre cómo configurar los ids de los motores, consulte este video donde seguimos el proceso para el brazo SO101.
lerobot-setup-motors \
--robot.type=koch_follower \
--robot.port=/dev/tty.usbmodem575E0031751 # <- paste here the port found at previous stepfrom lerobot.robots.koch_follower import KochFollower, KochFollowerConfig
config = KochFollowerConfig(
port="/dev/tty.usbmodem575E0031751",
id="my_awesome_follower_arm",
)
follower = KochFollower(config)
follower.setup_motors()Deberías ver la siguiente instrucción.
Connect the controller board to the 'gripper' motor only and press enter.Como se indicó, conecte el motor de la pinza. Asegúrese de que sea el único motor conectado a la placa y de que el propio motor no esté aún encadenado a ningún otro motor. Al presionar [Enter], el script establecerá automáticamente el id y la velocidad de baudios para ese motor.
Troubleshooting
Si obtienes un error en ese punto, revisa tus cables y asegúrate de que estén bien conectados:
- Fuente de alimentación
- Cable USB entre su computadora y la placa de control
- El cable de 3 pines de la placa de control al motor
Si está utilizando una placa de controlador Waveshare, asegúrese de que los dos puentes estén configurados en el canal B (USB).
A continuación, debería ver el siguiente mensaje:
'gripper' motor id set to 6Seguido de la siguiente instrucción:
Connect the controller board to the 'wrist_roll' motor only and press enter.Puede desconectar el cable de 3 pines de la placa de control, pero puede dejarlo conectado al motor de la pinza en el otro extremo, ya que ya estará en el lugar correcto. Ahora, conecte otro cable de 3 pines al motor de giro de la muñeca y conéctelo a la placa de control. Como con el motor anterior, asegúrese de que sea el único motor conectado a la placa y de que el propio motor no esté conectado a ningún otro.
Repita la operación para cada motor según se indica.
Compruebe el cableado en cada paso antes de presionar Enter. Por ejemplo, el cable de alimentación podría desconectarse mientras manipula la placa.
Cuando haya terminado, el script simplemente finalizará, momento en el que los motores estarán listos para su uso. Ahora puede conectar el cable de 3 pines de cada motor al siguiente, y el cable del primer motor (el ‘shoulder pan’ con id=1) a la placa de control, que ahora puede fijarse a la base del brazo.
Líder
Realice los mismos pasos para el brazo líder, pero modifique el comando o el script en consecuencia.
lerobot-setup-motors \
--teleop.type=koch_leader \
--teleop.port=/dev/tty.usbmodem575E0031751from lerobot.teleoperators.koch_leader import KochLeader, KochLeaderConfig
config = KochLeaderConfig(
port="/dev/tty.usbmodem575E0031751",
id="my_awesome_leader_arm",
)
leader = KochLeader(config)
leader.setup_motors()Calibrar
A continuación, deberá calibrar su robot para asegurarse de que los brazos líder y seguidor tengan los mismos valores de posición cuando se encuentren en la misma posición física. El proceso de calibración es muy importante porque permite que una red neuronal entrenada en un robot funcione en otro.
Seguidor
Ejecute el siguiente comando o ejemplo de API para calibrar el brazo seguidor:
# Use the port of your follower arm, and give the arm a unique name with --robot.id
lerobot-calibrate \
--robot.type=koch_follower \
--robot.port=/dev/tty.usbmodem58760431551 \
--robot.id=my_awesome_follower_armfrom lerobot.robots.koch_follower import KochFollowerConfig, KochFollower
config = KochFollowerConfig(
port="/dev/tty.usbmodem585A0076891",
id="my_awesome_follower_arm",
)
follower = KochFollower(config)
follower.connect(calibrate=False)
follower.calibrate()
follower.disconnect()Unificamos el método de calibración para la mayoría de los robots. Por lo tanto, los pasos de calibración para este brazo Koch son los mismos que para el SO100 y el SO101. Primero, debemos mover el robot a la posición en la que cada articulación se encuentra en el medio de su rango, y luego presionamos Enter. En segundo lugar, movemos todas las articulaciones a través de su rango de movimiento completo. Un video de este mismo proceso para el SO101 como referencia se puede encontrar aquí.
Líder
Siga los mismos pasos para calibrar el brazo líder, ejecute el siguiente comando o ejemplo de API:
# Use the port of your leader arm, and give the arm a unique name with --teleop.id
lerobot-calibrate \
--teleop.type=koch_leader \
--teleop.port=/dev/tty.usbmodem58760431551 \
--teleop.id=my_awesome_leader_armfrom lerobot.teleoperators.koch_leader import KochLeaderConfig, KochLeader
config = KochLeaderConfig(
port="/dev/tty.usbmodem575E0031751",
id="my_awesome_leader_arm",
)
leader = KochLeader(config)
leader.connect(calibrate=False)
leader.calibrate()
leader.disconnect()Felicidades 🎉, tu robot está listo para aprender una tarea por sí solo. Comienza a entrenarlo siguiendo este tutorial: Primeros pasos con robots del mundo real
Update on GitHubSi tienes alguna pregunta o necesitas ayuda, comunícate con nosotros en Discord.