Rakenna oma SO-101-robottisi!

Hanki osat SO-101:lle

Seuraa tätä README-tiedostoa. Siinä on materiaaliluettelo ja linkki osien lähteisiin, sekä ohjeet osien 3D-tulostukseen. Lisäksi kerro, onko tämä ensimmäinen kerta, kun tulostat, tai jos sinulla ei ole 3D-tulostinta.

Asenna LeRobot

Asentaaksesi LeRobotin, seuraa Asennusopasta.
Näiden ohjeiden lisäksi sinun on asennettava Feetech SDK:
 pip install -e ".[feetech]"

Vaiheittaiset kokoamisohjeet

Seuraava varsi käyttää 6x STS3215 -moottoria, joissa on 1/345-välitys. Johtava varsi käyttää kuitenkin kolmea moottoria, joissa on erilaiset välitykset varmistaakseen, että se voi sekä tukea omaa painoaan että liikkua mahdollisimman vähällä vaivalla. Alla oleva taulukko näyttää, mikä moottori tarvitaan kuhunkin nivelkohtaan.
Johtavan varren akseli Moottori Vaihteiston välityssuhde
Tukirakenne / 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
Otelaite 6 1 / 147

Puhdista SO-101:n osat

Poista kaikki tukimateriaali 3D-tulostetuista osista. Helpoin tapa on liu'uttaa pieni ruuvimeisseli tukimateriaalin alle ja poistaa se.
Moottoreiden asettamisen jälkeen asenna yksi 3-napainen kaapeli jokaiseen moottoriin ennen kokoamisen jatkamista.

Asenna nivel 1

  1. Aseta ensimmäinen moottori pohjaan.
  2. Kiinnitä moottori neljällä M2x6mm ruuvilla (pienimmät ruuvit): kaksi ylhäältä ja kaksi alhaalta.
  3. Liukuta ensimmäinen moottorin pidike moottorin päälle ja kiinnitä se kahdella M2x6mm ruuvilla (yksi kummallakin puolella).
  4. Sovita molemmat moottorin sarvet ja kiinnitä yläosa M3x6mm ruuvilla.
  5. Kiinnitä olkapään osa.
  6. Kiinnitä olkapään osa neljällä M3x6mm ruuvilla ylhäältä ja neljällä M3x6mm ruuvilla alhaalta.
  7. Asenna olkapään moottorin pidike.

Asenna nivel 2

  1. Liukuta toinen moottori alas paikalleen ylhäältä.
  2. Kiinnitä toinen moottori neljällä M2x6mm ruuvilla.
  3. Sovita molemmat moottorin sarvet moottoriin 2 ja kiinnitä yläosa M3x6mm ruuvilla.
  4. Kiinnitä olkavarsi, varmistaen se neljällä M3x6mm ruuvilla kummallakin puolella.

Asenna nivel 3

  1. Aseta moottori 3 paikalleen ja kiinnitä se neljällä M2x6mm ruuvilla.
  2. Asenna molemmat moottorin sarvet moottoriin 3, kiinnittäen toinen niistä M3x6mm sarvikiinnitysruuvilla.
  3. Kiinnitä kyynärvarsi moottoriin 3 käyttäen neljää M3x6mm ruuvia kummallakin puolella.

Asenna nivel 4

  1. Liukuta moottorin pidike 4 paikalleen.
  2. Aseta moottori 4.
  3. Kiinnitä moottori 4 neljällä M2x6mm ruuvilla, kiinnitä sitten sen moottorin sarvet ja kiinnitä yksi M3x6mm sarviruuvilla.

Asenna nivel 5

  1. Aseta moottori 5 ranteen pidikkeeseen ja kiinnitä se kahdella M2x6mm eturuuvilla.
  2. Asenna yksittäinen moottorin sarvi ranteen moottoriin ja kiinnitä se M3x6mm sarviruuvilla.
  3. Kiinnitä ranne moottoriin 4 kiinnittämällä se neljällä M3x6mm ruuvilla kummallakin puolella.

Asenna tarttuja / kahva

Seuraaja

  1. Kiinnitä tarttuja moottoriin 5 kiinnittämällä se ranteen moottorin sarveen neljällä M3x6mm ruuvilla.
  2. Aseta tarttujan moottori ja kiinnitä se kahdella M2x6mm ruuvilla kummallakin puolella.
  3. Asenna moottorin sarvet ja kiinnitä yksi M3x6mm sarviruuvilla.
  4. Asenna tarttujan kynsi ja kiinnitä se neljällä M3x6mm ruuvilla kummallakin puolella.

Johtaja

  1. Asenna johtajan pidike ranteeseen ja kiinnitä se neljällä M3x6mm ruuvilla.
  2. Kiinnitä kahva moottoriin 5 yhdellä M2x6mm ruuvilla.
  3. Aseta tarttujan moottori ja kiinnitä se kahdella M2x6mm ruuvilla kummallakin puolella; asenna moottorin sarvi ja kiinnitä se M3x6mm sarviruuvilla.
  4. Kiinnitä seuraajan liipaisin neljällä M3x6mm ruuvilla.

Määritä SO-101:n moottorit

Etsi USB-portit, jotka vastaavat kutakin käsivartta

Tunnistaaksesi portin jokaiselle bus-servosovittimelle, yhdistä MotorBus tietokoneeseesi USB:llä ja virralla. Suorita seuraava skripti ja irrota MotorBus, kun sinua kehotetaan:
 lerobot-find-port

Mac

Esimerkkituloste:
 Etsitään kaikki saatavilla olevat portit MotorBusille.
['/dev/tty.usbmodem575E0032081', '/dev/tty.usbmodem575E0031751']
Irrota USB-kaapeli MotorsBusistasi ja paina [Enter] kun olet valmis.

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

Tämän MotorsBusin portti on /dev/tty.usbmodem575E0032081
Kytke USB-kaapeli uudelleen.
Havaittu portti on /dev/tty.usbmodem575E0032081, joka vastaa joko johtaja- tai seuraajakättäsi.

Linux

Linuxissa saatat joutua antamaan pääsyn USB-portteihin suorittamalla:

 sudo chmod 666 /dev/ttyACM0

 sudo chmod 666 /dev/ttyACM1

Esimerkkituloste:
 Etsitään kaikki saatavilla olevat portit MotorBusille. 
['/dev/ttyACM0', '/dev/ttyACM1']

Irrota usb-kaapeli MotorsBusistasi ja paina [Enter] kun olet valmis.

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

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

Löydetty portti on /dev/ttyACM1, joka vastaa johtaja- tai seuraajakättäsi.

Määritä moottorien ID:t ja aseta niiden baudinopeudet

Jokaisella moottorilla on yksilöllinen ID väylällä. Uudet moottorit toimitetaan tyypillisesti ID:llä 1. Moottoreiden ja ohjaimen välinen oikea kommunikointi edellyttää, että jokaiselle moottorille annetaan eri ID. Baudinopeus määrittää tiedonsiirtonopeuden väylällä; ohjaimen ja kaikkien moottoreiden on käytettävä samaa baudinopeutta kommunikoidakseen.
Tätä varten yhdistä jokaiseen moottoriin erikseen ohjaimella ja määritä sen ID ja baudinopeus. Nämä asetukset tallennetaan moottorin pysyvään muistiin (EEPROM), joten prosessi tarvitsee tehdä vain kerran.
Jos käytät moottoreita uudelleen toisesta robotista, sinun täytyy todennäköisesti toistaa tämä vaihe, koska niiden ID:t ja baudinopeudet eivät välttämättä täsmää.
Alla oleva video näyttää vaihe vaiheelta moottori-ID:iden asettamisen prosessin.

Seuraaja

Kytke USB-kaapeli tietokoneestasi ja virtalähde seuraajan käsivarren ohjauskorttiin. Suorita sitten alla oleva komento (tai aja API-esimerkki) käyttäen aiemmin saamasi portin nimeä. Määritä myös johtavan käsivarren nimi id-parametrilla.
Komento:

 lerobot-setup-motors \
      --robot.type=so101_follower \
      --robot.port=/dev/tty.usbmodem585A0076841 # <- liitä tähän aiemmassa 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.
 Kytke ohjauskortti vain 'gripper'-moottoriin ja paina enter.
Ohjeiden mukaan kytke tarttujamoottori—varmista, että se on ainoa korttiin liitetty moottori eikä se ole ketjutettu muihin. Kun painat [Enter], skripti konfiguroi automaattisesti kyseisen moottorin ID:n ja baudinopeuden.
Vianetsintä:
Jos virhe ilmenee, tarkista kaikki kaapeliliitännät:
  • Virtalähde
  • USB-kaapeli tietokoneesi ja ohjauskortin välillä
  • 3-napainen kaapeli ohjauskortista moottoriin
Jos käytät Waveshare-ohjauskorttia, varmista että molemmat hyppykytkimet ovat asetettu B-kanavalle (USB).
Tämän jälkeen näet seuraavan viestin:
 'gripper'-moottorin id asetettu arvoon 6
Seuraava ohje:
 Kytke ohjauskortti vain 'wrist_roll'-moottoriin ja paina enter.
Voit irrottaa 3-napaisen kaapelin ohjauskortista, mutta jätä sen toinen pää kiinni tarttujamoottorissa, koska se pää on jo paikallaan. Seuraavaksi kytke uusi 3-napainen kaapeli ohjauskortista rannekierromoottoriin. Varmista kuten ennenkin, että tämä moottori on ainoa korttiin kytketty eikä se ole ketjutettu muihin moottoreihin.
Toista tämä toimenpide jokaiselle moottorille ohjeiden mukaan.
Ennen kuin painat [Enter] joka kerta, tarkista kaikki kaapeliliitännät — esimerkiksi virtakaapeli voi löystyä, kun käsittelet korttia.
Kun skripti on suoritettu, moottorit on konfiguroitu ja valmiina. Voit sitten ketjuttaa 3-napaiset kaapelit moottorista moottoriin ja liittää ensimmäisen moottorin (olkapään pan-napilla id=1) kaapelin ohjauskorttiin, joka voidaan kiinnittää käsivarren pohjaan.

Johtaja

Tee samat vaiheet johtajakäsivarrella.
Komento:
 lerobot-setup-motors \
      --teleop.type=so101_leader \
      --teleop.port=/dev/tty.usbmodem575E0031751 # <- liitä tähän portti, joka löytyi edellisessä vaiheessa
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

Seuraavaksi kalibroi robotti niin, että johtaja- ja seuraajakäsivarret ilmoittavat samat sijaintiarvot, kun ne ovat samassa fyysisessä asennossa. Tämä kalibrointi on ratkaisevan tärkeää, koska se mahdollistaa yhdellä robotilla koulutetun neuroverkon toiminnan oikein toisella robotilla.

Seuraaja

Suorita alla oleva komento (tai käytä API-esimerkkiä) kalibroidaksesi seuraaja- käsivarren:
Komento:
 lerobot-calibrate \
      --robot.type=so101_follower \
      --robot.port=/dev/tty.usbmodem58760431551 \ # <- Robotin portti
      --robot.id=my_awesome_follower_arm # <- Anna robotille ainutlaatuinen 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 ensin robotti niin, että jokainen nivel on keskellä sen liikelaajuutta, paina sitten [Enter] ja liikuta kutakin niveltä sen koko liikelaajuudella.

Johtaja

Suorita samat vaiheet johtavan käsivarren kalibroimiseksi — 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 ainutlaatuinen 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()

Sivupalkki

Uusin julkaisu

Tässä osiossa ei ole tällä hetkellä sisältöä. Lisää sisältöä tähän osioon käyttämällä sivupalkkia.

Rekisteröidy uutiskirjeeseemme

Hanki viimeisimmät tiedot tuotteistamme ja erikoistarjouksistamme.