LeRobot documentation
LeKiwi
LeKiwi
Dans les étapes ci-dessous, nous expliquons comment assembler le robot mobile LeKiwi.
Sourcer les pièces
Suivez ce README. Il contient la liste des pièces, avec un lien pour les commander, ainsi que les instructions pour imprimer les pièces en 3D. Il inclut également des conseils si c’est votre première impression ou si vous ne possédez pas d’imprimante 3D.
Version filaire
Si vous disposez de la version wired de LeKiwi, vous pouvez passer l’installation du Raspberry Pi et la configuration de SSH. Vous pouvez également exécuter directement sur votre PC toutes les commandes, tant pour les scripts LeKiwi que pour les scripts du bras leader utilisés pour la téléopération.
Installer le logiciel sur le Pi
Nous devons maintenant configurer le PC distant qui sera exécuté sur le robot LeKiwi. Il s’agit normalement d’un Raspberry Pi, mais cela peut être n’importe quel PC fonctionnant sous 5 V et disposant de suffisamment de ports usb (2 ou plus) pour les caméras et la carte de contrôle des moteurs.
Installer le système d'exploitation
Pour la configuration du Raspberry Pi et de sa carte SD, voir : Setup PI. Voici comment télécharger le Imager pour installer Raspberry Pi OS ou Ubuntu.
Configuration de SSH
Après avoir configuré votre Pi, vous devez activer et configurer SSH (Secure Shell Protocol) afin de pouvoir vous connecter au Pi depuis votre ordinateur portable sans avoir besoin d'un écran, d'un clavier et d'une souris sur le Pi. Un excellent tutoriel expliquant comment procéder est disponible ici. La connexion à votre Pi peut se faire via votre invite de commandes (cmd) ou, si vous utilisez VSCode, vous pouvez utiliser cette extension ci.
Installer LeRobot sur Pi 🤗
Sur votre Raspberry Pi, installez LeRobot en suivant notre Guide d'installation
En plus de ces instructions, vous devez installer le support des moteurs Feetech & ZeroMQ sur votre Pi :
pip install -e ".[lekiwi]"Installer LeRobot localement
Si vous avez déjà installé LeRobot sur votre ordinateur portable ou de bureau, vous pouvez passer cette étape ; sinon, suivez les mêmes étapes que celles que nous avons effectuées sur le Pi.
Suivez notre Guide d'installation
En plus de ces instructions, vous devez installer le support des moteurs Feetech & ZeroMQ sur votre ordinateur portable/PC :
pip install -e ".[lekiwi]"Parfait 🤗 ! L’installation de LeRobot est terminée, et nous pouvons commencer à assembler les bras SO100/SO101 et la base mobile 🤖.
Chaque fois que vous souhaitez utiliser LeRobot, rendez-vous dans le dossier ~/lerobot où LeRobot a été installé et exécutez l’une des commandes.
Instructions d'assemblage étape par étape
Premièrement, nous allons assembler les deux bras SO100/SO101. L'un sera fixé à la base mobile et l'autre sera utilisé pour la téléopération. Ensuite, nous assemblerons la base mobile. Les instructions d'assemblage se trouvent sur ces deux pages :
Trouver les ports USB associés à la carte moteur
Pour trouver le port de chaque adaptateur de servomoteur de bus, exécutez ce script :
lerobot-find-port
Exemple de sortie :
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.L'endroit où le port trouvé est : /dev/tty.usbmodem575E0032081 correspondant à votre carte.
Sur Linux, vous devrez peut-être accorder l'accès aux ports USB en exécutant :
sudo chmod 666 /dev/ttyACM0
sudo chmod 666 /dev/ttyACM1Exemple de sortie :
Finding all available ports for the MotorBus.
['/dev/ttyACM0']
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/ttyACM0
Reconnect the USB cable.L'endroit où le port a été trouvé est : /dev/ttyACM0, correspondant à votre carte.
Configurer les moteurs
Les instructions pour configurer les moteurs se trouvent dans la documentation du SO101. En plus des identifiants des moteurs du bras, il est nécessaire de définir les identifiants des moteurs de la base mobile. Ces derniers doivent être dans un ordre spécifique pour fonctionner. Ci-dessous, une image des identifiants des moteurs et des positions de montage des moteurs pour la base mobile. Notez que nous n'utilisons qu'une seule carte de contrôle des moteurs sur LeKiwi. Cela signifie que les identifiants des moteurs des roues sont 7, 8 et 9.
Vous pouvez exécuter cette commande pour configurer les moteurs de LeKiwi. Elle configure d'abord les moteurs du bras (id 6..1), puis les moteurs des roues (9,8,7).
lerobot-setup-motors \
--robot.type=lekiwi \
--robot.port=/dev/tty.usbmodem58760431551 # <- paste here the port found at previous step
Dépanner la communication
Si vous rencontrez des difficultés pour vous connecter à LeKiwi, suivez ces étapes pour diagnostiquer et résoudre le problème.
1. Vérifier la configuration de l'adresse IP
Assurez-vous que l'IP correcte du Pi est utilisée dans les commandes ou dans votre code. Pour vérifier l'adresse IP du Raspberry Pi, exécutez (sur la ligne de commande du Pi) :
hostname -I
2. Vérifier si le Pi est accessible depuis le portable/PC
Essayez de faire un ping à la Raspberry Pi depuis votre ordinateur portable :
ping <your_pi_ip_address>
Si le ping échoue :
- Assurez-vous que le Pi est allumé et connecté au même réseau.
- Vérifiez si SSH est activé sur le Pi.
3. Essayer la connexion SSH
Si vous ne pouvez pas vous connecter au Pi via SSH, il est peut-être mal connecté. Utilisez :
ssh <your_pi_user_name>@<your_pi_ip_address>
En cas d'erreur de connexion :
- Assurez-vous que SSH est activé sur le Pi en exécutant : Puis naviguez vers : Interfacing Options -> SSH et activez-le.
sudo raspi-config
Calibration
Nous devons maintenant calibrer le bras leader et le bras suiveur. Les moteurs des roues n’ont pas besoin d’être calibrés. Le processus de calibration est très important car il permet à un réseau de neurones entraîné sur un robot de fonctionner sur un autre.
Calibrer le bras suiveur (sur base mobile)
Vérifiez que le bras est connecté au Raspberry Pi, puis exécutez ce script ou cet exemple d’API (sur le Raspberry Pi via SSH) pour lancer la calibration du bras suiveur :
lerobot-calibrate \
--robot.type=lekiwi \
--robot.id=my_awesome_kiwi # <- Give the robot a unique nameNous avons unifié la méthode de calibration pour la plupart des robots ; les étapes de calibration du bras LeKiwi sont donc identiques à celles des Koch et SO101. D'abord, il faut placer le robot à la position où chaque articulation se trouve au milieu de sa plage de mouvement, puis appuyer sur Enter. Ensuite, nous faisons parcourir à toutes les articulations leur amplitude de mouvement complète. Une vidéo de ce même processus pour le SO101, à titre de référence, est disponible ici.
Version filaire
Si vous disposez de la version wired de LeKiwi, veuillez exécuter toutes les commandes sur votre ordinateur portable.
Calibrer le bras principal
Ensuite, pour calibrer le bras leader (qui est fixé à l'ordinateur portable/PC). Exécutez la commande suivante de l'exemple d'API sur votre ordinateur portable :
# 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_armfrom lerobot.teleoperators.so_leader import SO100LeaderConfig, SO100Leader
config = SO100LeaderConfig(
port="/dev/tty.usbmodem58760431551",
id="my_awesome_leader_arm",
)
leader = SO100Leader(config)
leader.connect(calibrate=False)
leader.calibrate()
leader.disconnect()Télépiloter LeKiwi
Si vous utilisez un Mac, vous devrez peut-être accorder à Terminal l’autorisation d’accéder à votre clavier pour la téléopération. Allez dans Préférences Système > Sécurité et confidentialité > Surveillance des entrées et cochez la case Terminal.
Pour télépiloter, connectez-vous à votre Raspberry Pi via SSH, puis exécutez conda activate lerobot et cette commande :
python -m lerobot.robots.lekiwi.lekiwi_host --robot.id=my_awesome_kiwi
L'hôte s'arrête après --host.connection_time_s secondes (30 par défaut). Pour des sessions plus longues, comme l'enregistrement d'un jeu de données, augmentez cette valeur, par exemple --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
Vous pouvez maintenant déplacer le bras leader et utiliser le clavier (w,a,s,d) pour avancer, aller à gauche, reculer et aller à droite. Utilisez (z,x) pour tourner à gauche ou à droite. Vous pouvez utiliser (r,f) pour augmenter et diminuer la vitesse du robot mobile. Il existe trois modes de vitesse, voir le tableau ci-dessous :
| Mode Vitesse | Vitesse linéaire (m/s) | Vitesse de rotation (deg/s) |
|---|---|---|
| Rapide | 0.3 | 90 |
| Moyen | 0.2 | 60 |
| Lent | 0.1 | 30 |
| Clé | Action |
|---|---|
| W | Avancer |
| A | Déplacer vers la gauche |
| S | Reculer |
| D | Déplacer vers la droite |
| Z | Tournez à gauche |
| X | Tournez à droite |
| R | Augmenter la vitesse |
| F | Réduire la vitesse |
Si vous utilisez un clavier différent, vous pouvez modifier les touches de chaque commande dans
LeKiwiClientConfig.
Version filaire
Si vous disposez de la version wired de LeKiwi, veuillez exécuter toutes les commandes sur votre ordinateur portable.
Enregistrer un jeu de données
Une fois que vous êtes à l’aise avec la téléopération, vous pouvez enregistrer votre premier jeu de données.
Nous utilisons les fonctionnalités du hub Hugging Face pour téléverser votre jeu de données. Si vous n’avez pas encore utilisé le Hub, assurez-vous de pouvoir vous connecter via le cli à l’aide d’un jeton d’accès en écriture, que vous pouvez générer depuis les paramètres Hugging Face.
Ajoutez votre jeton à l’interface en ligne de commande en exécutant cette commande :
hf auth login --token ${HUGGINGFACE_TOKEN} --add-to-git-credentialEnregistrez ensuite le nom de votre dépôt Hugging Face dans une variable :
HF_USER=$(hf auth whoami --quiet)
echo $HF_USERVous pouvez maintenant enregistrer un jeu de données. Pour enregistrer des épisodes et téléverser votre jeu de données sur le hub, exécutez cet exemple d’API adapté à LeKiwi. Assurez-vous d’abord d’adapter remote_ip, HF_REPO_ID, le port du bras leader et TASK_DESCRIPTION dans le script. Pour enregistrer plus d’épisodes ou des épisodes plus longs, modifiez NUM_EPISODES, EPISODE_TIME_SEC et RESET_TIME_SEC, et démarrez l’hôte avec un --host.connection_time_s qui couvre toute la session.
python examples/lekiwi/record.py
Téléversement de jeu de données
Localement, votre jeu de données est stocké dans ce dossier : ~/.cache/huggingface/lerobot/{repo-id}. À la fin de l'enregistrement des données, votre jeu de données sera téléversé sur votre page Hugging Face sous l'identifiant HF_REPO_ID que vous avez défini dans le script (par exemple https://huggingface.co/datasets/${HF_USER}/lekiwi_test), que vous pouvez obtenir en exécutant :
echo https://huggingface.co/datasets/${HF_USER}/lekiwi_testVotre jeu de données sera automatiquement étiqueté avec LeRobot pour que la communauté puisse le trouver facilement, et vous pouvez également ajouter des étiquettes personnalisées (par exemple tutorial dans ce cas).
Vous pouvez rechercher d'autres jeux de données LeRobot sur le hub en cherchant les tags LeRobot.
Conseils pour collecter des données
Une fois à l’aise avec l’enregistrement des données, vous pouvez créer un jeu de données plus volumineux pour l’entraînement. Une bonne tâche de départ consiste à saisir un objet à différents endroits et à le déposer dans un bac. Nous recommandons d’enregistrer au moins 50 épisodes, soit 10 épisodes par emplacement. Gardez les caméras fixes et maintenez un comportement de saisie cohérent tout au long des enregistrements. Assurez-vous également que l’objet que vous manipulez est visible sur les caméras. Une bonne règle empirique est que vous devriez pouvoir effectuer la tâche vous-même en ne regardant que les images des caméras.
Dans les sections suivantes, vous entraînerez votre réseau de neurones. Une fois que vous obtenez des performances de préhension fiables, vous pouvez commencer à introduire davantage de variations lors de la collecte de données, telles que des emplacements de préhension supplémentaires, des techniques de préhension différentes et des modifications des positions des caméras.
Évitez d'ajouter trop de variation trop rapidement, car cela pourrait nuire à vos résultats.
Si vous souhaitez approfondir ce sujet important, vous pouvez consulter notre article de blog sur ce qui fait un bon jeu de données.
Dépannage :
- Sur Linux, les touches de contrôle du flux d’enregistrement (touches fléchées, Échap) fonctionnent sur X11, Wayland et les sessions headless/SSH, à condition d’exécuter l’enregistrement depuis un terminal interactif (en le gardant au premier plan) — aucune configuration de
$DISPLAYn’est nécessaire ; les équivalents en lettresn/r/qfonctionnent également. Notez que la téléopération clavier de la base LeKiwi est différente : elle repose sur un backend de touches global et fonctionne donc uniquement sur une session X11, un bureau Windows ou macOS avec les autorisations d’Accessibilité/Surveillance des saisies accordées — pas sur Wayland ni sur des machines headless. Voir limitations de pynput.
Rejouer un épisode
Pour rejouer un épisode, exécutez l'exemple d'API ci-dessous et assurez-vous de modifier remote_ip, port, LeRobotDatasetId et l'index de l'épisode.
python examples/lekiwi/replay.py
Félicitations 🎉, votre robot est prêt à apprendre une tâche de manière autonome. Commencez son entraînement via la partie formation de ce tutoriel : Démarrer avec des robots réels
Évaluer votre politique
Pour évaluer votre politique, exécutez l'exemple d'API evaluate.py et assurez-vous de modifier remote_ip, port, le modèle..
python examples/lekiwi/evaluate.py
Update on GitHubSi vous avez des questions ou besoin d'aide, n'hésitez pas à nous contacter sur Discord.