Bygg din egen SO-101-robot!

Skaffa delarna till SO-101

Följ denna README. Den inkluderar materiallista med en länk till källor för delarna, samt instruktioner för 3D-utskrift av delarna. Dessutom, ange om detta är första gången du skriver ut eller om du inte äger en 3D-skrivare.

Installera LeRobot

För att installera LeRobot, följ Installationsguide.
Utöver dessa instruktioner måste du installera Feetech SDK:
 pip install -e "[feetech]"

Steg-för-steg monteringsanvisningar

Följearmen använder 6x STS3215-motorer med 1/345 växling. Ledaren använder däremot tre motorer med olika växlar för att säkerställa att den både kan bära sin egen vikt och flyttas med minimal ansträngning. Tabellen nedan visar vilken motor som krävs för varje led.
Ledararmens axel Motor Växelförhållande
Bas / Axelpanorering 1 1 / 191
Axellyft 2 1 / 345
Armbågsböjning 3 1 / 191
Handledsböjning 4 1 / 147
Handledsrullning 5 1 / 147
Gripare 6 1 / 147

Rengör delar av SO-101

Ta bort allt stödmaterial från de 3D-utskrivna delarna. Det enklaste sättet är att skjuta in en liten skruvmejsel under stödmaterialet för att ta bort det.
Efter att ha placerat motorerna, anslut en 3-stiftskabel till varje motor innan du fortsätter med monteringen.

Installera led 1

  1. Sätt i den första motorn i basen.
  2. Säkra motorn med fyra M2x6mm-skruvar (de minsta skruvarna): två från toppen och två från botten.
  3. Skjut den första motorhållaren över motorn och fäst den med två M2x6mm-skruvar (en på varje sida).
  4. Montera båda motorhornen och fäst det övre hornet med en M3x6mm-skruv.
  5. Montera axeldelen.
  6. Säkra axeldelen med fyra M3x6mm-skruvar ovanpå och fyra M3x6mm-skruvar under.
  7. Installera axelmotorhållaren.

Installera led 2

  1. Skjut den andra motorn ned på plats från toppen.
  2. Säkra den andra motorn med fyra M2x6mm-skruvar.
  3. Montera båda motorhornen på motor 2 och fäst det övre hornet med en M3x6mm-skruv.
  4. Fäst överarmen och säkra den med fyra M3x6mm-skruvar på varje sida.

Installera led 3

  1. Sätt i motor 3 och säkra den med fyra M2x6mm-skruvar.
  2. Montera båda motorhorn på motor 3 och fäst ett av dem med en M3x6mm hornskruv.
  3. Fäst underarmen på motor 3 med fyra M3x6mm-skruvar på varje sida.

Installera led 4

  1. Skjut motorhållare 4 på plats.
  2. Sätt in motor 4.
  3. Säkra motor 4 med fyra M2x6mm skruvar, montera sedan dess motorhorn och fäst en med en M3x6mm hornskruv.

Installera led 5

  1. Sätt in motor 5 i handledshållaren och fäst den med två M2x6mm skruvar fram.
  2. Montera ett enda motorhorn på handledens motor och säkra det med en M3x6mm hornskruv.
  3. Fäst handleden på motor 4, fäst med fyra M3x6mm skruvar på varje sida.

Installera gripare / handtag

Follower

  1. Montera griparen på motor 5 genom att fästa den på handledens motorhorn med fyra M3x6mm skruvar.
  2. Sätt in gripmotorn och säkra den med två M2x6mm skruvar på varje sida.
  3. Montera motorhornen och fäst en med en M3x6mm hornskruv.
  4. Installera gripklon och säkra den med fyra M3x6mm skruvar på varje sida.

Leader

  1. Montera ledarhållaren på handleden och fäst den med fyra M3x6mm skruvar.
  2. Fäst handtaget på motor 5 med en M2x6mm skruv.
  3. Sätt in gripmotor och säkra den med två M2x6mm skruvar på varje sida; montera en motorhorn och fäst den med en M3x6mm hornskruv.
  4. Fäst följare-tryckaren med fyra M3x6mm skruvar.

Konfigurera motorerna på SO-101

Lokalisera USB-portarna som motsvarar varje arm

För att identifiera porten för varje bus servo-adapter, anslut MotorBus till din dator med USB och ström. Kör följande skript och koppla ur MotorBus när du uppmanas:
 lerobot-find-port

Mac

Exempelutdata:
 Hittar alla tillgängliga portar för MotorBus.
['/dev/tty.usbmodem575E0032081', '/dev/tty.usbmodem575E0031751']
Ta bort USB-kabeln från din MotorsBus och tryck på [Enter] när du är klar.

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

Porten för denna MotorsBus är /dev/tty.usbmodem575E0032081
Anslut USB-kabeln igen.
Den upptäckta porten är /dev/tty.usbmodem575E0032081, vilket motsvarar antingen din leader- eller follower-arm.

Linux

På Linux kan du behöva ge åtkomst till USB-portarna genom att köra:

 sudo chmod 666 /dev/ttyACM0

 sudo chmod 666 /dev/ttyACM1

Exempelutdata:
 Hittar alla tillgängliga portar för MotorBus. 
['/dev/ttyACM0', '/dev/ttyACM1']

Ta bort usb-kabeln från din MotorsBus och tryck på [Enter] när du är klar.

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

Porten för denna MotorsBus är /dev/ttyACM1
Anslut USB-kabeln igen.

Den upptäckta porten är /dev/ttyACM1, vilket motsvarar din leader- eller follower-arm.

Tilldela motorernas ID:n och ställ in deras baudrate

Varje motor har ett unikt ID på bussen. Nya motorer levereras vanligtvis med ID 1. För korrekt kommunikation mellan motorerna och kontrollern måste varje motor tilldelas ett unikt ID. Baudrate bestämmer dataöverföringshastigheten på bussen; kontrollern och alla motorer måste ha samma baudrate för att kunna kommunicera.
För att göra detta, anslut till varje motor individuellt med kontrollern och konfigurera dess ID och baudrate. Dessa inställningar skrivs till motorns icke-flyktiga minne (EEPROM), så processen behöver bara göras en gång.
Om du återanvänder motorer från en annan robot behöver du troligen upprepa detta steg eftersom deras ID:n och baudrate kanske inte stämmer.
Videon nedan visar steg-för-steg proceduren för att ställa in motor-ID:n.

Follower

Anslut USB-kabeln från din dator och strömförsörjningen till follower-armens styrenhet. Kör sedan kommandot nedan (eller kör API-exemplet) med den port du fick tidigare. Tilldela också ett namn till din leader-arm med hjälp av id-parametern.
Kommando:

 lerobot-setup-motors \
      --robot.type=so101_follower \
      --robot.port=/dev/tty.usbmodem585A0076841 # <- klistra in porten som hittades i föregående steg här

API-exempel:
 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 kommer att se följande instruktion.
 Anslut styrenheten endast till 'gripper'-motorn och tryck på enter.
Anslut enligt anvisning gripmotorn—se till att det är den enda motorn ansluten till styrenheten och att den inte är kedjekopplad till andra. När du trycker på [Enter] kommer skriptet automatiskt att konfigurera motorns ID och baudrate.
Felsökning:
Om ett fel uppstår, kontrollera alla kabelanslutningar:
  • Strömförsörjning
  • USB-kabel mellan din dator och styrenheten
  • 3‑pinskabel från styrenheten till motorn
Om du använder en Waveshare-styrenhet, bekräfta att båda jumpers är inställda på B-kanalen (USB).
Efter det bör du se följande meddelande:
 'gripper' motor id inställt på 6
Följ sedan nästa instruktion:
 Anslut styrenheten endast till 'wrist_roll'-motorn och tryck på enter.
Du kan koppla ur 3‑pinskabeln från styrenheten men låt dess andra ände vara ansluten till gripmotorn, eftersom den änden redan är på plats. Anslut sedan en ny 3‑pinskabel från styrenheten till handledsrullmotorn. Som tidigare, se till att denna motor är den enda som är ansluten till styrenheten och inte är kedjekopplad till någon annan motor.
Upprepa denna procedur för varje motor enligt anvisning.
Innan du trycker på [Enter] varje gång, kontrollera alla kabelanslutningar — strömkabeln kan till exempel lossna när du hanterar styrenheten.
När skriptet är klart kommer motorerna att vara konfigurerade och redo. Du kan sedan kedjekoppla 3-stiftskablarna från motor till motor och ansluta kabeln från den första motorn (axelleden med id=1) till styrenheten, som kan monteras på armens bas.

Leader

Utför samma steg för leader-armen.
Kommando:
 lerobot-setup-motors \
      --teleop.type=so101_leader \
      --teleop.port=/dev/tty.usbmodem575E0031751 # <- klistra in porten som hittades i föregående steg
API-exempel:
 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()

Kalibrera din Robot

Kalibrera sedan roboten så att leader- och follower-armarna rapporterar identiska positionsvärden när de befinner sig i samma fysiska position. Denna kalibrering är avgörande eftersom den gör det möjligt för ett neuralt nätverk som tränats på en robot att fungera korrekt på en annan.

Follower

Kör kommandot nedan (eller använd API-exemplet) för att kalibrera follower-arm:
Kommando:
 lerobot-calibrate \
      --robot.type=so101_follower \
      --robot.port=/dev/tty.usbmodem58760431551 \ # <- Porten för din robot
      --robot.id=my_awesome_follower_arm # <- Ge roboten ett unikt namn
API-exempel:
 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()
Videon nedan visar kalibreringen: placera först roboten så att varje led är centrerad i sitt rörelseomfång, tryck sedan på [Enter] och flytta varje led genom hela dess rörelseomfång.

Leader

Utför samma steg för att kalibrera leader-arm — kör kommandot nedan eller använd API-exemplet:
Kommando:
 lerobot-calibrate \
      --teleop.type=so101_leader \
      --teleop.port=/dev/tty.usbmodem58760431551 \ # <- Porten för din robot
      --teleop.id=my_awesome_leader_arm # <- Ge roboten ett unikt namn
API-exempel:
 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()

Sidopanel

Senaste inlägg

Denna sektion innehåller för närvarande inget innehåll. Lägg till innehåll i denna sektion med hjälp av sidofältet.

Registrera dig för vårt nyhetsbrev

Få den senaste informationen om våra produkter och specialerbjudanden.