Sisällysluettelo:
- Vaihe 1: Ajoneuvon kokoaminen
- Vaihe 2: Moottorien asennus
- Vaihe 3: Vivado Block Designin luominen
- Vaihe 4: Yhteydenpito LiDARin kanssa
- Vaihe 5: Ruudukon täyttäminen esteillä
- Vaihe 6: Yhteydenpito moottorien kanssa
- Vaihe 7: Polun suunnittelu
Video: Itsenäinen ajoneuvo: 7 vaihetta (kuvilla)
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:03
Tämä projekti on itsenäisesti navigoiva robotti, joka yrittää saavuttaa tavoitteensa välttäen samalla esteitä. Robotti varustetaan LiDAR -anturilla, jota käytetään ympäristön esineiden havaitsemiseen. Kun kohteita havaitaan ja robotti liikkuu, reaaliaikainen kartta päivitetään. Karttaa käytetään tunnistettujen esteiden sijaintien tallentamiseen. Tällä tavalla robotti ei yritä uudelleen epäonnistunutta polkua maaliasentoon. Sen sijaan se yrittää polkuja, joilla ei ole esteitä, tai polkuja, joita ei ole vielä tarkastettu esteiden varalta.
Robotti liikkuu kahdella tasavirtamoottorilla ja kahdella pyörällä. Moottorit kiinnitetään pyöreän tason pohjaan. Moottoreita ohjaavat kaksi moottoriajuria. Moottoriajurit saavat PWM -komentoja Zynq -prosessorilta. Kunkin moottorin koodereita käytetään ajoneuvojen sijainnin ja suunnan seuraamiseen. Koko järjestelmä saa virtansa LiPo -akusta.
Vaihe 1: Ajoneuvon kokoaminen
Robotissa on kaksi moottoria, jotka on kiinnitetty sivupyöriin, ja sitä tukevat lisäksi kaksi pyörää, yksi edessä ja toinen takana. Lava ja moottorin kiinnikkeet valmistettiin alumiinilevystä. Ostettiin moottorin napa pyörien kiinnittämiseksi moottoriin. Kuitenkin mukautettu välikytkin oli tehtävä, koska navan reikäkuvio oli erilainen kuin pyörän reikäkuvio.
Valittu moottori oli Port Escap 12V DC -moottori, jossa on sisäänrakennetut anturit. Tämän moottorin voi ostaa ebaysta erittäin kohtuulliseen hintaan (katso materiaaliluettelo). Etsi hakusanalla "12V Escap 16 Coreless Geared DC Motor with Encoders" ebaysta löytääksesi moottorin. Valittavana on yleensä kohtuullinen määrä myyjiä. Moottorien tekniset tiedot ja nastat on esitetty alla olevissa kaavioissa.
Robotin kokoaminen alkoi alustan CAD -mallisuunnittelulla. Alla oleva malli esittää runkoa varten suunnitellun 2D -profiilin ylhäältä.
On suositeltavaa, että runko suunnitellaan 2D -profiiliksi, jotta se voidaan valmistaa helposti. Leikkasimme 12”X12” alumiinilevyn alustan muotoon vesisuihkuleikkurilla. Alustan voi leikata myös vannesahalla.
Vaihe 2: Moottorien asennus
Seuraava askel on tehdä moottorin kiinnikkeet. On suositeltavaa, että moottorin kiinnikkeet on valmistettu 90 asteen metallilevystä. Tätä osaa käyttämällä moottori voidaan kiinnittää ulokkeeseen peltilevyn toiselle puolelle molemmilla
Moottorin ja toisen pinnan M2 -reiät voidaan ruuvata koriin. Moottorikiinnikkeeseen on porattava reikiä, jotta ruuveilla voidaan kiinnittää moottori moottorin kiinnikkeeseen ja moottorin kiinnike tasoon. Moottorin kiinnike näkyy yllä olevassa kuvassa.
Seuraavaksi Pololu -moottorin napa (katso materiaaliluettelo) asetetaan moottorin akselille ja kiristetään mukana toimitetulla ruuvilla ja kuusiokoloavaimella. Pololu -moottorin navan reikäkuvio ei vastaa VEX -pyörän reikäkuviota, joten on tehtävä mukautettu väliliitin. On suositeltavaa käyttää alumiiniromua, joka on käytetty alustan valmistukseen, käytettäväksi kytkimen valmistuksessa. Tämän parin reikäkuvio ja mitat on esitetty alla olevassa kuvassa. Mukautetun alumiinikytkimen ulkohalkaisijalla ja muodolla (ei tarvitse olla ympyrä) ei ole väliä, kunhan kaikki reiät sopivat osaan.
Vaihe 3: Vivado Block Designin luominen
- Aloita luomalla uusi Vivado -projekti ja valitse kohdelaitteeksi Zybo Zynq 7000 Z010.
- Napsauta seuraavaksi Luo uusi lohkorakenne ja lisää Zynq IP. Kaksoisnapsauta Zynq IP -osoitetta ja tuo Zynqin XPS -asetukset. Ota sitten UART0 käyttöön MIO 10..11 -laitteella MIO -asetukset -välilehdellä ja varmista myös, että ajastin 0 ja vahtikoira -ajastin ovat käytössä.
- Lisää kaksi AXI GPIOSia lohkon suunnitteluun. GPIO 0: ssa ota käyttöön kaksikanava ja aseta molemmat ulostulot. Aseta GPIO -leveys kanavalle 1-4 bittiä ja kanavalle 2-12 bittiä, näitä kanavia käytetään asettamaan moottorin suunta ja lähettämään kooderin mittaamien punkkien määrä prosessorille. GPIO 1: lle aseta vain yksi kanava kaikille tuloille, joiden kanavan leveys on 4 bittiä. Tätä käytetään datan vastaanottamiseen enkoodereista. Tee kaikki GPIO -portit ulkoisiksi.
- Seuraava Lisää kaksi AXI -ajastinta. Tee molempien ajastimien pwm0 -portit ulkoisiksi. Nämä ovat pwms, jotka ohjaavat moottorien pyörimisnopeutta.
- Suorita lopuksi lohkoautomaatio ja yhteysautomaatio. Varmista, että käytössäsi oleva lohkomalli vastaa annettua.
Vaihe 4: Yhteydenpito LiDARin kanssa
Tämä LiDAR käyttää SCIP 2.0 -protokollaa kommunikoidakseen UARTin kautta, liitteenä oleva tiedosto kuvaa koko protokollan.
Käytämme kommunikaatioon LiDARin kanssa UART0: ta. LiDAR palauttaa 682 datapistettä, joista jokainen edustaa etäisyyttä kohteeseen kyseisessä kulmassa. LiDAR skannaa vastapäivään -30 asteesta 210 asteeseen ja askel on 0,351 astetta.
- Kaikki viestintä LiDARiin tapahtuu ASCI -merkeillä, katso käytetyn muodon SCIP -protokolla. Aloitamme lähettämällä QT -komennon kytkeäksesi LiDARin päälle. Sitten lähetämme GS -komennon useita kertoja pyytäen 18 datapistettä kerrallaan ft: iin UARTS 64 tavun FIFO: ssa. LiDARista palautetut tiedot jäsennellään ja tallennetaan SCANdata -yleiseen taulukkoon.
- Jokainen tallennettu datapiste on 2 tavua koodattua dataa. Tietojen siirtäminen dekooderiin palauttaa etäisyyden millimetreinä.
Main_av.c -tiedostosta löydät seuraavat toiminnot kommunikoidaksesi LiDARin kanssa
sendLIDARcmd (komento)
- Tämä lähettää syöttöjonon LiDARille UART0: n kautta
recvLIDARdata ()
- Tämä vastaanottaa tietoja sen jälkeen, kun LiDARille on lähetetty komento, ja tallentaa tiedot RECBufferiin
requestDistanceData ()
- Tämä toiminto lähettää sarjan komentoja kaikkien 682 datapisteen noutamiseksi. Kun jokainen 18 datapisteen sarja on vastaanotettu, parseLIDARinput () kutsutaan jäsentämään tiedot ja tallentamaan vähitellen datapisteet SCANdataan.
Vaihe 5: Ruudukon täyttäminen esteillä
Tallennettu GRID on 2D -taulukko, jonka jokainen indeksiarvo edustaa sijaintia. Jokaiseen hakemistoon tallennetut tiedot ovat joko 0 tai 1, ei esteitä ja esteitä. Kunkin indeksin neliömatkaa millimetreinä voidaan muuttaa ajoneuvon.h -tiedoston GRID_SCALE -määritelmällä. 2D -matriisin kokoa voidaan myös muuttaa, jotta ajoneuvo voi skannata suuremman alueen muuttamalla GRID_SIZE -määritelmää.
Kun uusi etäisyysdata on skannattu LiDAR -päivitysverkosta () kutsutaan. Tämä kiertää jokaisen SCANdata -taulukkoon tallennetun datapisteen läpi määrittääkseen, mitkä ruudukon indeksit ovat esteitä. Käyttämällä ajoneuvon nykyistä suuntausta voimme määrittää kulman, joka vastaa kutakin datapistettä. Voit määrittää, missä este on, kertomalla sitten vastaava etäisyys kulman cos/sinillä. Näiden kahden arvon lisääminen ajoneuvojen nykyiseen x- ja y -asentoon palauttaa esteen ruudukon indeksin. Kun tämän toiminnon palauttama etäisyys jaetaan GRID_SCALE -arvolla, voimme muuttaa jokaisen indeksin neliöetäisyyden.
Yllä olevat kuvat esittävät ajoneuvojen nykyisen ympäristön ja tuloksena olevan ruudukon.
Vaihe 6: Yhteydenpito moottorien kanssa
Jotta voisimme kommunikoida moottorien kanssa, aloitamme GPIO: iden ohjaamisesta moottorin pyörimissuunnan. Kirjoittaminen sitten suoraan PWM -laitteiden perusosoitteeseen AXI -ajastimessa antaa meille mahdollisuuden asettaa esimerkiksi ajanjakso ja käyttöjakso, jotka ohjaavat suoraan moottoria. nopeudella, jonka moottori pyörii.
Vaihe 7: Polun suunnittelu
Toteutetaan lähitulevaisuudessa.
Käyttämällä aiemmin kuvattua verkko- ja moottoritoimintoa on erittäin helppo ottaa käyttöön algoritmeja, kuten A*. Ajoneuvon liikkuessa se jatkaa ympäröivän alueen skannaamista ja määrittää, onko polku edelleen voimassa
Suositeltava:
Super FAST RC Ground Effect Ajoneuvo (Ekranoplan): 5 vaihetta (kuvilla)
Super FAST RC Ground Effect Ajoneuvo (Ekranoplan): Tiedätkö, kuinka lentokoneet leijuvat kosketuksen aikana muutaman metrin korkeudella maan pinnasta jonkin aikaa ennen kuin niiden pyörät osuvat kiitotielle? Tämä ei ainoastaan anna matkustajille sujuvaa laskeutumista, vaan se on myös luonnollinen tulos maan vaikutuksesta, jossa
GorillaBot 3D -painettu Arduino -itsenäinen sprintin nelijalkainen robotti: 9 vaihetta (kuvilla)
GorillaBot 3D -painettu Arduino -autonomiset sprintin nelijalkaiset robotit: Joka vuosi Toulousessa (Ranska) järjestetään Toulousen robottikilpailu #TRR2021Kilpailu koostuu 10 metrin itsenäisestä sprintistä kaksijalkaisille ja nelijalkaisille roboteille. 10 metrin sprintti, joten metreissä
Itsenäinen tiedonkeruuanemometri: 11 vaihetta (kuvilla)
Itsekiinnittyvä tiedonkeruun tuulimittari: Rakastan tietojen keräämistä ja analysointia. Rakastan myös sähköisten gadgetien rakentamista. Vuosi sitten, kun löysin Arduino -tuotteet, ajattelin heti: "Haluaisin kerätä ympäristötietoja." Oli tuulinen päivä Portlandissa, OR, joten
DIY-itsetasapainottava yksipyöräinen ajoneuvo: 8 vaihetta (kuvilla)
DIY-itsetasapainottava yksipyöräinen ajoneuvo: Kiinnostunut joistakin itsetasapainottavien tuotteiden trendistä, kuten segway ja solowheel. Kyllä, voit mennä minne tahansa pyörälläsi väsymättä. mutta on hienoa, jos saat sen itse. No, rakennetaan se
KEVIN: Täysi itsenäinen ajoneuvo: 17 vaihetta (kuvilla)
KEVIN Täysi itsenäinen ajoneuvo: Tämä on Kevin. Se on radio -ohjattu auto, joka pystyy suorittamaan täyden itsenäisen ajamisen. Ensimmäinen tavoitteeni oli saada autonominen ajoneuvo Arduinon hallintaan. Joten ostin halpaa kiinalaista alusta. Mutta se oli kauheaa, koska en pystynyt kiinnittämään mitään