Kazalo:

Zgradite lasten avtomobil, ki se vozi - (ta navodila so v postopku): 7 korakov
Zgradite lasten avtomobil, ki se vozi - (ta navodila so v postopku): 7 korakov

Video: Zgradite lasten avtomobil, ki se vozi - (ta navodila so v postopku): 7 korakov

Video: Zgradite lasten avtomobil, ki se vozi - (ta navodila so v postopku): 7 korakov
Video: Я работаю в Страшном музее для Богатых и Знаменитых. Страшные истории. Ужасы. 2024, Julij
Anonim
Image
Image

Zdravo, Če pogledate mojega drugega robota z možnostjo poučevanja na pogonu z oddaljeno igralno ploščo USB, je ta projekt podoben, vendar v manjšem obsegu. Prav tako lahko spremljate ali dobite pomoč ali navdih iz seznamov predvajanja Robotics, Home -rowwn-Recognition Voice ali Self-Driving Car playlists na Youtube.

Začel sem z velikim robotom (Wallace 4), a ker sem ustanovil lokalno skupino Meetup, sem potreboval nekaj manjšega obsega in skupino je zelo zanimal računalniški vid.

Tako sem naletel na tečaj Udemy: Build Your Own Self-Driving Car, ki mi je dal idejo za ta projekt.

Če vas zanima tečaj Udemy, lahko še naprej preverjate; od časa do časa gre v prodajo z velikim popustom. Opomba: obstajata 1. in 2. del - morate raziskati, kako dva tečaja dobiti kot paket (s popustom).

Namen tega navodila je dvojen. Najprej podajte nekaj napotkov in alternativ za določene dele tečaja (na primer dele in strojno opremo). In drugič, razširiti tečaj.

Glavni namen tečaja Udemy:

je omogočiti, da se majhen avtomobil na kolesih sam pripelje po pomanjšani dvopasovni cesti.

Prepoznati mora pasove in ko pride do konca ceste.

Prepoznati mora znak stop (in stop).

Tudi rdeča in zelena prometna signalizacija.

Prav tako mora prepoznati in manevrirati okoli ovire (drug avto).

Kaj ta Instructable doda tečaju:

Avtomobil vozite z oddaljenim igralnim vmesnikom USB, podobno kot v tem drugem navodilu.

Dajte nekaj alternativ temu, kar ponuja tečaj.

Tečaja vam morda niti ne bo treba kupiti:

Ta navodila vam bodo morda vse, kar potrebujete za začetek.

Zaloge

Bistveni (predlagani) deli:

Podvozje robota

Štirje motorji

Arduino

Raspberry Pi (3, 3B+, 4)

Kamera (spletna kamera USB ali modul Picamera)

Napajanje baterije

Stikala za vklop/izklop

mostične žice

zastoji (plastični in morda tudi kovinski)

Preden kupite dele, preglejte celoten Instructable in tudi videoposnetke.

Po tem projektu se zavedam, da natančni deli niso tako kritični.

Korak: Več podrobnosti o delih …

Image
Image
Več podrobnosti o delih…
Več podrobnosti o delih…
Več podrobnosti o delih…
Več podrobnosti o delih…

Povezani videoposnetek podrobno opisuje dele in nekatere težave, ki sem jih našel.

  • Ozrite se po različnih šasijah / motorjih
  • Motorji bi morali že imeti spajkane žice
  • Morda boste želeli imeti sveder in svedre ali pa ohišje z več luknjami
  • Ne pozabite, da je teža težava. Vse mora biti čim lažje.
  • Gonilnik motorja L298 H-Bridge deluje odlično. OPOMBA: vzemite enega z vijačnimi sponkami (glejte fotografijo)
  • Verjetno boste želeli tako plastične kot kovinske razlike, velikost M3 je verjetno najboljša izbira.

Plastični izhodi so primerni za namestitev plošč na ohišje (gonilnik motorja, Arduino, Raspberry, napajalna plošča, stikalo za vklop/izklop itd.).

Kovinski izhodi so dobri za sestavljanje ohišja (trdnost), še posebej pa pri razvoju (programiranje, testiranje). Za razvoj lahko kovinska stojala služijo kot podboji. Tako kot če bi delali na pravem avtomobilu, ga želite dvigniti tako, da so kolesa v zraku in se lahko prosto gibljejo. To je zelo pomembno! Naredili boste napake in ne želite, da avto samo vzleti in trči.

Vrtalnik + svedri

Resnično želim poudariti uporabo vrtalnika, če lahko, in uporabo odmikov namesto dvostranskega lepilnega traku. Zelo verjetno boste med tem projektom večkrat odstranili in znova postavili plošče itd., Uporaba traku pa bo postala zelo grda.

Uporaba vrtalnika omogoča zelo enostavno ponovno namestitev (še posebej, če je ohišje plastično) in izgleda bolj profesionalno.

2. korak: Napajanje avtomobila med razvojem

Napajanje avtomobila med razvojem
Napajanje avtomobila med razvojem
Napajanje avtomobila med razvojem
Napajanje avtomobila med razvojem

Po mojem mnenju je najhitrejši in najlažji način za začetek tega projekta:

  • za razvoj programske opreme Arduino skice, samo povežite Arduino z računalnikom prek USB -ja
  • za programsko opremo Raspberry Pi bi morali imeti 5V USB napajanje, ki lahko napaja vsaj 3 ampere. In mora imeti stikalo za vklop/izklop. Razen, če nimate dobrega napajalnega zvezdišča USB, povezanega z računalnikom, maline verjetno ne boste mogli napajati neposredno iz računalnika.
  • Ko ste pripravljeni preizkusiti motorje/kolesa, je najlažje (glej fotografijo) dober napajalnik. Vendar pa niso poceni.

V tem razdelku želim povedati, da med razvojem ne želite uporabljati baterije, ker bo to močno upočasnilo vaš napredek.

Tudi, če naredite nekaj podobnega zgornjim predlogom, vam (še) ni treba skrbeti, kako natančno boste poganjali avto. To odločitev lahko odložite za pozneje v projektu.

3. korak: Napajanje avtomobila med dejansko uporabo

Napajanje avtomobila med dejansko uporabo
Napajanje avtomobila med dejansko uporabo
Napajanje avtomobila med dejansko uporabo
Napajanje avtomobila med dejansko uporabo

Če se odločite, da boste sledili tečaju (ali temu, kar sem naredil) za napajanje 5V po logiki, se zavedajte, da vse 5 -voltne napajalne enote USB niso dobre za ta projekt.

Glavna stvar tukaj je, da potrebujete 5V, vendar potrebujete vsaj 3 ampere! Pomislite na ta način - želite powerbank, ki bo napajal prenosni računalnik (morda).

Če živite v ZDA, mislim, da je eden najboljših načinov za to nakup pri Best Buy. Zakaj? Zaradi 14-dnevne politike vračila denarja.

Pravzaprav sem moral preizkusiti tri različne powerbanke, preden sem našel eno, ki bi delovala. Drugi povzročajo, da se Raspberry Pi pritožuje zaradi podnapetosti.

Začel sem z najcenejšim powerbankom in samo še naprej preizkušal naslednji model (ki je stal več), dokler nisem našel enega, ki je deloval.

Kako napajati Arduino

Na tečaju Udemy se je avtor odločil, da bo Arduino napajal neposredno iz powerbank (prek prilagojenega tiskalnika, ki ga je izdelal) in uporabil napajalne zatiče na priključku GPIO Arduina.

Odločil sem se, da bom Arduino napajal neposredno iz Raspberry Pi prek kabla USB.

Odločiti se boste morali, kaj je bolje.

Kako napajati motorje/gonilnik motorja

Na tečaju Udemy se je avtor odločil za napajanje motorjev/gonilnika neposredno iz 5V powerbank. Če uporabljate ta pristop, obstajata dva vidika.

  1. Ko se motorji prvič začnejo obračati, črpajo največji tok. To lahko (bo) povzročilo, da se napajalna napetost zniža (spusti) pod 5 V in povzroči ponastavitev maline.
  2. Če za napajanje motorjev uporabljate le 5 V, motorjem ne zagotavljate toliko moči, kot bi jih imeli, avto pa se bo premikal počasneje (bolj počasno). Motorje (s tem napajalnikom) (glej fotografijo) sem preizkusil na vsaj 9V. Delajo dobro pri 9V.

Opažanja o 9V (ali več)

Če ste si ogledali vse fotografije in videoposnetke za ta Instructable, ste opazili, da sem sestavil tiskano vezje po meri, da bi ustvaril lasten vir napajanja 9V. Na poti sem se naučil nekaj stvari.

Trenutno uporabljam več (3) 9V baterijskih celic vzporedno za napajanje motorjev. Uporabil sem tako alkalne kot NiMH baterije za ponovno polnjenje.

Učne izkušnje #1: Za pravilno polnjenje NiMH 9V baterij traja veliko časa (več ur).

Možna rešitev: Vlagajte v polnilnik NiMH z več baterijami. Moral bi biti "pameten" polnilec.

Slabost: niso poceni.

Učna izkušnja #2: 9V baterije so dejansko sestavljene iz več majhnih notranjih celic. Če ena od teh celic umre, je celotna baterija neuporabna. Nisem imel tega problema, vendar sem o tem bral.

Učne izkušnje #3: Vse 9V baterije nimajo enake napetosti. Ta je pomemben. Ker je višja napetost, je večja hitrost mogoča. Nekatere baterije (in polnilniki) so le 8,4 V. Nekateri še manj. Nekateri so 9,6 V.

Učna izkušnja #4: 9 -voltne baterije, zlasti tiste iz NiMH, so lahke. Dobra stvar. Večina pa zagotavlja le mA izhodnega toka. Zato sem jih moral postaviti vzporedno. Potrebujete skupno zmogljivost skoraj 2 ampera, tudi za kratek čas.

Učne izkušnje #5: Obstajajo 9,6-voltne baterije, ki se uporabljajo za stvari, kot so avtomobili z radijskim upravljanjem. Nisem ga še uporabljal, vendar verjamem, da zagotavljajo večji tok kot paralelne 9V baterije, kot sem jih jaz. Prav tako lahko napolnite eno enoto. Paketi so različnih velikosti. In tukaj je treba upoštevati težo. Ali potem uporabite paket za pogon celotnega avtomobila ali samo motorjev? Če za celoten avtomobil potrebujete 5-voltni regulator za Raspberry Pi.

L298 H-Bridge ima v ta namen možnost izhoda 5V, vendar me skrbi, koliko toka lahko proizvede za Raspberry Pi in ali bo to preveč obremenitev za ploščo L298.

Če se odločite za dva ločena vira napajanja, imate morda težavo (pretežko).

4. korak: Programiranje programske opreme za vožnjo z igralno ploščo

Mislim, da sem veliko tega razdelka obravnaval že v Robot Driven Via Remote USB Gamepad Instructable, zato tega ne bom ponovil tukaj.

Oddelki za programiranje/programsko opremo v tem drugem navodilu so le predlogi. Mislim, da se s poskusi in napakami naučiš več.

5. korak: Dodajanje kamere

Dodajanje kamere
Dodajanje kamere
Dodajanje kamere
Dodajanje kamere
Dodajanje kamere
Dodajanje kamere

Na tečaju Udemy verjamem, da avtor z okroglimi lesenimi mozniki in pištolo za lepilo oblikuje način za dvig kamere.

Kamero boste želeli dvigniti tako, da bo gledala navzdol na dvopasovnico, da bo lažje prepoznala pasove.

Kjer živim v ZDA, so bili leseni mozniki zelo poceni. Lahko jih kupite v Lowe's ali Home Depot. Namesto okroglih sem izbrala kvadratne moznike.

Odločil sem se tudi za bolj trdno podlago za stolp s kamero in celoten stolp sem odstranil iz avtomobila, tako da se lahko igram in eksperimentiram, kaj je zanj najboljše na avtomobilu.

Prav tako sem stolp naredil z mislijo, da bom začel s spletno kamero USB, kasneje pa bom morda prešel na uporabo modula Picamera.

Morda boste želeli vlagati v fotoaparat tipa ribje oko.

Kupil sem zelo poceni pištolo za vroče lepilo, vendar sem hotel bolje okrepiti dno stolpa, zato sem predhodno izvrtal nekaj lukenj za vijake in dodal vijake, da bi vse skupaj bolje držali.

Nato sem podnožje pritrdil na podvozje avtomobila.

Če bom pozneje želel stvari premakniti, preprosto odvijem podnožje iz ohišja, izvrtam nove luknje na novi lokaciji ohišja in stolp ponovno pritrdim na ohišje.

Kodo Python in Node.js, ki mi sledi, sem prinesel iz velikega robota (Wallace Robot 4) kot način, da vse preizkusim. Oglejte si fotografije v tem razdelku za seznam youtubes, ki dajejo veliko več podrobnosti o "follow-me".

Kot sem že omenil, je bilo lažje najprej namestiti spletno kamero USB. Kasneje lahko namestim modul Picamera.

Korak 6: Prepoznavanje obrazov - Določite položaj

Image
Image

Ta del ni v središču tečaja Udemy, je pa bila zabavna vaja.

Če nekaj iščete po spletu za "prepoznavanje obrazov python opencv", boste našli veliko dobrih primerov, kako to storiti, in vsi v veliki meri sledijo istim korakom.

  1. naložite datoteko obraza "haar"
  2. inicializirajte kamero
  3. začni zanko, kjer primeš okvir
  4. barvno sliko pretvorite v sivo
  5. posredujte v opencv, da najde obraz (e)
  6. zaženite notranjo zanko (za vsak najdeni obraz) (v mojem primeru dodam kodo za prekinitev, če je več kot 1 obraz)

V ta namen tukaj, ko zaznamo obraz, poznamo X, Y, W in H namišljenega kvadrata, ki obrisuje obraz.

Če želite, da se robot premika naprej ali nazaj, morate upoštevati le W. Če je W prevelik (preblizu), naj se robot premakne nazaj. Če je W premajhen (predaleč), naj se robot premakne naprej.

Gibanje levo/desno je le nekoliko bolj zapleteno, vendar ne noro. Oglejte si sliko tega razdelka, ki podrobno opisuje, kako določiti levi in desni položaj obraza.

OPOMBA:

Če zaženete katerega od primerov spletnega OpenCV, vsi prikazujejo dejanski pogled na to, kaj opencv "vidi", z obrazom, označenim v kvadratu. Če opazite, da kvadrat ni stabilen (konstanten), tudi če se ne premikate.

Zaradi teh spreminjajočih se vrednosti bi bil robot neprestano v gibanju, naprej ali nazaj, levo ali desno.

Tako boste morali imeti nekakšno delto tako naprej/nazaj kot levo/desno.

Vzemimo levo proti desni:

Ko izračunate levo in desno, dobite razliko (delta):

delta = abs (levo -desno)

Morate vzeti absolutno, ker ne veste, katera bo večja številka.

Nato dodate nekaj pogojne kode, da se poskusite premakniti le, če je delta večja od nekega minimuma.

Enako bi storili za naprej in nazaj.

7. korak: položaj obraza - premikajoči se robot

Kako to storite, ko veste, da potrebujete robota za premikanje levo ali desno, naprej ali nazaj?

Ker je ta Instructable v delu, sem trenutno samo prepisal kodo iz svojega velikega robota za uporabo pri tem projektu. Oglejte si moj seznam predvajanja Robotics na youtube, kjer je vse to podrobno opisano.

Skratka, kodo imam v plasteh.

Skript za prepoznavanje obrazov Python pošilja zahteve HTTP strežniku Node.js

Strežnik Node.js posluša zahteve http za navodila za premik in jih pretvori v serijski protokol po meri

Serijski protokol po meri med strežnikom Node.js in Arduinom

Arduino skica, ki izvaja dejanske ukaze za premikanje robota

Tečaj Udemy ne deluje tako kot zgoraj. Ker pa sem želel dobro napredovati in se osredotočiti na dejansko prepoznavanje slike, sem zaenkrat znova uporabil svojo prejšnjo kodo.

Priporočena: