Kazalo:

Zgradite svojega robota Turtlebot !: 7 korakov
Zgradite svojega robota Turtlebot !: 7 korakov

Video: Zgradite svojega robota Turtlebot !: 7 korakov

Video: Zgradite svojega robota Turtlebot !: 7 korakov
Video: Моя работа наблюдать за лесом и здесь происходит что-то странное 2024, Julij
Anonim
Zgradite svojega robota Turtlebot!
Zgradite svojega robota Turtlebot!
Zgradite svojega robota Turtlebot!
Zgradite svojega robota Turtlebot!
Zgradite svojega Turtlebot robota!
Zgradite svojega Turtlebot robota!

UREDI:

Dodatne informacije o programski opremi in nadzoru so na voljo na tej povezavi:

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

Neposredna povezava do kode je:

github.com/MattMgn/foxbot_core

Zakaj ta projekt?

Turtlebot 3 je popolna platforma za poglobitev v elektroniko, robotiko in celo AI! Predlagam, da korak za korakom zgradite svojega lastnega turtlebota s cenovno ugodnimi komponentami, ne da bi pri tem žrtvovali lastnosti in zmogljivost. Z eno mislijo: ohranite najboljše od začetnega robota, njegovo modularnost, preprostost in ogromno število paketov za avtonomno navigacijo in AI odprtokodne skupnosti.

Ta projekt je priložnost za začetnike, da pridobijo pojme o elektroniki, mehaniki in računalništvu, za bolj izkušene pa, da dobijo zmogljivo platformo za preizkušanje in razvoj algoritmov umetne inteligence.

Kaj boste odkrili v tem projektu?

Odkrili boste, katere bistvene mehanske in elektronske dele je treba hraniti pri originalnem botu, da zagotovite popolno združljivost.

Celoten postopek izdelave bo podrobno opisan: od tiskanja 3D delov, sestavljanja in več komponent, spajkanja in integracije elektronike do končnega sestavljanja kode na Arduinu. Ta pouk se bo zaključil s primerom "zdravo sveta", ki vas bo seznanil z ROS. Če se vam kaj zdi nejasno, vprašajte!

Zaloge

Elektronika:

1 x enosmerni računalnik za izvajanje ROS, lahko je na primer Raspberry Pi ali Jetson Nano

1 x Arduino DUE, lahko uporabite tudi UNO ali MEGA

1 x proto-plošča, ki ustreza izhodu Arduino DUE, je na voljo tukaj

2 x 12V enosmerni motorji z dajalniki (možnost 100 vrt / min)

1 x gonilnik motorja L298N

2 x 5V regulator

1 x baterija (na primer 3S/4S LiPo baterija)

2 x stikala za vklop/izklop

2 x LED

2 x 470 kOhm upori

3 x 4 pinski konektorji JST

1 x USB kabel (vsaj eden med SBC in Arduino)

Senzorji:

1 x senzor toka (neobvezno)

1 x 9 stopinj svobode IMU (neobvezno)

1 x LIDAR (neobvezno)

Podvozje:

16 x modularnih plošč Turtlebot (ki jih je mogoče tudi 3D natisniti)

2 x kolesa premera 65 mm (možnost širine 6 mm)

4 x najlonski distančniki 30 mm (neobvezno)

20 x vložki M3 (neobvezno)

Drugi:

Žice

Vijaki in vložki M2.5 in M3

3D tiskalnik ali nekdo, ki vam lahko natisne dele

Ročni vrtalnik s kompletom svedrov, kot je ta

1. korak: Opis

Opis
Opis
Opis
Opis

Ta robot je preprost diferencialni pogon, ki uporablja 2 kolesca, neposredno nameščena na motorju, in kolesce, ki je nameščeno zadaj, da prepreči padanje robota. Robot je razdeljen na dve plasti:

spodnja plast: s pogonsko skupino (baterija, krmilnik motorja in motorji) in elektroniko "nizke ravni": mikrokrmilnik Arduino, regulator napetosti, stikala …

zgornji sloj: z elektroniko na visoki ravni, in sicer enosmerni računalnik in LIDAR

Te plasti so povezane s tiskanimi deli in vijaki, da se zagotovi trdnost strukture.

Elektronska shema

Shema se lahko zdi nekoliko neurejena. To je shematična risba in ne predstavlja vseh žic, priključkov in proto plošče, vendar jo je mogoče prebrati na naslednji način:

3S litij -ionska ionska polimerna baterija s kapaciteto 3000 mAh napaja prvo vezje, napaja tako krmilno ploščo motorja (L298N) kot prvi 5V regulator za dajalnike motorjev in Arduino. To vezje je omogočeno s stikalom z LED, ki označuje njegovo stanje ON/OFF.

Ista baterija napaja drugo vezje, vhodna napetost se pretvori v 5V za napajanje enosmernega računalnika. Tudi tukaj je vezje omogočeno s stikalom in LED.

Dodatne senzorje, kot je LIDAR ali kamera, lahko nato dodate neposredno na Raspberry Pi prek USB -ja ali vrat CSI.

Mehansko oblikovanje

Okvir robota je sestavljen iz 16 enakih delov, ki so tvorili 2 kvadratni plasti (širina 28 cm). Številne luknje omogočajo namestitev dodatnih delov, kjer koli jih potrebujete, in ponujajo popolno modularno zasnovo. Za ta projekt sem se odločil, da bom kupil izvirne plošče TurtleBot3, lahko pa jih tudi natisnete 3D, saj je njihova zasnova odprtokodna.

2. korak: Montaža bloka motorja

Sklop motornega bloka
Sklop motornega bloka
Sklop motornega bloka
Sklop motornega bloka
Sklop motornega bloka
Sklop motornega bloka

Priprava motorja

Prvi korak je, da okoli vsakega motorja dodate penast trak debeline 1 mm, da preprečite vibracije in hrup, ko se motor vrti.

Tiskani deli

Nosilec motorja ima dva dela, ki oprijemata motor kot primež. Doseženi so 4 vijaki za pritrditev motorja v držalo.

Vsako držalo je sestavljeno iz več lukenj, v katerih so nameščeni vložki M3, ki jih je treba namestiti na konstrukcijo. Luknj je več, kot jih dejansko potrebujemo, dodatne luknje bi lahko sčasoma uporabili za namestitev dodatnega dela.

Nastavitve 3D tiskalnika: vsi deli so natisnjeni z naslednjimi parametri

  • Šoba premera 0,4 mm
  • 15% polnilo materiala
  • Plast višine 0,2 mm

Kolo

Izbrana kolesa so prekrita z gumo, da se poveča oprijem in zagotovijo drsenje brez drsenja. Vpenjalni vijak vzdržuje kolo, nameščeno na gredi motorja. Premer kolesa mora biti dovolj velik, da prečka manjše korake in nepravilnosti tal (ta kolesa imajo premer 65 mm).

Pritrditev

Ko končate z enim motornim blokom, ponovite prejšnje operacije in jih nato preprosto pritrdite v plast z vijaki M3.

3. korak: Stikala in priprava kabla

Stikala in priprava kablov
Stikala in priprava kablov
Stikala in priprava kabla
Stikala in priprava kabla
Stikala in priprava kabla
Stikala in priprava kabla

Priprava kabla motorja

Na splošno je dajalnik motorja opremljen s kablom, ki vključuje na eni strani 6-pinski konektor, ki povezuje zadnji del tiskalnega vezja dajalnika, in gole žice na drugi strani.

Imate možnost, da jih neposredno spajkate na svojo proto-ploščo ali celo na Arduino, vendar vam priporočam, da namesto tega uporabite ženske glave pinov in priključke JST-XH. Tako jih lahko priključite/odklopite na proto ploščo in olajšate montažo.

Namigi: okrog žic lahko dodate razširljivo pleteno pletenico in koščke skrčljive cevi v bližini priključkov, s čimer boste dobili "čist" kabel.

Stikalo in LED

Če želite omogočiti oba napajalna tokokroga, pripravite 2 LED in stikalna kabla: najprej spajčite upor 470 kOhm na enega od LED zatičev, nato pa spajkajte LED na enega stikalnega zatiča. Tudi tukaj lahko s kosom skrčne cevi skrijete upor. Pazite, da LED -diodo spajkate v pravo smer! Ponovite to operacijo, da dobite dva stikalna/led kabla.

Montaža

Predhodno izdelane kable sestavite na ustreznem 3D tiskanem delu. Za vzdrževanje stikala uporabite matico, LED diode ne potrebujejo lepila, le dovolj močno jih vstavite v luknjo.

4. korak: Ožičenje elektronskih plošč

Ožičenje elektronskih plošč
Ožičenje elektronskih plošč
Ožičenje elektronskih plošč
Ožičenje elektronskih plošč
Ožičenje elektronskih plošč
Ožičenje elektronskih plošč

Postavitev plošč

Za zmanjšanje števila žic se uporablja proto plošča, ki ustreza postavitvi plošče Arduino. Na vrhu proto plošče je L298N zložen z žensko glavo Dupont (Dupont sta glavi »Arduino like«).

Priprava L298N

Prvotno plošča L298N ni opremljena z ustrezno moško glavo Dupont, pod ploščo morate dodati vrstico z 9 zatiči. Morate narediti 9 lukenj s svedrom premera 1 mm vzporedno z obstoječimi luknjami, kot vidite na sliki. Nato ustrezne zatiče dveh vrst povežite z materiali za spajkanje in kratkimi žicami.

Izhod L298N

L298N je sestavljen iz 2 kanalov, ki omogočata nadzor hitrosti in smeri:

smer skozi dva digitalna izhoda, imenovana IN1, IN2 za prvi kanal in IN3 in IN4 za drugi

hitrost skozi 1 digitalni izhod, imenovan ENA za prvi kanal in ENB za drugi

Za Arduino sem izbral naslednji pin-out:

levi motor: IN1 na pin 3, IN2 na pin 4, ENA na pin 2

desni motor: IN3 na pin 5, IN4 na pin 6, ENB na pin 7

5V regulator

Tudi če l298N običajno zagotavlja 5V, vseeno dodam majhen regulator. Napaja Arduino prek vrat VIN in 2 kodirnika na motorjih. Ta korak lahko preskočite z neposredno uporabo vgrajenega regulatorja 5V L298N.

Priključki JST in izhod za kodirnik

Uporabite 4-pinski ženski adapter za priključek JST-XH, vsak priključek je nato povezan z:

  • 5V iz regulatorja
  • a Ozemlje
  • dva vhoda za digitalni vhod (na primer: 34 in 38 za desni dajalnik in 26 in 30 za levo)

Dodatni I2C

Kot ste morda opazili, je na proto-plošči dodaten 4-pinski priključek JST. Uporablja se za povezovanje naprave I2C, kot je IMU, lahko storite enako in celo dodate svoja vrata.

5. korak: Skupina motorjev in Arduino na spodnji plasti

Motor Group in Arduino na spodnji plasti
Motor Group in Arduino na spodnji plasti
Motor Group in Arduino na spodnji plasti
Motor Group in Arduino na spodnji plasti
Motor Group in Arduino na spodnji plasti
Motor Group in Arduino na spodnji plasti

Pritrditev motornih blokov

Ko je spodnji sloj sestavljen z 8 ploščami Turtlebot, preprosto uporabite 4 vijake M3 neposredno v vložkih za vzdrževanje motornih blokov. Nato lahko priključite napajalne žice motorja na izhode L298N, predhodno izdelane kable pa na priključke JST na matični plošči.

Porazdelitev moči

Porazdelitev električne energije se preprosto izvede s pregradnim priključnim blokom. Na eni strani pregrade je za povezavo z LiPo baterijo privit kabel z ženskim vtičem XT60. Na drugi strani sta privita dva LED/stikalna kabla, ki sta bila predhodno spajkana. Tako bi lahko vsako vezje (Motor in Arduino) omogočili s svojim stikalom in ustrezno zeleno LED.

Upravljanje kablov

Hitro se boste morali spopasti z veliko kabli! Če želite zmanjšati nered, lahko uporabite "mizo", ki je bila prej natisnjena 3D. Na mizi elektronske plošče vzdržujte z dvostranskim trakom, pod mizo pa pustite, da žice prosto tečejo.

Vzdrževanje baterije

Da bi se izognili vrženju baterije med vožnjo z robotom, lahko preprosto uporabite gumico za lase.

Valjalec

Ne gre za kolesce, ampak preprosto polkroglo, pritrjeno s štirimi vijaki na spodnjo plast. Dovolj je, da zagotovite stabilnost robota.

Korak 6: Enosmerni računalnik in senzorji na zgornji plasti

Enosmerni računalnik in senzorji na zgornji plasti
Enosmerni računalnik in senzorji na zgornji plasti
Enosmerni računalnik in senzorji na zgornji plasti
Enosmerni računalnik in senzorji na zgornji plasti
Enosmerni računalnik in senzorji na zgornji plasti
Enosmerni računalnik in senzorji na zgornji plasti

Kateri enosmerni računalnik izbrati?

Ni mi treba predstavljati slavnega Raspberry Pi, saj število primerov uporabe močno presega področje robotike. Toda za Raspberry Pi obstaja veliko močnejši izzivalec, ki ga lahko prezrete. Jetson Nano iz Nvidije poleg procesorja vgrajuje zmogljivo 128-jedrno grafično kartico. Ta grafična kartica je bila razvita za pospešitev računskih dragih nalog, kot so obdelava slik ali sklepanje v nevronskem omrežju.

Za ta projekt sem izbral Jetson Nano in med priloženimi datotekami najdete ustrezen 3D del, če pa želite uporabiti Raspberry Pi, je tukaj veliko primerov za tiskanje.

5V regulator

Ne glede na to, katero ploščo ste se odločili vnesti na svojega robota, potrebujete regulator 5V. Najnovejši Raspberry Pi 4 potrebuje največ 1,25A, vendar Jetson Nano potrebuje do 3A zaradi stresa, zato sem se odločil, da bo Pololu 5V 6A imel rezervo moči za prihodnje komponente (senzorje, luči, korake …), vendar bi morali biti poceni 5V 2A delovno mesto. Jetson uporablja 5,5 mm enosmerni sod, Pi pa mikro USB, prime ustrezen kabel in ga spajka na izhod regulatorja.

Postavitev LIDAR

LIDAR, ki se uporablja tukaj, je LDS-01, obstajajo pa še drugi 2D LIDARji, ki jih je mogoče uporabiti, na primer RPLidar A1/A2/A3, YDLidar X4/G4 ali celo Hokuyo LIDAR. Edina zahteva je, da mora biti priključen prek USB -ja in postavljen na sredino nad strukturo. Če LIDAR ni dobro centriran, lahko zemljevid, ustvarjen z algoritmom SLAM, ocenjeni položaj sten in ovir premakne iz njihovega dejanskega položaja. Tudi če robotske ovire prečkajo laserski žarek, bo to zmanjšalo doseg in vidno polje.

Montaža LIDAR

LIDAR je nameščen na 3D tiskanem delu, ki sledi svoji obliki, sam del pa je pritrjen na pravokotno ploščo (dejansko v vezanem lesu na sliki, lahko pa tudi 3D natisnjen). Nato adapterni del omogoča pritrditev ansambla na zgornjo ploščo želve z najlonskimi distančniki.

Kamera kot dodatni senzor ali zamenjava LIDAR -a

Če ne želite porabiti preveč denarja za LIDAR (stane okoli 100 USD), pojdite na kamero: obstajajo tudi algoritmi SLAM, ki delujejo samo z monokularno kamero RGB. Oba SBC sprejemata kamero USB ali CSI.

Poleg tega vam bo kamera omogočila izvajanje računalniškega vida in skriptov za odkrivanje predmetov!

Montaža

Preden zaprete robota, napeljite kable skozi večje luknje na zgornji plošči:

  • ustrezni kabel od 5V regulatorja do vašega SBC
  • kabel USB iz vrat za programiranje Arduino DUE (najbližje DC cevi) na vrata USB vašega SBC

Nato zgornjo ploščo držite na mestu z ducatom vijakov. Vaš robot je zdaj pripravljen za programiranje, Bravo!

7. korak: Naj se premakne

Sestavite Arduino

Odprite svoj najljubši Arduino IDE in uvozite mapo projekta, imenovano own_turtlebot_core, nato izberite svojo ploščo in ustrezna vrata, lahko se obrnete na to odlično vadnico.

Prilagodite osnovne nastavitve

Projekt je sestavljen iz dveh datotek in eno je treba prilagoditi vašemu robotu. Odprimo torej own_turtlebot_config.h in odkrijmo, katere vrstice zahtevajo našo pozornost:

#define ARDUINO_DUE // ** Komentirajte to vrstico, če ne uporabljate dolga **

Uporabiti je treba le z Arduino DUE, če ne komentirate vrstice.

#define RATE_CONTROLLER_KP 130.0 // ** NASTAVITE TO VREDNOST **

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

Ti trije parametri ustrezajo dobičkom regulatorja hitrosti, ki jih PID uporablja za vzdrževanje želene hitrosti. Glede na napetost akumulatorja, maso robota, premer kolesa in mehansko prestavo vašega motorja boste morali prilagoditi njihove vrednosti. PID je klasičen krmilnik in tukaj ne boste podrobno opisani, vendar vam mora ta povezava dati dovolj vhodnih podatkov za nastavitev svojega.

/ * Določi zatiče */

// motor A (desno) const byte motorRightEncoderPinA = 38; // ** SPREMENI S SVOJO PIN PIN NB ** const byte motorRightEncoderPinB = 34; // ** SPREMENI S TVOJIM PIN -om NB ** const byte enMotorRight = 2; // ** SPREMENI S SVOJO PIN PIN NB ** const byte in1MotorRight = 4; // ** SPREMENI S SVOJO PIN PIN NB ** const byte in2MotorRight = 3; // ** SPREMENI S SVOJO PIN PIN NB ** // motor B (levo) const byte motorLeftEncoderPinA = 26; // ** SPREMENI S SVOJO PIN PIN NB ** const byte motorLeftEncoderPinB = 30; // ** SPREMENI S TVOJIM PIN -om NB ** const byte enMotorLeft = 7; // ** SPREMENI S SVOJO PIN PIN NB ** const byte in1MotorLeft = 6; // ** SPREMENI S TVOJIM PIN -om NB ** const byte in2MotorLeft = 5; // ** SPREMENI S SVOJO PIN PIN NB **

Ta blok definira pinout med L298N in Arduino, preprosto spremenite številko pin, da se ujema z vašo. Ko končate s konfiguracijsko datoteko, sestavite in naložite kodo!

Namestite in konfigurirajte ROS

Ko dosežete ta korak, so navodila popolnoma enaka tistim, ki so podrobno opisana v odličnem priročniku TurtleBot3, morate natančno upoštevati

bravo TurtleBot 3 je zdaj vaš in z ROS lahko zaženete vse obstoječe pakete in vaje.

V redu, ampak kaj je ROS?

ROS pomeni operacijski sistem Roboti, na prvi pogled se morda zdi precej zapleten, vendar ni, samo zamislite si način komunikacije med strojno opremo (senzorji in aktuatorji) in programsko opremo (algoritmi za navigacijo, nadzor, računalniški vid …). Na primer, lahko preprosto zamenjate svoj trenutni LIDAR z drugim modelom brez prekinitve nastavitve, ker vsak LIDAR objavi isto sporočilo LaserScan. ROS se pogosto uporablja kot robotika, Zaženite svoj prvi primer

Ekvivalent "hello world" za ROS je sestavljen iz teleoperacije vašega robota prek oddaljenega računalnika. Kar želite storiti, je, da pošljete ukaze za hitrost, da se motorji vrtijo, ukazi sledijo tej cevi:

  • vozlišče turtlebot_teleop, ki deluje na oddaljenem računalniku, objavi temo "/cmd_vel", vključno s sporočilom Twist
  • to sporočilo se posreduje prek omrežja sporočil ROS na SBC
  • serijsko vozlišče omogoča sprejem "/cmd_vel" na Arduino
  • Arduino prebere sporočilo in nastavi kotno hitrost na vsakem motorju tako, da ustreza želeni linearni in kotni hitrosti robota

Ta postopek je preprost in ga je mogoče doseči z zagonom zgornjih ukaznih vrstic! Če želite podrobnejše informacije, si oglejte video.

[SBC]

roscore

[SBC]

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

[Oddaljeni računalnik]

izvozi TURTLEBOT3_MODEL = $ {TB3_MODEL}

roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch

Da gremo dlje

Preden poskusite vse uradne primere v priročniku, vsakič, ko se soočite s tem ukazom, morate vedeti še zadnjo stvar:

roslaunch turtlebot3_bringup turtlebot3_robot.launch

namesto tega morate zagnati ta ukaz na svojem SBC:

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

In če imate LIDAR na svojem SBC -ju zagnani povezani ukaz, v mojem primeru zaženem LDS01 s spodnjo vrstico:

roslaunch hls_lfcd_lds_driver hlds_laser.launch

In to je vse, dokončno ste zgradili svojega želva:) Pripravljeni ste odkriti fantastične zmogljivosti ROS -a ter kodirati algoriteme vida in strojnega učenja.

Priporočena: