Rakenna oma SO-101-robottisi!

Hanki SO-101:n osat

Noudata tätä README-tiedostoa. Se sisältää materiaaliluettelon ja linkin osien hankintalähteisiin sekä ohjeet osien 3D-tulostamiseen. Ilmoita lisäksi, onko tämä ensimmäinen tulostuskertasi tai onko sinulla 3D-tulostinta.

Asenna LeRobot

Asenna LeRobot noudattamalla asennusopasta.
Näiden ohjeiden lisäksi sinun on asennettava Feetech SDK.
 pip install -e ".[feetech]"

Kokoamisohjeet vaihe vaiheelta

Seuraajavarsi käyttää kuutta STS3215-moottoria välityssuhteella 1/345. Vetovarsi käyttää kuitenkin kolmea moottoria, joiden välityssuhteet ovat erilaiset, jotta se pystyy kannattelemaan oman painonsa ja liikkumaan mahdollisimman vähäisellä voimalla. Alla olevassa taulukossa näytetään, mitä moottoria kullekin nivelelle tarvitaan.
Vetovarren akseli Moottori Välityssuhde
Alusta / olkapään kierto 1 1 / 191
Olkapään nosto 2 1 / 345
Kyynärpään taivutus 3 1 / 191
Ranteen taivutus 4 1 / 147
Ranteen kierto 5 1 / 147
Tarttuja 6 1 / 147

SO-101:n osien puhdistaminen

Poista kaikki tukimateriaali 3D-tulostetuista osista. Helpoin tapa on työntää pieni ruuvimeisseli tukimateriaalin alle ja poistaa se.
Kun moottorit on asetettu paikalleen, asenna jokaiseen moottoriin yksi 3-nastainen kaapeli ennen kokoonpanon jatkamista.

Asenna nivel 1

  1. Aseta ensimmäinen moottori alustaan.
  2. Kiinnitä moottori neljällä M2x6mm-ruuvilla (pienimmillä ruuveilla): kaksi ylhäältä ja kaksi alhaalta.
  3. Liu’uta ensimmäinen moottorin pidike moottorin päälle ja kiinnitä se kahdella M2x6mm-ruuvilla, yksi kummallekin puolelle.
  4. Asenna molemmat moottoritorvet ja kiinnitä ylempi torvi M3x6mm-ruuvilla.
  5. Asenna olkapääosa.
  6. Kiinnitä olkapääosa yläpuolelta neljällä M3x6mm-ruuvilla ja alapuolelta neljällä M3x6mm-ruuvilla.
  7. Asenna olkapään moottorin pidike.

Asenna nivel 2

  1. Liu’uta toinen moottori ylhäältä alaspäin paikalleen.
  2. Kiinnitä toinen moottori neljällä M2x6mm-ruuvilla.
  3. Asenna molemmat moottoritorvet moottoriin 2 ja kiinnitä ylempi torvi M3x6mm-ruuvilla.
  4. Kiinnitä olkavarsi neljällä M3x6mm-ruuvilla kummallakin puolella.

Asenna nivel 3

  1. Aseta moottori 3 paikalleen ja kiinnitä se neljällä M2x6mm-ruuvilla.
  2. Asenna molemmat moottoritorvet moottoriin 3 ja kiinnitä toinen niistä M3x6mm-torviruuvilla.
  3. Kiinnitä kyynärvarsi moottoriin 3 käyttämällä neljää M3x6mm-ruuvia kummallakin puolella.

Asenna nivel 4

  1. Liu’uta moottorin pidike 4 paikalleen.
  2. Aseta moottori 4 paikalleen.
  3. Kiinnitä moottori 4 neljällä M2x6mm-ruuvilla, asenna sitten sen moottoritorvet ja kiinnitä toinen niistä M3x6mm-torviruuvilla.

Asenna nivel 5

  1. Aseta moottori 5 rannepidikkeeseen ja kiinnitä se kahdella M2x6mm-eturuuvilla.
  2. Asenna yksi moottorin torvi ranneliitosmoottoriin ja kiinnitä se M3x6mm:n torviruuvilla.
  3. Kiinnitä ranne moottoriin 4 neljällä M3x6mm-ruuvilla kummaltakin puolelta.

Asenna tarttuja / kahva

Seuraaja

  1. Asenna tarttuja moottoriin 5 kiinnittämällä se ranneliitoksen moottoritorveen neljällä M3x6mm-ruuvilla.
  2. Aseta tarttujan moottori paikalleen ja kiinnitä se kummaltakin puolelta kahdella M2x6mm-ruuvilla.
  3. Asenna moottorin torvet ja kiinnitä toinen niistä M3x6mm:n torviruuvilla.
  4. Asenna tarttujan kynsi ja kiinnitä se kummaltakin puolelta neljällä M3x6mm-ruuvilla.

Leader

  1. Asenna päävarren pidike ranteeseen ja kiinnitä se neljällä M3x6mm-ruuvilla.
  2. Kiinnitä kahva moottoriin 5 yhdellä M2x6mm-ruuvilla.
  3. Aseta tarttujan moottori paikalleen ja kiinnitä se kummaltakin puolelta kahdella M2x6mm-ruuvilla; asenna moottorin torvi ja kiinnitä se M3x6mm:n torviruuvilla.
  4. Kiinnitä seuraajavarren liipaisin neljällä M3x6mm-ruuvilla.

Määritä SO-101:n moottorit

Etsi kumpaakin vartta vastaavat USB-portit

Tunnista kunkin varren servosovittimen portti yhdistämällä MotorBus tietokoneeseen USB:n ja virransyötön avulla. Suorita seuraava komentosarja ja irrota MotorBus, kun sitä pyydetään:
 lerobot-find-port

Mac

Esimerkkituloste:
 Etsitään kaikki käytettävissä olevat MotorBus-portit.
['/dev/tty.usbmodem575E0032081', '/dev/tty.usbmodem575E0031751']
Irrota USB-kaapeli MotorsBusista ja paina Enter, kun olet valmis.

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

Tämän MotorsBusin portti on /dev/tty.usbmodem575E0032081
Yhdistä USB-kaapeli uudelleen.
Tunnistettu portti on /dev/tty.usbmodem575E0032081, joka vastaa joko pää- tai seuraajavarttasi.

Linux

Linuxissa USB-porttien käyttöoikeudet on ehkä annettava suorittamalla:

 sudo chmod 666 /dev/ttyACM0

 sudo chmod 666 /dev/ttyACM1

Esimerkkituloste:
 Etsitään kaikki käytettävissä olevat MotorBus-portit. 
['/dev/ttyACM0', '/dev/ttyACM1']

Irrota USB-kaapeli MotorsBusista ja paina Enter, kun olet valmis.

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

Tämän MotorsBusin portti on /dev/ttyACM1
Yhdistä USB-kaapeli uudelleen.

Löydetty portti on /dev/ttyACM1, joka vastaa pää- tai seuraajavarttasi.

Määritä moottorien tunnukset ja baudinopeudet

Jokaisella moottorilla on väylässä yksilöllinen tunnus. Uusien moottorien tunnus on yleensä 1. Jotta moottorit ja ohjain voivat viestiä oikein, jokaiselle moottorille on määritettävä eri tunnus. Baudinopeus määrittää tiedonsiirtonopeuden väylässä; ohjaimella ja kaikilla moottoreilla on oltava sama baudinopeus viestintää varten.
Yhdistä tätä varten ohjaimella kuhunkin moottoriin yksitellen ja määritä sen tunnus ja baudinopeus. Nämä asetukset tallennetaan moottorin haihtumattomaan muistiin (EEPROM), joten prosessi tarvitsee suorittaa vain kerran.
Jos käytät uudelleen toisesta robotista peräisin olevia moottoreita, tämä vaihe on todennäköisesti toistettava, koska niiden tunnukset ja baudinopeus eivät välttämättä täsmää.
Alla oleva video näyttää vaiheittain, miten moottorien tunnukset määritetään.

Seuraaja

Liitä tietokoneen USB-kaapeli ja virtalähde seuraajavarren ohjainkorttiin. Suorita sitten alla oleva komento (tai käytä API-esimerkkiä) aiemmin hankkimasi portin avulla. Anna johtajavarrelle myös nimi id-parametrilla.
Komento:

 lerobot-setup-motors \
      --robot.type=so101_follower \
      --robot.port=/dev/tty.usbmodem585A0076841 # <- liitä tähän edellisessä vaiheessa löydetty portti

API-esimerkki:
 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()
Näet seuraavan ohjeen.
 Yhdistä ohjainkortti vain 'gripper'-moottoriin ja paina Enter.
Liitä tarttujan moottori ohjeiden mukaisesti — varmista, että se on ainoa korttiin liitetty moottori eikä sitä ole ketjutettu muihin moottoreihin. Kun painat [Enter], komentosarja määrittää automaattisesti kyseisen moottorin tunnuksen ja siirtonopeuden.
Vianmääritys:
Jos tapahtuu virhe, tarkista kaikki kaapeliliitännät:
  • Virtalähde
  • USB-kaapeli tietokoneen ja ohjainkortin välillä
  • 3-napainen kaapeli ohjainkortista moottoriin
Jos käytät Waveshare-ohjainkorttia, varmista, että molemmat hyppylangat on asetettu B-kanavalle (USB).
Sen jälkeen näkyviin pitäisi tulla seuraava viesti:
 'gripper'-moottorin tunnukseksi asetetaan 6
Seuraava ohje:
 Yhdistä ohjainkortti vain wrist_roll-moottoriin ja paina Enter.
Voit irrottaa 3-napaisen kaapelin ohjainkortista, mutta jätä sen toinen pää kiinni tarttujan moottoriin, koska tämä pää on jo paikallaan. Yhdistä seuraavaksi uusi 3-napainen kaapeli ohjainkortista ranteen kiertomoottoriin. Varmista jälleen, että tämä moottori on ainoa korttiin yhdistetty moottori eikä sitä ole ketjutettu muihin moottoreihin.
Toista tämä menettely jokaiselle moottorille ohjeiden mukaisesti.
Tarkista kaikki kaapeliliitännät aina ennen Enter-näppäimen painamista — esimerkiksi virtakaapeli voi löystyä, kun käsittelet korttia.
Kun komentosarja on valmis, moottorit on määritetty ja ne ovat käyttövalmiita. Voit sen jälkeen ketjuttaa 3-napaiset kaapelit moottorista toiseen ja yhdistää ensimmäisestä moottorista (olkapään panorointimoottori, id=1) lähtevän kaapelin ohjainkorttiin, jonka voi kiinnittää varren jalustaan.

Leader

Tee samat vaiheet johtajavarrelle.
Komento:
 lerobot-setup-motors \
      --teleop.type=so101_leader \
      --teleop.port=/dev/tty.usbmodem575E0031751 # <- liitä tähän edellisessä vaiheessa löydetty portti
API-esimerkki:
 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()

Kalibroi robottisi

Kalibroi seuraavaksi robotti niin, että johtaja- ja seuraajavarsi ilmoittavat samat sijaintiarvot, kun ne ovat samassa fyysisessä asennossa. Tämä kalibrointi on tärkeä, koska sen ansiosta yhdellä robotilla koulutettu neuroverkko toimii oikein toisella robotilla.

Seuraaja

Suorita alla oleva komento (tai käytä API-esimerkkiä) seuraavan varsirobotin kalibroimiseksi:
Komento:
 lerobot-calibrate \
      --robot.type=so101_follower \
      --robot.port=/dev/tty.usbmodem58760431551 \ # <- Robotin portti
      --robot.id=my_awesome_follower_arm # <- Anna robotille yksilöllinen nimi
API-esimerkki:
 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()
Alla oleva video näyttää kalibroinnin: aseta robotti ensin niin, että jokainen nivel on liikealueensa keskellä, paina sitten Enter-näppäintä ja liikuta jokaista niveltä koko liikealueen läpi.

Leader

Kalibroi leader-varsi suorittamalla samat vaiheet — suorita alla oleva komento tai käytä API-esimerkkiä:
Komento:
 lerobot-calibrate \
      --teleop.type=so101_leader \
      --teleop.port=/dev/tty.usbmodem58760431551 \ # <- Robotin portti
      --teleop.id=my_awesome_leader_arm # <- Anna robotille yksilöllinen nimi
API-esimerkki:
 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()

Usein kysytyt kysymykset

1. Mihin SO-101:tä pääasiassa käytetään?
SO-101:tä käytetään pääasiassa edullisena robottivarsialustana liikeohjauksen, teleoperoinnin ja robotiikan työnkulkujen opetteluun, rakentamiseen ja kokeilemiseen. Se sopii erityisen hyvin LeRobot-pohjaisia projekteja tutkiville käyttäjille.

2. Tarvitsenko 3D-tulostimen SO-101:n rakentamiseen?
Ei välttämättä. Projekti sisältää 3D-tulostettuja osia, joten tarvitset joko 3D-tulostimen tai jonkun valmistamaan tulostetut osat puolestasi. Jos tämä on ensimmäinen rakennelmasi, valmiiksi tulostettujen osien hankkiminen voi helpottaa prosessia.

3. Miksi jokainen moottori on määritettävä yksi kerrallaan?
Jokaiselle moottorille on määritettävä oikea tunnus ja viestintäasetukset, jotta järjestelmä tunnistaa jokaisen nivelen oikein. Moottorien määrittäminen yksitellen auttaa välttämään ristiriitoja ja varmistaa, että leader- ja follower-varret toimivat oikein.

4. Mitä teen, jos moottorin asetusten määrittäminen epäonnistuu?
Tarkista ensin virtaliitäntä, USB-kaapeli, ohjainkortti ja kolmipinninen moottorikaapeli. Varmista myös, että asetusten aikana liitettynä on vain tarkoitettu moottori eikä moottoreita ole vahingossa ketjutettu toisiinsa määritysvaiheessa.

5. Miksi kalibrointi on tärkeää kokoamisen jälkeen?
Kalibrointi on tärkeää, koska se kohdistaa fyysiset nivelasennot ohjelmiston käsitykseen robotista. Ilman asianmukaista kalibrointia leader- ja follower-varret eivät välttämättä vastaa toisiaan oikein, mikä voi heikentää ohjauksen tarkkuutta ja vaikuttaa myöhempien koulutus- tai teleoperointitulosten laatuun.

Tilaa uutiskirjeemme

Saat uusimmat tiedot tuotteistamme ja erikoistarjouksistamme.

Website Feedback

Help us improve OpenELAB

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