Sadržaj:

Napravite vlastiti automobil koji se samostalno vozi - (ovo uputstvo radi): 7 koraka
Napravite vlastiti automobil koji se samostalno vozi - (ovo uputstvo radi): 7 koraka

Video: Napravite vlastiti automobil koji se samostalno vozi - (ovo uputstvo radi): 7 koraka

Video: Napravite vlastiti automobil koji se samostalno vozi - (ovo uputstvo radi): 7 koraka
Video: Я работаю в Страшном музее для Богатых и Знаменитых. Страшные истории. Ужасы. 2024, Studeni
Anonim
Image
Image

Zdravo, Ako pogledate moj drugi Robot s instrukcijama na disku s udaljenim USB gamepadom, ovaj je projekt sličan, ali u manjem opsegu. Također možete pratiti ili dobiti pomoć ili inspiraciju iz popisa za reprodukciju Robotics, Home-Grown-Recognition ili Self-Driving Car playists na Youtubeu.

Počeo sam s velikim robotom (Wallace 4), ali budući da sam osnovao lokalnu Meetup grupu, trebalo mi je nešto manjeg obima, a grupa je bila jako zainteresirana za računalni vid.

Tako sam naišao na ovaj tečaj Udemy: Izgradite vlastiti automobil sa samoupravljanjem koji mi je dao ideju za ovaj projekt.

Ako ste zainteresirani za tečaj Udemy, tamo možete stalno provjeravati; s vremena na vrijeme ide u prodaju uz ogroman popust. Napomena: postoje 1. i 2. dio - morate istražiti kako nabaviti dva tečaja kao paket (s popustom).

Svrha ovog uputstva je dvostruka. Prvo, dati neke smjernice i alternative za određene dijelove tečaja (poput dijelova i hardvera). I drugo, proširiti tečaj.

Glavna svrha tečaja Udemy:

je omogućiti malim robotskim kotačima za samostalnu vožnju na umanjenoj cesti s dvije trake.

Mora prepoznati pruge i kad dođe do kraja ceste.

Mora prepoznati znak stop (i stop).

Također, CRVENI i ZELENI prometni signal.

Također mora prepoznati i manevrirati oko prepreke (drugi automobil).

Što ovaj Instructable dodaje tečaju:

Vozite mali automobil udaljenim USB gamepadom, na isti način kao u ovom drugom Instructable.

Dajte neke alternative onome što tečaj nudi.

Možda nećete morati ni kupiti tečaj:

Ovaj Instructable može biti sve što vam je potrebno za početak.

Pribor

Bitni (predloženi) dijelovi:

Robotsko podvozje

Četiri motora

Arduino

Malina Pi (3, 3B+, 4)

Kamera (USB web kamera ili Picamera modul)

Napajanje baterije

Prekidači za uključivanje/isključivanje

kratkospojne žice

zastoji (plastični, a možda i metalni)

Prije nego što pokušate kupiti dijelove, pregledajte cijeli Instructable i videozapise.

Nakon što sam napravio ovaj projekt, shvaćam da točni dijelovi nisu toliko kritični.

Korak 1: Više pojedinosti o dijelovima…

Image
Image
Više detalja o dijelovima…
Više detalja o dijelovima…
Više detalja o dijelovima…
Više detalja o dijelovima…

Povezani video prikazuje neke detalje o dijelovima i neke probleme koje sam pronašao.

  • Potražite različite šasije / motore
  • Motori bi već trebali imati zalemljene žice
  • Možda biste htjeli imati bušilicu i svrdla, ILI šasiju s više rupa
  • Imajte na umu da je težina problem. Sve bi trebalo biti što svjetlije.
  • Vozač motora L298 H-Bridge odlično radi. NAPOMENA: nabavite jedan s vijčanim priključnim blokovima (pogledajte fotografiju)
  • Vjerojatno ćete htjeti i plastične i metalne zastoje, veličina M3 je vjerojatno najbolji izbor.

Plastični nosači dobri su za ugradnju ploča na šasiju (upravljački program motora, Arduino, Raspberry, napajanje, sklopka za uključivanje/isključivanje itd.).

Metalni zastoji su dobri za sastavljanje šasije (čvrstoća), a posebno kada se razvijate (programiranje, testiranje). Za razvoj, metalni nosači mogu poslužiti kao stupovi. Baš kao da radite na pravom automobilu, želite podići automobil tako da kotači budu u zraku i da se slobodno kreću. Ovo je veoma važno! Pogriješit ćete i ne želite da auto samo uzleti i sudari se.

Bušilica + svrdla

Stvarno želim naglasiti uporabu bušilice, ako ste u mogućnosti, i korištenje stajališta umjesto dvostrane ljepljive trake. Vrlo vjerojatno ćete tijekom ovog projekta nekoliko puta ukloniti i ponovno postaviti ploče, itd., A upotreba trake postaje vrlo neuredna.

Korištenje bušilice olakšava ponovno postavljanje (osobito ako je kućište plastično) i izgleda profesionalnije.

Korak 2: Napajanje automobila tijekom razvoja

Pogon automobila tijekom razvoja
Pogon automobila tijekom razvoja
Pogon automobila tijekom razvoja
Pogon automobila tijekom razvoja

Po mom mišljenju, najbrži i najlakši način za početak ovog projekta je:

  • za razvoj Arduino skice softvera, samo povežite Arduino s računalom putem USB -a
  • za softver Raspberry Pi trebali biste imati 5V USB napajanje koje može opskrbiti najmanje 3 ampera. I trebao bi imati prekidač za uključivanje/isključivanje. Osim ako na računalo imate dobro USB napajanje s napajanjem, vjerojatno nećete moći napajati Raspberry izravno s računala.
  • Jer kad ste spremni za testiranje motora/kotača, najjednostavnije je (vidi fotografiju) dobro napajanje. Međutim, oni nisu jeftini.

S ovim odjeljkom želim reći da ne želite koristiti bateriju tijekom razvoja, jer će to uvelike usporiti vaš napredak.

Također, radeći nešto slično gornjim prijedlozima, ne morate se (još) brinuti o tome kako ćete točno napajati automobil. Tu odluku možete odgoditi za kasnije u projektu.

Korak 3: Napajanje automobila tijekom stvarne uporabe

Napajanje automobila tijekom stvarne uporabe
Napajanje automobila tijekom stvarne uporabe
Napajanje automobila tijekom stvarne uporabe
Napajanje automobila tijekom stvarne uporabe

Ako odlučite slijediti tečaj (ili ono što sam učinio) za 5V napajanje prema logici, imajte na umu da nisu sve 5V USB powerbanke dobre za ovaj projekt.

Glavna stvar ovdje je da vam treba 5V, ali trebate barem 3 ampera! Zamislite to ovako - želite powerbank koji će napajati prijenosno računalo (možda).

Ako živite u SAD -u, mislim da je jedan od najboljih načina za to kupovina od Best Buy -a. Zašto? Zbog njihove 14-dnevne politike povrata novca.

Zapravo sam morao isprobati tri različite powerbanke prije nego što sam pronašao onu koja bi radila. Drugi uzrokuju da se Raspberry Pi žali na podnapon.

Počeo sam s najjeftinijom powerbank i samo sam isprobavao sljedeći model (koji je koštao više), sve dok nisam našao jedan koji radi.

Kako napajati Arduino

Na tečaju Udemy, autor je odlučio napajati Arduino izravno iz powerbank -a (putem prilagođenog PCB -a koji je napravio) te je upotrijebio pinove za napajanje na GPIO konektoru Arduina.

Ja sam, međutim, odlučio samo napajati Arduino izravno s Raspberry Pi, putem USB kabela.

Morat ćete odlučiti što je bolje.

Kako napajati motore/upravljački program motora

Na tečaju Udemy autor je odlučio napajati motore/upravljačke programe izravno iz 5V powerbank. Ako koristite ovaj pristup, postoje dva razloga.

  1. Kada se motori počnu okretati, oni crpe najveću struju. To može (hoće) uzrokovati da napon napajanja padne (padne) ispod 5V i uzrokuje resetiranje maline.
  2. Korištenje samo 5 V za napajanje motora znači da motorima ne dajete onoliko snage koliko biste mogli, a automobil će se kretati sporije (tromije). Testirao sam motore (s tim napajanjem) (vidi fotografiju) na najmanje 9V. Rade dobro na 9V.

Promatranja o 9V (ili više)

Ako ste pogledali sve fotografije i video zapise za ovaj Instructable, primijetili ste da sam sastavio prilagođenu PCB za stvaranje vlastitog izvora napajanja od 9V. Usput sam naučio nekoliko stvari.

Trenutno koristim nekoliko (3) 9V baterijskih ćelija paralelno, za napajanje motora. Koristio sam i alkalne i NiMH punjive baterije.

Iskustvo učenja #1: Potrebno je puno vremena (mnogo sati) za pravilno punjenje NiMH 9V baterija.

Moguće rješenje: Uložite u NiMH punjač s više baterija. To bi trebao biti "pametan" punjač.

Nedostatak: Nisu jeftini.

Iskustvo učenja #2: 9V baterije zapravo se sastoje od nekoliko malih unutarnjih ćelija. Ako jedna od tih ćelija umre, cijela baterija je beskorisna. Nisam imao ovaj problem, ali sam čitao o njemu.

Iskustvo učenja #3: Nemaju sve 9V baterije isti napon. Ovaj je važan. Budući da je veći napon, veća je moguća brzina. Neke baterije (i punjači) imaju samo 8,4V. Neki čak i manje. Neki su 9,6V.

Iskustvo učenja #4: 9V baterije, posebno NiMH, male su težine. Dobra stvar. Međutim, većina njih daje samo mA izlazne struje. Zato sam ih morao postaviti paralelno. Potreban vam je ukupni trenutni kapacitet od gotovo 2 ampera, čak i za kratke vremenske periode.

Iskustvo učenja #5: Postoje baterije od 9,6 V, koje se koriste za stvari poput automobila s radijskim upravljanjem. Nisam ih još koristio, ali vjerujem da pružaju više struje nego paralelne 9V baterije kao ja. Također, možete napuniti jednu jedinicu. Paketi dolaze u različitim veličinama. I tu treba uzeti u obzir težinu. I onda, koristite li pakiranje za pogon cijelog automobila ili samo motora? Ako za cijeli automobil, tada će vam za Raspberry Pi biti potreban 5-stepeni regulator za smanjenje snage.

L298 H-Bridge ima mogućnost odašiljanja 5V u tu svrhu, ali zabrinut sam koliko struje može proizvesti za Raspberry Pi i hoće li biti previše opterećen na ploči L298.

Odlučite li se za dva odvojena izvora napajanja, možda imate problem s težinom (pretežak).

Korak 4: Programiranje softvera za upravljanje gamepadom

Mislim da sam dosta ovog odjeljka pokrio već u uputstvu Robot Driven Via Remote USB Gamepad Instructable, pa to neću ovdje ponavljati.

Odjeljci programiranja/softvera u tom drugom Instructableu samo su prijedlozi. Mislim da se pokušavanjem i pogreškom nauči više.

Korak 5: Dodavanje kamere

Dodavanje kamere
Dodavanje kamere
Dodavanje kamere
Dodavanje kamere
Dodavanje kamere
Dodavanje kamere

Vjerujem da autor na tečaju Udemy koristi okrugle drvene tiple i pištolj za ljepilo kako bi konstruirao način za podizanje kamere.

Morat ćete podignuti kameru tako da gleda prema dolje na cestu s dvije trake kako bi lakše prepoznala trake.

Tamo gdje živim u SAD -u, drveni klinovi bili su vrlo jeftini. Možete ih kupiti u Lowe's ili Home Depot. Umjesto okruglih, odabrao sam četvrtaste tiplice.

Također sam odlučio napraviti čvršću podlogu za toranj kamere, a cijeli toranj sam uklonio s auta, tako da se mogu poigrati i eksperimentirati na tome koji je najbolji položaj za njega na automobilu.

Također, napravio sam toranj imajući na umu ideju da ću početi s USB web kamerom, ali eventualno kasnije prijeći na korištenje modula Picamera.

Možda biste htjeli uložiti u kameru tipa riblje oko.

Kupio sam vrlo jeftin pištolj za vruće ljepilo, ali sam htio bolje ojačati podnožje tornja, pa sam prethodno izbušio neke rupe za vijke i dodao vijke da bolje sve drže zajedno.

Zatim sam pričvrstio bazu na šasiju automobila.

Ako kasnije želim pomaknuti stvari, jednostavno odvrnem podlogu od šasije, izbušim nove rupe na novom mjestu šasije i ponovno pričvrstim toranj na šasiju.

Donio sam "follow-me" Python i Node.js kod iz velikog robota (Wallace Robot 4) kao način da se sve testira. Molimo pogledajte fotografije u ovom odjeljku za popis youtuba koje daju mnogo više detalja o "follow-me".

Kao što sam spomenuo, bilo je lakše prvo postaviti USB web kameru. Kasnije mogu montirati modul Picamera.

Korak 6: Prepoznavanje lica - Odredite položaj

Image
Image

Ovaj dio nije fokus tečaja Udemy, ali to je bila zabavna vježba.

Ako na webu pretražujete "python opencv prepoznavanje lica", pronaći ćete mnogo dobrih primjera kako to učiniti, a svi slijede iste korake.

  1. učitati datoteku lica "haar"
  2. inicijalizirati kameru
  3. pokrenite petlju gdje hvatate okvir
  4. pretvoriti sliku u boji u sivu ljestvicu
  5. pošaljite ga na opencv kako bi pronašao lica
  6. pokretanje unutarnje petlje (za svako pronađeno lice) (u mom slučaju dodajem kôd za prekid ako ima više od 1 lica)

U tu svrhu ovdje, nakon što detektiramo lice, znamo X, Y, W i H zamišljenog kvadrata koji ocrtava lice.

Ako želite da se robot pomiče naprijed ili natrag, samo morate uzeti u obzir W. Ako je W prevelik (preblizu), neka se robot pomakne unatrag. Ako je W premalen (predaleko), neka robot krene naprijed.

Kretanje ulijevo/udesno samo je malo složenije, ali nije ludo. Pogledajte sliku za ovaj odjeljak koja detaljno opisuje kako odrediti položaj lica lijevo na desno.

BILJEŠKA:

Ako pokrenete neki od web -primjera OpenCV -a, svi oni pokazuju stvarni prikaz onoga što opencv "vidi", s licem ocrtanim u kvadrat. Ako promatrate, taj kvadrat nije stabilan (konstantan), čak i ako se ne krećete.

Te bi promijenjene vrijednosti uzrokovale da robot bude stalno u pokretu, naprijed ili natrag, lijevo ili desno.

Dakle, morat ćete imati neku vrstu delte i za naprijed/natrag i za lijevo/desno.

Uzmimo lijevo vs desno:

Nakon što izračunate lijevo i desno, tada dobijete razliku (delta):

delta = abs (lijevo - desno)

Morate uzeti apsolutni jer ne znate koji će biti veći broj.

Zatim dodate neki uvjetni kôd za pokušaj pomicanja samo ako je delta veća od nekog minimuma.

Učinili biste istu stvar za naprijed protiv.

Korak 7: Položaj lica - Robot u pokretu

Kada to učinite kad znate da vam je robot potreban za kretanje lijevo ili desno, naprijed ili natrag?

Budući da je ovaj Instructable u tijeku, trenutno sam samo kopirao kôd sa svog velikog robota za korištenje u ovom projektu. Molimo vas da pogledate moju listu za reprodukciju Robotics na youtube -u na kojoj je detaljno opisano sve ovo.

Ukratko, imam kod u slojevima.

Python skripta za prepoznavanje lica šalje http zahtjeve poslužitelju Node.js

Node.js poslužitelj sluša http zahtjeve za upute za premještanje, pretvara ih u prilagođeni serijski protokol

Prilagođeni serijski protokol između Node.js poslužitelja i Arduina

Arduino skica koja izvršava stvarne naredbe za pomicanje robota

Tečaj Udemy ne radi kao gore. No, budući da sam želio dobro napredovati i usredotočiti se na prepoznavanje slike, za sada sam ponovno upotrijebio svoj prethodni kôd.

Preporučeni: