Talaan ng mga Nilalaman:

Buuin ang Iyong Sariling Kotse na Nagmamaneho ng Sarili - (Ang Naituturo Na Ito ay Gumagawa sa Proseso): 7 Mga Hakbang
Buuin ang Iyong Sariling Kotse na Nagmamaneho ng Sarili - (Ang Naituturo Na Ito ay Gumagawa sa Proseso): 7 Mga Hakbang

Video: Buuin ang Iyong Sariling Kotse na Nagmamaneho ng Sarili - (Ang Naituturo Na Ito ay Gumagawa sa Proseso): 7 Mga Hakbang

Video: Buuin ang Iyong Sariling Kotse na Nagmamaneho ng Sarili - (Ang Naituturo Na Ito ay Gumagawa sa Proseso): 7 Mga Hakbang
Video: 3-часовой марафон паранормальных и необъяснимых историй 2024, Nobyembre
Anonim
Image
Image

Kamusta, Kung titingnan mo ang aking iba pang Instructable sa Drive Robot With Remote USB Gamepad, ang proyektong ito ay pareho, ngunit sa isang mas maliit na sukat. Maaari mo ring sundin o makakuha ng ilang tulong o inspirasyon mula sa mga Robotics, Pagkilala sa Boses na Lumaki sa Bahay, o mga playlist ng Car na Pagmamaneho ng Sarili sa Youtube.

Nagsimula ako sa malaking robot (Wallace 4), ngunit mula nang magsimula ako ng isang lokal na grupo ng Meetup, kailangan ko ng isang bagay sa isang mas maliit na sukat, at ang pangkat ay interesado sa paningin sa computer.

Kaya naranasan ko ang kursong Udemy na ito: Bumuo ng Iyong Sariling Kotse na Nagmamaneho sa Sarili na nagbigay sa akin ng ideya para sa proyektong ito.

Kung interesado ka sa kursong Udemy, maaari mong panatilihing suriin muli doon; ito ay nabebenta para sa isang malaking diskwento paminsan-minsan. Tandaan: mayroong Bahagi 1 at Bahagi 2 - kailangan mong gumawa ng ilang pagsisiyasat sa kung paano makuha ang dalawang kurso bilang pakete (may diskwento).

Ang layunin ng pagtuturo na ito ay dalawang beses. Una, upang magbigay ng ilang mga payo at kahalili sa ilang mga bahagi ng kurso (tulad ng mga bahagi at hardware). At pangalawa, upang mapalawak ang kurso.

Ang pangunahing layunin ng kurso sa Udemy:

ay upang makakuha ng isang maliit na gulong robot na kotse upang mai-drive sa sarili sa isang naka-scale na dalawang daang linya.

Kailangang kilalanin ang mga guhitan ng linya, at kung nakarating na sa dulo ng kalsada.

Kailangang makilala nito ang isang stop sign (at itigil).

Gayundin, isang PULA at GREEN na signal ng trapiko.

Dapat din itong makilala at maneuver sa paligid ng isang balakid (ibang kotse).

Ano ang maidaragdag ng Instructable na ito sa kurso:

Magmaneho ng maliit na kotse gamit ang isang remote USB Gamepad, katulad ng sa ibang Instructable na ito.

Magbigay ng ilang mga kahalili sa ibinibigay ng kurso.

Maaaring hindi mo na kailangang bumili ng kurso:

Maaaring maituturo ito sa lahat ng kailangan mo upang makapagsimula.

Mga gamit

Ang mahahalagang (iminungkahing) bahagi:

Isang chassis ng robot

Apat na motor

Arduino

Raspberry Pi (3, 3B +, 4)

Camera (USB Webcam, o module ng Picamera)

Lakas ng baterya

Mga switch na On / Off

jumper wires

stand-off (plastik at baka metal din)

Mangyaring suriin ang buong Instructable at pati na rin ang mga video bago subukang bumili ng mga bahagi.

Matapos magawa ang proyektong ito, napagtanto ko na ang eksaktong mga bahagi ay hindi ganon kritikal.

Hakbang 1: Higit pang Mga Detalye Tungkol sa Mga Bahagi…

Image
Image
Higit pang Mga Detalye Tungkol sa Mga Bahagi…
Higit pang Mga Detalye Tungkol sa Mga Bahagi…
Higit pang Mga Detalye Tungkol sa Mga Bahagi…
Higit pang Mga Detalye Tungkol sa Mga Bahagi…

Ang nauugnay na video ay napupunta sa ilang detalye tungkol sa mga bahagi, at ilang mga isyu na nakita ko.

  • Tumingin sa paligid para sa iba't ibang mga chassis / motor
  • Ang mga motor ay dapat mayroon nang mga wire na na-solder sa kanila
  • Maaaring gusto mong magkaroon ng isang drill at drill bits, O isang chassis na may maraming butas
  • Tandaan na ang timbang ay isang isyu. Ang lahat ay dapat na kasing ilaw hangga't maaari.
  • Ang driver ng motor na L298 H-Bridge ay gumagana nang mahusay. TANDAAN: kumuha ng isa gamit ang mga block terminal ng tornilyo (tingnan ang larawan)
  • Marahil ay gugustuhin mo ang parehong mga standoff ng plastik at metal, ang laki ng M3 ay marahil ang pinakamahusay na pagpipilian.

Ang mga standoff ng plastik ay mabuti para sa pag-mount ng mga board papunta sa chassis (driver ng motor, Arduino, Raspberry, power pcb, on / off switch, atbp).

Ang mga standoff ng metal ay mabuti para sa pag-assemble ng chassis (lakas), at lalo na rin kapag nagkakaroon ka (pag-program, pagsubok). Para sa pag-unlad, ang mga metal standoff ay maaaring magsilbing stilts. Tulad ng kung nagtatrabaho ka sa isang totoong kotse, nais mong itaas ang kotse upang ang mga gulong ay nasa hangin at malayang makagalaw. Ito ay napakahalaga! Magagawa kang mga pagkakamali at hindi mo nais na mag-alis lamang ang kotse at mag-crash.

Mag-drill + drill bits

Nais kong bigyang-diin ang paggamit ng isang drill, kung magagawa mo, at paggamit ng mga standoff sa halip na dobleng panig na malagkit na tape. Malamang na magtatapos ka sa pag-alis at muling pagpoposisyon ng iyong mga board, atbp, nang maraming beses sa panahon ng proyektong ito, at ang paggamit ng tape ay naging napaka magulo.

Ginagamit ang paggamit ng drill na napakadaling muling posisyon (lalo na kung ang tsasis ay plastik) at mukhang mas propesyonal ito.

Hakbang 2: Pagpapatakbo ng Kotse Sa Pag-unlad

Pagpapatakbo ng Kotse Sa Pag-unlad
Pagpapatakbo ng Kotse Sa Pag-unlad
Pagpapatakbo ng Kotse Sa Pag-unlad
Pagpapatakbo ng Kotse Sa Pag-unlad

Sa palagay ko, ang pinakamabilis, pinakamadaling paraan upang makapagsimula sa proyektong ito, ay:

  • para sa software Arduino sketch development, ikonekta lamang ang Arduino sa iyong computer sa pamamagitan ng USB
  • para sa software na Raspberry Pi, dapat kang magkaroon ng isang 5V USB power na maaaring magbigay ng hindi bababa sa 3 Amps. At dapat itong magkaroon ng isang on / off switch. Maliban kung mayroon kang isang mahusay, pinalakas na USB hub na konektado sa iyong computer, marahil ay hindi mo magagawang i-power ang Raspberry nang direkta mula sa iyong computer.
  • Para kapag handa ka nang subukan ang mga motor / gulong, ang pinakamadali ay (tingnan ang larawan) isang mahusay na supply ng kuryente. Gayunpaman, ang mga iyon ay hindi mura.

Ang punto ko sa seksyong ito ay upang sabihin na hindi mo nais na gumamit ng lakas ng baterya sa panahon ng pag-unlad, sapagkat lubos na babagal ang iyong pag-unlad.

Gayundin, sa pamamagitan ng paggawa ng isang bagay na katulad sa mga mungkahi sa itaas, hindi mo kailangang mag-alala (pa) tungkol sa eksaktong kung paano mo papalakasin ang kotse. Maaari mong antalahin ang desisyon na iyon sa ibang pagkakataon sa proyekto.

Hakbang 3: Pagpapatakbo ng Kotse Sa panahon ng Aktwal na Paggamit

Pagpapatakbo ng Kotse Sa panahon ng Aktwal na Paggamit
Pagpapatakbo ng Kotse Sa panahon ng Aktwal na Paggamit
Pagpapatakbo ng Kotse Sa panahon ng Aktwal na Paggamit
Pagpapatakbo ng Kotse Sa panahon ng Aktwal na Paggamit

Kung magpasya kang sundin ang kurso (o kung ano ang nagawa ko) para sa 5V na lakas sa lohika, pagkatapos ay magkaroon ng kamalayan na hindi lahat ng 5V USB powerbanks ay mabuti para sa proyektong ito.

Ang pangunahing punto dito ay kailangan mo ng 5V ngunit kailangan mo ng hindi bababa sa 3 Amps! Isipin ito sa ganitong paraan - nais mo ng isang powerbank na magpapalakas sa isang laptop computer (marahil).

Kung nakatira ka sa U. S. A. Sa palagay ko ang isa sa mga pinakamahusay na paraan upang magawa ito ay upang bumili mula sa Best Buy. Bakit? Dahil sa kanilang 14-araw na patakaran sa pagbabalik ng pera para sa mga pagbabalik.

Talagang kailangan kong subukan ang tatlong magkakaibang mga powerbank bago ko makita ang isa na gagana. Ang iba pang mga sanhi upang magreklamo ang Raspberry Pi tungkol sa ilalim ng boltahe.

Nagsimula ako sa hindi gaanong mamahaling powerbank, at patuloy na sinusubukan ang susunod na modelo (na nagkakahalaga ng higit pa), hanggang sa makita ko ang isa na gumana.

Paano pinapagana ang Arduino

Sa kurso na Udemy, pinili ng may-akda na paandarin ang Arduino nang direkta mula sa powerbank (sa pamamagitan ng isang pasadyang pcb na ginawa niya) at ginamit niya ang mga power pin sa konektor ng GPIO ng Arduino.

Gayunpaman, pinili ko na lamang ang lakas ng Arduino nang direkta mula sa Raspberry Pi, sa pamamagitan ng USB cable.

Magpapasya ka kung alin ang mas mabuti.

Paano paandarin ang motor / driver ng motor

Sa kurso na Udemy, pinili ng may-akda na paandarin ang mga motor / driver nang direkta mula sa 5V powerbank. Mayroong dalawang pagsasaalang-alang kung gagamitin mo ang diskarte na iyon.

  1. Kapag ang mga motor ay unang nagsimulang lumiko, iginuhit nila ang pinaka kasalukuyang. Maaari itong (ay) maging sanhi ng lumubog ang boltahe ng kuryente (isawsaw) sa ibaba 5V, at maging sanhi ng pag-reset ng Raspberry.
  2. Ang paggamit lamang ng 5V upang mapagana ang mga motor ay nangangahulugang hindi ka nagbibigay ng mas maraming lakas hangga't maaari sa mga motor, at ang sasakyan ay mas mabagal (mas mabagal). Nasubukan ko na ang mga motor (kasama ang power supply na iyon) (tingnan ang larawan) hanggang sa 9V man lang. Nagtatrabaho sila ng maayos sa 9V.

Mga pagmamasid tungkol sa 9V (o higit pa)

Kung tiningnan mo ang lahat ng mga larawan at video para sa Instructable na ito, napansin mo na nagtipon ako ng isang pasadyang PCB upang lumikha ng aking sariling mapagkukunang 9V na kuryente. Natutunan ko ang ilang mga bagay sa daan.

Sa ngayon gumagamit ako ng maraming (3) 9V na mga cell ng baterya nang kahanay, upang mapagana ang mga motor. Gumamit ako ng parehong mga alkalina at NiMH na rechargeable na baterya.

Karanasan sa Pag-aaral # 1: Matagal (maraming oras) upang maayos na singilin ang mga baterya ng NiMH 9V.

Posibleng Solusyon: Mamuhunan sa isang multi-baterya na charger ng NiMH. Dapat itong isang "matalinong" charger.

Dehado: Hindi sila magastos.

Karanasan sa Pag-aaral # 2: 9V na mga baterya ay talagang binubuo ng maraming maliliit na panloob na mga cell. Kung ang isa sa mga cell ay namatay, ang buong baterya ay walang silbi. HINDI ako nagkaroon ng problemang ito, ngunit nabasa ko ang tungkol dito.

Karanasan sa Pag-aaral # 3: Hindi lahat ng 9V na baterya ay pareho ang boltahe. Ang isang ito ay mahalaga. Dahil mas mataas ang boltahe, mas posible ang mas maraming bilis. Ang ilang mga cell ng baterya (at charger) ay 8.4V lamang. Ang ilan kahit na mas mababa. Ang ilan ay 9.6V.

Karanasan sa Pag-aaral # 4: 9V na mga baterya, partikular ang NiMH, ay magaan ang timbang. Magandang bagay. Gayunpaman, karamihan sa kanila ay nagbibigay lamang ng mA ng kasalukuyang output. Iyon ang dahilan kung bakit kailangan kong ilagay ang mga ito sa kahanay. Kailangan mo ng isang kabuuang kasalukuyang kapasidad ng halos 2 Amps, kahit na para sa maikling panahon.

Karanasan sa Pag-aaral # 5: Mayroong 9.6V na mga pack ng baterya, ginagamit para sa mga bagay tulad ng mga kotseng kinokontrol ng radyo. Hindi ko pa nagamit ang isa, ngunit naniniwala akong nagbibigay sila ng mas maraming kasalukuyang kaysa sa paggawa ng mga parallel na 9V na baterya tulad ng ginawa ko. Gayundin, maaari mong singilin ang solong yunit. Ang mga pack ay may iba't ibang laki. At mayroong isang pagsasaalang-alang sa timbang. At pagkatapos, ginagamit mo ba ang pack upang mapagana ang buong kotse, o ang mga motor lamang? Kung para sa buong kotse, kakailanganin mo ng isang 5V step-down regulator para sa Raspberry Pi.

Ang L298 H-Bridge ay may kakayahang maglabas ng 5V para sa hangaring ito, ngunit nag-aalala ako tungkol sa kung magkano ang kasalukuyang maaaring magawa para sa Raspberry Pi, at kung ito ay magiging labis na pilay sa L298 board.

Kung magpasya kang magkaroon ng dalawang magkakahiwalay na mapagkukunan ng kuryente, maaari kang magkaroon ng isyu sa timbang (masyadong mabigat).

Hakbang 4: Programming ng Software para sa Pagmamaneho ng Gamepad

Sa palagay ko nasakop ko ang maraming seksyon na ito sa Robot Driven Via Remote USB Gamepad Instructable, kaya hindi ko na ulitin ito.

Ang mga seksyon ng programa / software sa ibang Instructable ay isang mungkahi lamang. Sa palagay ko matututo pa ang isa sa pamamagitan ng trial-and-error.

Hakbang 5: Pagdaragdag ng isang Camera

Pagdaragdag ng isang Camera
Pagdaragdag ng isang Camera
Pagdaragdag ng isang Camera
Pagdaragdag ng isang Camera
Pagdaragdag ng isang Camera
Pagdaragdag ng isang Camera

Sa kurso na Udemy, naniniwala akong gumagamit ang may-akda ng mga bilog na kahoy na dowel at isang pandikit na baril upang makabuo ng isang paraan upang maiangat ang camera.

Gusto mong itaas ang camera upang tumingin ito pababa sa dalawang-linya na kalsada, upang mas madaling makilala ang mga linya.

Kung saan ako nakatira sa U. S. A., ang mga kahoy na dowel ay masyadong mura. Maaari kang bumili ng mga ito sa alinman sa Lowe's o Home Depot. Pinili ko ang mga parisukat na dowel sa halip na mga bilog na dowel.

Pinili ko ring gumawa ng isang mas matatag na base para sa camera tower, at ginawa kong matanggal ang buong tower mula sa kotse, upang makapaglaro ako at mag-eksperimento sa kung ano ang pinakamahusay na posisyon para sa kotse.

Gayundin, ginawa ko ang tore na may ideya na magsisimula ako sa isang USB webcam, ngunit posibleng sa paglaon ay magpatuloy sa paggamit ng module na Picamera.

Maaaring gusto mong mamuhunan sa isang camera na uri ng isda-mata.

Bumili ako ng isang napaka-murang hot glue gun, ngunit nais kong palakasin ang base ng tower nang mas mahusay, kaya't nag-pre-drill ako ng ilang mga tornilyo-butas at nagdagdag ng mga turnilyo upang mas mahusay na maihawak ang lahat.

Pagkatapos ay isinuko ko ang base sa chassis ng kotse.

Kung sa paglaon, nais kong ilipat ang mga bagay sa paligid, tinatanggal ko lang ang base mula sa chassis, mag-drill ng mga bagong butas sa bagong lokasyon ng chassis, at muling i-bolt ang tore papunta sa chassis.

Dinala ko ang "follow-me" Python at Node.js code mula sa malaking robot (Wallace Robot 4) bilang isang paraan upang subukan ang lahat. Mangyaring tingnan ang mga larawan sa seksyong ito para sa listahan ng mga youtubes na nagbibigay ng maraming karagdagang detalye tungkol sa "follow-me".

Tulad ng nabanggit ko, mas madaling i-mount muna ang isang USB webcam. Mamaya maaari kong mai-mount ang module ng Picamera.

Hakbang 6: Pagkilala sa Mukha - Tukuyin ang Posisyon

Image
Image

Ang bahaging ito ay hindi ang pokus ng kurso sa Udemy, ngunit ito ay isang masayang ehersisyo.

Kung gumawa ka ng ilang paghahanap sa web para sa "python opencv face pagkilala", mahahanap mo ang maraming magagandang halimbawa sa kung paano ito gawin, at lahat sila ay sumusunod sa parehong mga hakbang.

  1. i-load ang "haar" na file ng mukha
  2. ipasimula ang camera
  3. magsimula ng isang loop kung saan kumuha ka ng isang frame
  4. i-convert ang kulay ng imahe sa kulay-abo
  5. pakainin ito sa opencv upang makahanap ito ng (mga) mukha
  6. simulan ang isang panloob na loop (para sa bawat mukha na natagpuan) (sa aking kaso, nagdaragdag ako ng code upang maibawas kung higit sa 1 mukha)

Para sa hangaring ito dito, kapag nakakita kami ng isang mukha, alam namin ang X, Y, W, at H ng haka-haka na parisukat na nagbabalangkas sa mukha.

Kung nais mo ang robot na sumulong o paatras, dapat mo lamang isaalang-alang ang W. Kung ang W ay masyadong malaki (masyadong malapit), magpatakbo ng robot pabalik. Kung ang W ay masyadong maliit (masyadong malayo), magpatuloy ang robot.

Ang kaliwa / kanang kilusan ay medyo mas kumplikado ngunit hindi mabaliw. Tingnan ang imahe para sa seksyong ito na nagdedetalye kung paano matukoy ang kaliwa kumpara sa kanang posisyon ng mukha.

TANDAAN:

Kung nagpapatakbo ka ng anuman sa mga halimbawa ng OpenCV sa web, ipinapakita nilang lahat ang aktwal na pagtingin sa kung ano ang "nakikita" ng opencv, na may nakabalangkas na mukha sa isang parisukat. Kung mapapansin mo, ang parisukat na iyon ay hindi matatag (pare-pareho), kahit na hindi ka gumagalaw.

Ang mga nagbabagong halaga na iyon ay magiging sanhi ng robot na patuloy na gumalaw, pasulong o pabalik, kaliwa o kanan.

Sa gayon, kakailanganin mong magkaroon ng isang uri ng delta para sa parehong pasulong / likod at para sa kaliwa / kanan.

Kumaliwa tayo kumpara sa kanan:

Kapag nakalkula mo na ang kaliwa, at kanan, pagkatapos makuha ang pagkakaiba (delta):

delta = abs (kaliwa - kanan)

Kailangan mong kunin ang ganap dahil hindi mo alam kung alin ang magiging mas malaking bilang.

Pagkatapos ay nagdagdag ka ng ilang mga kondisyonal na code upang subukang ilipat lamang kung ang delta ay mas malaki kaysa sa ilang minimum.

Gagawin mo ang parehong bagay para sa forward vs back.

Hakbang 7: Posisyon sa Mukha - Moving Robot

Kapag nalaman mo na kailangan mo ang robot upang lumipat pakaliwa o pakanan, pasulong o pabalik, paano mo ito magagawa?

Dahil ang Instructable na ito ay isang proseso sa proseso, sa ngayon, kinopya ko lamang ang code mula sa aking malaking robot upang magamit para sa proyektong ito. Mangyaring suriin ang aking playlist ng Robotics sa youtube kung saan ito detalyado ang lahat ng ito.

Sa madaling sabi, mayroon akong code sa mga layer.

Ang script ng pagkilala sa mukha ng Python ay gumagawa ng mga kahilingan sa http sa Node.js server

Nakikinig ang server ng Node.js para sa mga kahilingan sa http para sa mga direksyon sa paglipat, pinapalitan ang mga iyon sa pasadyang serial protocol

Pasadyang serial protocol sa pagitan ng Node.js server at Arduino

Sketch ng Arduino na ginagawa ang aktwal na mga utos upang ilipat ang robot

Hindi ginagawa ng kurso na Udemy tulad ng nasa itaas. Ngunit dahil nais kong gumawa ng mahusay na pag-unlad at ituon ang aktwal na pagkilala sa imahe, ginamit ko ulit ang dati kong code sa ngayon.

Inirerekumendang: