Innholdsfortegnelse:

Bygg din egen selvkjørende bil - (denne instruksen er under arbeid): 7 trinn
Bygg din egen selvkjørende bil - (denne instruksen er under arbeid): 7 trinn

Video: Bygg din egen selvkjørende bil - (denne instruksen er under arbeid): 7 trinn

Video: Bygg din egen selvkjørende bil - (denne instruksen er under arbeid): 7 trinn
Video: Как зарабатывать 500 долларов в день и зарабатывать ден... 2024, Juli
Anonim
Image
Image

Hallo, Hvis du tar en titt på min andre Instructable on Drive Robot With Remote USB Gamepad, er dette prosjektet likt, men i mindre skala. Du kan også følge eller få hjelp eller inspirasjon fra spillelistene Robotics, Home-Grown Voice Recognition eller Self-Driving Car på Youtube.

Jeg begynte med den store roboten (Wallace 4), men siden jeg startet en lokal Meetup -gruppe, trengte jeg noe i mindre skala, og gruppen var veldig interessert i datasyn.

Så jeg kom over dette Udemy-kurset: Bygg din egen selvkjørende bil som ga meg ideen til dette prosjektet.

Hvis du er interessert i Udemy -kurset, kan du fortsette å sjekke tilbake dit; den selges til en stor rabatt fra tid til annen. Merk: det er del 1 og del 2 - du må undersøke hvordan du får de to kursene som pakke (rabattert).

Hensikten med denne instruksen er todelt. Først for å gi noen tips og alternativer til visse deler av kurset (for eksempel deler og maskinvare). Og for det andre, å utvide kurset.

Hovedformålet med Udemy -kurset:

er å kunne få en liten robotbil med hjul til å kjøre selv på en nedskaleret tofelts vei.

Den må kjenne igjen kjørefeltstriper, og når den har nådd enden av veien.

Det må kjenne igjen et stoppskilt (og stoppe).

Også et RØDT og GRØNT trafikksignal.

Den må også gjenkjenne og manøvrere rundt et hinder (en annen bil).

Hva denne instruksen legger til i kurset:

Kjør den lille bilen med en ekstern USB -gamepad, omtrent på samme måte som i denne andre instruksjonsboken.

Gi noen alternativer til det kurset gir.

Du trenger kanskje ikke engang å kjøpe kurset:

Denne instruksjonsboken kan være alt du trenger for å komme i gang.

Rekvisita

De viktigste (foreslåtte) delene:

Et robotchassis

Fire motorer

Arduino

Bringebær Pi (3, 3B+, 4)

Kamera (USB -webkamera eller Picamera -modul)

Batteristrøm

Av/på -brytere

jumper ledninger

stand-offs (plast og kanskje metall også)

Se gjennom hele instruksjonsboken og også videoene før du prøver å kjøpe deler.

Etter å ha gjort dette prosjektet, innser jeg at de eksakte delene ikke er så kritiske.

Trinn 1: Flere detaljer om delene …

Image
Image
Flere detaljer om delene …
Flere detaljer om delene …
Flere detaljer om delene …
Flere detaljer om delene …

Den tilhørende videoen går i detalj om delene og noen problemer jeg fant.

  • Se deg rundt etter forskjellige chassis / motorer
  • Motorene skal allerede ha ledninger loddet til seg
  • Det kan være lurt å ha en drill og drill bits, ELLER et chassis med flere hull
  • Husk at vekt er et problem. Alt skal være så lett som mulig.
  • Motordriveren L298 H-Bridge fungerer utmerket. MERK: få en med skrueklemmer (se bilde)
  • Du vil sannsynligvis ønske både plast- og metallavstand, størrelse M3 er sannsynligvis det beste valget.

Plastavstander er gode for å montere brettene på kabinettet (motordriver, Arduino, bringebær, strømkort, på/av -bryter, osv.).

Metallavstander er gode for montering av chassiset (styrke), og også spesielt når du utvikler (programmering, testing). For utvikling kan metallavstandene tjene som stylter. Akkurat som om du jobbet med en ekte bil, vil du heve bilen slik at hjulene er i luften og kan bevege seg fritt. Dette er veldig viktig! Du vil gjøre feil, og du vil ikke at bilen bare skal ta av og krasje.

Drill + borekroner

Jeg vil virkelig understreke bruken av en boremaskin, hvis du er i stand til det, og bruk av avstand i stedet for dobbeltsidig klebebånd. Du vil sannsynligvis ende opp med å fjerne og re-plassere brettene dine osv. Flere ganger i løpet av dette prosjektet, og bruk av båndet blir veldig rotete.

Å bruke en drill gjør det veldig enkelt å omplassere (spesielt hvis chassiset er av plast) og det ser mer profesjonelt ut.

Trinn 2: Drift av bilen under utvikling

Drift av bilen under utvikling
Drift av bilen under utvikling
Driv bilen under utvikling
Driv bilen under utvikling

Etter min mening er den raskeste, enkleste måten å komme i gang med dette prosjektet:

  • for programvareutvikling av Arduino sketch, bare koble Arduino til datamaskinen din via USB
  • for programvare Raspberry Pi, bør du ha en 5V USB -strøm som kan levere minst 3 ampere. Og den skal ha en av/på -bryter. Med mindre du har en god, drevet USB -hub koblet til datamaskinen din, vil du sannsynligvis ikke kunne koble bringebæret direkte fra datamaskinen.
  • For når du er klar til å teste motorer/hjul, er det enkleste (se bildet) en god strømforsyning. Imidlertid er de ikke rimelige.

Poenget mitt med denne delen er å si at du ikke vil bruke batteristrøm under utvikling, fordi det vil bremse fremgangen din sterkt.

Ved å gjøre noe som ligner på forslagene ovenfor, trenger du ikke (ennå) å bekymre deg for nøyaktig hvordan du skal drive bilen. Du kan utsette den avgjørelsen for senere i prosjektet.

Trinn 3: Strømforsyning av bilen under faktisk bruk

Drift av bilen under faktisk bruk
Drift av bilen under faktisk bruk
Drift av bilen under faktisk bruk
Drift av bilen under faktisk bruk

Hvis du bestemmer deg for å følge kurset (eller det jeg har gjort) for 5V strøm til logikken, vær oppmerksom på at ikke alle 5V USB -strømbanker er gode for dette prosjektet.

Hovedpoenget her er at du trenger 5V, men du trenger minst 3 ampere! Tenk på det på denne måten - du vil ha en powerbank som kan drive en bærbar datamaskin (kanskje).

Hvis du bor i USA tror jeg at en av de beste måtene å gjøre dette på er å kjøpe fra Best Buy. Hvorfor? På grunn av deres 14-dagers tilbakebetalingspolicy for retur.

Jeg måtte faktisk prøve tre forskjellige powerbanks før jeg fant en som ville fungere. De andre får Raspberry Pi til å klage på underspenning.

Jeg hadde startet med den minst kostbare powerbanken, og prøvde bare den neste modellen (som kostet mer), til jeg fant en som fungerte.

Hvordan drive Arduino

I Udemy -kurset valgte forfatteren å drive Arduino direkte fra powerbanken (gjennom en tilpasset PCB som han laget), og han brukte strømpinner på GPIO -kontakten til Arduino.

Jeg valgte imidlertid å bare drive Arduino direkte fra Raspberry Pi, gjennom USB -kabelen.

Du må bestemme hva som er bedre.

Slik driver du motorene/motorføreren

I Udemy -kurset valgte forfatteren å drive motorene/driveren direkte fra 5V powerbank. Det er to hensyn hvis du bruker den tilnærmingen.

  1. Når motorene først begynner å snu, trekker de mest strøm. Dette kan (vil) føre til at strømspenningen synker (faller) under 5V, og får bringebæret til å tilbakestille.
  2. Bare å bruke 5V for å drive motorene betyr at du ikke gir motorene så mye strøm som mulig, og bilen vil bevege seg saktere (mer treg). Jeg har testet motorene (med den strømforsyningen) (se bildet) til minst 9V. De fungerer fint på 9V.

Observasjoner om 9V (eller mer)

Hvis du tok en titt på alle bildene og videoene for denne instruksjonsboken, la du merke til at jeg monterte en tilpasset kretskort for å lage min egen 9V strømkilde. Jeg har lært noen ting underveis.

Akkurat nå bruker jeg flere (3) 9V battericeller parallelt for å drive motorene. Jeg har brukt både alkaliske og NiMH oppladbare batterier.

Læringserfaring nr. 1: Det tar lang tid (mange timer) å lade NiMH 9V -batterier ordentlig.

Mulig løsning: Invester i en NiMH-lader med flere batterier. Det skal være en "smart" lader.

Ulempe: De er ikke rimelige.

Læringsopplevelse #2: 9V batterier består faktisk av flere små innvendige celler. Hvis en av disse cellene dør, er hele batteriet ubrukelig. Jeg har IKKE hatt dette problemet, men jeg leste om det.

Læringserfaring #3: Ikke alle 9V batterier har samme spenning. Denne er viktig. Fordi jo høyere spenning, jo mer hastighet er mulig. Noen battericeller (og ladere) er bare 8,4V. Noen enda mindre. Noen er 9,6V.

Læringserfaring nr. 4: 9V batterier, spesielt NiMH -batteriene, er lette i vekt. En god ting. Imidlertid gir de fleste bare mA av utgangsstrøm. Derfor måtte jeg plassere dem parallelt. Du trenger en total strømkapasitet på nesten 2 ampere, selv i korte perioder.

Læringsopplevelse #5: Det finnes 9,6V batteripakker, som brukes til ting som radiostyrte biler. Jeg har ikke brukt en enda, men jeg tror de gir mer strøm enn å gjøre parallelle 9V -batterier som jeg gjorde. Du kan også lade den enkelte enheten. Pakningene kommer i forskjellige størrelser. Og det er en vekthensyn. Og bruker du pakken til å drive hele bilen, eller bare motorene? Hvis du trenger hele bilen, trenger du en 5V nedtrappingsregulator for Raspberry Pi.

L298 H-Bridge har evnen til å levere 5V for dette formålet, men jeg er bekymret for hvor mye strøm den kan produsere for Raspberry Pi, og om det vil bli for mye belastning på L298-kortet.

Hvis du bestemmer deg for å ha to separate strømkilder, kan du ha et vektproblem (for tungt).

Trinn 4: Programvareprogrammering for gamepad -kjøring

Jeg tror jeg har dekket mye av denne delen allerede i Robot Driven Via Remote USB Gamepad Instructable, så jeg vil ikke gjenta det her.

Programmerings-/programvaredelene i den andre instruksjonsboken er bare et forslag. Jeg tror man lærer mer ved å prøve-og-feil.

Trinn 5: Legge til et kamera

Legge til et kamera
Legge til et kamera
Legge til et kamera
Legge til et kamera
Legge til et kamera
Legge til et kamera

På Udemy -kurset tror jeg at forfatteren bruker runde treplugger og en limpistol for å konstruere en måte å heve kameraet på.

Du vil heve kameraet slik at det ser ned på den to-felts veien, slik at det lettere kan gjenkjenne banene.

Der jeg bor i USA, var trepluggene veldig rimelige. Du kan kjøpe dem på enten Lowe's eller Home Depot. Jeg valgte firkantede plugger i stedet for runde plugger.

Jeg valgte også å lage en mer solid base for kameratårnet, og jeg gjorde hele tårnet avtagbart fra bilen, slik at jeg kan leke med og eksperimentere med hva som er den beste posisjonen for det på bilen.

Jeg laget også tårnet med tanke på at jeg skal starte med et USB -webkamera, men muligens senere gå videre til bruk av Picamera -modulen.

Det kan være lurt å investere i et fiskeøyet kamera.

Jeg kjøpte en veldig billig varm limpistol, men jeg ønsket å forsterke tårnbunnen bedre, så jeg forhåndsboret noen skruehull og la til skruer for å holde alt bedre sammen.

Deretter boltet jeg basen på chassiset på bilen.

Hvis jeg senere vil flytte ting rundt, jeg bare løsner basen fra chassiset, borer nye hull i den nye plasseringen av chassiset, og bolter tårnet på nytt på chassiset.

Jeg hentet over "følg meg" Python- og Node.js-koden fra den store roboten (Wallace Robot 4) som en måte å teste alt på. Se bildene i denne delen for en liste over youtubes som gir mye mer detaljert informasjon om "følg meg".

Som jeg nevnte, var det lettere å montere et USB -webkamera først. Senere kan jeg montere Picamera -modulen.

Trinn 6: Ansiktsgjenkjenning - Bestem posisjon

Image
Image

Denne delen er ikke fokuset på Udemy -kurset, men det var en morsom øvelse.

Hvis du søker litt på nettet etter "python opencv ansiktsgjenkjenning", finner du mange gode eksempler på hvordan du gjør det, og de følger stort sett de samme trinnene.

  1. last inn "haar" ansiktsfil
  2. initialisere kameraet
  3. start en løkke der du tar en ramme
  4. konverter fargebildet til gråtoner
  5. mate den til opencv for å få den til å finne ansikt (er)
  6. start en indre sløyfe (for hvert ansikt funnet) (i mitt tilfelle legger jeg til kode for å avbryte hvis mer enn 1 ansikt)

For dette formålet her, når vi har oppdaget et ansikt, kjenner vi X, Y, W og H på den imaginære firkanten som skisserer ansiktet.

Hvis du vil at roboten skal bevege seg fremover eller bakover, må du bare vurdere W. Hvis W er for stor (for nær), må du bevege roboten tilbake. Hvis W er for liten (for langt), må du bevege roboten fremover.

Venstre/høyre bevegelse er bare litt mer komplisert, men ikke gal. Ta en titt på bildet for denne delen som beskriver hvordan du bestemmer posisjonen til venstre mot høyre ansikt.

MERK:

Hvis du kjører noen av OpenCV -eksemplene på nettet, viser de alle den faktiske visningen av hva opencv "ser", med ansiktet skissert i en firkant. Hvis du vil observere, er ikke firkanten stabil (konstant), selv om du ikke beveger deg.

Disse endrede verdiene vil føre til at roboten er i konstant bevegelse, fremover eller bakover, venstre eller høyre.

Dermed må du ha en slags delta både forover/bakover og for venstre/høyre.

La oss ta venstre mot høyre:

Når du har beregnet venstre og høyre, får du differansen (delta):

delta = abs (venstre - høyre)

Du må ta det absolutte fordi du ikke vet hvilket som vil være det større tallet.

Deretter legger du til noen betinget kode for å bare prøve å flytte hvis deltaet er større enn et minimum.

Du ville gjort det samme for fremover mot bakover.

Trinn 7: Ansiktsposisjon - Moving Robot

Når du vet at du trenger roboten for å bevege deg til venstre eller høyre, fremover eller bakover, hvordan gjør du det?

Siden denne Instructable er et pågående arbeid, kopierte jeg for øyeblikket nettopp koden fra min store robot for å bruke dette prosjektet. Sjekk ut min Robotics -spilleliste på youtube, hvor den inneholder alt dette.

Kort oppsummert har jeg koden i lag.

Python ansiktsgjenkjenningsskript sender http-forespørsler til Node.js-serveren

Node.js -serveren lytter etter http -forespørsler om bevegelsesretninger, konverterer dem til tilpasset seriell protokoll

Tilpasset seriell protokoll mellom Node.js -server og Arduino

Arduino -skisse som gjør de faktiske kommandoene for å flytte roboten

Udemy -kurset gjør det ikke som ovenfor. Men siden jeg ønsket å gjøre gode fremskritt og fokusere på selve bildegenkjenningen, brukte jeg den forrige koden igjen for nå.

Anbefalt: