Turinys:

Autonominė transporto priemonė: 7 žingsniai (su nuotraukomis)
Autonominė transporto priemonė: 7 žingsniai (su nuotraukomis)

Video: Autonominė transporto priemonė: 7 žingsniai (su nuotraukomis)

Video: Autonominė transporto priemonė: 7 žingsniai (su nuotraukomis)
Video: The Choice is Ours (2016) Official Full Version 2024, Lapkritis
Anonim
Autonominė transporto priemonė
Autonominė transporto priemonė
Autonominė transporto priemonė
Autonominė transporto priemonė

Šis projektas yra savarankiškai naršantis robotas, kuris stengiasi pasiekti savo tikslinę poziciją, vengdamas kelyje esančių kliūčių. Robotas bus aprūpintas „LiDAR“jutikliu, kuris bus naudojamas aptikti jo aplinkoje esančius objektus. Aptikus objektus ir robotui judant, žemėlapis realiuoju laiku bus atnaujintas. Žemėlapis bus naudojamas nustatytoms kliūtims išsaugoti. Tokiu būdu robotas iš naujo nebandys nesėkmingo kelio į tikslo poziciją. Vietoj to ji bandys kelius, kuriuose nėra kliūčių, arba kelius, kurie dar nebuvo patikrinti, ar nėra kliūčių.

Robotas judės dviem nuolatinės srovės varikliais ir dviem ratukais. Varikliai bus pritvirtinti prie apskritos platformos apačios. Varikliai bus valdomi dviejų variklių. Variklio vairuotojai gaus PWM komandas iš „Zynq“procesoriaus. Kiekvieno variklio kodavimo įrenginiai naudojami transporto priemonės padėčiai ir krypčiai sekti. Visa sistema bus maitinama LiPo baterija.

1 žingsnis: transporto priemonės surinkimas

Transporto priemonės surinkimas
Transporto priemonės surinkimas
Transporto priemonės surinkimas
Transporto priemonės surinkimas
Transporto priemonės surinkimas
Transporto priemonės surinkimas
Transporto priemonės surinkimas
Transporto priemonės surinkimas

Robotas maitinamas dviem varikliais, pritvirtintais prie šoninių ratų, o po to papildomai palaiko du ratukai, vienas priekyje ir vienas gale. Platforma ir variklio laikikliai buvo pagaminti iš aliuminio lakštinio metalo. Buvo įsigyta variklio stebulė, skirta ratams pritvirtinti prie variklio. Tačiau reikėjo pagaminti pasirinktinę tarpinę jungtį, nes stebulės skylės modelis skyrėsi nuo rato skylės modelio.

Pasirinktas variklis buvo „Port Escap“12 V nuolatinės srovės variklis su įmontuotais kodavimo įrenginiais. Šį variklį galima įsigyti „ebay“už labai priimtiną kainą (žr. Medžiagų sąrašą). „Ebay“ieškokite raktinių žodžių „12V Escap 16 belaidis pavarų nuolatinės srovės variklis su kodavimo įrenginiais“, kad surastumėte variklį. Paprastai yra nemažai pardavėjų, iš kurių galima rinktis. Variklių specifikacijos ir kaiščiai parodyti žemiau esančiose diagramose.

Roboto surinkimas prasidėjo nuo važiuoklės CAD modelio. Žemiau pateiktas modelis rodo važiuoklei skirto 2D formos profilio vaizdą iš viršaus.

Siūloma, kad važiuoklė būtų suprojektuota kaip 2D profilis, kad ją būtų galima lengvai pagaminti. Naudodami vandens srovės pjaustytuvą, mes supjaustėme 12 colių aliuminio lakštą į važiuoklės formą. Važiuoklės platformą taip pat galima pjauti juostiniu pjūklu.

2 žingsnis: variklių montavimas

Montavimo varikliai
Montavimo varikliai
Montavimo varikliai
Montavimo varikliai

Kitas žingsnis yra variklio tvirtinimas. Siūloma, kad variklio laikikliai būtų pagaminti iš 90 laipsnių aliuminio lakšto. Naudojant šią dalį, variklis gali būti pritvirtintas prie vieno skardos paviršiaus, naudojant abu

Variklio M2 skylės ir kitas paviršius gali būti prisukami prie platformos. Į variklio laikiklį reikia išgręžti skyles, kad varžtais būtų galima pritvirtinti variklį prie variklio laikiklio ir variklio laikiklį ant platformos. Variklio laikiklį galima pamatyti aukščiau esančiame paveikslėlyje.

Tada ant variklio veleno uždedamas „Pololu“variklio stebulė (žr. Medžiagų sąrašą) ir priveržiama pridedamu varžtu ir šešiakampiu veržliarakčiu. „Pololu“variklio stebulės skylių raštas neatitinka VEX rato skylių modelio, todėl reikia pagaminti pasirinktinę tarpinę movą. Siūloma, kad sukabinimui būtų naudojamas važiuoklės platformai gaminti naudojamas aliuminio lakštas. Šios poros skylių raštas ir matmenys parodyti žemiau esančiame paveikslėlyje. Individualizuoto aliuminio movos išorinis skersmuo ir forma (nebūtinai turi būti apskritimas) neturi reikšmės, kol visos skylės telpa ant detalės.

3 žingsnis: sukurkite „Vivado Block Design“

„Vivado Block“dizaino kūrimas
„Vivado Block“dizaino kūrimas
„Vivado Block“dizaino kūrimas
„Vivado Block“dizaino kūrimas

- Pradėkite nuo naujo „Vivado“projekto sukūrimo ir pasirinkite „Zybo Zynq 7000 Z010“kaip tikslinį įrenginį.

- Tada spustelėkite sukurti naują bloko dizainą ir pridėkite „Zynq IP“. Dukart spustelėkite „Zynq IP“ir importuokite pateiktus „Zynq“XPS nustatymus. Tada įjunkite UART0 naudodami MIO 10..11, esantį skirtuke MIO konfigūracijos, taip pat įsitikinkite, kad įjungtas laikmatis 0 ir laikrodžio laikmatis.

- Prie bloko dizaino pridėkite du AXI GPIOS. GPIO 0 įjunkite dvigubą kanalą ir abu nustatykite į visus išėjimus. Nustatykite GPIO plotį 1–4 bitų kanalui, o 2–12 bitų kanalams, šie kanalai bus naudojami variklio krypčiai nustatyti ir koduotuvo išmatuotų erkių kiekiui siųsti procesoriui. GPIO 1 nustatykite tik vieną kanalą visiems įėjimams, kurių kanalo plotis yra 4 bitai. Tai bus naudojama duomenims iš koduotojų gauti. Padarykite visus GPIO prievadus išorinius.

- Kitas Pridėti du AXI laikmačius. Abiejų laikmačių pwm0 prievadus padarykite išorinius. Tai bus pwms, valdantys variklių sukimosi greitį.

- Galiausiai paleiskite blokų automatiką ir ryšio automatizavimą. Patikrinkite, ar jūsų turimas bloko dizainas atitinka pateiktą.

4 žingsnis: Bendravimas su „LiDAR“

Šis „LiDAR“naudoja SCIP 2.0 protokolą bendravimui per UART, pridėtame faile aprašomas visas protokolas.

Norėdami bendrauti su „LiDAR“, naudosime UART0. „LiDAR“grąžina 682 duomenų taškus, nurodančius atstumą iki objekto tuo kampu. „LiDAR“nuskaito prieš laikrodžio rodyklę nuo -30 iki 210 laipsnių, o žingsnis yra 0,351 laipsnio.

- Visa komunikacija su „LiDAR“atliekama naudojant ASCI simbolius, naudokite naudojamo formato SCIP protokolą. Mes pradedame siunčiant komandą QT, kad įjungtume LiDAR. Tada mes kelis kartus siunčiame GS komandą, prašydami 18 duomenų taškų vienu metu į ft UARTS 64 baitų FIFO. Tada iš „LiDAR“grąžinti duomenys yra išanalizuojami ir saugomi visuotiniame „SCANdata“masyve.

- Kiekvienas saugomas duomenų taškas yra 2 baitai užkoduotų duomenų. Perdavus šiuos duomenis į dekoderį, atstumas bus grąžintas milimetrais.

Faile main_av.c rasite šias funkcijas, skirtas bendrauti su LiDAR

sendLIDARcmd (komanda)

- Įvesties eilutė bus išsiųsta į LiDAR per UART0

recvLIDARdata ()

- Tai gaus duomenis, kai komanda bus išsiųsta į „LiDAR“, ir išsaugos duomenis „RECBuffer“

requestDistanceData ()

- Ši funkcija atsiųs komandų seriją, kad gautų visus 682 duomenų taškus. Gavus kiekvieną 18 duomenų taškų rinkinį, parseLIDARinput () yra iškviečiamas analizuoti duomenis ir laipsniškai saugoti duomenų taškus SCANdata.

5 žingsnis: tinklelio užpildymas kliūtimis

Tinklelio užpildymas kliūtimis
Tinklelio užpildymas kliūtimis
Tinklelio užpildymas kliūtimis
Tinklelio užpildymas kliūtimis

Išsaugotas GRID yra 2D masyvas, kurio kiekviena indekso reikšmė reiškia vietą. Kiekviename indekse saugomi duomenys yra atitinkamai 0 arba 1, be kliūčių ir kliūčių. Kiekvieno indekso kvadratinį atstumą milimetrais galima pakeisti naudojant failo vehicle.h GRID_SCALE apibrėžimą. 2D masyvo dydį taip pat galima keisti, kad transporto priemonė galėtų nuskaityti didesnį plotą, pakeisdama GRID_SIZE apibrėžimą.

Po to, kai iš „LiDAR“nuskaitomas naujas atstumo duomenų rinkinys, iškviečiamas atnaujinimo tinklas (). Tai kartos kiekvieną duomenų tašką, saugomą „SCANdata“masyve, kad nustatytų, kurie tinklelio indeksai turi kliūčių. Naudodami dabartinę transporto priemonės orientaciją, galime nustatyti kiekvieną duomenų tašką atitinkantį kampą. Norėdami nustatyti, kur yra kliūtis, tiesiog padauginkite atitinkamą atstumą iš kampo cos/sin. Pridėjus šias dvi reikšmes prie esamos transporto priemonės x ir y padėties, bus grąžintas indeksas kliūties tinklelyje. Padalinus šios operacijos grąžintą atstumą iš GRID_SCALE, galėsime keisti kiekvieno indekso kvadratinio atstumo dydį.

Aukščiau esančiose nuotraukose parodyta dabartinė transporto priemonių aplinka ir gautas tinklelis.

6 žingsnis: Bendravimas su varikliais

Norėdami užmegzti ryšį su varikliais, inicijuodami GPIO valdymą, tai buvo variklio sukimosi kryptis. Tada rašymas tiesiai į pagrindinį PWM adresą AXI laikmačiu leidžia mums nustatyti tokius dalykus kaip laikotarpis ir darbo ciklas, kurie tiesiogiai valdo greičiu, kuriuo variklis sukasi.

7 žingsnis: kelio planavimas

Įgyvendinti artimiausiu metu.

Naudojant anksčiau aprašytas tinklelio ir variklio funkcijas, labai lengva įdiegti tokius algoritmus kaip A*. Kai transporto priemonė juda, ji toliau nuskaitys aplinką ir nustatys, ar kelias, kuriuo jis važiuoja, vis dar galioja

Rekomenduojamas: