Turinys:
- 1 žingsnis: transporto priemonės surinkimas
- 2 žingsnis: variklių montavimas
- 3 žingsnis: sukurkite „Vivado Block Design“
- 4 žingsnis: Bendravimas su „LiDAR“
- 5 žingsnis: tinklelio užpildymas kliūtimis
- 6 žingsnis: Bendravimas su varikliais
- 7 žingsnis: kelio planavimas
Video: Autonominė transporto priemonė: 7 žingsniai (su nuotraukomis)
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:49
Š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
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
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“
- 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
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:
„Super FAST RC Ground Effect“transporto priemonė („Ekranoplan“): 5 žingsniai (su nuotraukomis)
„Super FAST RC Ground Effect“transporto priemonė („Ekranoplan“): Ar žinote, kaip nusileidimo metu lėktuvai kurį laiką sklendžia keletą pėdų virš žemės, kol jų ratai iš tikrųjų atsitrenkia į kilimo ir tūpimo taką? Tai ne tik sklandus keleivių nusileidimas, bet ir natūralus žemės poveikio rezultatas, kai
Vaikų keturračių įsilaužimas į savarankišką vairavimą, sekimą iš eilės ir kliūčių aptikimo transporto priemonę: 4 žingsniai
Vaikų keturračių įsilaužimas į savarankišką vairavimą, sekimą ir kliūčių aptikimo transporto priemonę: Šiandienos instrukcijoje mes paversime 1000 vatų (taip, aš žinau daug!) „Electric Kid“keturračius į savarankiškai važiuojančią, sekančią liniją ir kliūčių išvengiančią transporto priemonę! Demonstracinis vaizdo įrašas: https: //youtu.be/bVIsolkEP1kŠiam projektui mums reikės šių medžiagų
Pradedančiųjų savarankiškai vairuojanti robotų transporto priemonė, išvengianti susidūrimo: 7 žingsniai
Pradedančiųjų savarankiškai vairuojanti robotų transporto priemonė, išvengianti susidūrimo: Sveiki! Sveiki atvykę į mano pradedantiesiems pritaikytą „Instructable“, kaip savarankiškai vairuoti robotizuotą transporto priemonę, išvengiant susidūrimo ir naudojant GPS navigaciją. Viršuje yra „YouTube“vaizdo įrašas, demonstruojantis robotą. Tai pavyzdys, parodantis, kaip tikrasis autonomiškumas
„Pasidaryk pats“transporto priemonės stebėjimo priemonė: 8 žingsniai (su nuotraukomis)
„Pasidaryk pats“transporto priemonės stebėtojas: praėjusią vasarą mano motociklas buvo pavogtas. Laimei, policija nustatė, kad tai beveik nepažeista (NYPD FTW!), Bet žinau, kad išvengiau kulkos, todėl atėjo laikas į XXI amžiaus pabaigą važiuoti. Deja, pavogti automobiliai
KEVIN: visa autonominė transporto priemonė: 17 žingsnių (su nuotraukomis)
KEVIN: visa autonominė transporto priemonė: tai Kevinas. Tai radijo bangomis valdomas automobilis, galintis atlikti visišką autonominį važiavimą. Pirmasis mano tikslas buvo padaryti autonominę transporto priemonę valdomą „Arduino“. Taigi nusipirkau pigią kinišką važiuoklę. Bet tai buvo siaubinga, nes aš negalėjau pritvirtinti jokių