Talaan ng mga Nilalaman:

Awtomatikong Sasakyan: 7 Hakbang (na may Mga Larawan)
Awtomatikong Sasakyan: 7 Hakbang (na may Mga Larawan)

Video: Awtomatikong Sasakyan: 7 Hakbang (na may Mga Larawan)

Video: Awtomatikong Sasakyan: 7 Hakbang (na may Mga Larawan)
Video: 10 самых АТМОСФЕРНЫХ мест Дагестана. БОЛЬШОЙ ВЫПУСК #Дагестан #ПутешествиеПоДагестану 2024, Nobyembre
Anonim
Awtomatikong Sasakyan
Awtomatikong Sasakyan
Awtomatikong Sasakyan
Awtomatikong Sasakyan

Ang proyektong ito ay isang autonomous na pag-navigate sa robot na sumusubok na maabot ang posisyon ng layunin habang iniiwasan ang mga hadlang sa paraan nito. Ang robot ay lalagyan ng isang sensor ng LiDAR na gagamitin upang makita ang mga bagay sa paligid nito. Habang ang mga bagay ay napansin at ang robot ay gumagalaw, ang isang real time map ay maa-update. Gagamitin ang mapa upang mai-save ang mga lokasyon ng mga hadlang na nakilala. Sa ganitong paraan, hindi muling susubukan ng robot ang isang nabigong landas sa posisyon ng layunin. Susubukan nito sa halip ang mga landas na alinman sa walang mga hadlang o landas na hindi pa nasusuri para sa mga hadlang.

Ang robot ay lilipat ng dalawang DC motor driven driven at dalawang caster wheel. Ang mga motor ay ikakabit sa ilalim ng isang pabilog na platform. Ang motor ay makokontrol ng dalawang mga driver ng motor. Ang mga driver ng motor ay makakatanggap ng mga utos ng PWM mula sa Zynq Processor. Ang mga encoder sa bawat motor ay ginagamit upang subaybayan ang posisyon at oryentasyon ng mga sasakyan. Ang buong system ay pinapagana ng isang baterya ng LiPo.

Hakbang 1: Pag-iipon ng Sasakyan

Pag-iipon ng Sasakyan
Pag-iipon ng Sasakyan
Pag-iipon ng Sasakyan
Pag-iipon ng Sasakyan
Pag-iipon ng Sasakyan
Pag-iipon ng Sasakyan
Pag-iipon ng Sasakyan
Pag-iipon ng Sasakyan

Ang robot ay pinalakas ng dalawang mga motor na nakakabit sa mga gulong sa gilid at pagkatapos ay karagdagan na sinusuportahan ng dalawang mga gulong ng caster, isa sa harap at isa sa likuran. Ang platform at mga motor mount ay gawa sa sheet metal na Aluminium. Isang motor hub ang binili upang ikabit ang mga gulong sa motor. Gayunpaman, kailangang gawin ang isang pasadyang magkakaugnay na tagabitay sapagkat ang pattern ng butas ng hub ay naiiba kaysa sa pattern ng butas ng gulong.

Ang napiling motor ay isang motor na Port Escap 12V DC na may built in na mga encoder. Ang motor na ito ay maaaring mabili sa ebay para sa isang napaka-makatwirang presyo (tingnan ang Bill of Materials). Maghanap ng mga keyword na "12V Escap 16 Coreless Geared DC Motor na may Encoder" sa ebay upang makahanap ng motor. Karaniwan may isang patas na halaga ng mga nagbebenta upang pumili mula sa. Ang mga panoorin at pinout ng mga motor ay ipinapakita sa mga diagram sa ibaba.

Ang pagpupulong ng robot ay nagsimula sa isang CAD modeldesign ng tsasis. Ipinapakita ng modelo sa ibaba ang tuktok na pagtingin ng profile ng 2D na hugis na idinisenyo para sa tsasis.

Iminungkahi na ang chassis ay idisenyo bilang isang 2Dprofile upang madali itong makagawa. Pinutol namin ang isang 12 "X12" sheet ng Aluminium sa hugis ng chassis sa pamamagitan ng paggamit ng isang water-jet cutter. Ang platform ng chassis ay maaari ring i-cut gamit ang isang band saw.

Hakbang 2: Mga Mabilis sa Pag-mount

Tumataas na Motors
Tumataas na Motors
Tumataas na Motors
Tumataas na Motors

Ang susunod na hakbang ay ang pag-mount ng motor. Iminungkahi na ang motor na naka-mount ay gawa sa 90-degree Sheet Metal Aluminium. Gamit ang bahaging ito, ang motor ay maaaring nakakabit na cantilever sa isang mukha ng sheet metal gamit ang dalawa

Ang mga butas ng M2 ng motor at ang iba pang mukha ay maaaring ma-bolt sa buong platform. Ang mga butas ay dapat na drilled sa motor mount upang ang mga turnilyo ay maaaring magamit upang i-fasten ang motor papunta sa motor mount at ang motor mount sa platform. Ang pag-mount ng motor ay makikita sa figure sa itaas.

Susunod na ang Pololu Motor Hub (tingnan ang Bill of Materials) ay nakalagay sa motor shaft at hinihigpit ng ibinigay na set na tornilyo at Allen wrench. Ang pattern ng butas ng Pololu motor hub ay hindi tumutugma sa pattern ng butas ng gulong VEX kaya dapat gawin ang isang pasadyang interplang tagabitna. Iminungkahi na ang scrap sheet metal na Aluminyo na ginamit upang gawin ang platform ng chassis ay maaaring magamit upang makagawa ng coupler. Ang pattern ng butas at sukat ng mag-asawang ito ay ipinapakita sa figure sa ibaba. Ang diameter at hugis sa labas (hindi kailangang maging isang bilog) ng pasadyang aluminyo na magkakabit ay hindi mahalaga hangga't ang lahat ng mga butas ay magkasya sa bahagi.

Hakbang 3: Lumilikha ng Disenyo ng Vivado Block

Lumilikha ng Disenyo ng Vivado Block
Lumilikha ng Disenyo ng Vivado Block
Lumilikha ng Disenyo ng Vivado Block
Lumilikha ng Disenyo ng Vivado Block

- Magsimula sa pamamagitan ng paglikha ng isang bagong proyekto ng Vivado at piliin ang Zybo Zynq 7000 Z010 bilang target na aparato.

- Susunod na pag-click sa lumikha ng bagong disenyo ng block, at idagdag ang Zynq IP. Mag-double click sa Zynq IP at i-import ang ibinigay na mga setting ng XPS para sa Zynq. Pagkatapos paganahin ang UART0 gamit ang MIO 10..11 sa ilalim ng tab ng mga pagsasaayos ng MIO, at siguraduhin din na ang Timer 0 at ang timer ng Watchdog ay pinagana.

- Magdagdag ng dalawang AXI GPIOS sa disenyo ng block. Para sa GPIO 0 paganahin ang dalawahang channel at itakda ang pareho sa lahat ng mga output. Itakda ang lapad ng GPIO para sa channel na 1 hanggang 4 na mga piraso at para sa channel 2 hanggang 12 na mga piraso, gagamitin ang mga channel na ito upang maitakda ang direksyon ng motor at ipadala ang dami ng mga tick na mga hakbang sa encoder sa processor. Para sa GPIO 1 magtakda lamang ng isang channel sa lahat ng mga input na may lapad na 4 na piraso ng channel. Gagamitin ito upang makatanggap ng data mula sa mga encoder. Gawing panlabas ang lahat ng mga port ng GPIO.

- Susunod Magdagdag ng dalawang Mga Timer ng AXI. Gawing panlabas ang pwm0 port sa parehong mga timer. Ito ang magiging pwms na kumokontrol sa bilis ng pag-ikot ng mga motor.

- Panghuli Patakbuhin ang pag-automate ng block at pag-aautomat ng koneksyon. I-verify na ang disenyo ng block na mayroon ka ay tumutugma sa ibinigay.

Hakbang 4: Nakikipag-usap sa LiDAR

Ang LiDAR na ito ay gumagamit ng isang SCIP 2.0 na protocol upang makipag-usap sa pamamagitan ng UART, inilalarawan ng nakalakip na file ang buong protocol.

Upang makipag-usap sa LiDAR gagamitin namin ang UART0. Ang LiDAR ay nagbabalik ng 682 data point bawat isa na kumakatawan sa distansya sa isang bagay sa anggulo na iyon. Ang LiDAR ay nag-i-counter kontra sa pakaliwa mula -30 degree hanggang 210 degree na may hakbang na 0.351 degree.

- Ang lahat ng komunikasyon sa LiDAR ay tapos na sa mga character na ASCI, sumangguni sa SCIP protocol para sa ginamit na format. Nagsisimula kami sa pamamagitan ng pagpapadala ng utos ng QT upang i-on ang LiDAR. Pagkatapos ay ipinadala namin ang utos ng GS nang maraming beses na humihiling ng 18 mga puntos ng data nang paisa-isa sa ft sa UARTS 64 byte FIFO. Ang data na bumalik mula sa LiDAR pagkatapos ay na-parse at nakaimbak sa SCANdata global array.

- Ang bawat data point na nakaimbak ay 2 bytes ng naka-encode na data. Ang pagpasa ng data na ito sa decoder ay magbabalik ng distansya sa millimeter.

Sa main_av.c file makikita mo ang mga sumusunod na pagpapaandar upang makipag-usap sa LiDAR

sendLIDARcmd (utos)

- Ipapadala nito ang input string sa LiDAR sa pamamagitan ng UART0

recvLIDARdata ()

- Makakatanggap ito ng data pagkatapos maipadala ang isang utos sa LiDAR at iimbak ang data sa RECBuffer

requestDistanceData ()

- Ang pagpapaandar na ito ay magpapadala ng isang serye ng mga utos upang makuha ang lahat ng 682 na mga puntos ng data. Matapos ang bawat hanay ng 18 mga puntos ng data ay natanggap parseLIDARinput () ay tinawag upang mai-parse ang data at dagdag na itabi ang mga puntos ng data sa SCANdata.

Hakbang 5: Populate Grid Sa Mga Hadlang

Populate Grid Sa Mga Hadlang
Populate Grid Sa Mga Hadlang
Populate Grid Sa Mga Hadlang
Populate Grid Sa Mga Hadlang

Ang GRID na nakaimbak ay isang 2D array kasama ang bawat halaga ng index na kumakatawan sa isang lokasyon. Ang data na nakaimbak sa bawat index ay alinman sa isang 0 o isang 1, Walang balakid at balakid ayon sa pagkakabanggit. Ang parisukat na distansya sa millimeter na kinakatawan ng bawat index ay maaaring mabago sa kahulugan ng GRID_SCALE sa file na sasakyan.h. Ang laki ng 2D array ay maaari ding iba-iba upang payagan ang sasakyan na mag-scan ng isang mas malaking lugar sa pamamagitan ng pagbabago ng kahulugan ng GRID_SIZE.

Matapos ang isang bagong hanay ng data ng distansya ay na-scan mula sa LiDAR updateGrid () ay tinawag. Ito ay uulit sa pamamagitan ng bawat data point na nakaimbak sa SCANdata array upang matukoy kung aling mga index sa grid ang may mga hadlang. Gamit ang kasalukuyang oryentasyon ng sasakyan maaari nating matukoy ang anggulo na tumutugma sa bawat data point. Upang matukoy kung saan ang isang balakid pagkatapos ay i-multiply mo lamang ang kaukulang distansya sa pamamagitan ng cos / sin ng anggulo. Ang pagdaragdag ng dalawang halagang ito sa kasalukuyang mga posisyon ng sasakyan at ibabalik ang posisyon sa index sa grid ng balakid. Ang paghati sa distansya na ibinalik ng pagpapatakbo na ito ng GRID_SCALE ay magpapahintulot sa amin na mag-iba kung gaano kalaki ang parisukat na distansya ng bawat index.

Ipinapakita ng mga larawan sa itaas ang mga kasalukuyang sasakyan ng kapaligiran at ang nagresultang Grid.

Hakbang 6: Pakikipag-usap sa Mga Motors

Upang makipag-usap sa mga motor na sinisimulan namin sa pamamagitan ng pagsisimula ng mga GPIO upang makontrol ang direksyon ng motor. At pagkatapos ay ang pagsusulat nang direkta sa pangunahing address ng mga PWM sa AXI Timer ay nagbibigay-daan sa amin upang itakda ang mga bagay tulad ng panahon at ang Duty cycle na direktang kontrolin ang bilis ng motor paikutin sa.

Hakbang 7: Pagpaplano ng Landas

Ipapatupad sa malapit na hinaharap.

Ang paggamit ng grid at pag-andar ng motor na dating inilarawan, napakadaling ipatupad ang mga algorithm tulad ng A *. Habang gumagalaw ang sasakyan magpapatuloy itong i-scan ang nakapalibot na lugar at matukoy kung ang landas na ito ay nasa wasto pa rin

Inirerekumendang: