Satura rādītājs:

Autonomais transportlīdzeklis: 7 soļi (ar attēliem)
Autonomais transportlīdzeklis: 7 soļi (ar attēliem)

Video: Autonomais transportlīdzeklis: 7 soļi (ar attēliem)

Video: Autonomais transportlīdzeklis: 7 soļi (ar attēliem)
Video: 🔥 Всё-всё-всё про лямбда-зонды! Зачем нужен этот хитрый кислородный датчик? 2024, Novembris
Anonim
Autonomais transportlīdzeklis
Autonomais transportlīdzeklis
Autonomais transportlīdzeklis
Autonomais transportlīdzeklis

Šis projekts ir autonomi orientējošs robots, kurš cenšas sasniegt savu mērķi, vienlaikus izvairoties no šķēršļiem. Robots tiks aprīkots ar LiDAR sensoru, kas tiks izmantots, lai noteiktu apkārtnē esošos objektus. Kad objekti tiek atklāti un robots pārvietojas, tiks atjaunināta reālā laika karte. Karte tiks izmantota, lai saglabātu identificēto šķēršļu atrašanās vietas. Tādā veidā robots atkārtoti nemēģinās neveiksmīgu ceļu uz mērķa pozīciju. Tā vietā tā mēģinās ceļus, kuriem vai nu nav šķēršļu, vai ceļus, kas vēl nav pārbaudīti attiecībā uz šķēršļiem.

Robots kustēsies ar diviem līdzstrāvas motoriem un diviem ritentiņiem. Motori tiks piestiprināti apaļas platformas apakšai. Motorus vadīs divi motoru vadītāji. Motora draiveri saņems PWM komandas no Zynq procesora. Katra motora kodētāji tiek izmantoti, lai izsekotu transportlīdzekļa stāvoklim un orientācijai. Visa sistēma tiks darbināta ar LiPo akumulatoru.

1. darbība: transportlīdzekļa salikšana

Transportlīdzekļa salikšana
Transportlīdzekļa salikšana
Transportlīdzekļa salikšana
Transportlīdzekļa salikšana
Transportlīdzekļa salikšana
Transportlīdzekļa salikšana
Transportlīdzekļa salikšana
Transportlīdzekļa salikšana

Robotu darbina divi motori, kas piestiprināti pie sānu riteņiem, un to papildus atbalsta divi ritentiņi - viens priekšpusē un otrs aizmugurē. Platforma un motora stiprinājumi tika izgatavoti no alumīnija lokšņu metāla. Riteņu piestiprināšanai pie motora tika iegādāts motora rumbas. Tomēr bija jāizgatavo pielāgots starpposma savienojums, jo rumbas caurumu raksts atšķīrās no riteņa caurumu raksta.

Izvēlētais motors bija Port Escap 12V līdzstrāvas motors ar iebūvētiem kodētājiem. Šo motoru var iegādāties ebay par ļoti saprātīgu cenu (skat. Materiālu sarakstu). Meklējiet atslēgvārdus “12V Escap 16 Coreless Geared DC Motor with Encoders” ebay, lai atrastu motoru. Parasti ir diezgan daudz pārdevēju, no kuriem izvēlēties. Motoru specifikācijas un kontakti ir parādīti zemāk esošajās diagrammās.

Robota montāža sākās ar šasijas CAD modeli. Zemāk redzamais modelis parāda šasijai paredzētā 2D formas profila augšējo skatu.

Šasiju ieteicams veidot kā 2D profilu, lai to varētu viegli izgatavot. Izmantojot ūdens strūklas griezēju, mēs izgriezām 12”X12” alumīnija loksni šasijas formā. Šasijas platformu varēja sagriezt arī ar lentzāģi.

2. solis: Motoru montāža

Montāžas motori
Montāžas motori
Montāžas motori
Montāžas motori

Nākamais solis ir motora stiprinājumu izgatavošana. Motoru stiprinājumus ieteicams izgatavot no 90 grādu lokšņu metāla alumīnija. Izmantojot šo daļu, motoru var piestiprināt konsolei uz vienas lokšņu metāla virsmas, izmantojot abas

Motora M2 caurumus un otru virsmu var pieskrūvēt pie platformas. Motora stiprinājumā ir jāizurbj caurumi, lai ar skrūvēm varētu piestiprināt motoru pie motora stiprinājuma un motora stiprinājumu uz platformas. Motora stiprinājumu var redzēt attēlā iepriekš.

Tālāk uz motora vārpstas tiek novietots Pololu motora rumbas skats (skatiet materiālu sarakstu) un pievelciet ar komplektā esošo skrūvi un sešstūra atslēgu. Pololu motora rumbas caurumu raksts neatbilst VEX riteņa caurumu modelim, tāpēc ir jāizveido pielāgots starpposma savienojums. Ieteicams savienotāja izgatavošanai izmantot metāllūžņus no alumīnija, ko izmantoja šasijas platformas izgatavošanai. Šī pāra caurumu modelis un izmēri ir parādīti attēlā zemāk. Pielāgota alumīnija savienojuma ārējam diametram un formai (nav jābūt aplim) nav nozīmes, ja vien uz detaļas ir visi caurumi.

3. darbība: Vivado bloka dizaina izveide

Vivado bloku dizaina veidošana
Vivado bloku dizaina veidošana
Vivado bloku dizaina veidošana
Vivado bloku dizaina veidošana

- Sāciet, izveidojot jaunu Vivado projektu un kā mērķa ierīci izvēlieties Zybo Zynq 7000 Z010.

- Pēc tam noklikšķiniet uz izveidot jaunu bloku dizainu un pievienojiet Zynq IP. Veiciet dubultklikšķi uz Zynq IP un importējiet Zynq nodrošinātos XPS iestatījumus. Pēc tam cilnē MIO konfigurācijas iespējojiet UART0 ar MIO 10..11, kā arī pārliecinieties, vai ir iespējots taimeris 0 un Watchdog taimeris.

- Pievienojiet bloka dizainam divus AXI GPIOS. GPIO 0 iespējojiet divkanālu un iestatiet abas uz visām izejām. Iestatiet GPIO platumu kanālam no 1 līdz 4 bitiem un kanālam no 2 līdz 12 bitiem, šie kanāli tiks izmantoti, lai iestatītu motora virzienu un nosūtītu kodētāja izmērīto ērču daudzumu uz procesoru. GPIO 1 iestatiet tikai vienu kanālu visām ieejām ar kanāla platumu 4 biti. Tas tiks izmantots, lai saņemtu datus no kodētājiem. Padariet visus GPIO portus ārējus.

- Nākamais Pievienojiet divus AXI taimerus. Padariet abu taimeru pwm0 portus ārējus. Tie būs pwms, kas kontrolē motoru rotācijas ātrumu.

- Visbeidzot palaidiet bloku automatizāciju un savienojumu automatizāciju. Pārbaudiet, vai jūsu bloka dizains atbilst norādītajam.

4. darbība. Saziņa ar LiDAR

Šis LiDAR izmanto SCIP 2.0 protokolu, lai sazinātos, izmantojot UART, pievienotais fails apraksta visu protokolu.

Lai sazinātos ar LiDAR, mēs izmantosim UART0. LiDAR atgriež 682 datu punktus, kas katrs attēlo attālumu līdz objektam šajā leņķī. LiDAR skenē pretēji pulksteņrādītāja virzienam no -30 grādiem līdz 210 grādiem ar 0,351 grādu soli.

- Visa saziņa ar LiDAR tiek veikta ar ASCI rakstzīmēm, skatiet SCIP protokolu izmantotajam formātam. Mēs sākam, nosūtot komandu QT, lai ieslēgtu LiDAR. Pēc tam mēs vairākas reizes nosūtām GS komandu, pieprasot 18 datu punktus vienlaikus uz ft UARTS 64 baitu FIFO. Pēc tam no LiDAR atgrieztie dati tiek parsēti un saglabāti SCANdata globālajā masīvā.

- Katrs uzglabātais datu punkts ir 2 baiti kodētu datu. Ievadot šos datus dekodētājā, tiks atgriezts attālums milimetros.

Failā main_av.c jūs atradīsit šādas funkcijas, lai sazinātos ar LiDAR

sendLIDARcmd (komanda)

- Tas ievades virkni nosūtīs LiDAR caur UART0

recvLIDARdata ()

- Tas saņems datus pēc komandas nosūtīšanas uz LiDAR un saglabās datus RECBuffer

requestDistanceData ()

- Šī funkcija nosūtīs virkni komandu, lai izgūtu visus 682 datu punktus. Pēc katras 18 datu punktu kopas saņemšanas tiek izsaukta parseLIDARinput (), lai parsētu datus un pakāpeniski saglabātu datu punktus SCANdata.

5. solis: režģa aizpildīšana ar šķēršļiem

Režģa aizpildīšana ar šķēršļiem
Režģa aizpildīšana ar šķēršļiem
Režģa aizpildīšana ar šķēršļiem
Režģa aizpildīšana ar šķēršļiem

Saglabātais GRID ir 2D masīvs, un katra indeksa vērtība apzīmē atrašanās vietu. Katrā rādītājā saglabātie dati ir attiecīgi 0 vai 1, bez šķēršļiem un šķēršļiem. Katra indeksa attēloto kvadrātveida attālumu milimetros var mainīt ar GRID_SCALE definīciju failā vehicle.h. 2D masīva lielumu var arī mainīt, lai transportlīdzeklis varētu skenēt lielāku laukumu, mainot GRID_SIZE definīciju.

Pēc tam, kad no LiDAR tiek skenēta jauna attāluma datu kopa, tiek izsaukts updateGrid (). Tas atkārtos katru datu punktu, kas saglabāts SCANdata masīvā, lai noteiktu, kuriem tīkla indeksiem ir šķēršļi. Izmantojot transportlīdzekļa pašreizējo orientāciju, mēs varam noteikt leņķi, kas atbilst katram datu punktam. Lai noteiktu, kur atrodas šķērslis, vienkārši reiziniet atbilstošo attālumu ar leņķa cos/sin. Pievienojot šīs divas vērtības transportlīdzekļu pašreizējai x un y pozīcijai, tiks parādīts rādītājs šķēršļa režģī. Sadalot ar šo darbību atgriezto attālumu ar GRID_SCALE, varēsim mainīt katra indeksa kvadrātveida attālumu.

Iepriekš redzamajos attēlos redzama transportlīdzekļu pašreizējā vide un no tā izrietošais režģis.

6. darbība. Saziņa ar motoriem

Lai sazinātos ar motoriem, mēs sākam GPIO inicializēšanu, lai vadītu motoru. Pēc tam rakstīšana tieši uz PWM bāzes adresi AXI taimerī ļauj mums iestatīt tādas lietas kā periodu un darba ciklu, kas tieši kontrolē ātrumu, kurā motors griežas.

7. solis: ceļa plānošana

Jāīsteno tuvākajā laikā.

Izmantojot iepriekš aprakstīto režģa un motora funkcionalitāti, ir ļoti viegli ieviest tādus algoritmus kā A*. Kad transportlīdzeklis pārvietojas, tas turpinās skenēt apkārtni un noteikt, vai ceļš, pa kuru tas atrodas, joprojām ir derīgs

Ieteicams: