SO-101-Setup-Anleitung

Von Teilen bis zur ersten Datenerfassung. Geschätzte Zeit: ~3–4 Stunden (ohne 3D-Druckzeit).

1

Montage

~60 Min. + Druckzeit

Der SO-101 ist ein vollständig Open-Source-Arm. Alle Teile sind entweder 3D-gedruckt oder als Standardhardware erhältlich, die in der LeRobot-Stückliste auf HuggingFace aufgeführt ist.

Teile, die Sie brauchen

  • 6× Feetech STS3215 Servomotoren
  • 3D-gedruckte Strukturteile (STL-Dateien im SO-101 GitHub-Repo)
  • USB-zu-Seriell-Adapterkabel (CH340- oder CP2102-Chip)
  • 12-V-Stromversorgung (mindestens 3 A)
  • Servokabel und Anschlusshardware (pro Stückliste)

Checkliste für den Zusammenbau

  • Drucken Sie alle Strukturkomponenten (Basis, Verbindungen, Endeffektor)
  • Installieren Sie STS3215-Servos in ihren jeweiligen Verbindungsgehäusen
  • Führen Sie die Servokabel durch die gedruckten Kabelkanäle
  • Verketten Sie die Servos in der richtigen Reihenfolge (IDs 1–6 von der Basis bis zur Spitze).
  • Befestigen Sie die Basis vor dem Einschalten auf einer stabilen Oberfläche
  • Lesen Sie die Sicherheitsseite bevor Sie Strom anlegen
Wo erhalten Sie die Stücklisten- und STL-Dateien: Die vollständige Stückliste und die druckbaren Teile werden im HuggingFace LeRobot-Repository verwaltet. Suchen Sie im Internet nach „SO-101“. LeRobot GitHub.
1b

3D-Druck der Teile

~8–16 Stunden Druckzeit

Alle Strukturkomponenten des SO-101 sind mit Standard-Desktopdruckern FDM-druckbar. STL-Dateien sind für jeden Arm in Einzeldateiausdrucken organisiert, was das Schneiden vereinfacht.

Empfohlene Slicer-Einstellungen

Einstellung Wert
Material PLA+
Düsendurchmesser 0,4 mm (oder 0,6 mm)
Schichthöhe 0,2 mm (0,4 mm für 0,6 mm Düse)
Fülldichte 15%
Unterstützt Überall; Ignorieren Sie Steigungen >45°
Betthaftung Standard-Klebestift auf PEI oder Glas
Getestete Drucker Prusa MINI+, Creality Ender 3, Bambu Lab A/P/X-Serie

STL-Dateien – welche gedruckt werden sollen

Für gängige Bettgrößen sind vorgefertigte Einzeldateidrucke verfügbar:

  • 220×220 mm Bett (Ender 3):
    • Anhängerin: STL/SO101/Follower/Ender_Follower_SO101.stl
    • Führerin: STL/SO101/Leader/Ender_Leader_SO101.stl
  • 205×250 mm Bett (Prusa / UP):
    • Anhängerin: STL/SO101/Follower/Prusa_Follower_SO101.stl
    • Führerin: STL/SO101/Leader/Prusa_Leader_SO101.stl
Überprüfen Sie zunächst die Maßhaltigkeit. Drucken Sie vor dem Drucken des gesamten Arms die Messgerät-STLs aus STL/Gauges/ und testen Sie sie gegen einen Legostein oder ein STS3215-Servo. Ein korrekter Sitz des Messgeräts bestätigt, dass Ihre Druckerkalibrierung korrekt ist. Passen Sie bei Bedarf die Skalierung an, bevor Sie den vollständigen Ausdruck vornehmen.
Sie besitzen keinen Drucker? Siehe die 3DPRINT.md-Anleitung im SO-ARM100-Repo für Druckdienstoptionen. Vorgedruckte Bausätze sind ebenfalls erhältlich bei PartaBot (UNS), Seeed Studio (international) und Automatische Erkennung (EU).
2

Softwareinstallation

~15 Min

Der SO-101 wird nativ von HuggingFace LeRobot unterstützt. Es ist kein zusätzliches Plugin erforderlich – installieren Sie einfach LeRobot.

Installieren Sie LeRobot

# Using pip
pip install lerobot

# Or with uv (recommended)
uv pip install lerobot

Berechtigungen für die serielle Linux-Schnittstelle

Unter Linux, serielle Ports unter /dev/ttyACM* erfordern, dass sich der Benutzer im befindet dialout Gruppe. Führen Sie dies einmal aus und melden Sie sich ab und wieder an:

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

Voraussetzungen

  • Python 3.10+
  • Linux (Ubuntu 22.04 empfohlen) oder macOS
  • USB-zu-seriell-Treiber installiert (CH340-Treiber unter macOS; normalerweise unter Linux vorinstalliert)
3

Porterkennung und -kalibrierung

~20 Min

Suchen Sie den richtigen seriellen USB-Anschluss für den Arm und führen Sie dann das LeRobot-Kalibrierungsskript aus, um die Servo-Nullpositionen festzulegen.

Suchen Sie den seriellen Port

python lerobot/scripts/find_motors_bus_port.py

Stecken Sie das USB-Kabel ein und aus, wenn Sie dazu aufgefordert werden. Das Skript identifiziert, mit welchem ​​Port der Arm verbunden ist. Typische Werte:

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

Führen Sie die Kalibrierung durch

Bewegen Sie den Arm über seinen gesamten Bewegungsbereich, wenn Sie dazu aufgefordert werden:

python lerobot/scripts/calibrate.py \
  --robot.type=so101 \
  --robot.port=/dev/ttyACM0
Nach jedem Zusammenbau neu kalibrieren. Kalibrierungsdaten werden lokal gespeichert. Wenn Sie Verbindungen zerlegen und wieder zusammenbauen, führen Sie die Kalibrierung erneut durch, um genaue Nullpositionen wiederherzustellen.
4

Erster Bewegungstest

~15 Min

Führen Sie das Teleoperate-Skript im Einzelarmmodus aus, um zu überprüfen, ob alle Gelenke richtig reagieren, bevor Sie einen Führungsarm anschließen.

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

Was zu überprüfen ist

  • Alle 6 Gelenke reagieren ohne Sprünge auf Befehle
  • Keine Servo-Stall- oder Überlastwarnungen im Terminal
  • Der Greifer öffnet und schließt über den gesamten Bereich
  • Kein Hängenbleiben des Kabels an jeder Gelenkposition
Nothalt Trennen Sie das USB-Kabel, um die Kommunikation zum Arm sofort zu unterbrechen. Halten Sie während des motorisierten Betriebs Ihre Hände vom Arbeitsbereich fern.
5

Teleoperation

~30 Min

Der SO-101 funktioniert als eigenständiger Arm oder als Folgearm mit Führungsarm für Teleoperationen. Die Verwendung eines zweiten Arms als Führungskraft führt zu qualitativ hochwertigeren Demonstrationen für das Nachahmungslernen.

Standalone-Modus (Tastatur / Programmgesteuert)

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

Mit einem Mäklerarm (z. B. DK1-Mäkler)

python lerobot/scripts/teleoperate.py \
  --robot.type=so101 \
  --robot.port=/dev/ttyACM0 \
  --teleop.type=so101 \
  --teleop.port=/dev/ttyACM1
Bimanuelles Setup: Der SO-101 kann als Folgearm mit dem DK1-Führungsarm verwendet werden. Beide sind LeRobot-nativ und kommunizieren über USB seriell. Siehe die DK1-Seite Ausführliche Informationen zur bimanuellen Einrichtung finden Sie hier.
6

Datenerfassung

Laufend

Zeichnen Sie Demonstrationen mit auf record.py. Die Daten werden im LeRobot-Format gespeichert und können zum Training direkt an HuggingFace Hub übertragen werden.

Grundlegende Aufnahme

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

Mit einer USB-Kamera

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"

Best Practices aufzeichnen

  • Zeichnen Sie vor dem Training mindestens 50 Demonstrationen pro Aufgabe auf
  • Variieren Sie Objektpositionen und -ausrichtungen über Episoden hinweg
  • Beschreibend verwenden --dataset.task Namen zur späteren Filterung
  • OAK-D- oder Intel RealSense-Kameras eignen sich gut für die Tiefendatenerfassung
  • Überprüfen Sie nach jeder Sitzung die Datensatz-Uploads auf HuggingFace Hub

Nächste Schritte

Sobald Sie die Daten gesammelt haben, trainieren Sie ein ACT- oder Diffusionsrichtlinienmodell mit den Trainingsskripten von LeRobot. Lesen Sie den vollständigen Text SO-101-Lernpfad für einen strukturierten Ablauf vom Setup bis zur Modellbereitstellung.

Einrichtung abgeschlossen?

Treten Sie der Community bei, um Ergebnisse zu teilen und Hilfe bei erweiterten Konfigurationen zu erhalten.