Sisukord:
- 1. samm: sõiduki kokkupanek
- Samm: mootorite paigaldamine
- 3. samm: Vivado plokkide kujunduse loomine
- 4. samm: suhtlemine LiDARiga
- 5. samm: võrgu täitmine takistustega
- 6. samm: mootoritega suhtlemine
- 7. samm: tee planeerimine
Video: Autonoomne sõiduk: 7 sammu (piltidega)
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:50
See projekt on autonoomselt navigeeriv robot, mis püüab saavutada oma eesmärgi, vältides samal ajal takistusi. Robot varustatakse LiDAR -anduriga, mida kasutatakse ümbritsevate objektide tuvastamiseks. Kui objekte tuvastatakse ja robot liigub ringi, uuendatakse reaalajas kaarti. Kaarti kasutatakse tuvastatud takistuste asukohtade salvestamiseks. Nii ei ürita robot uuesti ebaõnnestunud teed väravasse. Selle asemel proovib see teid, millel pole takistusi, või teid, mida pole veel takistuste suhtes kontrollitud.
Robot liigub kahe alalisvoolumootoriga ja kahe ratta abil. Mootorid kinnitatakse ümmarguse platvormi põhja külge. Mootoreid hakkavad juhtima kaks mootorijuhti. Mootorijuhid saavad Zynq protsessorilt PWM käske. Iga mootori kodeerijaid kasutatakse sõiduki asukoha ja suuna jälgimiseks. Kogu süsteem töötab LiPo akuga.
1. samm: sõiduki kokkupanek
Robot töötab kahe mootoriga, mis on kinnitatud külgrataste külge ning seejärel toetavad seda kaks ratast, üks ees ja teine taga. Platvorm ja mootorikinnitused olid valmistatud lehtmetallist alumiiniumist. Rattade kinnitamiseks mootorile osteti mootorite rumm. Siiski oli vaja teha kohandatud vaheühendus, kuna rummu aukude muster erines ratta augumustrist.
Mootoriks valiti Port Escap 12V alalisvoolumootor koos sisseehitatud kodeerijatega. Seda mootorit saab osta ebayst väga mõistliku hinnaga (vt materjalide nimekiri). Otsige ebayst mootori leidmiseks ebayst märksõnu “12V Escap 16 Coreless Geared DC Motor with Encoders”. Tavaliselt on müüjate hulgast valida üsna palju. Mootorite spetsifikatsioonid ja kontaktid on näidatud allolevatel diagrammidel.
Roboti kokkupanek algas šassii CAD -mudeliga. Allolev mudel näitab šassii jaoks mõeldud 2D kuju profiili pealtvaadet.
Soovitatav on šassii kujundada 2D -profiilina, et seda oleks lihtne toota. Lõikasime 12-tollise X12-tollise alumiiniumlehe šassii kujuga, kasutades veejoaga lõikurit. Šassiiplatvormi sai lõigata ka lintsaega.
Samm: mootorite paigaldamine
Järgmine samm on mootori kinnituste tegemine. Mootorikinnitused soovitatakse valmistada 90-kraadisest lehtmetallist alumiiniumist. Selle osa abil saab mootori kinnitada konsooli pleki ühele küljele, kasutades kahte
Mootori ja teise külje M2 augud saab platvormile kruvida. Mootori alusele tuleb puurida augud, et kruvisid saaks kasutada mootori kinnitamiseks mootorikinnitusele ja mootorikinnitust platvormile. Mootori kinnitus on näha ülaltoodud joonisel.
Järgmisena asetatakse mootori võllile Pololu mootori rumm (vt materjalide loetelu) ja pingutatakse kaasasoleva kruvi ja kuuskantvõtme abil. Pololu mootori rummu aukude muster ei ühti VEX -ratta aukude mustriga, seega tuleb teha kohandatud vaheühendus. Soovitatav on haakeseadise valmistamiseks kasutada šassiiplatvormi valmistamiseks kasutatud lehtmetalli alumiiniumi. Selle paari aukude muster ja mõõtmed on näidatud alloleval joonisel. Kohandatud alumiiniumist haakeseadise välisläbimõõt ja kuju (ei pea olema ring) ei oma tähtsust, kuni kõik augud detailile sobivad.
3. samm: Vivado plokkide kujunduse loomine
- Alustage uue Vivado projekti loomisega ja valige sihtseadmeks Zybo Zynq 7000 Z010.
- Järgmisena klõpsake nuppu Loo uus ploki kujundus ja lisage Zynq IP. Topeltklõpsake Zynq IP -d ja importige Zynqi jaoks pakutavad XPS -seaded. Seejärel lubage vahekaardil MIO konfiguratsioonid UART0 koos MIO 10..11 -ga ja veenduge ka, et taimer 0 ja valvekoera taimer oleksid lubatud.
- Lisage ploki kujundusele kaks AXI GPIOS -i. GPIO 0 puhul lubage kahekanaliline ja seadke mõlemad kõik väljundid. Seadistage GPIO laius kanalile 1 kuni 4 bitti ja kanalile 2 kuni 12 bitti, neid kanaleid kasutatakse mootori suuna seadmiseks ja kodeerija mõõdetud puukide koguse saatmiseks protsessorile. GPIO 1 puhul seadke kõigi sisendite jaoks ainult üks kanal, mille kanali laius on 4 bitti. Seda kasutatakse kodeerijatelt andmete vastuvõtmiseks. Muutke kõik GPIO -pordid väliseks.
- Järgmine Lisage kaks AXI taimerit. Muutke pwm0 pordid mõlemal taimeril väliseks. Need on pwms, mis reguleerivad mootorite pöörlemiskiirust.
- Lõpuks käivitage plokkide automaatika ja ühenduse automatiseerimine. Veenduge, et teie ploki kujundus vastab pakutavale.
4. samm: suhtlemine LiDARiga
See LiDAR kasutab UART kaudu suhtlemiseks SCIP 2.0 protokolli, manustatud fail kirjeldab kogu protokolli.
LiDARiga suhtlemiseks kasutame UART0. LiDAR tagastab 682 andmepunkti, millest igaüks tähistab selle nurga all oleva objekti kaugust. LiDAR skaneerib vastupäeva -30 kuni 210 kraadi, sammuga 0,351 kraadi.
- Kogu suhtlus LiDARiga toimub ASCI märkidega, vaadake kasutatud vormingu SCIP -protokolli. Alustuseks saadame käsu QT, et LiDAR sisse lülitada. Seejärel saadame GS -käsu mitu korda, taotledes korraga 18 andmepunkti, kuni UARTS 64 -baidise FIFO -ni. Seejärel parsitakse LiDARilt tagastatud andmed ja salvestatakse need SCANdata globaalsesse massiivi.
- Iga salvestatud andmepunkt sisaldab 2 baiti kodeeritud andmeid. Nende andmete dekoodrisse edastamine tagastab vahemaa millimeetrites.
Failist main_av.c leiate LiDARiga suhtlemiseks järgmised funktsioonid
sendLIDARcmd (käsk)
- See saadab sisendstringi LiDARile UART0 kaudu
recvLIDARdata ()
- See saab andmeid pärast käsu saatmist LiDARile ja salvestab andmed RECBufferisse
requestDistanceData ()
- See funktsioon saadab rea käske kõigi 682 andmepunkti hankimiseks. Pärast iga 18 andmepunkti komplekti vastuvõtmist kutsutakse parseLIDARinput () andmeid sõeluma ja andmepunkte järk -järgult SCANdata salvestama.
5. samm: võrgu täitmine takistustega
Salvestatud GRID on 2D massiiv, mille iga indeksi väärtus tähistab asukohta. Igasse indeksisse salvestatud andmed on vastavalt kas 0 või 1, takistust ja takistust pole. Iga indeksi kujutatud ruutkaugust millimeetrites saab muuta failis vehicle.h oleva GRID_SCALE määratlusega. 2D massiivi suurust saab samuti muuta, et sõiduk saaks GRID_SIZE määratlust muutes suuremat ala skannida.
Pärast uue kaugusandmete kogumi skannimist LiDAR -ist helistatakse updateGrid (). See kordab kõiki SCANdata massiivi salvestatud andmepunkte, et teha kindlaks, millistel võrgu indeksitel on takistusi. Sõiduki praeguse orientatsiooni abil saame määrata igale andmepunktile vastava nurga. Takistuse määramiseks korrutage lihtsalt vastav kaugus nurga cos/sin -ga. Nende kahe väärtuse lisamine sõidukite praegusele positsioonile x ja y tagastab indeksi takistuse ruudustikus. Selle toiminguga tagastatud kauguse jagamine GRID_SCALE -ga võimaldab meil muuta iga indeksi ruutkaugust.
Ülaltoodud pildid näitavad sõidukite praegust keskkonda ja sellest tulenevat võrku.
6. samm: mootoritega suhtlemine
Mootoritega suhtlemiseks alustame GPIO -de käivitamisega, et juhtida mootori pöörlemissuunda. Seejärel kirjutamine AXI taimeris otse PWM -ide baasaadressile võimaldab meil määrata näiteks perioodi ja töötsüklit, mis juhivad otse mootori pöörlemiskiirusel.
7. samm: tee planeerimine
Rakendatakse lähiajal.
Kasutades eelnevalt kirjeldatud võrgu- ja mootorifunktsioone, on väga lihtne rakendada selliseid algoritme nagu A*. Sõiduki liikumisel jätkab ta ümbritseva ala skaneerimist ja teeb kindlaks, kas see rada on endiselt kehtiv
Soovitan:
Super FAST RC Ground Effect sõiduk (Ekranoplan): 5 sammu (koos piltidega)
Super FAST RC Ground Effect Vehicle (Ekranoplan): Kas teate, kuidas lennukid hõljuvad maandumise ajal mõneks ajaks maapinnast mõneks ajaks, enne kui nende rattad tegelikult lennurajale jõuavad? See mitte ainult ei taga reisijatele sujuvat maandumist, vaid on ka maapealse efekti loomulik tulemus
Kallutatava RC mudeli sõiduk: 21 sammu (koos piltidega)
Kallutatav RC mudelisõiduk: see mudel on 1/10 kallutatav sõiduk, millel on kaks esiratast ja üks tagumine ajam; tuletati elektrimudelist RC Arrma Vortex 1/10, mis kasutas alumiiniumist šassii ja eemaldas kogu tagaosa, kuhu ta oli paigutanud elektrimootori ja selle käigu
Isetegutsev üherattaline sõiduk: 8 sammu (piltidega)
Isetegutsev üherattaline sõiduk: olete huvitatud mõnest isetasakaalustavate toodete trendist, nagu segway ja solowheel. Jah, võite oma rattaga sõitmata minna ükskõik kuhu, ilma et see väsitaks. aga see on suurepärane, kui saad selle endale. Noh, ehitame selle üles
Kuidas seadistada raudteele kiirraudtee sõiduk: 10 sammu (koos piltidega)
Raudtee Hi-Rail rööbastee seadistamine rööbasteele: Ohutusabinõud: Isik, kes kiirraudtee veoauto rööpale seab, ja abistaja peavad nägemiseks nägema hästi nähtavaid riideid (nt vest, dressipluus, mantel). võimaliku vastutuleva liikluse tõttu. Samuti tuleks kanda kaitsekindaid ja kindaid
KEVIN täisautonoomne sõiduk: 17 sammu (koos piltidega)
KEVIN täisautonoomne sõiduk: see on Kevin. See on raadio teel juhitav auto, mis suudab täielikult autonoomselt sõita. Minu esimene eesmärk oli muuta autonoomne sõiduk Arduino juhitavaks. Nii et ostsin odava Hiina šassii. Kuid see oli kohutav, sest ma ei suutnud ühtegi kinnitada