Sadržaj:

Izgradite vlastiti automobil koji se samostalno vozi - (ovo uputstvo radi u procesu): 7 koraka
Izgradite vlastiti automobil koji se samostalno vozi - (ovo uputstvo radi u procesu): 7 koraka

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

Video: Izgradite vlastiti automobil koji se samostalno vozi - (ovo uputstvo radi u procesu): 7 koraka
Video: Prüfungsvorbereitung - B2 C1 - DSH 2024, Novembar
Anonim
Image
Image

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

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 Udemy kurs: Izgradite svoj vlastiti automobil sa samoupravljanjem koji mi je dao ideju za ovaj projekt.

Ako ste zainteresovani za kurs Udemy, možete tamo stalno provjeravati; s vremena na vrijeme ide u prodaju s velikim popustom. Napomena: postoje 1. i 2. dio - morate istražiti kako nabaviti dva kursa kao paket (s popustom).

Svrha ovog uputstva je dvostruka. Prvo, dati neke smjernice i alternative određenim dijelovima kursa (poput dijelova i hardvera). I drugo, proširiti kurs.

Glavna svrha kursa Udemy:

je omogućiti malim robotskim automobilima na točkovima da se sami voze na umanjenoj cesti s dvije trake.

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

Mora prepoznati znak stop (i stop).

Takođe, CRVENI i ZELENI saobraćajni signal.

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

Šta ovaj Instructable dodaje kursu:

Vozite mali automobil pomoću udaljenog USB gamepada, na sličan način kao u ovom drugom Instructable.

Dajte neke alternative onome što kurs nudi.

Možda nećete morati ni kupiti kurs:

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

Supplies

Bitni (predloženi) dijelovi:

Šasija robota

Četiri motora

Arduino

Raspberry 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)

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

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

Korak 1: Više detalja 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 otkrio.

  • Pogledajte oko sebe u potrazi za različitim šasijama / motorima
  • 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 je moguće lakše.
  • 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 vjerovatno najbolji izbor.

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

Metalne konstrukcije su dobre za sastavljanje šasije (čvrstoća), a posebno kada se razvijate (programiranje, testiranje). Za razvoj, metalni nosači mogu poslužiti kao štule. 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! Napravit ćete greške i ne želite da auto samo uzleti i sudari se.

Bušilica + burgije

Zaista želim naglasiti upotrebu bušilice, ako ste u mogućnosti, i korištenje stajališta umjesto dvostrane ljepljive trake. Vrlo je vjerojatno da ć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 (posebno ako je kućište plastično) i izgleda profesionalnije.

Korak 2: Napajanje automobila tokom razvoja

Pokretanje automobila tokom razvoja
Pokretanje automobila tokom razvoja
Pokretanje automobila tokom razvoja
Pokretanje automobila tokom 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 na računalo putem USB -a
  • za softver Raspberry Pi, trebali biste imati 5V USB napajanje koje može napajati najmanje 3 ampera. I trebao bi imati prekidač za uključivanje/isključivanje. Osim ako na računar imate dobro USB napajanje sa napajanjem, verovatno nećete moći napajati Raspberry direktno sa računara.
  • Jer kad ste spremni za testiranje motora/kotača, najjednostavnije je (pogledajte fotografiju) dobro napajanje. Međutim, oni nisu jeftini.

Moja poenta u ovom odjeljku je da kažem da ne želite koristiti bateriju tokom razvoja, jer će to uveliko usporiti vaš napredak.

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

Korak 3: Napajanje automobila tokom stvarne upotrebe

Napajanje automobila tokom stvarne upotrebe
Napajanje automobila tokom stvarne upotrebe
Napajanje automobila tokom stvarne upotrebe
Napajanje automobila tokom stvarne upotrebe

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

Glavna stvar ovdje je da vam treba 5V, ali trebate najmanje 3 ampera! Zamislite to ovako - želite moćnu banku koja ć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 našao onu koja bi radila. Drugi uzrokuju da se Raspberry Pi žali na podnapon.

Počeo sam s najjeftinijom powerbank i samo sam pokušavao sa sljedećim modelom (koji je koštao više), sve dok nisam našao model 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) i upotrijebio je pinove za napajanje na GPIO konektoru Arduina.

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

Morat ćete odlučiti šta je bolje.

Kako napajati motore/upravljački program motora

Na tečaju Udemy autor je odabrao napajanje motora/upravljačkog programa izravno iz 5V powerbank. Postoje dva razmatranja ako koristite ovaj pristup.

  1. Kada se motori počnu okretati, oni crpe najveću struju. To može (uzrokovati) pad napona napajanja (pad) ispod 5 V i uzrokovati 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 (sporije). Testirao sam motore (s tim napajanjem) (vidi sliku) na najmanje 9V. Odlično rade na 9V.

Zapažanja 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 učenju #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 učenju #2: 9V baterije zapravo se sastoje od nekoliko malih unutrašnjih ćelija. Ako jedna od tih ćelija umre, cijela baterija je beskorisna. Nisam imao ovaj problem, ali sam čitao o njemu.

Iskustvo u učenju #3: Nemaju sve 9V baterije isti napon. Ovo je važno. Budući da je veći napon, veća je 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 skoro 2 ampera, čak i za kratke vremenske periode.

Iskustvo u učenju #5: Postoje baterije od 9,6 V koje se koriste za stvari poput automobila na radio-upravljanje. Još nisam koristio nijednu, ali vjerujem da pružaju više struje nego paralelne 9V baterije kao ja. Takođe, možete napuniti jednu jedinicu. Paketi dolaze u različitim veličinama. I tu treba uzeti u obzir težinu. I onda, koristite li paket za napajanje 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 me brine koliko struje može proizvesti za Raspberry Pi i hoće li biti previše opterećen na ploči L298.

Ako odlučite imati dva odvojena izvora napajanja, možda ćete imati problema s težinom (preveliki).

Korak 4: Programiranje softvera za upravljanje gamepadom

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

Odeljci o programiranju/softveru u tom drugom Instructable -u samo su prijedlozi. Mislim da se metodom pokušaj i greška nauči više.

Korak 5: Dodavanje kamere

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

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

Morat ćete podići 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. Izabrao sam četvrtaste tiplove umjesto okruglih.

Odlučio sam i napraviti čvršću podlogu za toranj kamere, a cijeli toranj sam uklonio s auta, tako da se mogu igrati 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 ću kasnije kasnije preći na upotrebu Picamera modula.

Možda biste trebali 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 podnožje od šasije, izbušim nove rupe na novoj lokaciji šasije i ponovno pričvrstim toranj na šasiju.

Doneo sam "follow-me" Python i Node.js kod iz velikog robota (Wallace Robot 4) kao način da sve testiram. Molimo pogledajte fotografije u ovom odjeljku za popis youtube-a 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 Picamera modul.

Korak 6: Prepoznavanje lica - Odredite položaj

Image
Image

Ovaj dio nije fokus kursa Udemy, ali to je bila zabavna vježba.

Ako malo pretražite web "python opencv prepoznavanje lica", pronaći ćete mnogo dobrih primjera kako to učiniti, a svi oni slijede iste korake.

  1. učitajte datoteku lica "haar"
  2. inicijalizirati kameru
  3. započnite petlju gdje hvatate okvir
  4. pretvorite sliku u boji u sivu
  5. pošaljite ga na opencv kako bi pronašao lica
  6. pokreni unutrašnju petlju (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 nazad, samo morate uzeti u obzir W. Ako je W prevelik (preblizu), neka se robot pomakne nazad. Ako je W premalen (predaleko), neka robot krene naprijed.

Kretanje lijevo/desno je samo 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 bilo koji od primjera web OpenCV -a, svi oni pokazuju stvarni prikaz onoga što opencv "vidi", s licem ocrtanim u kvadrat. Ako primijetite, 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/nazad i za lijevo/desno.

Uzmimo lijevo vs desno:

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

delta = abs (lijevo - desno)

Morate uzeti apsolutni rezultat 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.

Uradili biste istu stvar za naprijed natrag.

Korak 7: Položaj lica - Robot u pokretu

Kako to radite kad znate da vam je robot potreban za kretanje lijevo ili desno, naprijed ili natrag?

Budući da je ovaj Instructable u radu, u ovom trenutku sam samo prekopirao kôd sa svog velikog robota za korištenje u ovom projektu. Molimo vas da pogledate moju listu za reprodukciju Robotics -a na youtube -u gdje se sve ovo detaljno prikazuje.

Ukratko, imam kod u slojevima.

Python skripta za prepoznavanje lica šalje http zahteve Node.js serveru

Node.js server osluškuje http zahtjeve za smjernice kretanja, pretvara ih u prilagođeni serijski protokol

Prilagođeni serijski protokol između Node.js servera i Arduina

Arduino skica koja izvršava stvarne naredbe za pomicanje robota

Kurs Udemy ne radi kao gore. Ali budući da sam htio dobro napredovati i usredotočiti se na prepoznavanje slike, za sada sam ponovno upotrijebio svoj prethodni kôd.

Preporučuje se: