Sisällysluettelo:

Itsenäinen ajoneuvo: 7 vaihetta (kuvilla)
Itsenäinen ajoneuvo: 7 vaihetta (kuvilla)

Video: Itsenäinen ajoneuvo: 7 vaihetta (kuvilla)

Video: Itsenäinen ajoneuvo: 7 vaihetta (kuvilla)
Video: Shimano Nexus 7 ja Nexus 3 napavaihde - mitä tulee tietää? 2024, Marraskuu
Anonim
Itsenäinen ajoneuvo
Itsenäinen ajoneuvo
Itsenäinen ajoneuvo
Itsenäinen ajoneuvo

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

Ajoneuvon kokoaminen
Ajoneuvon kokoaminen
Ajoneuvon kokoaminen
Ajoneuvon kokoaminen
Ajoneuvon kokoaminen
Ajoneuvon kokoaminen
Ajoneuvon kokoaminen
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

Asennusmoottorit
Asennusmoottorit
Asennusmoottorit
Asennusmoottorit

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

Vivado Block Designin luominen
Vivado Block Designin luominen
Vivado Block Designin luominen
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ä

Ruudukon täyttäminen esteillä
Ruudukon täyttäminen esteillä
Ruudukon täyttäminen esteillä
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: