Sisällysluettelo:

Rakenna oma kilpikonnarobotti!: 7 vaihetta
Rakenna oma kilpikonnarobotti!: 7 vaihetta

Video: Rakenna oma kilpikonnarobotti!: 7 vaihetta

Video: Rakenna oma kilpikonnarobotti!: 7 vaihetta
Video: БЛИЗНЕЦЫ♊2024 - ПО МЕСЯЦАМ🌈ТАРО ПРОГНОЗ НА УДАЧУ И УСПЕХ✔️ТАРО Ispirazione 2024, Marraskuu
Anonim
Rakenna oma kilpikonnarobotti!
Rakenna oma kilpikonnarobotti!
Rakenna oma kilpikonnarobotti!
Rakenna oma kilpikonnarobotti!
Rakenna oma kilpikonnarobotti!
Rakenna oma kilpikonnarobotti!

MUOKATA:

Lisätietoja ohjelmistosta ja ohjauksesta on saatavilla tästä linkistä:

hackaday.io/project/167074-build-your-own-turtlebot-3-backbone

Suora linkki koodiin on:

github.com/MattMgn/foxbot_core

Miksi tämä projekti?

Turtlebot 3 on täydellinen alusta syvälle elektroniikkaan, robotiikkaan ja jopa tekoälyyn! Ehdotan, että rakennat oman turtlebotin askel askeleelta edullisilla komponenteilla uhraamatta ominaisuuksia ja suorituskykyä. Yksi asia mielessä: parhaan mahdollisen alkuperäisen robotin säilyttäminen, sen modulaarisuus, yksinkertaisuus ja valtava määrä avoimen lähdekoodin yhteisön autonomisen navigoinnin ja tekoälyn paketteja.

Tämä projekti on aloittelijoille tilaisuus hankkia käsityksiä elektroniikasta, mekaniikasta ja tietotekniikasta ja kokeneemmille saada tehokas alusta tekoälyalgoritmien testaamiseen ja kehittämiseen.

Mitä huomaat tässä projektissa?

Olet selvittämässä, mitkä olennaiset mekaaniset ja elektroniset osat on säilytettävä alkuperäisestä botista täydellisen yhteensopivuuden takaamiseksi.

Koko rakennusprosessi on yksityiskohtainen: 3D -osien tulostuksesta, kokoonpanosta ja useista komponenteista, juottamisesta ja elektroniikan integroinnista lopulliseen koodin kokoamiseen Arduinolla. Tämä opetusohjelma päättyy "hello world" -esimerkkiin tutustuttaaksesi ROS: iin. Jos jokin tuntuu epäselvältä, kysy rohkeasti!

Tarvikkeet

Elektroniikka:

1 x yhden piirilevyn tietokone ROS: n suorittamiseen, voi olla esimerkiksi Raspberry Pi tai Jetson Nano

1 x Arduino DUE, voit käyttää myös UNO: ta tai MEGA: ta

1 x Proto-levy, joka sopii Arduino DUE -pistorasiaan, saatavilla täältä

2 x 12 V tasavirtamoottoria anturilla (vaihtoehto 100 r / min)

1 x L298N -moottoriajuri

2 x 5V säädin

1 x akku (esimerkiksi 3S/4S LiPo -akku)

2 x ON/OFF -kytkintä

2 x LED

2 x 470 kOhm vastukset

3 x 4 -nastaiset JST -liittimet

1 x USB -kaapeli (vähintään yksi SBC: n ja Arduinon välillä)

Anturit:

1 x virta -anturi (valinnainen)

1 x 9 vapausastetta IMU (valinnainen)

1 x LIDAR (valinnainen)

Alusta:

16 x modulaariset Turtlebot -levyt (jotka voidaan myös tulostaa 3D -muodossa)

2 x Renkaat halkaisija 65 mm (leveys 6 mm)

4 x nailonvälikappaletta 30 mm (valinnainen)

20 x M3 -terää (valinnainen)

Muut:

Johdot

M2.5- ja M3 -ruuvit ja -terät

3D -tulostin tai joku, joka voi tulostaa osat puolestasi

Käsipora, jossa on tämän kaltainen poranterä

Vaihe 1: Kuvaus

Kuvaus
Kuvaus
Kuvaus
Kuvaus

Tämä robotti on yksinkertainen tasauspyörästö, joka käyttää 2 pyörää, jotka on asennettu suoraan niiden moottoriin, ja rullapyörää, joka on sijoitettu taakse robotin kaatumisen estämiseksi. Robotti on jaettu kahteen kerrokseen:

pohjakerros: käyttövoimaryhmän kanssa (akku, moottorin ohjain ja moottorit) ja "matalan tason" elektroniikka: Arduino -mikro, jännitesäädin, kytkimet…

ylempi kerros: "korkean tason" elektronisella laitteella eli yhden kortin tietokoneella ja LIDARilla

Nämä kerrokset on liitetty painettuihin osiin ja ruuveihin rakenteen lujuuden varmistamiseksi.

Elektroninen kaavio

Kaavio saattaa näyttää hieman sekavalta. Se on kaavamainen piirustus, eikä se edusta kaikkia johtoja, liittimiä ja proto-korttia, mutta se voidaan lukea seuraavasti:

3S Litihum -ionipolymeeriakku, jonka kapasiteetti on 3000 mAh, antaa virtaa ensimmäiselle piirille, se käyttää sekä moottorin ohjainkorttia (L298N) että ensimmäistä 5 V: n säädintä moottorianturille ja Arduinolle. Tämä piiri aktivoidaan kytkimen kautta, jossa on LED, joka osoittaa sen ON/OFF -tilan.

Sama akku käyttää toista piiriä, tulojännite muunnetaan 5 V: ksi yhden korttitietokoneen virtalähteeksi. Tässäkin piiri aktivoidaan kytkimen ja LED -valon kautta.

Lisäanturit, kuten LIDAR tai kamera, voidaan sitten lisätä suoraan Raspberry Pi -laitteeseen USB- tai CSI -portin kautta.

Mekaaninen suunnittelu

Robotin runko koostuu 16 identtisestä osasta, jotka muodostivat 2 neliömäistä kerrosta (leveys 28 cm). Monet reiät mahdollistavat lisäosien asentamisen missä tahansa ja tarjoavat täydellisen modulaarisen rakenteen. Tätä projektia varten päätin hankkia alkuperäiset TurtleBot3 -levyt, mutta voit myös tulostaa ne 3D -muodossa, koska niiden suunnittelu on avoimen lähdekoodin.

Vaihe 2: Moottorilohkon kokoonpano

Moottorilohkokokoonpano
Moottorilohkokokoonpano
Moottorilohkokokoonpano
Moottorilohkokokoonpano
Moottorilohkokokoonpano
Moottorilohkokokoonpano

Moottorin valmistelu

Ensimmäinen askel on lisätä 1 mm paksu vaahtoteippi jokaisen moottorin ympärille estämään tärinää ja melua moottorin pyöriessä.

Painetut osat

Moottorin pidike johtaa kahteen osaan, jotka tarttuvat moottoriin kuin ruuvipuristin. 4 ruuvia moottorin kiristämiseksi pidikkeessä.

Jokainen pidike koostuu useista rei'istä, joissa on M3 -insertit asennettavaksi rakenteeseen. Reikiä on enemmän kuin todellisuudessa tarvitaan, lisäreikiä voitaisiin lopulta käyttää lisäosan asentamiseen.

3D -tulostimen asetukset: kaikki osat tulostetaan seuraavilla parametreilla

  • Suutin halkaisijaltaan 0,4 mm
  • 15% materiaalin täyttö
  • 0,2 mm korkea kerros

Pyörä

Valitut pyörät on päällystetty kumilla tartunnan maksimoimiseksi ja liukumattomien vierintäolosuhteiden varmistamiseksi. Kiinnitysruuvi pitää pyörän kiinni moottorin akselilla. Pyörän halkaisijan tulee olla riittävän suuri ylittämään pienet askeleet ja maan epätasaisuudet (nämä pyörät ovat halkaisijaltaan 65 mm).

Kiinnitys

Kun olet tehnyt yhden moottorilohkon, toista edelliset toimenpiteet ja kiinnitä ne sitten yksinkertaisesti kerrokseen M3 -ruuveilla.

Vaihe 3: Kytkimet ja kaapelin valmistelu

Kytkimet ja kaapelin valmistelu
Kytkimet ja kaapelin valmistelu
Kytkimet ja kaapelin valmistelu
Kytkimet ja kaapelin valmistelu
Kytkimet ja kaapelin valmistelu
Kytkimet ja kaapelin valmistelu

Moottorikaapelin valmistelu

Yleensä moottorianturin mukana tulee kaapeli, jonka toisella puolella on 6-napainen liitin, joka yhdistää anturin piirilevyn takaosan, ja paljaat johdot toisella puolella.

Sinulla on mahdollisuus juottaa ne suoraan proto-kortillesi tai jopa Arduinollesi, mutta suosittelen käyttämään naaraspuolisia nastoja ja JST-XH-liittimiä. Näin voit liittää/irrottaa ne proto-kortillasi ja helpottaa kokoonpanoa.

Vinkkejä: voit lisätä laajennettavan holkkipunoksen johtojesi ympärille ja kutisteputken paloja liittimien lähelle, jolloin saat "puhtaan" kaapelin.

Kytkin ja LED

Ota kaksi virtapiiriä käyttöön valmistelemalla 2 LED- ja kytkentäkaapelia: ensin juotettava 470 kOhm: n vastus yhteen LED -nastasta ja sitten juotettava LED yhteen kytkintappiin. Tässä voit myös käyttää kutisteputken palaa piilottaaksesi vastuksen sisälle. Varo juottamasta LED oikeaan suuntaan! Toista tämä toimenpide saadaksesi kaksi kytkin-/led -kaapelia.

Kokoonpano

Kokoa aiemmin tehdyt kaapelit vastaavaan 3D -tulostettuun osaan. Käytä mutteria kytkimen ylläpitämiseen, LEDit eivät vaadi liimaa, vain tarpeeksi voimaa, jotta se mahtuu reikään.

Vaihe 4: Elektronisten levyjen johdotus

Elektronisten levyjen johdotus
Elektronisten levyjen johdotus
Elektronisten levyjen johdotus
Elektronisten levyjen johdotus
Elektronisten levyjen johdotus
Elektronisten levyjen johdotus

Taulujen asettelu

Arduino-levyn asettelua vastaavaa proto-levyä käytetään johtimien määrän vähentämiseen. Proto-levyn päällä L298N on pinottu Dupont-naarasotsikkoon (Dupont ovat Arduinon kaltaisia otsikoita).

L298N valmistelu

Alunperin L298N -kortilla ei ole vastaavaa urospuolista Dupont -otsikkoa, sinun on lisättävä 9 -nastainen rivi levyn alle. Sinun on toteutettava yhdeksän reikää, joiden poranterä on 1 mm halkaisijalla, olemassa olevien reikien rinnalla, kuten kuvassa näkyy. Yhdistä sitten 2 rivin vastaavat tapit juotosmateriaaleihin ja lyhyisiin johtimiin.

L298N pin-out

L298N koostuu kahdesta kanavasta, jotka mahdollistavat nopeuden ja suunnan hallinnan:

suuntaan 2 digitaalilähdön kautta, nimeltään IN1, IN2 ensimmäiselle kanavalle ja IN3 ja IN4 toiselle

nopeutta yhden digitaalilähdön kautta, nimeltään ENA ensimmäiselle kanavalle ja ENB toiselle

Valitsin seuraavan pin-outin Arduinon kanssa:

vasen moottori: IN1 nastassa 3, IN2 nastassa 4, ENA nastassa 2

oikea moottori: IN3 nastassa 5, IN4 nastassa 6, ENB nastassa 7

5V säädin

Vaikka l298N pystyy normaalisti tuottamaan 5 V: n, lisään silti pienen säätimen. Se käyttää Arduinoa VIN -portin ja moottorien kahden anturin kautta. Voit ohittaa tämän vaiheen suoraan käyttämällä sisäänrakennettua L298N 5V -säädintä.

JST-liittimet ja kooderin pin-out

Käytä 4-napaisia naaraspuolisia JST-XH-liitäntäsovittimia, ja jokainen liitin on sitten linkitetty:

  • 5V säätimestä
  • a Maa
  • kaksi digitaalista tuloporttia (esimerkki: 34 ja 38 oikeanpuoleiselle anturille ja 26 ja 30 vasemmalle)

Ylimääräinen I2C

Kuten olet ehkä huomannut, proto-kortissa on ylimääräinen 4-nastainen JST-liitin. Sitä käytetään I2C -laitteen liittämiseen IMU: n tavoin, voit tehdä saman ja jopa lisätä oman porttisi.

Vaihe 5: Motor Group ja Arduino pohjakerroksessa

Motor Group ja Arduino pohjakerroksessa
Motor Group ja Arduino pohjakerroksessa
Motor Group ja Arduino pohjakerroksessa
Motor Group ja Arduino pohjakerroksessa
Motor Group ja Arduino pohjakerroksessa
Motor Group ja Arduino pohjakerroksessa

Moottorilohkojen kiinnitys

Kun pohjakerros on koottu 8 Turtlebot -levyn kanssa, käytä 4 M3 -ruuvia suoraan sisäosissa moottorilohkojen ylläpitämiseksi. Sitten voit kytkeä moottorin virtajohdot L298N-lähtöihin ja aiemmin tehdyt kaapelit pöytälevyn JST-liittimiin.

Sähkönjakelu

Sähkönjakelu toteutetaan yksinkertaisesti estokytkennällä. Esteen toisella puolella on XT60 -naaraspistokkeella varustettu kaapeli, joka on liitetty LiPo -akkuun. Toisaalta kaksi aiemmin juotettua LED-/kytkinkaapelia on ruuvattu. Näin jokainen piiri (moottori ja Arduino) voitaisiin ottaa käyttöön omalla kytkimellä ja vastaavalla vihreällä LED -valolla.

Kaapelin hallinta

Nopeasti joudut käsittelemään paljon kaapeleita! Voit vähentää sotkuisia piirteitä käyttämällä aiemmin 3D -tulostettua taulukkoa. Pidä pöydälläsi elektroniset levyt kaksipuolisella teipillä ja anna pöydän alla johtojen virrata vapaasti.

Akun huolto

Voit välttää akun poistumisen robottia ajaessasi käyttämällä yksinkertaisesti hiusten joustavaa nauhaa.

Rullapyörä

Ei oikeastaan rullapyörä, vaan yksinkertainen puolipallo, joka on kiinnitetty 4 ruuvilla pohjakerrokseen. Se riittää varmistamaan robotin vakauden.

Vaihe 6: Yhden kerroksen tietokone ja ylemmän kerroksen anturit

Yhden kerroksen tietokone ja anturit ylemmässä kerroksessa
Yhden kerroksen tietokone ja anturit ylemmässä kerroksessa
Yhden kerroksen tietokone ja anturit ylemmässä kerroksessa
Yhden kerroksen tietokone ja anturit ylemmässä kerroksessa
Yhden kerroksen tietokone ja anturit ylemmässä kerroksessa
Yhden kerroksen tietokone ja anturit ylemmässä kerroksessa

Mikä yhden kortin tietokone valita?

Minun ei tarvitse esitellä sinulle kuuluisaa Vadelma Pi: tä, sen käyttötapausten määrä ylittää suuresti robotiikka -alan. Mutta Raspberry Pi: lle on paljon tehokkaampi haastaja, jonka saatat jättää huomiotta. Itse asiassa Nvidian Jetson Nano sisältää suorittimen lisäksi tehokkaan 128-ytimisen näytönohjaimen. Tämä graafinen kortti on kehitetty nopeuttamaan kalliita laskennallisia tehtäviä, kuten kuvankäsittelyä tai hermoverkko -päätelmiä.

Tätä projektia varten valitsin Jetson Nanon ja löydät vastaavan 3D -osan liitteenä olevista tiedostoista, mutta jos haluat käyttää Raspberry Pi -laitetta, täällä on monia tulostettavia koteloita.

5V säädin

Riippumatta siitä, minkä levyn päätät tuoda robotillesi, tarvitset 5 V: n säätimen. Uusin Raspberry Pi 4 vaatii enintään 1,25 A, mutta Jetson Nano vaatii jopa 3 A rasitusta, joten valitsin, että Pololu 5V 6A: lla on tehovara tuleville komponenteille (anturit, valot, askelmat …), mutta minkä tahansa halvan 5 V 2A: n pitäisi tehdä työ. Jetson käyttää 5,5 mm: n DC -piippua ja Pi: n mikro -USB: tä, tartu vastaavaan kaapeliin ja juota se säätimen ulostuloon.

LIDAR -asettelu

Tässä käytetty LIDAR on LDS-01, on olemassa useita muita 2D LIDAR -laitteita, joita voidaan käyttää, kuten RPLidar A1/A2/A3, YDLidar X4/G4 tai jopa Hokuyo LIDAR. Ainoa vaatimus on, että se on kytkettävä USB: n kautta ja sijoitettava keskelle rakennetta. Itse asiassa, jos LIDAR ei ole hyvin keskitetty, SLAM -algoritmin luoma kartta voi siirtää seinien ja esteiden arvioidun sijainnin todellisesta sijainnistaan. Myös jos robotin esteet ylittävät lasersäteen, se pienentää kantamaa ja näkökenttää.

LIDAR -asennus

LIDAR on asennettu 3D -painettuun osaan, joka seuraa muotoaan, itse osa on kiinni suorakulmaisella levyllä (itse asiassa kuvassa vanerissa, mutta se voidaan myös tulostaa 3D -muodossa). Sitten sovitinosa sallii kokonaisuuden kiinnittämisen ylempään kilpilevyyn nailonvälikappaleilla.

Kamera lisäanturina tai LIDAR -korvaajana

Jos et halua käyttää liikaa rahaa LIDARiin (joka maksaa noin 100 dollaria), valitse kamera: on olemassa myös SLAM -algoritmeja, jotka toimivat vain monokulaarisen RGB -kameran kanssa. Molemmat SBC -laitteet hyväksyvät USB- tai CSI -kameran.

Lisäksi kameran avulla voit käyttää tietokoneen visio- ja esineentunnistusskriptejä!

Kokoonpano

Ennen kuin suljet robotin, vie kaapelit ylälevyn isompien reikien läpi:

  • vastaava kaapeli 5 V: n säätimestä SBC: hen
  • USB -kaapeli Arduino DUE -ohjelmointiportista (lähimpänä DC -tynnyriä) SBC -laitteen USB -porttiin

Pidä sitten ylälevyä paikallaan tusinan verran ruuveja. Robotti on nyt valmis ohjelmoitavaksi, HYVÄ!

Vaihe 7: Anna sen liikkua

Kokoa Arduino

Avaa suosikkisi Arduino IDE ja tuo projektikansio nimeltä own_turtlebot_core, valitse sitten levy ja vastaava portti, voit tutustua tähän erinomaiseen opetusohjelmaan.

Säädä ydinasetuksia

Projekti koostuu kahdesta tiedostosta, joista toinen on mukautettava robottiisi. Joten avataan own_turtlebot_config.h ja selvitetään, mitkä rivit vaativat huomiotamme:

#define ARDUINO_DUE // ** KOMMENToi TÄMÄ RIVI, JOS ET KÄYTÄ DUE **

Sitä tulisi käyttää vain Arduino DUE: n kanssa, jos ei kommentoi riviä.

#define RATE_CONTROLLER_KP 130.0 // ** TUNE THIS ARVO **

#define RATE_CONTROLLER_KD 5000000000000.0 // ** TUNE THIS ARVO ** #define RATE_CONTROLLER_KI 0.00005 // ** TUNE THIS ARVO **

Nämä kolme parametria vastaavat nopeudensäätimen vahvistuksia, joita PID käyttää halutun nopeuden ylläpitämiseen. Akun jännitteen, robotin massan, pyörän halkaisijan ja moottorin mekaanisen vaihteen mukaan sinun on mukautettava niiden arvoja. PID on klassinen ohjain, eikä sinua kerrota tässä yksityiskohtaisesti, mutta tämän linkin pitäisi antaa sinulle riittävästi syötteitä oman säätämiseen.

/ * Määritä nastat */

// moottori A (oikea) const tavu motorRightEncoderPinA = 38; // ** MUUTA PIN -koodillasi NB ** const byte motorRightEncoderPinB = 34; // ** MUUTA PIN -koodillasi NB ** const tavu enMotorRight = 2; // ** MUUTA PIN -koodillasi NB ** const tavu in1MotorRight = 4; // ** MUUTA PIN -koodillasi NB ** const tavu in2MotorRight = 3; // ** MUUTA PIN -koodillasi NB ** // moottori B (vasen) const byte motorLeftEncoderPinA = 26; // ** MUUTA PIN -koodillasi NB ** const tavu motorLeftEncoderPinB = 30; // ** MUUTA PIN -koodillasi NB ** const tavu enMotorLeft = 7; // ** MUUTA PIN -koodillasi NB ** const tavu in1MotorLeft = 6; // ** MUUTA PIN -koodillasi NB ** const tavu in2MotorLeft = 5; // ** MUUTA PIN -koodillasi NB **

Tämä lohko määrittää pinoutin L298N: n ja Arduinon välillä, yksinkertaisesti muokkaa pin -numeroa vastaamaan omaasi. Kun olet tehnyt määritystiedoston, koota ja lähetä koodi!

Asenna ja määritä ROS

Kun olet saavuttanut tämän vaiheen, ohjeet ovat täsmälleen samat kuin erinomaisessa TurtleBot3 -käyttöoppaassa, sinun on noudatettava tarkasti

hyvin tehty TurtleBot 3 on nyt sinun ja voit suorittaa kaikki olemassa olevat paketit ja opetusohjelmat ROS: n avulla.

Ok, mutta mikä on ROS?

ROS tarkoittaa robottien käyttöjärjestelmää, se saattaa aluksi vaikuttaa monimutkaiselta, mutta se ei ole sitä. Kuvittele vain kommunikointitapa laitteiston (anturit ja toimilaitteet) ja ohjelmiston (navigointi-, ohjaus-, tietokonenäköalgoritmit …) välillä. Voit esimerkiksi vaihtaa nykyisen LIDAR -laitteen helposti toiseen malliin rikkomatta asetuksiasi, koska jokainen LIDAR julkaisee saman LaserScan -viestin. ROS on laajalti käytetty on robotiikka, Näytä ensimmäinen esimerkki

ROS: n "hello world" -vastine koostuu robotin etäkäytöstä etätietokoneen kautta. Mitä haluat tehdä, on lähettää nopeuskomentoja moottorien pyörittämiseksi, komennot seuraavat tätä putkea:

  • etätietokoneessa käynnissä oleva turtlebot_teleop -solmu julkaisee "/cmd_vel" -aiheen, joka sisältää Twist -viestin
  • tämä viesti välitetään ROS -viestiverkoston kautta SBC: lle
  • sarjasolmu sallii "/cmd_vel" -vastaanoton Arduinolla
  • Arduino lukee viestin ja asettaa kulmanopeuden kullekin moottorille vastaamaan robotin haluttua lineaarista ja kulmanopeutta

Tämä toiminto on yksinkertainen ja voidaan saavuttaa suorittamalla yllä luetellut komentorivit! Jos haluat tarkempia tietoja, katso vain video.

[SBC]

roscore

[SBC]

rosrun rosserial_python serial_node.py _port: =/dev/ttyACM0 _baud: = 115200

[Etätietokone]

vie TURTLEBOT3_MODEL = $ {TB3_MODEL}

roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch

Mennä pidemmälle

Sinun on tiedettävä viimeinen asia ennen kuin yrität kaikkia virallisia esimerkkejä käsikirjassa aina, kun kohtaat tämän komennon:

roslaunch turtlebot3_bringup turtlebot3_robot.launch

sinun on suoritettava tämä komento SBC: ssäsi:

rosrun rosserial_python serial_node.py _port: =/dev/ttyACM0 _baud: = 115200

Ja jos sinulla on LIDAR, joka suorittaa vastaavan komennon SBC: ssäsi, minun tapauksessani suoritan LDS01: n alla olevan rivin kanssa:

roslaunch hls_lfcd_lds_driver hlds_laser.launch

Ja siinä kaikki, olet lopullisesti rakentanut oman turtlebotin:) Olet valmis tutustumaan ROS: n upeisiin ominaisuuksiin sekä koodimaan näkemystä ja koneoppimisalgoritmeja.

Suositeltava: