Sadržaj:
- Supplies
- Korak 1: Opis
- Korak 2: Sklop bloka motora
- Korak 3: Prekidači i priprema kabela
- Korak 4: Ožičenje elektronskih ploča
- Korak 5: Grupa motora i Arduino na donjem sloju
- Korak 6: Jednokrilni računar i senzori na gornjem sloju
- Korak 7: Neka se pokrene
Video: Napravite vlastitog robota Turtlebot !: 7 koraka
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:06
EDIT:
Dodatne informacije u vezi sa softverom i kontrolom dostupne su na ovom linku:
hackaday.io/project/167074-build-your-own-turtlebot-3-backbone
Direktna veza do koda je:
github.com/MattMgn/foxbot_core
Zašto ovaj projekat?
Turtlebot 3 je savršena platforma za dublje proučavanje elektronike, robotike, pa čak i umjetne inteligencije! Predlažem vam da napravite svoju vlastitu kornjačicu korak po korak sa pristupačnim komponentama bez žrtvovanja karakteristika i performansi. Imajući na umu jednu stvar: čuvanje najboljeg od početnog robota, njegovu modularnost, jednostavnost i ogroman broj paketa za autonomnu navigaciju i umjetnu inteligenciju iz zajednice otvorenog koda.
Ovaj projekt je prilika za početnike da steknu poimanje elektronike, mehanike i računarskih nauka, a za iskusnije da dobiju moćnu platformu za testiranje i razvoj algoritama umjetne inteligencije.
Šta ćete otkriti u ovom projektu?
Upravo ćete otkriti koji se bitni mehanički i elektronički dijelovi moraju čuvati od originalnog bota kako bi se zajamčila potpuna kompatibilnost.
Cijeli proces izrade bit će detaljan: od tiskanja 3D dijelova, sastavljanja i nekoliko komponenti, lemljenja i integriranja elektronike do konačnog kompajliranja koda na Arduinu. Ovo uputstvo će zaključiti na primjeru "zdravo svijeta" kako bi vas upoznalo s ROS -om. Ako vam se nešto čini nejasnim, slobodno postavite pitanje!
Supplies
Elektronika:
1 x Jednokrilni računar za pokretanje ROS -a, na primjer, može biti Raspberry Pi ili Jetson Nano
1 x Arduino DUE, mogli biste koristiti i UNO ili MEGA
1 x Proto-ploča koja odgovara Arduino DUE pin-out-u dostupna ovdje
2 x 12V DC motori s enkoderima (opcija 100 RPM)
1 x pokretač motora L298N
2 x 5V regulator
1 x baterija (na primjer 3S/4S LiPo baterija)
2 x ON/OFF prekidači
2 x LED
2 x 470 kOhm otpornici
3 x 4 pinska JST konektora
1 x USB kabel (barem jedan između SBC -a i Arduina)
Senzori:
1 x Senzor struje (opcionalno)
1 x 9 stepeni slobode IMU (opcionalno)
1 x LIDAR (opcionalno)
Šasija:
16 x Turtlebot modularne ploče (koje se takođe mogu 3D štampati)
2 x točkovi prečnika 65 mm (opcija širine 6 mm)
4 x najlonski odstojnici 30 mm (opcionalno)
20 x M3 umetci (opcionalno)
Ostali:
Žice
M2.5 i M3 vijci i umetci
3D štampač ili neko ko može odštampati dijelove umjesto vas
Ručna bušilica sa kompletom burgija poput ove
Korak 1: Opis
Ovaj robot je jednostavan diferencijalni pogon koji koristi 2 kotača direktno montirana na njihov motor i kotačić koji je postavljen straga kako bi spriječio pad robota. Robot je podijeljen u dva sloja:
donji sloj: sa pogonskom grupom (baterija, motorni kontroler i motori) i elektronikom „niskog nivoa“: Arduino mikrokontroler, regulator napona, prekidači …
gornji sloj: sa elektronikom „visokog nivoa“, naime jednostrukim računarom i LIDAR -om
Ti su slojevi povezani ispisanim dijelovima i vijcima kako bi se osigurala robusnost strukture.
Elektronska shema
Shema bi mogla djelovati pomalo neuredno. To je shematski crtež i ne predstavlja sve žice, konektore i proto-ploču, ali se može pročitati na sljedeći način:
3S litij -ionska polimerna baterija kapaciteta 3000mAh napaja prvi krug, napaja i upravljačku ploču motora (L298N) i prvi 5V regulator za enkodere motora i Arduino. Ovaj krug je omogućen preko prekidača sa LED diodom koji pokazuje njegovo stanje UKLJUČENO/ISKLJUČENO.
Ista baterija napaja drugi krug, ulazni napon se pretvara u 5V za napajanje računara sa jednim matičnim računarom. I ovdje je krug omogućen putem prekidača i LED diode.
Dodatni senzori, poput LIDAR -a ili kamere, tada se mogu dodati direktno na Raspberry Pi putem USB -a ili CSI porta.
Mehanički dizajn
Okvir robota sastoji se od 16 identičnih dijelova koji su formirali 2 sloja u kvadratu (širine 28 cm). Mnogo rupa omogućuje postavljanje dodatnih dijelova gdje god vam zatreba i nudi potpuni modularni dizajn. Za ovaj projekt odlučio sam nabaviti originalne TurtleBot3 ploče, ali ih možete i 3D ispisati jer je njihov dizajn otvorenog koda.
Korak 2: Sklop bloka motora
Priprema motora
Prvi korak je dodati pjenastu traku debljine 1 mm oko svakog motora kako biste spriječili vibracije i buku kada se motor okreće.
Štampani delovi
Nosač motora rezultira iz dva dijela koji drže motor poput poroka. 4 vijka za pričvršćivanje motora u držač.
Svaki držač sastoji se od nekoliko rupa u kojima se nalaze umetci M3 koji se montiraju na konstrukciju. Postoji više rupa nego što je zaista potrebno, dodatne rupe bi se na kraju mogle koristiti za montažu dodatnih dijelova.
Postavke 3D štampača: svi dijelovi se štampaju sa sljedećim parametrima
- Mlaznica prečnika 0,4 mm
- 15% ispune materijala
- Sloj visine 0,2 mm
Točak
Odabrani kotači prekriveni su gumom kako bi se povećalo prianjanje i osiguralo stanje kotrljanja. Stezni vijak održava točak montiran na osovini motora. Promjer kotača trebao bi biti dovoljno velik da pređe manje nepravilnosti koraka i tla (ti su kotači promjera 65 mm).
Fiksacija
Kada završite s jednim blokom motora, ponovite prethodne operacije, a zatim ih jednostavno pričvrstite u sloj vijcima M3.
Korak 3: Prekidači i priprema kabela
Priprema kabela motora
Općenito, motor-koder dolazi s kabelom koji uključuje s jedne strane 6-pinski konektor koji povezuje stražnju stranu PCB-a kodera i gole žice s druge strane.
Imate mogućnost izravnog lemljenja na vašu proto-ploču ili čak svoj Arduino, ali preporučujem vam da umjesto toga koristite ženska pin zaglavlja i JST-XH konektore. Tako ih možete priključiti/isključiti na svoju matičnu ploču i olakšati montažu.
Savjeti: možete dodati proširivu pletenicu s rukavima oko žica i komade skupljajuće cijevi u blizini konektora, čime ćete dobiti "čisti" kabel.
Prekidač i LED dioda
Da biste omogućili dva kruga napajanja, pripremite 2 LED i prekidačka kabela: prvo lemite otpornik od 470 kOhm na jedan od LED pina, a zatim lemite LED na jedan prekidač. Ovdje također možete koristiti komad skupljajuće cijevi da sakrijete otpornik iznutra. Pazite da lemite LED u pravom smjeru! Ponovite ovu operaciju da biste dobili dva prekidačka/LED kabela.
Montaža
Sastavite prethodno izrađene kablove na odgovarajući 3D štampani dio. Za održavanje prekidača koristite maticu, LED diode ne zahtijevaju ljepilo, dovoljno je samo da ih postavite u otvor.
Korak 4: Ožičenje elektronskih ploča
Raspored ploča
Proto-ploča koja odgovara rasporedu Arduino ploče koristi se za smanjenje broja žica. Na vrhu proto ploče, L298N je naslagan sa Dupont ženskim zaglavljem (Dupont su zaglavlja 'poput Arduina').
Priprema L298N
Izvorno, ploča L298N ne dolazi s odgovarajućim muškim Dupont zaglavljem, morate dodati red od 9 pinova ispod ploče. Morate napraviti 9 rupa sa svrdlom promjera 1 mm paralelno sa postojećim rupama kao što možete vidjeti na slici. Zatim povežite odgovarajuće pinove 2 reda s materijalima za lemljenje i kratkim žicama.
L298N pin-out
L298N se sastoji od 2 kanala koji omogućuju kontrolu brzine i smjera:
smjer kroz 2 digitalna izlaza, nazvana IN1, IN2 za prvi kanal, i IN3 i IN4 za drugi
brzinu kroz 1 digitalni izlaz, nazvan ENA za prvi kanal i ENB za drugi
Odabrao sam sljedeći pin-out s Arduinom:
lijevi 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
Čak i ako l298N normalno može osigurati 5V, ipak dodajem mali regulator. Napaja Arduino putem VIN priključka i 2 kodera na motorima. Ovaj korak možete preskočiti izravno korištenjem ugrađenog L298N 5V regulatora.
JST konektori i pin-out kodera
Koristite 4 pinska ženska adaptera JST-XH konektora, svaki konektor je zatim povezan sa:
- 5V od regulatora
- a Zemlja
- dva porta za digitalni ulaz (na primjer: 34 i 38 za desni davač i 26 i 30 za lijevi)
Dodatni I2C
Kao što ste možda primijetili, na proto-ploči postoji dodatni 4pin JST konektor. Koristi se za povezivanje I2C uređaja poput IMU -a, možete učiniti isto pa čak i dodati vlastiti port.
Korak 5: Grupa motora i Arduino na donjem sloju
Fiksiranje motornih blokova
Nakon što se donji sloj sastavi s 8 Turtlebot ploča, jednostavno upotrijebite 4 vijka M3 izravno u umetcima za održavanje motornih blokova. Zatim možete priključiti žice za napajanje motora na izlaze L298N, a prethodno izrađene kabele na JST konektore na matičnoj ploči.
Distribucija energije
Distribucija energije jednostavno se ostvaruje pomoću barijernog priključnog bloka. Na jednoj strani barijere je pričvršćen kabel sa ženskim utikačem XT60 za spajanje na LiPo bateriju. S druge strane, naša dva LED/prekidačka kabela prethodno zalemljena su zašrafljena. Tako bi se svaki krug (Motor i Arduino) mogao omogućiti sa vlastitim prekidačem i odgovarajućom zelenom LED diodom.
Upravljanje kablovima
Brzo ćete se morati nositi s mnogo kabela! Da biste smanjili neuredan aspekt, možete koristiti "tablicu" koja je prethodno 3D štampana. Na stolu održavajte svoje elektroničke ploče dvostranom trakom, a ispod stola pustite žice da slobodno teku.
Održavanje baterije
Kako biste izbjegli izbacivanje baterije dok vozite svog robota, jednostavno možete koristiti gumicu za kosu.
Kotačići
To zapravo nije kotač, već jednostavna polu -sfera učvršćena sa 4 vijka na donjem sloju. Dovoljno je osigurati stabilnost robota.
Korak 6: Jednokrilni računar i senzori na gornjem sloju
Koji single board računar izabrati?
Ne moram vam predstavljati slavni Raspberry Pi, njegov broj slučajeva uvelike premašuje polje robotike. No, postoji mnogo snažniji izazivač za Raspberry Pi koji biste mogli zanemariti. Zaista, Jetson Nano iz Nvidije ugrađuje moćnu grafičku karticu sa 128 jezgara pored svog procesora. Ova grafička kartica je razvijena za ubrzanje računskih skupih zadataka, poput obrade slike ili zaključivanja neuronske mreže.
Za ovaj projekt odabrao sam Jetson Nano i možete pronaći odgovarajući 3D dio među priloženim datotekama, ali ako želite ići s Raspberry Pi, ovdje ima mnogo kućišta za ispis.
Regulator 5V
Koju god ploču odlučili donijeti sa svojim robotom, potreban vam je regulator od 5 V. Najnoviji Raspberry Pi 4 zahtijeva 1,25A max, ali Jetson Nano zahtijeva do 3A na stres pa sam se odlučio za Pololu 5V 6A da ima rezervu snage za buduće komponente (senzore, svjetla, stepere …), ali bilo koje jeftino 5V 2A bi trebalo posao. Jetson koristi DC cijev od 5,5 mm, a Pi mikro USB, zgrabi odgovarajući kabel i lemi ga na izlaz regulatora.
LIDAR raspored
LIDAR koji se ovdje koristi je LDS-01, postoje i drugi 2D LIDAR-i koji se mogu koristiti poput RPLidar A1/A2/A3, YDLidar X4/G4 ili čak Hokuyo LIDAR-a. Jedini zahtjev je da ga treba priključiti putem USB -a i postaviti centrirano iznad strukture. Zaista, ako LIDAR nije dobro centriran, karta izrađena pomoću SLAM algoritma može pomaknuti procijenjenu poziciju zidova i prepreka s njihovog stvarnog položaja. Takođe, ako bilo koja prepreka od robota pređe laserski zrak, to će smanjiti domet i vidno polje.
LIDAR montaža
LIDAR je montiran na 3D štampani dio koji slijedi njegov oblik, a sam dio se drži na pravokutnoj ploči (zapravo u šperploči na slici, ali se može i 3D štampati). Zatim adapterski dio omogućava da se ansambl učvrsti na gornju ploču kornjače pomoću najlonskih odstojnika.
Kamera kao dodatni senzor ili zamjena za LIDAR
Ako ne želite potrošiti previše novca na LIDAR (koji košta oko 100 USD), idite na kameru: postoje i SLAM algoritmi koji rade samo s monokularnom RGB kamerom. Oba SBC -a prihvaćaju USB ili CSI kameru.
Štaviše, kamera će vam omogućiti pokretanje računarskog vida i skripti za otkrivanje objekata!
Montaža
Prije zatvaranja robota, provucite kabele kroz veće rupe na gornjoj ploči:
- odgovarajući kabel od 5V regulatora do vašeg SBC -a
- USB kabel s porta za programiranje Arduino DUE (najbliže DC cijevi) na USB priključak vašeg SBC -a
Zatim držite gornju ploču na mjestu s desetak vijaka. Vaš robot je sada spreman za programiranje, BRAVO!
Korak 7: Neka se pokrene
Kompilirajte Arduino
Otvorite svoj omiljeni Arduino IDE i uvezite mapu projekta koja se zove own_turtlebot_core, zatim odaberite ploču i odgovarajući port, možete se obratiti ovom izvrsnom vodiču.
Podesite osnovne postavke
Projekt se sastoji od dvije datoteke, a jednu je potrebno prilagoditi vašem robotu. Otvorimo dakle own_turtlebot_config.h i otkrijmo koje linije zahtijevaju našu pažnju:
#define ARDUINO_DUE // ** KOMENTIRAJTE OVU LINIJU AKO NE KORISTITE DUGU **
Treba koristiti samo s Arduino DUE, ako ne komentirate liniju.
#define RATE_CONTROLLER_KP 130.0 // ** PODESITE OVU VRIJEDNOST **
#define RATE_CONTROLLER_KD 5000000000000.0 // ** TUNE THIS VALUE ** #define RATE_CONTROLLER_KI 0.00005 // ** TUNE THIS VALUE **
Ta 3 parametra odgovaraju dobicima regulatora brzine koje PID koristi za održavanje željene brzine. Ovisno o naponu baterije, masi robota, promjeru kotača i mehaničkom zupčaniku vašeg motora, morat ćete prilagoditi njihove vrijednosti. PID je klasični kontroler i ovdje nećete biti detaljno opisani, ali ova veza trebala bi vam dati dovoljno ulaza za prilagođavanje vlastitog.
/ * Definišite pinove */
// motor A (desno) const bajt motorRightEncoderPinA = 38; // ** IZMJENI SA SVOJIM PIN -om NB ** const byte motorRightEncoderPinB = 34; // ** IZMJENI SA VAŠIM PIN -om NB ** const byte enMotorRight = 2; // ** IZMJENI SA VAŠIM PIN -om NB ** const byte in1MotorRight = 4; // ** IZMJENI SA VAŠIM PIN -om NB ** const byte in2MotorRight = 3; // ** IZMJENI SA SVOJIM PIN -om NB ** // motor B (lijevo) const byte motorLeftEncoderPinA = 26; // ** IZMJENI SA VAŠIM PIN -om NB ** const byte motorLeftEncoderPinB = 30; // ** IZMJENI SA VAŠIM PIN -om NB ** const byte enMotorLeft = 7; // ** IZMJENI SA VAŠIM PIN -om NB ** const byte in1MotorLeft = 6; // ** IZMJENI SA VAŠIM PIN -om NB ** const bajt in2MotorLeft = 5; // ** IZMJENITE SVOJIM PIN -om NB **
Ovaj blok definira pinout između L298N i Arduina, jednostavno izmenite pin broj tako da odgovara vašem. Kada završite s konfiguracijskom datotekom, sastavite i učitajte kôd!
Instalirajte i konfigurirajte ROS
Kada dosegnete ovaj korak, upute su potpuno iste kao i one navedene u izvrsnom priručniku TurtleBot3, morate ih pažljivo slijediti
Bravo TurtleBot 3 je sada vaš i možete pokrenuti sve postojeće pakete i vodiče s ROS -om.
U redu, ali šta je ROS?
ROS je skraćenica od Robots Operating System, na prvi pogled može izgledati prilično složeno, ali nije, zamislite samo način komunikacije između hardvera (senzori i aktuatori) i softvera (algoritmi za navigaciju, upravljanje, računarski vid …). Na primjer, možete jednostavno zamijeniti svoj trenutni LIDAR s drugim modelom bez prekida vaših postavki, jer svaki LIDAR objavljuje istu poruku LaserScan. ROS se široko koristi u robotici, Izvedite svoj prvi primjer
Ekvivalent "hello world" za ROS sastoji se u tome da daljinski upravljate vašim robotom putem daljinskog računara. Ono što želite učiniti je poslati naredbe brzine kako bi se motori vrtjeli, naredbe slijede ovu cijev:
- čvor turtlebot_teleop, koji radi na udaljenom računaru, objavljuje temu "/cmd_vel" uključujući poruku Twist
- ova poruka se prosljeđuje preko ROS mreže poruka na SBC
- serijski čvor omogućava primanje "/cmd_vel" na Arduino
- Arduino čita poruku i postavlja kutnu brzinu na svakom motoru tako da odgovara željenoj linearnoj i kutnoj brzini robota
Ova je operacija jednostavna i može se postići pokretanjem gore navedenih naredbenih linija! Ako želite detaljnije informacije, samo pogledajte video.
[SBC]
roscore
[SBC]
rosrun rosserial_python serial_node.py _port: =/dev/ttyACM0 _baud: = 115200
[Udaljeni računar]
izvezi TURTLEBOT3_MODEL = $ {TB3_MODEL}
roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch
Da idemo dalje
Morate znati posljednju stvar prije isprobavanja svih službenih primjera, u priručniku svaki put kada se suočite s ovom naredbom:
roslaunch turtlebot3_bringup turtlebot3_robot.launch
morate pokrenuti ovu naredbu na svom SBC -u:
rosrun rosserial_python serial_node.py _port: =/dev/ttyACM0 _baud: = 115200
A ako imate LIDAR pokrenite povezanu naredbu na svom SBC -u, u mom slučaju pokrećem LDS01 s donjom linijom:
roslaunch hls_lfcd_lds_driver hlds_laser.launch
I to je sve, definitivno ste izgradili vlastitu kornjačicu:) Spremni ste otkriti fantastične mogućnosti ROS -a, te kodirati vid i algoritme strojnog učenja.
Preporučuje se:
Izrada vlastitog fotonaponskog 5V sistema: 4 koraka (sa slikama)
Izrada vlastitog fotonaponskog 5V sistema: Ovaj koristi pretvarač dolara kao izlaz od 5 V za punjenje baterije (Li Po/Li-ion). I pojačivač pretvarača za bateriju od 3,7 V na 5 V USB izlaz za uređaje potrebne 5 V. Slično originalnom sistemu koji koristi olovnu bateriju kao punjenje energije za
Otto DIY - Izgradite vlastitog robota u jednom satu!: 9 koraka (sa slikama)
Otto DIY - Izgradite vlastitog robota u jednom satu !: Otto je interaktivni robot kojeg svatko može stvoriti !, Otto hoda, pleše, ispušta zvukove i izbjegava prepreke.Otto je potpuno otvorenog koda, kompatibilan s Arduinom, 3D ispisiv i sa društvenim mrežama misija utjecaja na stvaranje inkluzivnog okruženja za sve k
Napravite vlastitog panoramskog foto robota od 360 koraka: 5 koraka
Napravite vlastiti panoramski foto robot od 360: ovo je moj panoramski foto robot od 360, ideja je snimanje u 360 stupnjeva u što kraćem vremenu bez grešaka, snimite panoramu u teškim uvjetima i zabavno!. Ovaj projekt traje 1 mjesec i implementiram poboljšanja i koristim pa
Izgradite vlastitog batlerskog robota !!! - Vodič, fotografije i video: 58 koraka (sa slikama)
Izgradite vlastitog robota batlera !!! - Vodič, fotografije i video: EDIT: Više informacija o mojim projektima potražite na mojoj novoj web stranici: narobo.com Također se bavim savjetovanjem za robotiku, mehatroniku i projekte/proizvode sa posebnim efektima. Za više detalja posjetite moju web stranicu - narobo.com. Jeste li ikada željeli robota batlera koji razgovara s vama
Napravite vrlo malog robota: Napravite najmanji robot na točkovima na svijetu sa hvataljkom .: 9 koraka (sa slikama)
Napravite vrlo malog robota: Napravite najmanjeg robota na točkovima na svijetu sa hvataljkom.: Izgradite robota od 1/20 kubnih inča sa hvataljkom koja može pokupiti i pomicati male predmete. Upravlja se mikrokontrolerom Picaxe. U ovom trenutku vjerujem da je ovo možda najmanji robot na kotačima sa hvataljkom na svijetu. To će bez sumnje biti