Baue Deinen eigenen SO-101 Roboter!

Beschaffen Sie die Teile für den SO-101

Folgen Sie diesem README. Es enthält die Stückliste mit einem Link zu den Bezugsquellen der Teile sowie die Anleitungen zum 3D-Druck der Teile. Geben Sie außerdem an, ob dies Ihr erster Druck ist oder ob Sie keinen 3D-Drucker besitzen.

LeRobot installieren

Um LeRobot zu installieren, folgen Sie dem Installationshandbuch.
Zusätzlich zu diesen Anweisungen müssen Sie das Feetech SDK installieren:
 pip install -e ".[feetech]"

Schritt-für-Schritt Montageanleitung

Der Follower-Arm verwendet 6x STS3215-Motoren mit 1/345 Übersetzung. Der Leader hingegen verwendet drei Motoren mit unterschiedlichen Übersetzungen, um sicherzustellen, dass er sowohl sein eigenes Gewicht tragen als auch mit minimalem Aufwand bewegt werden kann. Die folgende Tabelle zeigt, welcher Motor für jedes Gelenk erforderlich ist.
Leader-Arm-Achse Motor Übersetzungsverhältnis
Basis / Schulter-Drehung 1 1 / 191
Schulter-Heben 2 1 / 345
Ellenbogen-Beugung 3 1 / 191
Handgelenk-Beugung 4 1 / 147
Handgelenk-Rolle 5 1 / 147
Greifer 6 1 / 147

Reinigen Sie die Teile des SO-101

Entfernen Sie sämtliches Stützmaterial von den 3D-gedruckten Teilen. Am einfachsten ist es, einen kleinen Schraubendreher unter das Stützmaterial zu schieben, um es zu entfernen.
Nachdem Sie die Motoren platziert haben, stecken Sie vor der weiteren Montage jeweils ein 3-poliges Kabel in jeden Motor.

Montieren Sie Gelenk 1

  1. Setzen Sie den ersten Motor in die Basis ein.
  2. Sichern Sie den Motor mit vier M2x6mm Schrauben (den kleinsten Schrauben): zwei von oben und zwei von unten.
  3. Schieben Sie die erste Motorhalterung über den Motor und fixieren Sie sie mit zwei M2x6mm Schrauben (je eine auf jeder Seite).
  4. Setzen Sie beide Motorhörner auf und befestigen Sie das obere Horn mit einer M3x6mm Schraube.
  5. Montieren Sie den Schulterteil.
  6. Sichern Sie den Schulterteil oben mit vier M3x6mm Schrauben und unten mit vier M3x6mm Schrauben.
  7. Montieren Sie die Halterung für den Schultermotor.

Montieren Sie Gelenk 2

  1. Schieben Sie den zweiten Motor von oben nach unten an seinen Platz.
  2. Sichern Sie den zweiten Motor mit vier M2x6mm Schrauben.
  3. Setzen Sie beide Motorhörner auf Motor 2 und befestigen Sie das obere Horn mit einer M3x6mm Schraube.
  4. Befestigen Sie den Oberarm und sichern Sie ihn auf jeder Seite mit vier M3x6mm Schrauben.

Montieren Sie Gelenk 3

  1. Setzen Sie Motor 3 ein und sichern Sie ihn mit vier M2x6mm Schrauben.
  2. Montieren Sie beide Motorhörner am Motor 3 und befestigen Sie eines davon mit einer M3x6mm Hornschraube.
  3. Befestigen Sie den Unterarm am Motor 3, indem Sie auf jeder Seite vier M3x6mm Schrauben verwenden.

Montieren Sie Gelenk 4

  1. Schieben Sie den Motorhalter 4 in Position.
  2. Setzen Sie Motor 4 ein.
  3. Sichern Sie Motor 4 mit vier M2x6mm Schrauben, montieren Sie dann seine Motorhörner und befestigen Sie eines mit einer M3x6mm Hornschraube.

Gelenk 5 installieren

  1. Setzen Sie Motor 5 in den Handgelenkhalter ein und befestigen Sie ihn mit zwei M2x6mm Schrauben vorne.
  2. Setzen Sie ein einzelnes Motorhorn auf den Handgelenk-Motor und sichern Sie es mit einer M3x6mm Hornschraube.
  3. Befestigen Sie das Handgelenk an Motor 4, indem Sie es mit jeweils vier M3x6mm Schrauben auf jeder Seite befestigen.

Greifer / Griff installieren

Follower

  1. Montieren Sie den Greifer an Motor 5, indem Sie ihn mit vier M3x6mm Schrauben am Handgelenk-Motorhorn befestigen.
  2. Setzen Sie den Greifmotor ein und sichern Sie ihn mit jeweils zwei M2x6mm Schrauben auf jeder Seite.
  3. Montieren Sie die Motorhörner und befestigen Sie eines mit einer M3x6mm Hornschraube.
  4. Installieren Sie die Greifklaue und sichern Sie sie mit jeweils vier M3x6mm Schrauben auf jeder Seite.

Leader

  1. Montieren Sie den Leader-Halter am Handgelenk und befestigen Sie ihn mit vier M3x6mm Schrauben.
  2. Befestigen Sie den Griff an Motor 5 mit einer M2x6mm Schraube.
  3. Setzen Sie den Greifmotor ein und sichern Sie ihn mit jeweils zwei M2x6mm Schrauben auf jeder Seite; montieren Sie ein Motorhorn und befestigen Sie es mit einer M3x6mm Hornschraube.
  4. Befestigen Sie den Follower-Trigger mit vier M3x6mm Schrauben.

Konfigurieren Sie die Motoren des SO-101

Lokalisieren Sie die USB-Anschlüsse, die den einzelnen Armen entsprechen

Um den Anschluss für jeden Bus-Servo-Adapter zu identifizieren, verbinden Sie den MotorBus mit USB und Strom mit Ihrem Computer. Führen Sie das folgende Skript aus und ziehen Sie den MotorBus bei Aufforderung ab:
 lerobot-find-port

Mac

Beispielausgabe:
 Suche alle verfügbaren Ports für den MotorBus.
['/dev/tty.usbmodem575E0032081', '/dev/tty.usbmodem575E0031751']
Ziehen Sie das USB-Kabel von Ihrem MotorsBus ab und drücken Sie [Enter], wenn Sie fertig sind.

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

Der Port dieses MotorsBus ist /dev/tty.usbmodem575E0032081
Schließen Sie das USB-Kabel erneut an.
Der erkannte Port ist /dev/tty.usbmodem575E0032081, der entweder Ihrem Leader- oder Follower-Arm entspricht.

Linux

Unter Linux müssen Sie möglicherweise den Zugriff auf die USB-Ports gewähren, indem Sie Folgendes ausführen:

 sudo chmod 666 /dev/ttyACM0

 sudo chmod 666 /dev/ttyACM1

Beispielausgabe:
 Suche alle verfügbaren Ports für den MotorBus. 
['/dev/ttyACM0', '/dev/ttyACM1']

Ziehen Sie das USB-Kabel von Ihrem MotorsBus ab und drücken Sie [Enter], wenn Sie fertig sind.

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

Der Port dieses MotorsBus ist /dev/ttyACM1
Schließen Sie das USB-Kabel erneut an.

Der erkannte Port ist /dev/ttyACM1, der Ihrem Leader- oder Follower-Arm entspricht.

Weisen Sie die Motor-IDs zu und stellen Sie deren Baudraten ein

Jeder Motor hat eine eindeutige ID im Bus. Neue Motoren werden typischerweise mit der ID 1 ausgeliefert. Für eine ordnungsgemäße Kommunikation zwischen den Motoren und dem Controller muss jedem Motor eine eindeutige ID zugewiesen werden. Die Baudrate bestimmt die Datenübertragungsgeschwindigkeit im Bus; der Controller und alle Motoren müssen dieselbe Baudrate verwenden, um zu kommunizieren.
Verbinden Sie sich dazu einzeln mit jedem Motor über den Controller und konfigurieren Sie dessen ID und Baudrate. Diese Einstellungen werden im nichtflüchtigen Speicher (EEPROM) des Motors gespeichert, sodass der Vorgang nur einmal durchgeführt werden muss.
Wenn Sie Motoren von einem anderen Roboter wiederverwenden, müssen Sie diesen Schritt wahrscheinlich wiederholen, da deren IDs und Baudrate möglicherweise nicht übereinstimmen.
Das folgende Video zeigt die Schritt-für-Schritt-Anleitung zum Einstellen der Motor-IDs.

Follower

Stecken Sie das USB-Kabel von Ihrem Computer und die Stromversorgung in das Controller-Board des Follower-Arms. Führen Sie dann den untenstehenden Befehl aus (oder starten Sie das API-Beispiel) mit dem zuvor ermittelten Port. Weisen Sie Ihrem Leader-Arm außerdem einen Namen mit dem id-Parameter zu.
Befehl:

 lerobot-setup-motors \
      --robot.type=so101_follower \
      --robot.port=/dev/tty.usbmodem585A0076841 # <- fügen Sie hier den im vorherigen Schritt gefundenen Port ein

API-Beispiel:
 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()
Sie werden die folgende Anweisung sehen.
 Verbinden Sie das Controller-Board nur mit dem 'gripper' Motor und drücken Sie [Enter].
Verbinden Sie wie angewiesen den Greifmotor – stellen Sie sicher, dass nur dieser Motor am Board angeschlossen ist und nicht an andere Motoren in Reihe geschaltet ist. Wenn Sie [Enter] drücken, konfiguriert das Skript automatisch die ID und Baudrate dieses Motors.
Fehlerbehebung:
Wenn ein Fehler auftritt, überprüfen Sie alle Kabelverbindungen:
  • Stromversorgung
  • USB-Kabel zwischen Ihrem Computer und dem Controller-Board
  • 3‑Pin-Kabel vom Controller-Board zum Motor
Wenn Sie ein Waveshare-Controller-Board verwenden, bestätigen Sie, dass beide Jumper auf den B-Kanal (USB) eingestellt sind.
Danach sollten Sie die folgende Meldung sehen:
 'gripper' Motor-ID auf 6 gesetzt
Gefolgt von der nächsten Anweisung:
 Verbinden Sie das Controller-Board nur mit dem 'wrist_roll' Motor und drücken Sie [Enter].
Sie können das 3‑Pin-Kabel vom Controller-Board abziehen, aber lassen Sie das andere Ende am Greifmotor angeschlossen, da dieses Ende bereits positioniert ist. Verbinden Sie als Nächstes ein neues 3‑Pin-Kabel vom Controller-Board mit dem Handgelenk-Rollmotor. Stellen Sie wie zuvor sicher, dass nur dieser Motor mit dem Board verbunden ist und nicht an andere Motoren in Reihe geschaltet ist.
Wiederholen Sie dieses Verfahren für jeden Motor wie angewiesen.
Überprüfe vor jedem Drücken von [Enter] alle Kabelverbindungen – das Stromkabel kann sich beispielsweise lösen, während du die Platine handhabst.
Wenn das Skript abgeschlossen ist, sind die Motoren konfiguriert und einsatzbereit. Du kannst dann die 3-Pin-Kabel von Motor zu Motor kaskadieren und das Kabel vom ersten Motor (der Schulter-Pan mit id=1) an die Steuerplatine anschließen, die am Sockel des Arms montiert werden kann.

Leader

Führe die gleichen Schritte für den Leader-Arm durch.
Befehl:
 lerobot-setup-motors \
      --teleop.type=so101_leader \
      --teleop.port=/dev/tty.usbmodem575E0031751 # <- Füge hier den Anschluss ein, der im vorherigen Schritt gefunden wurde
API-Beispiel:
 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()

Kalibriere deinen Roboter

Kalibriere anschließend den Roboter, sodass die Leader- und Follower-Arme identische Positionswerte melden, wenn sie dieselbe physische Pose einnehmen. Diese Kalibrierung ist entscheidend, da sie es einem neuronalen Netzwerk ermöglicht, das an einem Roboter trainiert wurde, korrekt auf einem anderen zu funktionieren.

Follower

Führe den folgenden Befehl aus (oder verwende das API-Beispiel), um den Follower-Arm zu kalibrieren:
Befehl:
 lerobot-calibrate \
      --robot.type=so101_follower \
      --robot.port=/dev/tty.usbmodem58760431551 \ # <- Der Anschluss deines Roboters
      --robot.id=my_awesome_follower_arm # <- Gib dem Roboter einen eindeutigen Namen
API-Beispiel:
 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()
Das Video unten zeigt die Kalibrierung: Positioniere zuerst den Roboter so, dass jedes Gelenk in der Mitte seines Bereichs ist, drücke dann [Enter] und bewege jedes Gelenk durch seinen gesamten Bewegungsbereich.

Leader

Führe die gleichen Schritte aus, um den Leader-Arm zu kalibrieren — führe den folgenden Befehl aus oder verwende das API-Beispiel:
Befehl:
 lerobot-calibrate \
      --teleop.type=so101_leader \
      --teleop.port=/dev/tty.usbmodem58760431551 \ # <- Der Anschluss deines Roboters
      --teleop.id=my_awesome_leader_arm # <- Gib dem Roboter einen eindeutigen Namen
API-Beispiel:
 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()

Seitenleiste

Neuester Beitrag

Dieser Abschnitt enthält derzeit keine Inhalte. Fügen Sie Inhalte zu diesem Abschnitt über die Seitenleiste hinzu.

Melden Sie sich für unseren Newsletter an

Erhalten Sie die neuesten Informationen über unsere Produkte und Sonderangebote.