Construisez votre propre robot SO-101 !

Obtenir les pièces pour le SO-101

Suivez ce README. Il inclut la liste des matériaux avec un lien vers les sources des pièces, ainsi que les instructions pour l'impression 3D des pièces. De plus, indiquez si c'est votre première impression ou si vous ne possédez pas d'imprimante 3D.

Installer LeRobot

Pour installer LeRobot, suivez le Guide d'installation.
En plus de ces instructions, vous devez installer le SDK Feetech :
 pip install -e ".[feetech]"

Instructions d'assemblage étape par étape

Le bras suiveur utilise 6 moteurs STS3215 avec un engrenage de 1/345. Le leader, cependant, utilise trois moteurs avec des engrenages différents pour garantir qu'il peut à la fois supporter son propre poids et être déplacé avec un effort minimal. Le tableau ci-dessous montre quel moteur est requis pour chaque articulation.
Axe du bras leader Moteur Rapport de démultiplication
Base / Rotation de l'épaule 1 1 / 191
Élévation de l'épaule 2 1 / 345
Flexion du coude 3 1 / 191
Flexion du poignet 4 1 / 147
Rotation du poignet 5 1 / 147
Pince 6 1 / 147

Nettoyer les pièces du SO-101

Retirez tout le matériau de support des pièces imprimées en 3D. La méthode la plus simple est de glisser un petit tournevis sous le matériau de support pour le retirer.
Après avoir placé les moteurs, installez un câble 3 broches dans chaque moteur avant de poursuivre l'assemblage.

Installer l'articulation 1

  1. Insérez le premier moteur dans la base.
  2. Fixez le moteur avec quatre vis M2x6mm (les plus petites vis) : deux par le haut et deux par le bas.
  3. Faites glisser le premier support de moteur sur le moteur et fixez-le avec deux vis M2x6mm (une de chaque côté).
  4. Montez les deux cornes de moteur, et fixez la corne supérieure avec une vis M3x6mm.
  5. Montez la partie épaule.
  6. Fixez la partie épaule avec quatre vis M3x6mm en haut et quatre vis M3x6mm en bas.
  7. Installez le support du moteur d'épaule.

Installer l'articulation 2

  1. Faites glisser le deuxième moteur vers le bas en place depuis le haut.
  2. Fixez le deuxième moteur avec quatre vis M2x6mm.
  3. Montez les deux cornes de moteur sur le moteur 2 et fixez la corne supérieure avec une vis M3x6mm.
  4. Fixez le bras supérieur, en le sécurisant avec quatre vis M3x6mm de chaque côté.

Installer l'articulation 3

  1. Insérez le moteur 3 et fixez-le avec quatre vis M2x6mm.
  2. Installez les deux cornes de moteur sur le moteur 3, en fixant l'une d'elles avec une vis de corne M3x6mm.
  3. Fixez l'avant-bras au moteur 3, en utilisant quatre vis M3x6mm de chaque côté.

Installer l'articulation 4

  1. Glissez le support moteur 4 en position.
  2. Insérez le moteur 4.
  3. Fixez le moteur 4 avec quatre vis M2x6mm, puis montez ses cornets de moteur et fixez-en un avec une vis de cornet M3x6mm.

Installez l'articulation 5

  1. Insérez le moteur 5 dans le support du poignet et fixez-le avec deux vis avant M2x6mm.
  2. Montez un seul cornet de moteur sur le moteur du poignet et fixez-le avec une vis de cornet M3x6mm.
  3. Fixez le poignet au moteur 4, en le serrant avec quatre vis M3x6mm de chaque côté.

Installez le préhenseur / la poignée

Suiveur

  1. Montez le préhenseur sur le moteur 5 en le fixant au cornet moteur du poignet avec quatre vis M3x6mm.
  2. Insérez le moteur du préhenseur et fixez-le avec deux vis M2x6mm de chaque côté.
  3. Montez les cornets de moteur et fixez-en un avec une vis de cornet M3x6mm.
  4. Installez la pince du préhenseur et fixez-la avec quatre vis M3x6mm de chaque côté.

Leader

  1. Montez le support du leader sur le poignet et fixez-le avec quatre vis M3x6mm.
  2. Fixez la poignée au moteur 5 à l'aide d'une vis M2x6mm.
  3. Insérez le moteur du préhenseur et fixez-le avec deux vis M2x6mm de chaque côté ; montez un cornet de moteur et serrez-le avec une vis de cornet M3x6mm.
  4. Fixez le déclencheur suiveur à l'aide de quatre vis M3x6mm.

Configurez les moteurs du SO-101

Localisez les ports USB correspondant à chaque bras

Pour identifier le port de chaque adaptateur de servo bus, connectez le MotorBus à votre ordinateur via USB et alimentation. Exécutez le script suivant et débranchez le MotorBus lorsque cela est demandé :
 lerobot-find-port

Mac

Exemple de sortie :
 Recherche de tous les ports disponibles pour le MotorBus.
['/dev/tty.usbmodem575E0032081', '/dev/tty.usbmodem575E0031751']
Retirez le câble USB de votre MotorsBus et appuyez sur [Enter] une fois terminé.

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

Le port de ce MotorsBus est /dev/tty.usbmodem575E0032081
Reconnectez le câble USB.
Le port détecté est /dev/tty.usbmodem575E0032081, qui correspond soit à votre bras leader soit follower.

Linux

Sous Linux, vous devrez peut-être accorder l'accès aux ports USB en exécutant :

 sudo chmod 666 /dev/ttyACM0

 sudo chmod 666 /dev/ttyACM1

Exemple de sortie :
 Recherche de tous les ports disponibles pour le MotorBus. 
['/dev/ttyACM0', '/dev/ttyACM1']

