LeRobot documentation

LeKiwi

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.6.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

LeKiwi

LeKiwi

En los pasos a continuación, explicamos cómo ensamblar el robot móvil LeKiwi.

Obtener las piezas

Sigue este README. Contiene la lista de materiales, con un enlace para conseguir las piezas, así como las instrucciones para imprimir las piezas en 3D. También incluye consejos si es la primera vez que imprimes o si no tienes una impresora 3D.

Versión cableada

Si tienes la versión wired de LeKiwi, puedes omitir la instalación de la Raspberry Pi y la configuración de SSH. También puedes ejecutar todos los comandos directamente en tu PC, tanto para los scripts de LeKiwi como para los scripts del brazo líder para la teleoperación.

Instalar software en Pi

Ahora tenemos que configurar el PC remoto que se ejecutará en el robot LeKiwi. Normalmente es una Raspberry Pi, pero puede ser cualquier PC que funcione con 5V y tenga suficientes puertos usb (2 o más) para las cámaras y la placa de control de motores.

Instalar el sistema operativo

Para configurar la Raspberry Pi y su tarjeta SD, consulte: Setup PI. Aquí se explica cómo descargar el Imager para instalar Raspberry Pi OS o Ubuntu.

Configurar SSH

Después de configurar tu Pi, debes habilitar y configurar SSH (Secure Shell Protocol) para poder iniciar sesión en el Pi desde tu portátil sin necesidad de pantalla, teclado y ratón en el Pi. Puedes encontrar un gran tutorial sobre cómo hacerlo aquí. Para iniciar sesión en tu Pi, puedes usar el Command Prompt (cmd) o, si usas VSCode, puedes utilizar la extensión esta.

Instalar LeRobot en Pi 🤗

En tu Raspberry Pi, instala LeRobot siguiendo nuestra Guía de instalación

Además de estas instrucciones, necesitas instalar el soporte para motores Feetech & ZeroMQ en tu Pi:

pip install -e ".[lekiwi]"

Instalar LeRobot localmente

Si ya has instalado LeRobot en tu portátil/PC, puedes omitir este paso; de lo contrario, sigue los mismos pasos que realizamos en el Pi.

Siga nuestra Guía de instalación

Además de estas instrucciones, necesitas instalar el soporte para motores Feetech & ZeroMQ en tu portátil/PC:

pip install -e ".[lekiwi]"

¡Genial 🤗! Ya has terminado de instalar LeRobot y podemos comenzar a armar los brazos SO100/SO101 y la base móvil 🤖. Cada vez que quieras usar LeRobot, puedes ir a la carpeta ~/lerobot donde lo instalamos y ejecutar uno de los comandos.

Instrucciones de ensamblaje paso a paso

Primero, ensamblaremos los dos brazos SO100/SO101. Uno para acoplar a la base móvil y otro para la teleoperación. A continuación, ensamblaremos la base móvil. Las instrucciones de ensamblaje se encuentran en estas dos páginas:

Encuentra los puertos USB asociados con la placa del motor

Para encontrar el puerto de cada adaptador de servos de bus, ejecute este script:

lerobot-find-port
Mac
Linux

Ejemplo de salida:

Finding all available ports for the MotorBus.
['/dev/tty.usbmodem575E0032081']
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 placa.

Configurar motores

Las instrucciones para configurar los motores se encuentran en la documentación de SO101. Además de los ids de los motores del brazo, también es necesario establecer los ids de los motores de la base móvil. Estos deben estar en un orden específico para que funcionen. A continuación, una imagen con los ids de los motores y las posiciones de montaje de los motores de la base móvil. Tenga en cuenta que solo se utiliza una tarjeta de control de motores en LeKiwi. Esto significa que los ids de los motores de las ruedas son 7, 8 y 9.

Puede ejecutar este comando para configurar los motores de LeKiwi. Primero configurará los motores del brazo (id 6..1) y luego configurará los motores de las ruedas (9,8,7)

lerobot-setup-motors \
    --robot.type=lekiwi \
    --robot.port=/dev/tty.usbmodem58760431551 # <- paste here the port found at previous step
Motor ID's for mobile robot

Solucionar problemas de comunicación

Si tienes problemas para conectarte a LeKiwi, sigue estos pasos para diagnosticar y resolver el problema.

1. Verificar la configuración de la dirección IP

Asegúrate de que se utilice la IP correcta del Pi en los comandos o en tu código. Para comprobar la dirección IP de la Raspberry Pi, ejecuta (en la línea de comandos del Pi):

hostname -I

2. Comprueba si Pi es accesible desde el portátil/PC

Prueba a hacer ping a la Raspberry Pi desde tu portátil:

ping <your_pi_ip_address>

Si el ping falla:

  • Asegúrate de que el Pi esté encendido y conectado a la misma red.
  • Comprueba si SSH está habilitado en el Pi.

3. Prueba la conexión SSH

Si no puedes iniciar sesión en el Pi mediante SSH, es posible que no esté conectado correctamente. Usa:

ssh <your_pi_user_name>@<your_pi_ip_address>

Si obtienes un error de conexión:

  • Asegúrate de que SSH esté habilitado en el Pi ejecutando:
    sudo raspi-config
    Luego, navega a: Interfacing Options -> SSH y habilítalo.

Calibración

Ahora tenemos que calibrar el brazo líder y el brazo seguidor. Los motores de las ruedas no tienen que calibrarse. El proceso de calibración es muy importante porque permite que una red neuronal entrenada en un robot funcione en otro.

Calibrar el brazo seguidor (en la base móvil)

Asegúrate de que el brazo esté conectado a la Raspberry Pi y ejecuta este script o ejemplo de API (en la Raspberry Pi a través de SSH) para iniciar la calibración del brazo seguidor:

lerobot-calibrate \
    --robot.type=lekiwi \
    --robot.id=my_awesome_kiwi # <- Give the robot a unique name

Unificamos el método de calibración para la mayoría de los robots, por lo que los pasos de calibración para el brazo LeKiwi son los mismos que para el Koch 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í.

Versión cableada

Si tienes la versión wired de LeKiwi, ejecuta todos los comandos en tu portátil.

Calibrar el brazo líder

Luego, para calibrar el brazo líder (que está conectado al portátil/PC), ejecute el siguiente comando del ejemplo de la API en su portátil:

Comando
Ejemplo de API
# Use the port of your leader arm, and give the arm a unique name with --teleop.id
lerobot-calibrate \
    --teleop.type=so100_leader \
    --teleop.port=/dev/tty.usbmodem58760431551 \
    --teleop.id=my_awesome_leader_arm

Teleoperar LeKiwi

Si usas un Mac, es posible que tengas que dar permiso a Terminal para acceder a tu teclado para la teleoperación. Ve a Preferencias del sistema > Seguridad y privacidad > Monitoreo de entrada y marca la casilla de Terminal.

Para teleoperar, conéctate a tu Raspberry Pi mediante SSH y ejecuta conda activate lerobot y este comando:

python -m lerobot.robots.lekiwi.lekiwi_host --robot.id=my_awesome_kiwi

El host se detiene después de --host.connection_time_s segundos (30 por defecto). Para sesiones más largas, como la grabación de un conjunto de datos, aumente este valor, por ejemplo, --host.connection_time_s=600.

Then on your laptop, also run conda activate lerobot and run the API example, make sure you set the correct remote_ip and port in examples/lekiwi/teleoperate.py.

python examples/lekiwi/teleoperate.py

Ahora puede mover el brazo líder y usar el teclado (w,a,s,d) para avanzar, girar a la izquierda, retroceder y girar a la derecha. Y use (z,x) para girar a la izquierda o a la derecha. Puede usar (r,f) para aumentar y disminuir la velocidad del robot móvil. Hay tres modos de velocidad, consulte la tabla siguiente:

Modo de velocidadVelocidad lineal (m/s)Velocidad de rotación (grados/s)
Rápido0.390
Medio0.260
Lento0.130
ClaveAcción
WAvanzar
AMover a la izquierda
SMover hacia atrás
DMover a la derecha
ZGire a la izquierda
XGire a la derecha
RAumentar la velocidad
FReducir la velocidad

Si usas un teclado diferente, puedes cambiar las teclas de cada comando en LeKiwiClientConfig.

Versión cableada

Si tienes la versión wired de LeKiwi, ejecuta todos los comandos en tu portátil.

Registrar un conjunto de datos

Una vez que esté familiarizado con la teleoperación, puede grabar su primer conjunto de datos.

Utilizamos las funciones del hub de Hugging Face para subir tu conjunto de datos. Si no has utilizado el Hub anteriormente, asegúrate de poder iniciar sesión mediante la cli usando un token de acceso de escritura; este token se puede generar desde los ajustes de Hugging Face.

Agrega tu token a la CLI ejecutando este comando:

hf auth login --token ${HUGGINGFACE_TOKEN} --add-to-git-credential

Luego, guarda el nombre de tu repositorio de Hugging Face en una variable:

HF_USER=$(hf auth whoami --quiet)
echo $HF_USER

Ahora puedes grabar un conjunto de datos. Para grabar episodios y subir tu conjunto de datos al hub, ejecuta este ejemplo de API adaptado para LeKiwi. Asegúrate de adaptar primero el remote_ip, HF_REPO_ID, el port del brazo líder y TASK_DESCRIPTION en el script. Para grabar más episodios o episodios más largos, cambia NUM_EPISODES, EPISODE_TIME_SEC y RESET_TIME_SEC, y inicia el host con un --host.connection_time_s que cubra toda la sesión.

python examples/lekiwi/record.py

Carga de datos

Localmente, tu conjunto de datos se almacena en esta carpeta: ~/.cache/huggingface/lerobot/{repo-id}. Al finalizar la grabación de datos, tu conjunto de datos se subirá a tu página de Hugging Face bajo el HF_REPO_ID que definiste en el script (p. ej. https://huggingface.co/datasets/${HF_USER}/lekiwi_test), que puedes obtener ejecutando:

echo https://huggingface.co/datasets/${HF_USER}/lekiwi_test

Tu conjunto de datos se etiquetará automáticamente con LeRobot para que la comunidad lo encuentre fácilmente, y también puedes añadir etiquetas personalizadas (por ejemplo, tutorial).

Puedes buscar otros conjuntos de datos de LeRobot en el hub buscando las etiquetas LeRobot.

Consejos para recopilar datos

Una vez que te sientas cómodo con la grabación de datos, puedes crear un conjunto de datos más grande para el entrenamiento. Una buena tarea inicial es agarrar un objeto en diferentes ubicaciones y colocarlo en un contenedor. Sugerimos grabar al menos 50 episodios, con 10 episodios por ubicación. Mantén las cámaras fijas y un comportamiento de agarre consistente durante toda la grabación. Asegúrate también de que el objeto que estás manipulando sea visible en las cámaras. Una buena regla general es que deberías poder realizar la tarea tú mismo mirando únicamente las imágenes de las cámaras.

En las siguientes secciones, entrenará su red neuronal. Una vez que logre un rendimiento de agarre confiable, podrá comenzar a introducir más variaciones durante la recopilación de datos, como ubicaciones de agarre adicionales, técnicas de agarre diferentes y cambios en las posiciones de las cámaras.

Evite añadir demasiada variación demasiado rápido, ya que puede obstaculizar sus resultados.

Si deseas profundizar en este tema importante, puedes consultar el post del blog que escribimos sobre qué hace que un conjunto de datos sea bueno.

Solución de problemas:

  • En Linux, las teclas de control de flujo de grabación (teclas de flecha, Escape) funcionan en X11, Wayland y sesiones headless/SSH siempre que se ejecute la grabación desde un terminal interactivo (manteniéndolo enfocado); no se necesita configurar $DISPLAY; los equivalentes de letras n / r / q también funcionan. Tenga en cuenta que la teleoperación por teclado de la base LeKiwi es diferente: depende de un backend global de teclas y, por lo tanto, solo funciona en una sesión X11, un escritorio de Windows o macOS con permisos de Accesibilidad/Monitoreo de entrada concedidos; no funciona en Wayland ni en máquinas headless. Consulte limitaciones de pynput.

Reproducir un episodio

Para reproducir un episodio, ejecute el ejemplo de la API a continuación y asegúrese de cambiar remote_ip, port, LeRobotDatasetId y el índice del episodio.

python examples/lekiwi/replay.py

Felicidades 🎉, tu robot está listo para aprender una tarea por sí solo. Comienza a entrenarlo con la parte de entrenamiento de este tutorial: Primeros pasos con robots del mundo real

Evalúe su política

Para evaluar su política, ejecute el ejemplo de la API evaluate.py. Asegúrese de cambiar remote_ip, port, model..

python examples/lekiwi/evaluate.py

Si tienes alguna pregunta o necesitas ayuda, comunícate con nosotros en Discord.

Update on GitHub