Bouw je eigen SO-101-robot!

Verzamel de onderdelen voor de SO-101

Volg deze README. Deze bevat de stuklijst met een link naar bronnen voor de onderdelen, evenals de instructies voor het 3D-printen van de onderdelen. Geef daarnaast aan of dit de eerste keer is dat je iets print of dat je geen 3D-printer hebt.

LeRobot installeren

Volg de installatiehandleiding. om LeRobot te installeren.
Naast deze instructies moet je de Feetech SDK installeren:
 pip install -e ".[feetech]"

Stapsgewijze montage-instructies

De volgende arm gebruikt 6 STS3215-motoren met een overbrenging van 1/345. De leidende arm gebruikt echter drie motoren met verschillende overbrengingsverhoudingen, zodat deze zowel zijn eigen gewicht kan dragen als met minimale inspanning kan worden bewogen. In de onderstaande tabel staat welke motor voor elk gewricht nodig is.
As van de leidende arm Motor Overbrengingsverhouding
Basis / schouderrotatie 1 1 / 191
Schouderlift 2 1 / 345
Elleboogbuiging 3 1 / 191
Polsbuiging 4 1 / 147
Polsrotatie 5 1 / 147
Grijper 6 1 / 147

Onderdelen van de SO-101 reinigen

Verwijder al het ondersteuningsmateriaal van de 3D-geprinte onderdelen. De eenvoudigste manier is een kleine schroevendraaier onder het ondersteuningsmateriaal te schuiven om het te verwijderen.
Plaats na het installeren van de motoren één 3-pins kabel in elke motor voordat je verdergaat met de montage.

Monteer gewricht 1

  1. Plaats de eerste motor in de basis.
  2. Zet de motor vast met vier M2x6mm-schroeven (de kleinste schroeven): twee vanaf de bovenkant en twee vanaf de onderkant.
  3. Schuif de eerste motorhouder over de motor en zet deze vast met twee M2x6mm-schroeven (één aan elke kant).
  4. Plaats beide motorhoorns en bevestig de bovenste hoorn met een M3x6mm-schroef.
  5. Monteer het schouderdeel.
  6. Zet het schouderdeel aan de bovenkant vast met vier M3x6mm-schroeven en aan de onderkant met vier M3x6mm-schroeven.
  7. Monteer de motorhouder van de schouder.

Monteer gewricht 2

  1. Schuif de tweede motor vanaf de bovenkant naar beneden op zijn plaats.
  2. Zet de tweede motor vast met vier M2x6mm-schroeven.
  3. Plaats beide motorhoorns op motor 2 en bevestig de bovenste hoorn met een M3x6mm-schroef.
  4. Bevestig de bovenarm en zet deze aan elke kant vast met vier M3x6mm-schroeven.

Monteer gewricht 3

  1. Plaats motor 3 en zet hem vast met vier M2x6mm-schroeven.
  2. Monteer beide motorhoorns op motor 3 en bevestig één ervan met een M3x6mm-hoornschroef.
  3. Bevestig de onderarm aan motor 3 met vier M3x6mm-schroeven aan elke kant.

Monteer gewricht 4

  1. Schuif motorhouder 4 op zijn plaats.
  2. Plaats motor 4.
  3. Zet motor 4 vast met vier M2x6mm-schroeven, plaats vervolgens de motorhoorns en bevestig er één met een M3x6mm-hoornschroef.

Gewricht 5 installeren

  1. Plaats motor 5 in de polshouder en zet deze vast met twee M2x6mm-schroeven aan de voorkant.
  2. Plaats één motorhoorn op de polsmotor en zet deze vast met een M3x6mm-hoornschroef.
  3. Bevestig de pols aan motor 4 en zet deze aan elke kant vast met vier M3x6mm-schroeven.

Grijper / handgreep installeren

Follower

  1. Monteer de grijper op motor 5 door deze met vier M3x6mm-schroeven aan de motorhoorn van de pols te bevestigen.
  2. Plaats de grijpermotor en zet deze aan elke kant vast met twee M2x6mm-schroeven.
  3. Plaats de motorhoorns en bevestig één ervan met een M3x6mm-hoornschroef.
  4. Plaats de grijperklauw en zet deze aan elke kant vast met vier M3x6mm-schroeven.

Leader

  1. Monteer de leaderhouder op de pols en zet deze vast met vier M3x6mm-schroeven.
  2. Bevestig de handgreep aan motor 5 met één M2x6mm-schroef.
  3. Plaats de grijpermotor en zet deze aan elke kant vast met twee M2x6mm-schroeven; plaats een motorhoorn en bevestig deze met een M3x6mm-hoornschroef.
  4. Bevestig de follower-trigger met vier M3x6mm-schroeven.

Configureer de motoren van de SO-101

Zoek de USB-poorten die bij elke arm horen

Om de poort voor elke bus-servoadapter te identificeren, sluit je de MotorBus met USB en voeding aan op je computer. Voer het volgende script uit en koppel de MotorBus los wanneer daarom wordt gevraagd:
 lerobot-find-port

Mac

Voorbeelduitvoer:
 Alle beschikbare poorten voor de MotorBus zoeken.
['/dev/tty.usbmodem575E0032081', '/dev/tty.usbmodem575E0031751']
Verwijder de USB-kabel uit je MotorsBus en druk op Enter wanneer je klaar bent.

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

De poort van deze MotorsBus is /dev/tty.usbmodem575E0032081
Sluit de USB-kabel opnieuw aan.
De gedetecteerde poort is /dev/tty.usbmodem575E0032081, die overeenkomt met je leader- of follower-arm.

Linux

Op Linux moet je mogelijk toegang tot de USB-poorten verlenen door het volgende uit te voeren:

 sudo chmod 666 /dev/ttyACM0

 sudo chmod 666 /dev/ttyACM1

Voorbeelduitvoer:
 Alle beschikbare poorten voor de MotorBus zoeken. 
['/dev/ttyACM0', '/dev/ttyACM1']

Verwijder de USB-kabel uit je MotorsBus en druk op Enter wanneer je klaar bent.

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

De poort van deze MotorsBus is /dev/ttyACM1
Sluit de USB-kabel opnieuw aan.

De gevonden poort is /dev/ttyACM1, die overeenkomt met je leader- of follower-arm.

Wijs de motor-ID's toe en stel de baudrates in

Elke motor heeft een unieke ID op de bus. Nieuwe motoren worden doorgaans geleverd met ID 1. Voor een goede communicatie tussen de motoren en de controller moet elke motor een afzonderlijke ID krijgen. De baudrate bepaalt de snelheid van de gegevensoverdracht op de bus; de controller en alle motoren moeten dezelfde baudrate gebruiken om te kunnen communiceren.
Sluit hiervoor elke motor afzonderlijk aan op de controller en configureer de ID en baudrate. Deze instellingen worden opgeslagen in het niet-vluchtige geheugen (EEPROM) van de motor, dus dit proces hoeft maar één keer te worden uitgevoerd.
Als je motoren van een andere robot hergebruikt, moet je deze stap waarschijnlijk herhalen, omdat hun ID's en baudrate mogelijk niet overeenkomen.
De onderstaande video laat stap voor stap zien hoe je motor-ID's instelt.

Follower

Sluit de USB-kabel van je computer en de voeding aan op de controllerkaart van de follower-arm. Voer vervolgens de onderstaande opdracht uit (of voer het API-voorbeeld uit) met de poort die je eerder hebt verkregen. Geef je leader-arm ook een naam met de parameter id.
Opdracht:

 lerobot-setup-motors \
      --robot.type=so101_follower \
      --robot.port=/dev/tty.usbmodem585A0076841 # <- plak hier de poort die je in de vorige stap hebt gevonden

API-voorbeeld:
 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()
Je ziet de volgende instructie.
 Sluit de controllerkaart uitsluitend aan op de 'gripper'-motor en druk op Enter.
Sluit de grijpermotor aan zoals aangegeven — zorg ervoor dat dit de enige motor is die op de kaart is aangesloten en niet met andere motoren is doorgelust. Wanneer je op [Enter] drukt, configureert het script automatisch de id en baudrate van die motor.
Problemen oplossen:
Als er een fout optreedt, controleer dan alle kabelaansluitingen:
  • Voeding
  • USB-kabel tussen je computer en de controllerkaart
  • 3‑pinskabel van de controllerkaart naar de motor
Als je een Waveshare-controllerkaart gebruikt, controleer dan of beide jumpers op kanaal B (USB) staan.
Daarna zie je het volgende bericht:
 motor-id van 'gripper' ingesteld op 6
Daarna volgt de volgende instructie:
 Sluit de controllerkaart uitsluitend aan op de 'wrist_roll'-motor en druk op Enter.
Je kunt de 3-pinskabel uit de controllerkaart trekken, maar laat het andere uiteinde aangesloten op de grijpermotor, omdat dat uiteinde al op zijn plaats zit. Sluit vervolgens een nieuwe 3-pinskabel aan van de controllerkaart naar de polsrotatiemotor. Zorg er, zoals eerder, voor dat deze motor de enige motor is die op de kaart is aangesloten en niet met andere motoren is doorgelust.
Herhaal deze procedure voor elke motor zoals aangegeven.
Controleer telkens voordat je op Enter drukt alle kabelaansluitingen — de voedingskabel kan bijvoorbeeld losraken terwijl je de kaart hanteert.
Wanneer het script is voltooid, zijn de motoren geconfigureerd en klaar voor gebruik. Je kunt de 3-pinskabels vervolgens van motor naar motor doorlussen en de kabel van de eerste motor (de schouderrotatie met id=1) aansluiten op de controllerkaart, die aan de basis van de arm kan worden gemonteerd.

Leader

Voer dezelfde stappen uit voor de leader-arm.
Opdracht:
 lerobot-setup-motors \
      --teleop.type=so101_leader \
      --teleop.port=/dev/tty.usbmodem575E0031751 # <- plak hier de poort die je in de vorige stap hebt gevonden
API-voorbeeld:
 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()

Kalibreer je robot

Kalibreer vervolgens de robot, zodat de leader- en follower-arm identieke positiewaarden rapporteren wanneer ze zich in dezelfde fysieke houding bevinden. Deze kalibratie is essentieel, omdat een neuraal netwerk dat op de ene robot is getraind daardoor correct op een andere robot kan functioneren.

Follower

Voer de onderstaande opdracht uit (of gebruik het API-voorbeeld) om de follower-arm te kalibreren:
Opdracht:
 lerobot-calibrate \
      --robot.type=so101_follower \
      --robot.port=/dev/tty.usbmodem58760431551 \ # <- De poort van je robot
      --robot.id=my_awesome_follower_arm # <- Geef de robot een unieke naam
API-voorbeeld:
 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()
De onderstaande video toont de kalibratie: plaats de robot eerst zo dat elk gewricht in het midden van zijn bewegingsbereik staat, druk vervolgens op Enter en beweeg elk gewricht door zijn volledige bewegingsbereik.

Leader

Voer dezelfde stappen uit om de leaderarm te kalibreren: voer de onderstaande opdracht uit of gebruik het API-voorbeeld:
Opdracht:
 lerobot-calibrate \
      --teleop.type=so101_leader \
      --teleop.port=/dev/tty.usbmodem58760431551 \ # <- De poort van je robot
      --teleop.id=my_awesome_leader_arm # <- Geef de robot een unieke naam
API-voorbeeld:
 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()

Veelgestelde vragen

1. Waarvoor wordt de SO-101 voornamelijk gebruikt?
De SO-101 wordt voornamelijk gebruikt als betaalbaar robotarmplatform om te leren, te bouwen en te experimenteren met bewegingsbesturing, teleoperatie en robotica-workflows. Het is vooral nuttig voor gebruikers die projecten op basis van LeRobot verkennen.

2. Heb ik een 3D-printer nodig om de SO-101 te bouwen?
Niet per se. Het project bevat 3D-geprinte onderdelen, dus je hebt toegang tot een 3D-printer nodig of moet de geprinte onderdelen voor je laten maken. Als dit je eerste bouwproject is, kan het eenvoudiger zijn om voorgedrukte onderdelen te bestellen.

3. Waarom moet ik elke motor afzonderlijk configureren?
Elke motor moet de juiste ID en communicatie-instellingen krijgen, zodat het systeem elk gewricht correct kan herkennen. Door ze afzonderlijk te configureren voorkom je conflicten en zorg je ervoor dat de leader- en followerarm correct reageren.

4. Wat moet ik doen als het instellen van de motor mislukt?
Controleer eerst de stroomaansluiting, de USB-kabel, de controllerkaart en de 3-pins motorkabel. Controleer ook of tijdens de installatie alleen de bedoelde motor is aangesloten en of er tijdens de configuratiestap niet per ongeluk motoren in serie zijn doorgelust.

5. Waarom is kalibratie na de montage belangrijk?
Kalibratie is belangrijk omdat hiermee de fysieke gewrichtsposities worden afgestemd op het begrip dat de software van de robot heeft. Zonder een juiste kalibratie komen de leader- en followerarm mogelijk niet goed overeen, waardoor de nauwkeurigheid van de besturing kan afnemen en latere trainings- of teleoperatieresultaten kunnen worden beïnvloed.

Meld u aan voor onze nieuwsbrief

Ontvang de nieuwste informatie over onze producten en speciale aanbiedingen.

Website Feedback

Help us improve OpenELAB

Found a website issue or have an idea? Tell us what would make your experience better.