Retirez le câble usb de votre MotorsBus et appuyez sur [Enter] une fois terminé.

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

Le port de ce MotorsBus est /dev/ttyACM1
Reconnectez le câble USB.

Le port détecté est /dev/ttyACM1, qui correspond à votre bras leader ou follower.

Attribuez les IDs des moteurs et définissez leurs baudrates

Chaque moteur a un ID unique sur le bus. Les nouveaux moteurs sont généralement livrés avec un ID de 1. Pour une communication correcte entre les moteurs et le contrôleur, chaque moteur doit se voir attribuer un ID distinct. Le baudrate détermine la vitesse de transmission des données sur le bus ; le contrôleur et tous les moteurs doivent partager le même baudrate pour communiquer.
Pour ce faire, connectez-vous à chaque moteur individuellement avec le contrôleur et configurez son ID et son baudrate. Ces paramètres sont écrits dans la mémoire non volatile (EEPROM) du moteur, donc le processus n'a besoin d'être fait qu'une seule fois.
Si vous réutilisez des moteurs d'un autre robot, vous devrez probablement répéter cette étape car leurs IDs et leur baudrate peuvent ne pas correspondre.
La vidéo ci-dessous montre la procédure étape par étape pour définir les ID des moteurs.

Suiveur

Branchez le câble USB de votre ordinateur et l'alimentation électrique à la carte contrôleur du bras suiveur. Ensuite, exécutez la commande ci-dessous (ou lancez l'exemple API) en utilisant le port que vous avez obtenu précédemment. Attribuez également un nom à votre bras leader en utilisant le paramètre id.
Commande:

 lerobot-setup-motors \
      --robot.type=so101_follower \
      --robot.port=/dev/tty.usbmodem585A0076841 # <- collez ici le port trouvé à l'étape précédente

Exemple d'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()
Vous verrez l'instruction suivante.
 Connectez la carte contrôleur uniquement au moteur 'gripper' et appuyez sur enter.
Comme indiqué, connectez le moteur du préhenseur — assurez-vous qu'il est le seul moteur attaché à la carte et qu'il n'est pas enchaîné en série avec d'autres. Lorsque vous appuyez sur [Enter], le script configurera automatiquement l'ID et le débit en bauds de ce moteur.
Dépannage :
Si une erreur survient, vérifiez toutes les connexions des câbles :
  • Alimentation électrique
  • Câble USB entre votre ordinateur et la carte contrôleur
  • Câble 3 broches de la carte contrôleur au moteur
Si vous utilisez une carte contrôleur Waveshare, confirmez que les deux cavaliers sont réglés sur le canal B (USB).
Après cela, vous devriez voir le message suivant :
 ID du moteur 'gripper' défini sur 6
Suivi de l'instruction suivante :
 Connectez la carte contrôleur uniquement au moteur 'wrist_roll' et appuyez sur enter.
Vous pouvez débrancher le câble 3 broches de la carte contrôleur mais laissez son autre extrémité attachée au moteur du préhenseur, car cette extrémité est déjà en place. Ensuite, connectez un nouveau câble 3 broches de la carte contrôleur au moteur de rotation du poignet. Comme précédemment, assurez-vous que ce moteur est le seul connecté à la carte et qu'il n'est pas enchaîné en série avec un autre moteur.
Répétez cette procédure pour chaque moteur comme indiqué.
Avant d'appuyer sur [Enter] à chaque fois, vérifiez toutes les connexions des câbles — le câble d'alimentation, par exemple, peut se desserrer pendant que vous manipulez la carte.
Lorsque le script est terminé, les moteurs seront configurés et prêts. Vous pouvez ensuite chaîner les câbles 3 broches de moteur en moteur, et connecter le câble du premier moteur (le pivot d'épaule avec id=1) à la carte contrôleur, qui peut être montée à la base du bras.

Leader

Faites les mêmes étapes pour le bras leader.
Commande:
 lerobot-setup-motors \
      --teleop.type=so101_leader \
      --teleop.port=/dev/tty.usbmodem575E0031751 # <- collez ici le port trouvé à l'étape précédente
Exemple d'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()

Calibrez votre Robot

Ensuite, calibrez le robot afin que les bras leader et suiveur rapportent des valeurs de position identiques lorsqu'ils occupent la même pose physique. Cette calibration est cruciale car elle permet à un réseau neuronal entraîné sur un robot de fonctionner correctement sur un autre.

Suiveur

Exécutez la commande ci-dessous (ou utilisez l'exemple d'API) pour calibrer le bras suiveur :
Commande:
 lerobot-calibrate \
      --robot.type=so101_follower \
      --robot.port=/dev/tty.usbmodem58760431551 \ # <- Le port de votre robot
      --robot.id=my_awesome_follower_arm # <- Donnez un nom unique au robot
Exemple d'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()
La vidéo ci-dessous montre la calibration : positionnez d'abord le robot de sorte que chaque articulation soit centrée dans sa plage, puis appuyez sur [Enter] et déplacez chaque articulation sur toute son amplitude de mouvement.

Leader

Effectuez les mêmes étapes pour calibrer le bras leader — exécutez la commande ci-dessous ou utilisez l'exemple d'API :
Commande:
 lerobot-calibrate \
      --teleop.type=so101_leader \
      --teleop.port=/dev/tty.usbmodem58760431551 \ # <- Le port de votre robot
      --teleop.id=my_awesome_leader_arm # <- Donnez un nom unique au robot
Exemple d'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()

Barre latérale

Dernier article

Cette section ne contient actuellement aucun contenu. Ajoutez du contenu à cette section en utilisant la barre latérale.

Inscrivez-vous à notre newsletter

Obtenez les dernières informations sur nos produits et offres spéciales.