Guide de configuration du SO-101

Des pièces à la première collecte de données. Temps estimé : ~3 à 4 heures (sans compter le temps d'impression 3D).

1

Assemblée

~60 min + temps d'impression

Le SO-101 est un bras entièrement open source. Toutes les pièces sont soit imprimées en 3D, soit disponibles sous forme de matériel disponible dans le commerce répertorié dans la nomenclature LeRobot sur HuggingFace.

Pièces dont vous avez besoin

  • 6 × servomoteurs Feetech STS3215
  • Pièces structurelles imprimées en 3D (fichiers STL dans le dépôt SO-101 GitHub)
  • Câble adaptateur USB vers série (puce CH340 ou CP2102)
  • Alimentation 12V (3A minimum)
  • Câbles de servo et matériel de connecteur (par nomenclature)

Liste de contrôle d'assemblage

  • Imprimer tous les composants structurels (base, liens, effecteur final)
  • Installez les servos STS3215 dans leurs boîtiers de liaison respectifs
  • Acheminez les câbles des servos à travers les canaux de câbles imprimés
  • Servos en série dans le bon ordre (ID 1 à 6 de la base à la pointe)
  • Fixez la base sur une surface stable avant de mettre sous tension
  • Lire le page de sécurité avant de mettre sous tension
Où obtenir les fichiers BOM et STL : La nomenclature complète et les pièces imprimables sont conservées dans le référentiel HuggingFace LeRobot. Recherchez « SO-101 » sur le LeRobot GitHub.
1b

Impression 3D des pièces

~8 à 16 heures de temps d'impression

Tous les composants structurels du SO-101 sont imprimables FDM à l'aide d'imprimantes de bureau standard. Les fichiers STL sont organisés en impressions de fichiers uniques pour chaque bras, ce qui facilite le découpage.

Paramètres de tranche recommandés

Paramètre Valeur
Matérielle PLA+
Diamètre de la buse 0,4 mm (ou 0,6 mm)
Hauteur de couche 0,2 mm (0,4 mm pour bus 0,6 mm)
Densité de remplissage 15%
Prise en charge Partout; ignorer les pentes >45°
Adhésion au lit Bâton de colle standard sur PEI ou verre
Imprimantes testées Prusa MINI+, Creality Ender 3, série Bambu Lab A/P/X

Fichiers STL — Lesquels imprimer

Des impressions pré-arrangées en fichier unique sont disponibles pour les tailles de lit courantes :

  • Lit 220×220 mm (Ender 3) :
    • Disciple: STL/SO101/Follower/Ender_Follower_SO101.stl
    • Cuisinière: STL/SO101/Leader/Ender_Leader_SO101.stl
  • Lit 205×250 mm (Prusa / UP) :
    • Disciple: STL/SO101/Follower/Prusa_Follower_SO101.stl
    • Cuisinière: STL/SO101/Leader/Prusa_Leader_SO101.stl
Vérifiez d’abord l’exactitude dimensionnelle. Avant d'imprimer le bras complet, imprimez les STL de la jauge à partir de STL/Gauges/ et testez-les contre une brique Lego ou un servo STS3215. Un ajustement correct sur la jauge confirme que l'étalonnage de votre imprimante est précis. Ajustez la mise à l’échelle si nécessaire avant de vous engager dans l’impression complète.
Vous ne possédez pas d'imprimante ? Voir le Guider 3DPRINT.md dans le référentiel SO-ARM100 pour les options de service d'impression. Des kits pré-imprimés sont également disponibles auprès de PartaBot (NOUS), Studio de graines (international), et Découverte automatique (UE).
2

Installation du logiciel

~15 minutes

Le SO-101 est supporté nativement par HuggingFace LeRobot. Aucun plugin supplémentaire n'est nécessaire : installez simplement LeRobot.

Installer LeRobot

# Using pip
pip install lerobot

# Or with uv (recommended)
uv pip install lerobot

Autorisations du port série Linux

Sous Linux, les ports série sous /dev/ttyACM* exiger que l'utilisateur soit dans le dialout groupe. Exécutez ceci une fois, déconnectez-vous et reconnectez-vous :

sudo usermod -aG dialout $USER
# Then log out and back in, or run:
newgrp dialout

Conditions préalables

  • Python3.10+
  • Linux (Ubuntu 22.04 recommandé) ou macOS
  • Pilote USB vers série installé (pilote CH340 sur macOS ; généralement préinstallé sur Linux)
3

Détection et calibrage des ports

~20 minutes

Trouvez le port série USB correct pour le bras, puis exécutez le script d'étalonnage LeRobot pour définir les positions zéro du servo.

Trouver le port série

python lerobot/scripts/find_motors_bus_port.py

Branchez et débranchez le câble USB lorsque vous y êtes invité. Le script identifie le port auquel le bras est connecté. Valeurs typiques :

# Linux:  /dev/ttyACM0  (or ttyUSB0 for CH340 adapters)
# macOS:  /dev/tty.usbmodem*  or  /dev/tty.usbserial-*

Exécuter l'étalonnage

Déplacez le bras dans toute son amplitude de mouvement lorsque vous y êtes invité :

python lerobot/scripts/calibrate.py \
  --robot.type=so101 \
  --robot.port=/dev/ttyACM0
Recalibrez après tout remontage. Les données d'étalonnage sont stockées localement. Si vous démontez et remontez les joints, réexécutez l'étalonnage pour restaurer des positions zéro précises.
4

Premier test de mouvement

~15 minutes

Exécutez le script de téléopération en mode bras unique pour vérifier que toutes les articulations répondent correctement avant de connecter un bras leader.

python lerobot/scripts/teleoperate.py \
  --robot.type=so101 \
  --robot.port=/dev/ttyACM0

Que vérifier

  • Les 6 articulations répondent aux commandes sans sauter
  • Aucun avertissement de décrochage du servo ou de surcharge dans le terminal
  • La pince s'ouvre et se ferme sur toute la plage
  • Aucun accrochage de câble à aucune position de joint
Arrêt d'urgence Débranchez le câble USB pour couper immédiatement la communication avec le bras. Gardez les mains éloignées de l'espace de travail pendant le fonctionnement motorisé.
5

Téléopération

~30 minutes

Le SO-101 fonctionne comme un bras autonome ou comme un bras suiveur avec un bras leader pour la téléopération. L’utilisation d’un deuxième bras comme leader produit des démonstrations de meilleure qualité pour l’apprentissage par imitation.

Mode autonome (clavier / programmatique)

python lerobot/scripts/teleoperate.py \
  --robot.type=so101 \
  --robot.port=/dev/ttyACM0

Avec un bras leader (par exemple leader DK1)

python lerobot/scripts/teleoperate.py \
  --robot.type=so101 \
  --robot.port=/dev/ttyACM0 \
  --teleop.type=so101 \
  --teleop.port=/dev/ttyACM1
Configuration bimanuelle : Le SO-101 peut être utilisé comme bras suiveur avec le bras leader DK1. Les deux sont natifs de LeRobot et communiquent via USB série. Voir le Page NSP1 pour plus de détails sur la configuration bimanuelle.
6

Collecte de données

En cours

Enregistrez des démonstrations en utilisant record.py. Les données sont enregistrées au format LeRobot et peuvent être transférées directement vers HuggingFace Hub pour la formation.

Enregistrement de base

python lerobot/scripts/record.py \
  --robot.type=so101 \
  --robot.port=/dev/ttyACM0 \
  --dataset.repo_id=your-org/so101-dataset \
  --dataset.task="pick cube"

Avec une caméra USB

python lerobot/scripts/record.py \
  --robot.type=so101 \
  --robot.port=/dev/ttyACM0 \
  --robot.cameras.top.type=opencv \
  --robot.cameras.top.index=0 \
  --dataset.repo_id=your-org/so101-dataset \
  --dataset.task="pick cube"

Enregistrer les bonnes pratiques

  • Enregistrez au moins 50 démonstrations par tâche avant la formation
  • Varier les positions et les orientations des objets à travers les épisodes
  • Utiliser descriptif --dataset.task noms pour un filtrage ultérieur
  • Les caméras OAK-D ou Intel RealSense fonctionnent bien pour la collecte de données en profondeur
  • Vérifiez les téléchargements de l'ensemble de données sur HuggingFace Hub après chaque session

Prochaines étapes

Une fois les données collectées, entraînez un modèle ACT ou Politique de diffusion à l'aide des scripts de formation de LeRobot. Lire l'intégralité Parcours d'apprentissage SO-101 pour une progression structurée de la configuration au déploiement du modèle.

Configuration terminée ?

Rejoignez la communauté pour partager les résultats et obtenir de l'aide sur les configurations avancées.