LeRobot documentation
Koch v1.1
Koch v1.1
Dans les étapes ci-dessous, nous expliquons comment assembler le robot Koch v1.1.
Commander et assembler les pièces
Suivez les instructions de sourcing et d'assemblage fournies dans ce README. Elles vous guideront dans la configuration des bras suiveur et leader, comme illustré sur l'image ci-dessous.
Pour un aperçu visuel du processus d'assemblage, vous pouvez consulter ce tutoriel vidéo.
Depuis la production de cette vidéo, nous avons simplifié la phase de configuration. En conséquence, deux éléments diffèrent des instructions de cette vidéo :
- Ne branchez pas tous les câbles des moteurs immédiatement et attendez d’être invité à le faire dans Configurer les moteurs.
- Ne fixez pas immédiatement le circuit imprimé (PCB) du contrôleur sur la base et attendez d’être invité à le faire dans Configurer les moteurs.
Installer LeRobot 🤗
Pour installer LeRobot, suivez notre Guide d'installation
En plus de ces instructions, vous devez installer le SDK Dynamixel (si vous avez installé LeRobot depuis PyPI, exécutez pip install 'lerobot[dynamixel]' à la place) :
pip install -e ".[dynamixel]"Configurer les moteurs
1. Trouver les ports USB associés à chaque bras
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', '/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.L’emplacement du port trouvé est : /dev/tty.usbmodem575E0032081, correspondant à votre bras leader ou suiveur.
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', '/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.L’emplacement du port trouvé est : /dev/ttyACM1, correspondant à votre bras leader ou suiveur.
2. Définir les identifiants des moteurs et les débits
Chaque moteur est identifié par un id unique sur le bus. Neufs, les moteurs sont généralement livrés avec un id par défaut de 1. Pour que la communication fonctionne correctement entre les moteurs et le contrôleur, il faut d'abord attribuer à chaque moteur un id unique et différent. De plus, la vitesse à laquelle les données sont transmises sur le bus est déterminée par le baudrate. Pour pouvoir communiquer entre eux, le contrôleur et tous les moteurs doivent être configurés avec le même baudrate.
À cette fin, nous devons d'abord nous connecter à chaque moteur individuellement via le contrôleur afin de définir ces paramètres. Comme nous écrivons ces paramètres dans la section non volatile de la mémoire interne des moteurs (EEPROM), nous n'aurons besoin de le faire qu'une seule fois.
Si vous réutilisez des moteurs d’un autre robot, vous devrez probablement également effectuer cette étape, car les identifiants et le taux de bauds ne correspondront probablement pas.
Suiveur
Branchez le câble usb de votre ordinateur et l’alimentation 12V sur la carte contrôleur du bras suiveur (le bras leader utilise l’alimentation 5V). Ensuite, exécutez la commande suivante ou l’exemple d’API avec le port obtenu à l’étape précédente. Vous devrez également donner un nom à votre bras suiveur avec le paramètre id.
Pour une référence visuelle sur la manière de définir les identifiants des moteurs, veuillez consulter cette vidéo où nous suivons le processus pour le bras 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()Vous devriez voir l’instruction suivante.
Connect the controller board to the 'gripper' motor only and press enter.Conformément aux instructions, branchez le moteur de la pince. Assurez-vous qu’il s’agit du seul moteur connecté à la carte et que le moteur lui-même n’est pas encore chaîné en série avec un autre moteur. Lorsque vous appuyez sur [Enter], le script définit automatiquement l’id et le baudrate de ce moteur.
Troubleshooting
Si vous obtenez une erreur à ce stade, vérifiez vos câbles et assurez-vous qu'ils sont correctement branchés :
- Alimentation
- Câble USB entre votre ordinateur et la carte de contrôle
- Le câble à 3 broches reliant la carte de contrôle au moteur
Si vous utilisez une carte contrôleur Waveshare, assurez-vous que les deux cavaliers sont positionnés sur le canal B (USB).
Vous devriez alors voir le message suivant :
'gripper' motor id set to 6Suivi de la prochaine instruction :
Connect the controller board to the 'wrist_roll' motor only and press enter.Vous pouvez débrancher le câble à 3 broches de la carte de contrôle, mais vous pouvez le laisser branché sur le moteur de la pince à l’autre extrémité, car il sera déjà à la bonne position. Maintenant, branchez un autre câble à 3 broches sur le moteur de rotation du poignet et connectez-le à la carte de contrôle. Comme pour le moteur précédent, assurez-vous qu’il est le seul moteur connecté à la carte et que le moteur lui-même n’est connecté à aucun autre.
Répétez l'opération pour chaque moteur comme indiqué.
Vérifiez le câblage à chaque étape avant d’appuyer sur Entrée. Par exemple, le câble d’alimentation peut se débrancher lorsque vous manipulez la carte.
Une fois terminé, le script se termine simplement, et les moteurs sont alors prêts à être utilisés. Vous pouvez maintenant brancher le câble à 3 broches de chaque moteur sur le suivant, ainsi que le câble du premier moteur (le « shoulder pan » avec id=1) sur la carte de contrôle, qui peut désormais être fixée à la base du bras.
Leader
Effectuez les mêmes étapes pour le bras leader, mais modifiez la commande ou le script en conséquence.
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()Calibrer
Ensuite, vous devrez calibrer votre robot afin de vous assurer que les bras leader et suiveur ont les mêmes valeurs de position lorsqu'ils se trouvent dans la même position physique. 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.
Suiveur
Exécutez la commande ou l'exemple d'API suivant pour calibrer le bras suiveur :
# 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()Nous avons unifié la méthode de calibration pour la plupart des robots. Ainsi, les étapes de calibration pour ce bras Koch sont identiques à celles des SO100 et SO101. D'abord, il faut déplacer le robot à la position où chaque articulation est au milieu de sa plage de mouvement, puis appuyer sur Enter. Ensuite, nous déplaçons toutes les articulations sur leur pleine amplitude de mouvement. Une vidéo de ce même processus pour le SO101, à titre de référence, peut être trouvée ici.
Leader
Effectuez les mêmes étapes pour calibrer le bras leader, exécutez la commande suivante ou l'exemple d'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()Félicitations 🎉, votre robot est prêt à apprendre une tâche de manière autonome. Commencez son entraînement en suivant ce tutoriel : Démarrer avec des robots réels
Update on GitHubSi vous avez des questions ou besoin d'aide, n'hésitez pas à nous contacter sur Discord.