Sisukord:
- Tarvikud
- Samm: kirjeldus
- 2. samm: mootoriploki kokkupanek
- 3. samm: lülitid ja kaabli ettevalmistamine
- Samm: elektrooniliste plaatide juhtmestik
- Samm: mootorigrupp ja Arduino alumisel kihil
- 6. samm: ühe pardal olev arvuti ja ülemise kihi andurid
- Samm: pange see liikuma
Video: Ehita oma kilpkonnrobot!: 7 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:47
EDIT:
Lisateavet tarkvara ja juhtimise kohta saate sellelt lingilt:
hackaday.io/project/167074-build-your-own-turtlebot-3-backbone
Otselink koodile on järgmine:
github.com/MattMgn/foxbot_core
Miks just see projekt?
Turtlebot 3 on ideaalne platvorm elektroonikasse, robootikasse ja isegi AI -sse süvenemiseks! Ma teen teile ettepaneku ehitada samm-sammult oma kilptäi taskukohaste komponentidega ilma funktsioone ja jõudlust ohverdamata. Üks asi meeles: esialgse roboti parimate, selle modulaarsuse, lihtsuse ja avatud lähtekoodiga kogukonna tohutu hulga autonoomse navigeerimise ja tehisintellekti pakettide hoidmine.
See projekt on algajatele võimalus omandada arusaamad elektroonikast, mehaanikast ja arvutiteadustest ning kogenenumatele saada võimas platvorm tehisintellekti algoritmide testimiseks ja arendamiseks.
Mida avastate selle projekti raames?
Olete avastamas, milliseid olulisi mehaanilisi ja elektroonilisi osi tuleb täieliku ühilduvuse tagamiseks originaalrobotist hoida.
Kogu koostamisprotsess on üksikasjalik: alates 3D -osade printimisest, kokkupanekust ja mitmest komponendist, jootmisest ja elektroonika integreerimisest kuni Arduino koodikogumiseni. See juhend annab kokkuvõtte „teremaailma” näitest, et tutvustada teile ROS -i. Kui midagi tundub ebaselge, küsige julgelt!
Tarvikud
Elektroonika:
1 x ühe pardaarvuti ROS -i käitamiseks võib olla näiteks Raspberry Pi või Jetson Nano
1 x Arduino DUE, võite kasutada ka UNO või MEGA
Siin on saadaval 1 proto-plaat, mis sobib Arduino DUE pistikuga
2 x 12V alalisvoolumootorit kodeerijatega (valik 100 p / min)
1 x L298N mootorijuht
2 x 5V regulaator
1 x aku (näiteks 3S/4S LiPo aku)
2 x ON/OFF lülitit
2 x LED
2 x 470 kOhm takisti
3 x 4 kontaktiga JST pistikud
1 x USB -kaabel (vähemalt üks SBC ja Arduino vahel)
Andurid:
1 x vooluandur (valikuline)
1 x 9 vabadusastet IMU (valikuline)
1 x LIDAR (valikuline)
Šassii:
16 x moodulplaati Turtlebot (mida saab printida ka 3D -vormingus)
2 x rattad läbimõõduga 65 mm (laius 6 mm)
4 x nailonist vahekaugust 30 mm (valikuline)
20 x M3 vahetükki (valikuline)
Teised:
Juhtmed
M2.5 ja M3 kruvid ja vahetükid
3D -printer või keegi, kes oskab teie jaoks osi printida
Käsipuur komplektiga, nagu see
Samm: kirjeldus
See robot on lihtne diferentsiaalvedu, mis kasutab 2 ratast, mis on otse nende mootorile paigaldatud, ja rullikut, mis on paigutatud taha, et vältida roboti ümberkukkumist. Robot on jagatud kaheks kihiks:
alumine kiht: koos tõukejõurühmaga (aku, mootorikontroller ja mootorid) ning madala tasemega elektroonikaga: Arduino mikrokontroller, pingeregulaator, lülitid…
ülemine kiht: kõrgetasemelise elektroonikaga, nimelt ühe pardaarvuti ja LIDARiga
Need kihid on trükitud osade ja kruvidega ühendatud, et tagada konstruktsiooni vastupidavus.
Elektrooniline skeem
Skeem võib tunduda pisut segane. See on skemaatiline joonis ja see ei esinda kõiki juhtmeid, pistikuid ja proto-plaati, kuid seda saab lugeda järgmiselt:
3S Litihum ioonpolümeerist aku, mille maht on 3000 mAh, toidab esimest vooluringi, see toidab nii mootori kontrolleri plaati (L298N) kui ka esimest 5 V regulaatorit mootori kodeerijatele ja Arduinole. See vooluahel on aktiveeritud lüliti abil, millel on LED, mis näitab selle ON/OFF olekut.
Sama aku toidab teist vooluringi, sisendpinge muundatakse 5V -ks ühe pardaarvuti toiteks. Ka siin lülitatakse vooluring sisse lüliti ja LED -i kaudu.
Seejärel saate USB -ühenduse või CSI -pordi kaudu otse Raspberry Pi -le lisada täiendavaid andureid, nagu LIDAR või kaamera.
Mehaaniline disain
Robotiraam koosneb 16 identsest osast, mis moodustasid 2 ruudukujulist kihti (laius 28 cm). Paljud augud võimaldavad paigaldada täiendavaid osi kõikjal, kus seda vajate, ning pakuvad täielikku moodulkonstruktsiooni. Selle projekti jaoks otsustasin hankida originaalplaadid TurtleBot3, kuid saate neid ka 3D -printida, kuna nende disain on avatud lähtekoodiga.
2. samm: mootoriploki kokkupanek
Mootori ettevalmistus
Esimene samm on lisada iga mootori ümber 1 mm paksune vahtlint, et vältida vibratsiooni ja müra mootori pöörlemisel.
Trükitud osad
Mootorihoidja tulemuseks on kaks osa, mis haaravad mootorit kui pahe. Mootori pingutamiseks hoidikus on saavutatud 4 kruvi.
Iga hoidik koosneb mitmest august, kuhu on paigutatud konstruktsioonile paigaldatavad M3 -sisetükid. Auke on rohkem kui tegelikult vaja, lisaauke võib lõpuks kasutada lisaosade paigaldamiseks.
3D -printeri seaded: kõik osad prinditakse järgmiste parameetritega
- Otsik läbimõõduga 0,4 mm
- 15% materjali täiteaine
- 0,2 mm kõrgune kiht
Ratas
Valitud rattad on kaetud kummiga, et maksimeerida haardumist ja tagada libisemisvaba veeremine. Kinnituskruvi hoiab mootori võllile kinnitatud ratast. Ratta läbimõõt peaks olema piisavalt suur, et ületada väiksemaid samme ja maapinna ebatasasusi (need rattad on läbimõõduga 65 mm).
Fikseerimine
Kui olete ühe mootoriplokiga lõpetanud, korrake eelnevaid toiminguid ja seejärel lihtsalt kinnitage need kihti M3 kruvidega.
3. samm: lülitid ja kaabli ettevalmistamine
Mootori kaabli ettevalmistamine
Üldiselt on mootorikooderiga kaasas kaabel, mille ühel küljel on 6-pin pistik, mis ühendab kodeerija trükkplaadi tagaosa, ja paljad juhtmed teisel küljel.
Teil on võimalus neid otse oma proto-plaadil või isegi Arduino jootma panna, kuid soovitan teil kasutada naissoost pin-päiseid ja JST-XH-pistikuid. Nii saate need oma proto-plaadil ühendada/lahti ühendada ja hõlbustada kokkupanekut.
Näpunäiteid: saate oma juhtmete ümber lisada laiendatava varrukate ja punutiste tükid pistikute lähedusse, nii et saate puhta kaabli.
Lüliti ja LED
Kahe vooluahela sisselülitamiseks valmistage ette 2 LED -i ja lüliti kaablit: esmalt jootke 470 kOhm takisti ühele LED -tihvtile, seejärel jootke LED -i ühele lülitustihvtile. Ka siin saate takisti sisse peitmiseks kasutada kokkutõmbumistoru tükki. Olge ettevaatlik LED -i jootmisel õiges suunas! Korrake seda toimingut kahe lüliti/led -kaabli saamiseks.
Kokkupanek
Pange eelnevalt valmistatud kaablid kokku vastavale 3D -prinditud osale. Lüliti hooldamiseks kasutage mutrit, valgusdioodid ei vaja liimi, piisab vaid jõust, et see auku sobitada.
Samm: elektrooniliste plaatide juhtmestik
Laudade paigutus
Juhtmete arvu vähendamiseks kasutatakse Arduino plaadi paigutusega sobivat proto-plaati. Proto-plaadi ülaosas on L298N virnastatud Duponti emase päisega (Dupont on "Arduino-sarnased" päised).
L298N valmistamine
Algselt ei olnud L298N plaadil vastavat isast Duponti päist, peate plaadi alla lisama 9 tihvti rea. Peate realiseerima 9 auku 1 mm läbimõõduga puuriga paralleelselt olemasolevate aukudega, nagu näete pildil. Seejärel ühendage 2 rea vastavad tihvtid jootematerjalide ja lühikeste juhtmetega.
L298N pin-out
L298N koosneb kahest kanalist, mis võimaldavad juhtida kiirust ja suunda:
suund kahe digitaalse väljundi kaudu, mida nimetatakse IN1, IN2 esimese kanali jaoks ja IN3 ja IN4 teise jaoks
kiirus läbi ühe digitaalse väljundi, esimese kanali jaoks ENA ja teise jaoks ENB
Valisin Arduinoga järgmise pin-outi:
vasak mootor: IN1 tihvt 3, IN2 tihvt 4, ENA tihvt 2
parem mootor: IN3 tihvt 5, IN4 tihvt 6, ENB tihvt 7
5V regulaator
Isegi kui l298N suudab tavaliselt toita 5 V, lisan ikkagi väikese regulaatori. See toidab Arduinot VIN -pordi ja mootorite kahe kodeerija kaudu. Selle sammu saate vahele jätta, kasutades otse sisseehitatud L298N 5V regulaatorit.
JST pistikud ja kodeerija pin-out
Kasutage 4 tihvtiga naissoost JST-XH pistikuadapterit, seejärel ühendatakse iga pistik:
- 5V regulaatorist
- a Maa
- kaks digitaalset sisendporti (näiteks 34 ja 38 parema kodeerija jaoks ja 26 ja 30 vasaku jaoks)
Täiendav I2C
Nagu olete võib-olla märganud, on proto-plaadil täiendav 4-kontaktiline JST-pistik. Seda kasutatakse I2C -seadme ühendamiseks nagu IMU, saate sama teha ja isegi oma porti lisada.
Samm: mootorigrupp ja Arduino alumisel kihil
Mootoriplokkide fikseerimine
Kui alumine kiht on kokku pandud 8 Turtleboti plaadiga, kasutage mootoriplokkide säilitamiseks lihtsalt 4 M3 kruvi otse sisetükkides. Seejärel saate ühendada mootori toitejuhtmed L298N väljunditega ja varem valmistatud kaablid protoplaadi JST pistikutega.
Võimsuse jaotus
Toitejaotus on lihtsalt realiseeritud tõkke klemmliistuga. Tõkke ühel küljel on LiPo akuga ühendamiseks kruvitud XT60 naissoost pistikuga kaabel. Teisel pool kruvitakse meie kaks eelnevalt joodetud LED/lülituskaablit. Seega saaks iga ahela (mootor ja Arduino) lubada oma lüliti ja vastava rohelise LED -iga.
Kaabli juhtimine
Kiiresti peate tegelema paljude kaablitega! Segaduse vähendamiseks võite kasutada varem 3D -prinditud tabelit. Laual hoidke oma elektroonilisi plaate kahepoolse teibiga ja laske laua all juhtmetel vabalt voolata.
Aku hooldus
Aku väljumise vältimiseks robotiga sõites võite kasutada lihtsalt juukse elastset riba.
Rullik
Mitte tegelikult rullik, vaid lihtne poolkera, mis on kinnitatud 4 kruviga alumisele kihile. Sellest piisab roboti stabiilsuse tagamiseks.
6. samm: ühe pardal olev arvuti ja ülemise kihi andurid
Millist ühe pardaarvutit valida?
Ma ei pea teile kuulsat Raspberry Pi esitama, selle kasutusjuhtumite arv ületab suuresti robootikavaldkonna. Kuid Raspberry Pi jaoks on palju võimsam väljakutsuja, mida võite ignoreerida. Tõepoolest, Nvidia Jetson Nano sisaldab lisaks protsessorile ka võimsat 128-tuumalist graafikakaarti. See konkreetne graafikakaart on välja töötatud selleks, et kiirendada arvutuslikke kalleid ülesandeid, nagu pilditöötlus või närvivõrgu järeldus.
Selle projekti jaoks valisin Jetson Nano ja lisatud failide hulgast leiate vastava 3D -osa, kuid kui soovite Raspberry Pi -ga minna, on siin palju prinditavaid ümbriseid.
5V regulaator
Ükskõik, millise plaadi otsustasite oma robotile kaasa võtta, vajate 5 V regulaatorit. Viimane Raspberry Pi 4 nõuab maksimaalselt 1,25 A, kuid Jetson Nano nõuab kuni 3 A pinget, nii et ma otsustasin, et Pololu 5V 6A -l on tulevaste komponentide (andurid, tuled, sammud …) võimsusreserv, kuid iga odav 5V 2A peaks seda tegema töö. Jetson kasutab 5,5 mm alalisvoolu silindrit ja Pi mikro -USB -d, haarake vastav kaabel ja jootke see regulaatori väljundisse.
LIDAR paigutus
Siin kasutatav LIDAR on LDS-01, on ka mitmeid teisi 2D LIDAR-e, mida saab kasutada nagu RPLidar A1/A2/A3, YDLidar X4/G4 või isegi Hokuyo LIDAR. Ainus nõue on see, et see tuleb ühendada USB kaudu ja asetada struktuuri keskele. Tõepoolest, kui LIDAR ei ole hästi tsentreeritud, võib SLAM -algoritmiga loodud kaart nihutada seinte ja takistuste hinnangulist asukohta nende tegelikust asukohast. Samuti, kui robotist takistused ületavad laserkiire, vähendab see ulatust ja vaatevälja.
LIDAR kinnitus
LIDAR on paigaldatud 3D -trükitud detailile, mis järgib selle kuju, osa ise hoitakse ristkülikukujulisel plaadil (tegelikult pildil vineerist, kuid seda saab ka 3D -printida). Seejärel võimaldab adapteri osa ansambli kinnitada nailonist vaheplaatidega ülemisele kilpplaadile.
Kaamera täiendava andurina või LIDAR asendaja
Kui te ei soovi LIDARile liiga palju raha kulutada (mis maksab umbes 100 dollarit), otsige kaamera: on olemas ka SLAM -algoritmid, mis töötavad ainult monokulaarse RGB -kaameraga. Mõlemad SBC -d aktsepteerivad USB- või CSI -kaameraid.
Lisaks võimaldab kaamera käivitada arvuti nägemise ja objektide tuvastamise skripte!
Kokkupanek
Enne roboti sulgemist laske kaablid läbi ülemise plaadi suuremate aukude:
- 5V regulaatori vastav kaabel teie SBC -le
- USB -kaabel Arduino DUE programmeerimispordist (DC -tünnile kõige lähemal) teie SBC USB -porti
Seejärel hoidke ülemist plaati tosina kruviga paigas. Teie robot on nüüd programmeerimiseks valmis, hästi tehtud!
Samm: pange see liikuma
Koostage Arduino
Avage oma lemmik Arduino IDE ja impordige projekti kaust nimega own_turtlebot_core, seejärel valige oma plaat ja vastav port, võite viidata sellele suurepärasele õpetusele.
Reguleerige põhisätteid
Projekt koosneb kahest failist ja üks tuleb teie robotile kohandada. Nii et avame own_turtlebot_config.h ja avastame, millised read nõuavad meie tähelepanu:
#define ARDUINO_DUE // ** KOMMENTAERI SEDA RIDA, KUI SINA TASU EI KASUTA **
Seda tuleks kasutada ainult koos Arduino DUE -ga, kui mitte kommenteerida rida.
#define RATE_CONTROLLER_KP 130.0 // ** TUNE THIS VÄÄRTUS **
#define RATE_CONTROLLER_KD 5000000000000.0 // ** Häälestage see väärtus ** #define RATE_CONTROLLER_KI 0.00005 // ** TUNE THIS VÄÄRTUS **
Need 3 parameetrit vastavad kiiruse regulaatori võimendustele, mida PID kasutab soovitud kiiruse säilitamiseks. Sõltuvalt aku pingest, roboti massist, ratta läbimõõdust ja teie mootori mehaanilisest käigust peate kohandama nende väärtusi. PID on klassikaline kontroller ja teid ei kirjeldata siin üksikasjalikult, kuid see link peaks andma teile piisavalt sisendeid enda häälestamiseks.
/ * Määrake tihvtid */
// mootor A (paremal) const bait motorRightEncoderPinA = 38; // ** MUUTA OMA PIN -KOODIGA NB ** const bait motorRightEncoderPinB = 34; // ** MUUTA OMA PIN -KOODIGA NB ** const bait enMotorRight = 2; // ** MUUTA OMA PIN -KOODIGA NB ** const bait in1MotorRight = 4; // ** MUUTA OMA PIN -KOODIGA NB ** const bait in2MotorRight = 3; // ** MUUTA OMA PIN -KOODIGA NB ** // mootor B (vasakul) const bait motorLeftEncoderPinA = 26; // ** MUUTA OMA PIN -KOODIGA NB ** const bait motorLeftEncoderPinB = 30; // ** MUUTA OMA PIN -KOODIGA NB ** const bait enMotorLeft = 7; // ** MUUTA OMA PIN -KOODIGA NB ** const bait in1MotorLeft = 6; // ** MUUTA OMA PIN -KOODIGA NB ** const bait in2MotorLeft = 5; // ** MUUTA OMA PIN -koodiga NB **
See plokk määrab kontakti L298N ja Arduino vahel, muutke lihtsalt pin -numbrit, et see vastaks teie omale. Kui olete konfiguratsioonifailiga lõpetanud, koostage ja laadige kood üles!
Installige ja konfigureerige ROS
Kui olete selle sammu saavutanud, on juhised täpselt samad, mis on kirjeldatud suurepärases TurtleBot3 käsiraamatus, mida peate hoolikalt järgima
hästi tehtud TurtleBot 3 on nüüd teie oma ja saate ROS -iga käitada kõiki olemasolevaid pakette ja õpetusi.
Ok, aga mis on ROS?
ROS tähistab robotite operatsioonisüsteemi, esmapilgul võib see tunduda üsna keeruline, kuid see pole nii. Kujutage vaid ette suhtlusviisi riistvara (andurid ja täiturid) ja tarkvara (navigeerimise, juhtimise, arvuti nägemise algoritmid) vahel. Näiteks saate hõlpsalt vahetada oma praeguse LIDAR -i teise mudeli vastu ilma seadistust katkestamata, sest iga LIDAR avaldab sama LaserScan -teate. ROS -i kasutatakse laialdaselt robootikas, Tooge oma esimene näide
ROS -i „tere maailm“ekvivalent seisneb teie roboti kaugjuhtimises kaugarvuti kaudu. Mida soovite teha, on saata kiiruse käsud mootorite pöörlemiseks, käsklused järgivad seda toru:
- kaugarvutis töötav turtlebot_teleop sõlm avaldab teema "/cmd_vel", sealhulgas Twist -sõnumi
- see teade edastatakse ROS -sõnumite võrgu kaudu SBC -le
- jadasõlm võimaldab "/cmd_vel" Arduinole vastu võtta
- Arduino loeb sõnumi ja määrab iga mootori nurkkiiruse, et see vastaks roboti soovitud lineaarsele ja nurkkiirusele
See toiming on lihtne ja seda saab saavutada ülaltoodud käsureade käivitamisega! Kui soovite üksikasjalikumat teavet, vaadake lihtsalt videot.
[SBC]
roscore
[SBC]
rosrun rosserial_python serial_node.py _port: =/dev/ttyACM0 _baud: = 115200
[Kaugarvuti]
eksport TURTLEBOT3_MODEL = $ {TB3_MODEL}
roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch
Et minna kaugemale
Enne kõigi ametlike näidete proovimist peate käsiraamatus teadma viimast asja iga kord, kui näete seda käsku:
roslaunch turtlebot3_bringup turtlebot3_robot.launch
peate selle käsu oma SBC -s käivitama:
rosrun rosserial_python serial_node.py _port: =/dev/ttyACM0 _baud: = 115200
Ja kui teil on LIDAR, mis käivitab teie SBC -ga seotud käsu, siis minu puhul käivitan ma LDS01 järgmise reaga:
roslaunch hls_lfcd_lds_driver hlds_laser.launch
Ja see on kõik, olete lõplikult loonud oma turtleboti:) Olete valmis avastama ROS -i fantastilisi võimalusi ning kodeerima nägemist ja masinõppe algoritme.
Soovitan:
Ehita oma DYI pilvlamp !: 13 sammu
Ehita oma DYI pilvlamp !: Miks ehitada pilvelamp? Sest see näeb vinge välja! Vähemalt nii räägivad inimesed … Hei! Minu nimi on Erick. See projekt sai teoks, kui kaalusin oma 3-aastasele õele kingitusi. Pilvelamp on nii dekoratsioon kui ka valgus
Ehita oma PCB mullipaak !: 3 sammu
Ehitage oma PCB mullipaak !: Juhised oma mullimahuti ehitamiseks kõigi nende kodus valmistatud PCBde söövitamiseks, mida olete alati tahtnud teha
Ehita oma EKG!: 10 sammu
Ehita oma EKG !: See ei ole meditsiiniseade. See on mõeldud ainult hariduslikel eesmärkidel, kasutades simuleeritud signaale. Kui kasutate seda vooluringi tegelikes EKG mõõtmistes, veenduge, et vooluahel ja vooluahela-seadme ühendused kasutavad nõuetekohast isolatsioonitehnikat
Ehita oma elektrikitarr!: 8 sammu (piltidega)
Ehitage oma elektrikitarr !: Kas olete kunagi vaadanud kitarri ja mõelnud: "Kuidas nad seda teevad?" Või mõtlesite endamisi: "Vean kihla, et suudan oma kitarri ehitada", kuid pole seda kunagi proovinud? Olen aastate jooksul ehitanud mitmeid elektrilisi kitarre ning proovimise ja
Ehita oma kitarrile tapmislüliti: 4 sammu
Ehitage oma kitarrisse tapmislüliti: inimesed näivad armastavat tapmislüliteid, vaadake lihtsalt Bucketheadit ja Tom Morellot ning paljud inimesed tahavad neid oma kitarridesse panna. Mul pole selle vastu midagi, seda rohkem jõudu teile. Probleem, mida ma näen, on lahendustes, mis annavad endiselt