Byg din egen SO-101 robot!

Skaff delene til SO-101

Følg denne README. Den indeholder materialelisten med et link til kilder for delene, samt instruktioner til 3D-print af delene. Derudover anbefales det at oplyse, om det er første gang, du printer, eller hvis du ikke ejer en 3D-printer.

Installer LeRobot

For at installere LeRobot, følg Installationsvejledning.
Ud over disse instruktioner skal du installere Feetech SDK:
 pip install -e ".[feetech]"

Trin-for-trin samlevejledning

Følgerarmen bruger 6x STS3215 motorer med 1/345 gearing. Lederen bruger dog tre motorer med forskellige gearinger for at sikre, at den både kan bære sin egen vægt og bevæges med minimal indsats. Tabellen nedenfor viser, hvilken motor der kræves til hver led.
Leder-arm akse Motor Gearforhold
Base / Skulderpan 1 1 / 191
Skulderløft 2 1 / 345
Albuebøjning 3 1 / 191
Håndledsbøjning 4 1 / 147
Håndledsrulning 5 1 / 147
Griber 6 1 / 147

Rengør dele af SO-101

Fjern alt støtte materiale fra de 3D-printede dele. Den nemmeste metode er at skubbe en lille skruetrækker under støtte materialet for at fjerne det.
Efter placering af motorerne, installer et 3-pin kabel i hver motor før fortsat samling.

Installer Led 1

  1. Indsæt den første motor i basen.
  2. Fastgør motoren med fire M2x6mm skruer (de mindste skruer): to fra toppen og to fra bunden.
  3. Skub den første motorholder over motoren og fastgør den med to M2x6mm skruer (en på hver side).
  4. Monter begge motorhorn, og fastgør det øverste horn med en M3x6mm skrue.
  5. Monter skulderdelen.
  6. Fastgør skulderdelen med fire M3x6mm skruer på toppen og fire M3x6mm skruer i bunden.
  7. Installer skuldermotorholderen.

Installer Led 2

  1. Skub den anden motor ned på plads fra toppen.
  2. Fastgør den anden motor med fire M2x6mm skruer.
  3. Monter begge motorhorn på motor 2, og fastgør det øverste horn med en M3x6mm skrue.
  4. Fastgør overarmen med fire M3x6mm skruer på hver side.

Installer Led 3

  1. Indsæt motor 3 og fastgør den med fire M2x6mm skruer.
  2. Installer begge motorhorn på motor 3, og fastgør et af dem med en M3x6mm hornskrue.
  3. Fastgør underarmen til motor 3 med fire M3x6mm skruer på hver side.

Installer Led 4

  1. Skub motorholder 4 på plads.
  2. Indsæt motor 4.
  3. Fastgør motor 4 med fire M2x6mm skruer, monter derefter motorhornene og fastgør et med en M3x6mm hornskrue.

Installer Led 5

  1. Indsæt motor 5 i håndledsholderen og fastgør den med to M2x6mm skruer foran.
  2. Monter et enkelt motorhorn på håndledsmotoren og fastgør det med en M3x6mm hornskrue.
  3. Fastgør håndleddet til motor 4 med fire M3x6mm skruer på hver side.

Installer Griber / Håndtag

Follower

  1. Monter griberen på motor 5 ved at fastgøre den til håndledsmotorhornet med fire M3x6mm skruer.
  2. Indsæt gribermotoren og fastgør den med to M2x6mm skruer på hver side.
  3. Monter motorhornene og fastgør en med en M3x6mm hornskrue.
  4. Installer griberkloen og fastgør den med fire M3x6mm skruer på hver side.

Leder

  1. Monter lederholderen på håndleddet og fastgør den med fire M3x6mm skruer.
  2. Fastgør håndtaget til motor 5 med en M2x6mm skrue.
  3. Indsæt gribermotoren og fastgør den med to M2x6mm skruer på hver side; monter en motorhorn og fastgør den med en M3x6mm hornskrue.
  4. Fastgør follower triggeren med fire M3x6mm skruer.

Konfigurer motorerne på SO-101

Find USB-portene, der svarer til hver arm

For at identificere porten for hver bus servo adapter, tilslut MotorBus til din computer med USB og strøm. Kør følgende script og træk MotorBus ud, når du bliver bedt om det:
 lerobot-find-port

Mac

Eksempeloutput:
 Finder alle tilgængelige porte til MotorBus.
['/dev/tty.usbmodem575E0032081', '/dev/tty.usbmodem575E0031751']
Fjern USB-kablet fra din MotorsBus og tryk på [Enter], når du er færdig.

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

Porten for denne MotorsBus er /dev/tty.usbmodem575E0032081
Tilslut USB-kablet igen.
Den registrerede port er /dev/tty.usbmodem575E0032081, som svarer til enten din leader- eller follower-arm.

Linux

På Linux kan det være nødvendigt at give adgang til USB-portene ved at køre:

 sudo chmod 666 /dev/ttyACM0

 sudo chmod 666 /dev/ttyACM1

Eksempeloutput:
 Finder alle tilgængelige porte til MotorBus. 
['/dev/ttyACM0', '/dev/ttyACM1']

Fjern usb-kablet fra din MotorsBus og tryk på [Enter], når du er færdig.

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

Porten for denne MotorsBus er /dev/ttyACM1
Tilslut USB-kablet igen.

Den opdagede port er /dev/ttyACM1, som svarer til din leader- eller follower-arm.

Tildel motor-ID'erne og indstil deres baudrater

Hver motor har et unikt ID på bussen. Nye motorer leveres typisk med et ID på 1. For korrekt kommunikation mellem motorerne og controlleren skal hver motor tildeles et unikt ID. Baudraten bestemmer dataoverførselshastigheden på bussen; controlleren og alle motorer skal have samme baudrate for at kunne kommunikere.
For at gøre dette skal du forbinde til hver motor individuelt med controlleren og konfigurere dens ID og baudrate. Disse indstillinger skrives til motorens ikke-flygtige hukommelse (EEPROM), så processen skal kun udføres én gang.
Hvis du genbruger motorer fra en anden robot, skal du sandsynligvis gentage dette trin, fordi deres ID'er og baudrate måske ikke stemmer overens.
Videoen nedenfor demonstrerer trin-for-trin proceduren for at sætte motor-ID'er.

Follower

Tilslut USB-kablet fra din computer og strømforsyningen til follower-armens controllerkort. Udfør derefter kommandoen nedenfor (eller kør API-eksemplet) med den port, du fandt tidligere. Tildel også et navn til din lederarm ved hjælp af id-parameteren.
Kommando:

 lerobot-setup-motors \
      --robot.type=so101_follower \
      --robot.port=/dev/tty.usbmodem585A0076841 # <- indsæt her den port, der blev fundet i det forrige trin

API eksempel:
 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()
Du vil se følgende instruktion.
 Tilslut controllerkortet kun til 'gripper' motoren og tryk på enter.
Som anvist, tilslut gribermotoren—sørg for at det er den eneste motor tilsluttet kortet og ikke kædet sammen med andre. Når du trykker på [Enter], vil scriptet automatisk konfigurere motorens ID og baudrate.
Fejlfinding:
Hvis der opstår en fejl, kontroller alle kabelforbindelser:
  • Strømforsyning
  • USB-kabel mellem din computer og controllerkortet
  • 3‑pinskabel fra controllerkortet til motoren
Hvis du bruger et Waveshare controllerkort, bekræft at begge jumpere er sat til B-kanalen (USB).
Derefter skulle du se følgende besked:
 'gripper' motor id sat til 6
Efterfulgt af den næste instruktion:
 Tilslut controllerkortet kun til 'wrist_roll' motoren og tryk på enter.
Du kan frakoble 3‑pinskablet fra controllerkortet, men lad den anden ende blive siddende på gribermotoren, da den ende allerede er på plads. Tilslut derefter et nyt 3‑pinskabel fra controllerkortet til håndledsrullemotoren. Som før, sørg for at denne motor er den eneste, der er tilsluttet kortet, og at den ikke er kædet sammen med andre motorer.
Gentag denne procedure for hver motor som anvist.
Før du trykker på [Enter] hver gang, skal du kontrollere alle kabeltilslutninger — for eksempel kan strømkablet løsne sig, mens du håndterer kortet.
Når scriptet er færdigt, vil motorerne være konfigurerede og klar. Du kan derefter kæde 3-pins kablerne fra motor til motor og forbinde kablet fra den første motor (skulderpan med id=1) til controllerkortet, som kan monteres på armens base.

Leder

Gør det samme for leder-armen.
Kommando:
 lerobot-setup-motors \
      --teleop.type=so101_leader \
      --teleop.port=/dev/tty.usbmodem575E0031751 # <- indsæt her den port, der blev fundet i det forrige trin
API eksempel:
 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()

Kalibrer din Robot

Kalibrer derefter robotten, så leder- og follower-armene rapporterer identiske positionsværdier, når de indtager samme fysiske position. Denne kalibrering er afgørende, fordi den gør det muligt for et neuralt netværk, der er trænet på én robot, at fungere korrekt på en anden.

Follower

Udfør kommandoen nedenfor (eller brug API-eksemplet) for at kalibrere follower-armen:
Kommando:
 lerobot-calibrate \
      --robot.type=so101_follower \
      --robot.port=/dev/tty.usbmodem58760431551 \ # <- Robotens port
      --robot.id=my_awesome_follower_arm # <- Giv robotten et unikt navn
API eksempel:
 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()
Videoen nedenfor demonstrerer kalibreringen: placer først robotten, så hvert led er centreret i sit bevægelsesområde, tryk derefter på [Enter] og bevæg hvert led gennem hele dets bevægelsesområde.

Leder

Udfør de samme trin for at kalibrere lederarmen — kør kommandoen nedenfor eller brug API-eksemplet:
Kommando:
 lerobot-calibrate \
      --teleop.type=so101_leader \
      --teleop.port=/dev/tty.usbmodem58760431551 \ # <- Robotens port
      --teleop.id=my_awesome_leader_arm # <- Giv robotten et unikt navn
API eksempel:
 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()

Sidebjælke

Seneste indlæg

Denne sektion indeholder i øjeblikket ikke noget indhold. Tilføj indhold til denne sektion ved hjælp af sidepanelet.

Tilmeld dig vores nyhedsbrev

Få de seneste oplysninger om vores produkter og særlige tilbud.