Kazalo:
- 1. korak: Sestavljanje vozila
- 2. korak: Montaža motorjev
- 3. korak: Ustvarite Vivado Block Design
- 4. korak: Komunicirajte z LiDAR
- 5. korak: Napolnite mrežo z ovirami
- 6. korak: Komunikacija z motorji
- 7. korak: Načrtovanje poti
Video: Avtonomno vozilo: 7 korakov (s slikami)
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:08
Ta projekt je avtonomno krmarljiv robot, ki poskuša doseči svoj cilj, pri tem pa se izogiba oviram na svoji poti. Robot bo opremljen s senzorjem LiDAR, ki bo uporabljen za zaznavanje predmetov v njegovi okolici. Ko zaznamo predmete in se robot premika, se bo posodobil zemljevid v realnem času. Zemljevid bo uporabljen za shranjevanje lokacij ugotovljenih ovir. Na ta način robot ne bo znova poskusil neuspešne poti do cilja. Namesto tega bo poskušal poti, ki nimajo ovir, ali poti, ki še niso bile preverjene.
Robot se bo premikal z dvema kolescema na enosmerni pogon in dvema kolescema. Motorji bodo pritrjeni na dno okrogle ploščadi. Motorja bosta upravljala dva voznika motorja. Vozniki motorja bodo prejemali ukaze PWM od procesorja Zynq. Dajalniki na vsakem motorju se uporabljajo za spremljanje položaja in orientacije vozil. Celoten sistem bo napajal LiPo baterijo.
1. korak: Sestavljanje vozila
Robot poganjata dva motorja, pritrjena na stranska kolesa, nato pa sta dodatno podprta z dvema kolescema, eno spredaj in eno zadaj. Nosilec ploščadi in motorja je izdelan iz aluminijaste pločevine. Za pritrditev koles na motor je bilo kupljeno pesto za motor. Vendar je bilo treba izdelati vmesni spenjač po meri, ker je bil vzorec lukenj pesto drugačen od vzorca lukenj kolesa.
Izbran je bil motor Port Escap 12V DC z vgrajenimi dajalniki. Ta motor je mogoče kupiti na ebayu za zelo ugodno ceno (glej Zbirka materialov). Poiščite ključne besede “12V Escap 16 brezžični enosmerni motor z dajalniki” na ebayu, da poiščete motor. Običajno je med dobrimi prodajalci na izbiro. Specifikacije in odmiki motorjev so prikazani na spodnjih diagramih.
Sestavljanje robota se je začelo s CAD modelarstvom oblikovanja podvozja. Spodnji model prikazuje pogled od zgoraj na profil 2D oblike, namenjen podvozju.
Predlagano je, da je ohišje zasnovano kot 2D profil, da ga je mogoče enostavno izdelati. Z rezalnikom z vodnim curkom smo izrezali 12-palčni aluminijasti list v obliko ohišja. Platformo podvozja bi lahko rezali tudi s tračno žago.
2. korak: Montaža motorjev
Naslednji korak je izdelava nosilcev motorja. Predlagano je, da so nosilci motorja izdelani iz 90-stopinjskega aluminijaste pločevine. S tem delom lahko motor pritrdite konzolno na eno stran pločevine z dvema
Luknje M2 motorja in drugo stran lahko pritrdite na ploščad. V nosilec motorja je treba izvrtati luknje, tako da lahko z vijaki pritrdite motor na nosilec motorja in nosilec motorja na ploščad. Nosilec motorja lahko vidite na zgornji sliki.
Nato motorno pesto Pololu (glej kosovnico) postavite na gred motorja in ga privijte s priloženim vijakom in imbus ključem. Vzorec lukenj motornega vozlišča Pololu se ne ujema z vzorcem lukenj kolesa VEX, zato je treba izdelati vmesni spojnik po meri. Predlagano je, da se za izdelavo sklopke uporabi odpadna pločevina iz aluminija, uporabljena za izdelavo platforme. Vzorec lukenj in mere tega para so prikazani na spodnji sliki. Zunanji premer in oblika (ni nujno, da je krog) aluminijaste spojke po meri nista pomembna, dokler se vse luknje prilegajo delu.
3. korak: Ustvarite Vivado Block Design
- Začnite z ustvarjanjem novega projekta Vivado in kot ciljno napravo izberite Zybo Zynq 7000 Z010.
- Nato kliknite na ustvarjanje nove zasnove bloka in dodajte IP Zynq. Dvokliknite Zynq IP in uvozite priložene nastavitve XPS za Zynq. Nato omogočite UART0 z MIO 10..11 na zavihku MIO konfiguracije in se prepričajte, da sta Timer 0 in Timer Watchdog omogočena.
- Zasnovi bloka dodajte dva AXI GPIOS. Za GPIO 0 omogočite dvokanalne in nastavite oba na vse izhode. Širino GPIO nastavite za kanal 1 do 4 bite in za kanal 2 do 12 bitov, ti kanali bodo uporabljeni za nastavitev smeri motorja in pošiljanje količine klopov, ki jih kodirnik meri v procesor. Za GPIO 1 nastavite samo en kanal na vse vhode s širino kanala 4 bitov. To bo uporabljeno za sprejem podatkov od kodirnikov. Naj bodo vsa vrata GPIO zunanja.
- Naprej Dodajte dva časovnika AXI. Vrata pwm0 na obeh časovnikih naj bodo zunanja. To bodo pwms, ki nadzorujejo hitrost, pri kateri se motorji vrtijo.
- Končno zaženite avtomatizacijo blokov in avtomatizacijo povezav. Preverite, ali se zasnova bloka ujema s priloženim.
4. korak: Komunicirajte z LiDAR
Ta LiDAR uporablja protokol SCIP 2.0 za komunikacijo prek UART, priložena datoteka opisuje celoten protokol.
Za komunikacijo z LiDAR -om bomo uporabljali UART0. LiDAR vrne 682 podatkovnih točk, od katerih vsaka predstavlja razdaljo do predmeta pod tem kotom. LiDAR skenira v nasprotni smeri urinega kazalca od -30 stopinj do 210 stopinj s korakom 0,351 stopinje.
- Vsa komunikacija z LiDAR poteka z znaki ASCI, za uporabljeno obliko glejte protokol SCIP. Začnemo s pošiljanjem ukaza QT za vklop LiDAR. Nato večkrat pošljemo ukaz GS, ki zahteva 18 podatkovnih točk naenkrat, da se ft vstavi v 64 -bajtni FIFO UARTS. Podatki, vrnjeni iz LiDAR, se nato razčlenijo in shranijo v globalno matriko SCANdata.
- Vsaka shranjena podatkovna točka je 2 bajta kodiranih podatkov. Posredovanje teh podatkov v dekoder bo vrnilo razdaljo v milimetrih.
V datoteki main_av.c boste našli naslednje funkcije za komunikacijo z LiDAR
sendLIDARcmd (ukaz)
- To bo poslalo vhodni niz v LiDAR prek UART0
recvLIDARdata ()
- Ta bo prejel podatke, potem ko je bil ukaz poslan v LiDAR, podatke pa shrani v RECBuffer
requestDistanceData ()
- Ta funkcija bo poslala vrsto ukazov za pridobitev vseh 682 podatkovnih točk. Po prejemu vsakega niza 18 podatkovnih točk se pokliče parseLIDARinput () za razčlenjevanje podatkov in postopno shranjevanje podatkovnih točk v SCANdata.
5. korak: Napolnite mrežo z ovirami
GRID, ki je shranjen, je 2D matrika z vsako vrednostjo indeksa, ki predstavlja lokacijo. Podatki, shranjeni v vsakem indeksu, so 0 ali 1, Brez ovir oziroma ovir. Kvadratna razdalja v milimetrih, ki jo predstavlja vsak indeks, se lahko spremeni z definicijo GRID_SCALE v datoteki vozilo.h. Velikost 2D matrike je mogoče spreminjati tudi tako, da lahko vozilo pregleda večjo površino s spreminjanjem definicije GRID_SIZE.
Po skeniranju novega niza podatkov o razdalji iz klica LiDAR se pokliče updateGrid (). To bo ponavljalo vse podatkovne točke, shranjene v matriki SCANdata, da bi ugotovilo, kateri indeksi v mreži imajo ovire. S trenutno orientacijo vozila lahko določimo kot, ki ustreza vsaki podatkovni točki. Če želite ugotoviti, kje je ovira, preprosto pomnožite ustrezno razdaljo s cos/sin kota. Če te dve vrednosti dodate trenutnemu položaju vozil x in y, se vrne indeks v mreži ovire. Z delitvijo razdalje, ki jo ta operacija vrne z GRID_SCALE, bomo lahko spreminjali, kako velika je kvadratna razdalja vsakega indeksa.
Zgornje slike prikazujejo trenutno okolje vozil in nastalo mrežo.
6. korak: Komunikacija z motorji
Za komunikacijo z motorji začnemo z inicializacijo GPIO -jev za nadzor smeri vrtenja motorja. Nato nam pisanje neposredno na osnovni naslov PWM -jev v AXI Timerju omogoča, da nastavimo stvari, kot sta obdobje in delovni cikel, ki neposredno nadzorujeta hitrost vrtenja motorja pri.
7. korak: Načrtovanje poti
Izvesti v bližnji prihodnosti.
Z uporabo predhodno opisanih omrežnih in motornih funkcij je zelo enostavno implementirati algoritme, kot je A*. Ko se vozilo premika, bo še naprej skeniralo okolico in ugotavljalo, ali je pot, na kateri je, še veljavna
Priporočena:
Victorian Ball Obleka z avtonomno nastavljivim izrezom: 8 korakov (s slikami)
Victorian Ball Obleka z avtonomno nastavljivim izrezom: To je projekt, ki sem ga naredil za Victorian Winter Ball v Krakovu. Pametna balska obleka, ki prilagaja velikost svojega izreza glede na bližino gospoda, ki stoji pred njo
Avtonomno vzporedno parkiranje avtomobilov z uporabo Arduina: 10 korakov (s slikami)
Avtonomno vzporedno parkiranje avtomobilov z uporabo Arduina: Pri avtonomnem parkiranju moramo ustvariti algoritme in senzorje položaja v skladu z določenimi predpostavkami. Naše predpostavke bodo v tem projektu naslednje. Po scenariju bo leva stran ceste sestavljena iz sten in parkovnih površin. Kot ti
Kako narediti generator sirene - UM3561 - Policija, reševalno vozilo, gasilsko vozilo: 6 korakov
Kako narediti generator sirene | UM3561 | Policija, reševalno vozilo, gasilsko vozilo: Naučite se, kako narediti DIY elektronski generator sirene, ki lahko proizvaja sireno za policijske avtomobile, sireno za reševalno vozilo v sili & gasilski zvok z uporabo tonskega generatorja sirene IC UM3561a. Vezje zahteva le nekaj komponent in ga je mogoče postaviti skupaj
KEVIN, popolnoma avtonomno vozilo: 17 korakov (s slikami)
KEVIN Popolnoma avtonomno vozilo: To je Kevin. To je radijsko vodeni avtomobil z možnostjo popolne avtonomne vožnje. Moj prvi cilj je bil narediti avtonomno vozilo pod nadzorom Arduina. Tako sem kupil poceni kitajsko podvozje. Bilo pa je grozno, ker nisem mogel priložiti nobenega c
Avtonomno krmiljenje števila vrtljajev motorja z uporabo sistema povratnih informacij iz IR merilnika vrtljajev: 5 korakov (s slikami)
Avtonomno krmiljenje števila vrtljajev motorja z uporabo sistema povratnih informacij iz IR merilnika vrtljajev: Vedno obstaja potreba po avtomatizaciji procesa, pa naj bo to preprost/pošastni. Idejo za izvedbo tega projekta sem dobil iz preprostega izziva, s katerim sem se soočal pri iskanju metode za zalivanje/namakanje našega majhnega kosa zemlje. Problem pomanjkanja sedanje oskrbovalne linije