Cuprins:
- Pasul 1: Asamblarea vehiculului
- Pasul 2: Montarea motoarelor
- Pasul 3: Crearea Vivado Block Design
- Pasul 4: Comunicarea cu LiDAR
- Pasul 5: Grila de populare cu obstacole
- Pasul 6: Comunicarea cu motoarele
- Pasul 7: Planificarea traseului
Video: Vehicul autonom: 7 pași (cu imagini)
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:46
Acest proiect este un robot care navighează autonom, care încearcă să-și atingă poziția obiectivului evitând în același timp obstacolele pe calea sa. Robotul va fi echipat cu un senzor LiDAR care va fi folosit pentru detectarea obiectelor din împrejurimile sale. Pe măsură ce obiectele sunt detectate și robotul se deplasează, o hartă în timp real va fi actualizată. Harta va fi utilizată pentru a salva locațiile obstacolelor care au fost identificate. În acest fel, robotul nu va încerca din nou o cale eșuată către poziția obiectivului. În schimb, va încerca căi care fie nu au obstacole, fie căi care nu au fost încă verificate pentru obstacole.
Robotul se va mișca cu două roți acționate cu motor DC și două roți rotative. Motoarele vor fi atașate la fundul unei platforme circulare. Motoarele vor fi controlate de doi șoferi. Driverele de motor vor primi comenzi PWM de la procesorul Zynq. Codificatoarele de pe fiecare motor trebuie folosite pentru a urmări poziția și orientarea vehiculelor. Întregul sistem va fi alimentat cu o baterie LiPo.
Pasul 1: Asamblarea vehiculului
Robotul este alimentat de două motoare atașate la roțile laterale și apoi este susținut suplimentar de două roți rotative, una în față și una în spate. Platforma și suporturile motorului au fost realizate din tablă de aluminiu. A fost achiziționat un butuc pentru a atașa roțile la motor. Cu toate acestea, trebuia realizat un cuplaj intermediar personalizat, deoarece modelul orificiilor butucului era diferit de modelul orificiilor roții.
Motorul selectat a fost un motor Port Escap 12V DC cu codificatoare încorporate. Acest motor poate fi achiziționat de pe eBay la un preț foarte rezonabil (consultați Lista materialelor). Căutați cuvinte cheie „12V Escap 16 Motor fără transmisie fără curent cu codificatoare” pe eBay pentru a găsi motorul. De obicei, există o cantitate echitabilă de vânzători din care să aleagă. Specificațiile și pinouturile motoarelor sunt prezentate în diagramele de mai jos.
Asamblarea robotului a început cu un model CAD de proiectare a șasiului. Modelul de mai jos prezintă vederea de sus a profilului de formă 2D proiectat pentru șasiu.
Se sugerează ca șasiul să fie proiectat ca un profil 2D, astfel încât să poată fi fabricat cu ușurință. Am tăiat o foaie de aluminiu de 12”X12” în forma șasiului folosind un tăietor cu jet de apă. Platforma șasiului ar putea fi, de asemenea, tăiată cu un ferăstrău cu bandă.
Pasul 2: Montarea motoarelor
Următorul pas este realizarea suporturilor motorului. Se sugerează ca suporturile motorului să fie realizate din tablă de aluminiu de 90 de grade. Folosind această piesă, motorul poate fi atașat în consolă pe o față a tablei folosind cele două
Găurile M2 ale motorului și cealaltă față pot fi înșurubate pe platformă. Găurile trebuie să fie găurite în suportul motorului, astfel încât șuruburile să poată fi utilizate pentru a fixa motorul pe suportul motorului și suportul motorului pe platformă. Suportul motorului poate fi văzut în figura de mai sus.
Apoi butucul Pololu Motor (a se vedea Lista materialelor) este așezat pe arborele motorului și strâns cu șurubul de fixare furnizat și cheia Allen. Modelul orificiilor butucului motorului Pololu nu se potrivește cu modelul orificiilor roții VEX, deci trebuie realizat un cuplaj intermediar personalizat. Se sugerează ca foaia de aluminiu uzată pentru fabricarea platformei șasiului să fie utilizată pentru realizarea cuplajului. Modelul găurilor și dimensiunile acestui cuplu sunt prezentate în figura de mai jos. Diametrul exterior și forma (nu trebuie să fie un cerc) ale cuplajului din aluminiu personalizat nu contează atât timp cât toate găurile se potrivesc pe piesă.
Pasul 3: Crearea Vivado Block Design
- Începeți prin crearea unui nou proiect Vivado și selectați Zybo Zynq 7000 Z010 ca dispozitiv țintă.
- Apoi faceți clic pe creați un nou design de bloc și adăugați IP-ul Zynq. Faceți dublu clic pe IP-ul Zynq și importați setările XPS furnizate pentru Zynq. Apoi activați UART0 cu MIO 10..11 sub fila configurații MIO și asigurați-vă, de asemenea, că Timerul 0 și Timerul Watchdog sunt activate.
- Adăugați două AXI GPIOS la designul blocului. Pentru GPIO 0 activați canalul dual și setați ambele la toate ieșirile. Setați lățimea GPIO pentru canalul 1 până la 4 biți și pentru canalul 2 până la 12 biți, aceste canale vor fi utilizate pentru a seta direcția motorului și pentru a trimite cantitatea de căpușe pe care codificatorul o măsoară procesorului. Pentru GPIO 1 setați un singur canal la toate intrările cu o lățime a canalului de 4 biți. Aceasta va fi utilizată pentru a primi date de la codificatoare. Faceți toate porturile GPIO externe.
- Apoi adăugați două cronometre AXI. Faceți porturile pwm0 de pe ambele temporizatoare externe. Acestea vor fi PWM-urile care controlează viteza la care se rotesc motoarele.
- În cele din urmă, executați automatizarea blocului și automatizarea conexiunii. Verificați dacă designul blocului pe care îl aveți se potrivește cu cel furnizat.
Pasul 4: Comunicarea cu LiDAR
Acest LiDAR folosește un protocol SCIP 2.0 pentru a comunica prin UART, fișierul atașat descrie întregul protocol.
Pentru a comunica cu LiDAR vom folosi UART0. LiDAR returnează 682 de puncte de date, fiecare reprezentând distanța față de un obiect la acel unghi. LiDAR scanează în sens invers acelor de ceasornic de la -30 grade la 210 grade cu un pas de 0,351 grade.
- Toate comunicările către LiDAR se fac cu caractere ASCI, consultați protocolul SCIP pentru formatul utilizat. Începem prin a trimite comanda QT pentru a porni LiDAR. Apoi trimitem comanda GS de mai multe ori solicitând 18 puncte de date la un moment dat, în ft în UARTS 64 byte FIFO. Datele returnate din LiDAR sunt apoi analizate și stocate în matricea globală SCANdata.
- Fiecare punct de date stocat este de 2 octeți de date codificate. Trecerea acestor date în decodor va reveni la o distanță în milimetri.
În fișierul main_av.c veți găsi următoarele funcții pentru a comunica cu LiDAR
sendLIDARcmd (comandă)
- Aceasta va trimite șirul de intrare către LiDAR prin UART0
recvLIDARdata ()
- Aceasta va primi date după ce o comandă a fost trimisă către LiDAR și va stoca datele în RECBuffer
requestDistanceData ()
- Această funcție va trimite o serie de comenzi pentru a prelua toate cele 682 de puncte de date. După primirea fiecărui set de 18 puncte de date, parseLIDARinput () este chemat să analizeze datele și să stocheze incremental punctele de date în SCANdata.
Pasul 5: Grila de populare cu obstacole
GRID-ul stocat este un tablou 2D cu fiecare valoare a indexului reprezentând o locație. Datele stocate în fiecare index sunt fie 0, fie 1, Fără obstacol și respectiv obstacol. Distanța pătrată în milimetri pe care o reprezintă fiecare index poate fi modificată cu definiția GRID_SCALE din fișierul vehicle.h. Dimensiunea matricei 2D poate fi de asemenea variată pentru a permite vehiculului să scaneze o zonă mai mare modificând definiția GRID_SIZE.
După scanarea unui nou set de date la distanță, din LiDAR se apelează updateGrid (). Aceasta va itera prin fiecare punct de date stocat în matricea SCANdata pentru a determina ce indici din grilă au obstacole. Folosind orientarea curentă a vehiculului putem determina unghiul care corespunde fiecărui punct de date. Pentru a determina unde se află un obstacol, înmulțiți pur și simplu distanța corespunzătoare cu cos / sin a unghiului. Adăugarea acestor două valori la poziția curentă a vehiculelor x și y va readuce indexul în grila obstacolului. Împărțirea distanței returnate de această operație la GRID_SCALE ne va permite să variem cât de mare este distanța pătrată a fiecărui index.
Imaginile de mai sus arată mediul actual al vehiculelor și grila rezultată.
Pasul 6: Comunicarea cu motoarele
Pentru a comunica cu motoarele începem prin inițializarea GPIO-urilor pentru a controla direcția în care se învârte motorul. Apoi scrierea directă la adresa de bază a PWM-urilor în temporizatorul AXI ne permite să setăm lucruri precum perioada și ciclul de funcționare care controlează direct turația motorului se rotește la.
Pasul 7: Planificarea traseului
Pentru a fi implementat în viitorul apropiat.
Folosind funcționalitatea rețelei și a motorului descrise anterior, este foarte ușor să implementați algoritmi precum A *. Pe măsură ce vehiculul se deplasează, acesta va continua să scaneze zona înconjurătoare și să stabilească dacă calea pe care se află este încă valabilă
Recomandat:
Vehicul cu efect de sol Super FAST RC (Ekranoplan): 5 pași (cu imagini)
Super FAST RC Ground Effect Vehicle (Ekranoplan): Știți cum, în timpul touch-down-ului, avioanele plutesc la câțiva metri deasupra solului pentru o vreme înainte ca roțile lor să lovească efectiv pista? Acest lucru nu este doar pentru a oferi pasagerilor o aterizare lină, ci este și rezultatul natural al efectului de sol, în care
Vehicul model RC basculant: 21 de pași (cu imagini)
Vehicul cu model RC basculant: Acest model este un vehicul basculant 1/10 cu două roți față și o tracțiune spate; a fost derivat dintr-un model electric RC Arrma Vortex 1/10 care a folosit șasiul din aluminiu și a îndepărtat întregul spate unde a plasat motorul electric și tr
Vehicul robot cu conducere automată pentru începători cu evitare a coliziunilor: 7 pași
Vehicul robot cu conducere automată pentru începători cu evitare a coliziunilor: Bună ziua! Bine ați venit la instructorul meu pentru începători, cu informații despre cum să vă creați propriul vehicul robot cu conducere automată cu evitarea coliziunilor și navigare GPS. Mai sus este un videoclip YouTube care demonstrează robotul. Este un model pentru a demonstra cum o autonomie reală
Vehicul DIY cu auto-echilibrare cu o singură roată: 8 pași (cu imagini)
Vehicul DIY cu auto-echilibrare cu o singură roată: interesat de unele dintre tendințele produselor de auto-echilibrare, cum ar fi segway și solowheel.yes, puteți merge oriunde mergând pe roată fără să vă obosiți. dar este minunat dacă îl poți avea singur. Ei bine, hai să o construim
Cum să setați un vehicul feroviar Hi-rail pe șină: 10 pași (cu imagini)
Cum să setați un vehicul Hi-rail pe cale ferată: măsuri de siguranță: persoana care așează camionul hi-rail pe șină și persoana care ajută ar trebui să poarte haine cu vizibilitate ridicată (de ex. Vesta, hanorac, haină) pentru a fi văzută prin posibilul trafic care se apropie. O cască de protecție și mănuși ar trebui purtate și pentru