Indholdsfortegnelse:

Byg din egen selvkørende bil - (denne instruktion er i gang): 7 trin
Byg din egen selvkørende bil - (denne instruktion er i gang): 7 trin

Video: Byg din egen selvkørende bil - (denne instruktion er i gang): 7 trin

Video: Byg din egen selvkørende bil - (denne instruktion er i gang): 7 trin
Video: Моя работа наблюдать за лесом и здесь происходит что-то странное 2024, November
Anonim
Image
Image

Hej, Hvis du kigger på min anden Instructable on Drive Robot With Remote USB Gamepad, ligner dette projekt, men i mindre skala. Du kan også følge eller få hjælp eller inspiration fra spillelisterne Robotics, Home-Grown Voice-Recognition eller Self-Driving Car på Youtube.

Jeg begyndte med den store robot (Wallace 4), men siden jeg startede en lokal Meetup -gruppe, havde jeg brug for noget i mindre skala, og gruppen var meget interesseret i computersyn.

Så jeg stødte på dette Udemy-kursus: Byg din egen selvkørende bil, der gav mig ideen til dette projekt.

Hvis du er interesseret i Udemy -kurset, kan du blive ved med at tjekke tilbage der; det sælges til en enorm rabat fra tid til anden. Bemærk: der er del 1 og del 2 - du skal undersøge, hvordan du får de to kurser som pakke (nedsat).

Formålet med denne instruerbare er todelt. Først for at give nogle tips og alternativer til bestemte dele af kurset (såsom dele og hardware). Og for det andet at udvide kurset.

Hovedformålet med Udemy -kurset:

er at kunne få en lille hjulvogn robot til at køre selv på en nedskaleret to-vejs vej.

Den skal genkende banestriberne, og når den er nået til vejs ende.

Det skal genkende et stopskilt (og stoppe).

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

Den skal også genkende og manøvrere rundt om en forhindring (en anden bil).

Hvad denne instruktive tilføjer til kurset:

Kør den lille bil med en fjernbetjent USB -gamepad, på samme måde som i denne anden Instructable.

Giv nogle alternativer til, hvad kurset giver.

Du behøver muligvis ikke engang at købe kurset:

Denne instruks kan være alt hvad du behøver for at komme i gang.

Forbrugsvarer

De væsentlige (foreslåede) dele:

Et robotchassis

Fire motorer

Arduino

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

Kamera (USB -webcam eller Picamera -modul)

Batteristrøm

Tænd/sluk kontakter

jumper ledninger

stand-offs (plastik og måske også metal)

Gennemgå hele Instructable og også videoerne, før du forsøger at købe dele.

Efter at have gennemført dette projekt indser jeg, at de nøjagtige dele ikke er så kritiske.

Trin 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 video går i detaljer om delene og nogle problemer, som jeg fandt.

  • Se dig omkring efter forskellige chassis / motorer
  • Motorerne skulle allerede have ledninger loddet til dem
  • Du vil måske have en boremaskine eller et bor, ELLER et chassis med flere huller
  • Husk, at vægt er et problem. Alt skal være så let som muligt.
  • L298 H-Bridge motordriveren fungerer godt. BEMÆRK: få en med skrueklemmerne (se foto)
  • Du vil sandsynligvis have både plast- og metalafvigelser, størrelse M3 er sandsynligvis det bedste valg.

Plastafstande er gode til at montere brædderne på chassiset (motordriver, Arduino, Hindbær, strømkort, tænd/sluk -knap osv.).

Metalafvigelser er gode til at samle chassiset (styrke), og også især når du udvikler (programmering, test). Til udvikling kan metalafstande tjene som stylter. Ligesom hvis du arbejdede på en rigtig bil, vil du hæve bilen, så hjulene er i luften og kan bevæge sig frit. Dette er meget vigtigt! Du laver fejl, og du vil ikke have, at bilen bare tager af og styrter sammen.

Bor + bor

Jeg vil virkelig understrege brugen af en boremaskine, hvis du er i stand til det, og brug af stand-offs i stedet for dobbeltsidet klæbende tape. Du vil sandsynligvis ende med at fjerne og genplacere dine tavler osv. Flere gange i løbet af dette projekt, og brug af båndet bliver meget rodet.

Brug af en boremaskine gør det meget let at genplacere (især hvis chassiset er af plast), og det ser mere professionelt ud.

Trin 2: Strømforsyning til bilen under udvikling

Drivning af bilen under udvikling
Drivning af bilen under udvikling
Drivning af bilen under udvikling
Drivning af bilen under udvikling

Efter min mening er den hurtigste og letteste måde at komme i gang med dette projekt på:

  • til software Arduino sketch udvikling, skal du bare slutte Arduino til din computer via USB
  • til software Raspberry Pi, skal du have en 5V USB -strøm, der kan levere mindst 3 ampere. Og den skal have en tænd/sluk -kontakt. Medmindre du har en god, strømforsynet USB -hub tilsluttet din computer, vil du sandsynligvis ikke være i stand til at drive Raspberry direkte fra din computer.
  • For når du er klar til at teste motorer/hjul, er det letteste (se foto) en god strømforsyning. Disse er dog ikke billige.

Min pointe med dette afsnit er at sige, at du ikke ønsker at bruge batteristrøm under udviklingen, for det vil i høj grad bremse din fremgang.

Også ved at gøre noget, der ligner ovenstående forslag, behøver du ikke (endnu) bekymre dig om præcis, hvordan du vil drive bilen. Du kan udsætte denne beslutning til senere i projektet.

Trin 3: Strømforsyning til bilen under faktisk brug

Strømforsyning til bilen under faktisk brug
Strømforsyning til bilen under faktisk brug
Strømforsyning til bilen under faktisk brug
Strømforsyning til bilen under faktisk brug

Hvis du beslutter dig for at følge kurset (eller hvad jeg har gjort) for 5V strøm til logikken, skal du være opmærksom på, at ikke alle 5V USB powerbanks er gode til dette projekt.

Hovedpunktet her er, at du har brug for 5V, men du har brug for mindst 3 ampere! Tænk på det på denne måde - du vil have en powerbank, der muligvis driver en bærbar computer (måske).

Hvis du bor i USA, tror jeg, at en af de bedste måder at gøre dette på er at købe fra Best Buy. Hvorfor? På grund af deres 14-dages penge tilbage-politik for retur.

Jeg var faktisk nødt til at prøve tre forskellige powerbanks, før jeg fandt en, der ville fungere. De andre får Raspberry Pi til at klage over underspænding.

Jeg var startet med den billigste powerbank, og prøvede bare på den næste model (der kostede mere), indtil jeg fandt en, der fungerede.

Hvordan man driver Arduino

I Udemy -kurset valgte forfatteren at drive Arduino direkte fra powerbanken (gennem en brugerdefineret pcb, som han lavede), og han brugte power pins på GPIO -stikket på Arduino.

Jeg valgte dog bare at drive Arduino direkte fra Raspberry Pi, via USB -kablet.

Du bliver nødt til at beslutte, hvad der er bedre.

Sådan tændes motorerne/motordriveren

I Udemy -forløbet valgte forfatteren at drive motorerne/driveren direkte fra 5V powerbanken. Der er to overvejelser, hvis du bruger den tilgang.

  1. Når motorerne først begynder at dreje, trækker de mest strøm. Dette kan (vil) få strømspændingen til at falde (falde) under 5V og få hindbæret til at nulstille.
  2. Brug af kun 5V til at drive motorerne betyder, at du ikke leverer så meget strøm som du kunne til motorerne, og bilen vil bevæge sig langsommere (mere træg). Jeg har testet motorerne (med den strømforsyning) (se foto) til mindst 9V. De fungerer fint ved 9V.

Observationer omkring 9V (eller mere)

Hvis du tog et kig på alle fotos og videoer til denne Instructable, bemærkede du, at jeg samlede en brugerdefineret printkort til at oprette min egen 9V strømkilde. Jeg har lært et par ting undervejs.

Lige nu bruger jeg flere (3) 9V battericeller parallelt til at drive motorerne. Jeg har brugt både alkaline og NiMH genopladelige batterier.

Læringsoplevelse #1: Det tager lang tid (mange timer) at oplade NiMH 9V batterier korrekt.

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

Ulempe: De er ikke billige.

Læringsoplevelse #2: 9V batterier består faktisk af flere små indvendige celler. Hvis en af disse celler dør, er hele batteriet ubrugeligt. Jeg har IKKE haft dette problem, men jeg læste om det.

Læringserfaring #3: Ikke alle 9V batterier er den samme spænding. Denne er vigtig. Fordi jo højere spænding, jo mere hastighed er mulig. Nogle battericeller (og opladere) er kun 8,4V. Nogle endnu mindre. Nogle er 9,6V.

Læringsoplevelse #4: 9V batterier, især NiMH -batterierne, er lette i vægt. En god ting. De fleste af dem giver dog kun mA udgangsstrøm. Derfor måtte jeg placere dem parallelt. Du har brug for en samlet strømkapacitet på næsten 2 ampere, selv i korte perioder.

Læringsoplevelse #5: Der findes 9,6V batteripakker, der bruges til ting som radiostyrede biler. Jeg har ikke brugt en endnu, men jeg tror, at de giver mere strøm end at lave de parallelle 9V batterier, som jeg gjorde. Du kan også oplade den enkelte enhed. Pakkerne findes i forskellige størrelser. Og der er en vægtovervejelse. Og bruger du så pakken til at drive hele bilen eller bare motorerne? Hvis du har brug for hele bilen, skal du derefter bruge en 5V nedtrapningsregulator til Raspberry Pi.

L298 H-broen har mulighed for at levere 5V til dette formål, men jeg er bekymret for, hvor meget strøm den kan producere til Raspberry Pi, og om det vil være for meget belastning på L298-kortet.

Hvis du beslutter dig for at have to separate strømkilder, kan du have et vægtproblem (for tungt).

Trin 4: Software -programmering til gamepad -kørsel

Jeg tror, jeg har dækket meget af dette afsnit allerede i Robot Driven Via Remote USB Gamepad Instructable, så jeg vil ikke gentage det her.

Programmerings-/softwareafsnittene i den anden instruerbare er blot et forslag. Jeg tror, man lærer mere ved at prøve-og-fejl.

Trin 5: Tilføjelse af et kamera

Tilføjelse af et kamera
Tilføjelse af et kamera
Tilføjelse af et kamera
Tilføjelse af et kamera
Tilføjelse af et kamera
Tilføjelse af et kamera

I Udemy -kurset tror jeg, at forfatteren bruger runde træduller og en limpistol til at konstruere en måde at hæve kameraet på.

Du vil gerne hæve kameraet, så det kigger ned på den to-sporet vej, så det lettere kan genkende banerne.

Hvor jeg bor i U. S. A., var trædyblerne meget billige. Du kan købe dem på enten Lowe's eller Home Depot. Jeg valgte firkantede dyvler i stedet for runde dyvler.

Jeg valgte også at lave en mere robust base til kameratårnet, og jeg gjorde hele tårnet aftageligt fra bilen, så jeg kan lege med og eksperimentere med, hvad der er den bedste position for det på bilen.

Jeg lavede også tårnet med tanken i tankerne om, at jeg vil starte med et USB -webcam, men muligvis senere gå videre til at bruge Picamera -modulet.

Du vil måske investere i et fiskeøje-kamera.

Jeg købte en meget billig varm limpistol, men jeg ville forstærke bunden af tårnet bedre, så jeg forborede nogle skruehuller og tilføjede skruer for at holde alt bedre sammen.

Derefter boltede jeg basen på bilens chassis.

Hvis jeg senere vil flytte tingene rundt, løsner jeg bare basen fra chassiset, borer nye huller i chassisets nye placering og bolter tårnet igen på chassiset.

Jeg hentede "følg-mig" Python- og Node.js-koden fra den store robot (Wallace Robot 4) som en måde at teste alt på. Se venligst billederne i dette afsnit for listen over youtubes, der giver mange flere detaljer om "følg mig".

Som jeg nævnte, var det lettere at først montere et USB -webcam. Senere kan jeg montere Picamera -modulet.

Trin 6: Ansigtsgenkendelse - Bestem position

Image
Image

Denne del er ikke fokus på Udemy -kurset, men det var en sjov øvelse.

Hvis du søger på nettet efter "python opencv ansigtsgenkendelse", finder du mange gode eksempler på, hvordan du gør det, og de følger stort set de samme trin.

  1. indlæse "haar" ansigtsfil
  2. initialisere kameraet
  3. start en loop, hvor du griber en ramme
  4. konvertere farvebilledet til gråtoner
  5. feed det til opencv for at få det til at finde ansigt (er)
  6. start en indre sløjfe (for hvert ansigt fundet) (i mit tilfælde tilføjer jeg kode for at afbryde hvis mere end 1 ansigt)

Til dette formål her, når vi har opdaget et ansigt, kender vi X, Y, W og H for den imaginære firkant, der skitserer ansigtet.

Hvis du vil have robotten til at bevæge sig frem eller tilbage, skal du bare overveje W. Hvis W er for stor (for tæt), skal robotten flytte tilbage. Hvis W er for lille (for langt), skal robotten bevæge sig fremad.

Venstre/højre bevægelse er bare lidt mere kompliceret, men ikke skør. Tag et kig på billedet til dette afsnit, der beskriver, hvordan du bestemmer venstre og højre ansigtsposition.

BEMÆRK:

Hvis du kører et af web -OpenCV -eksemplerne, viser de alle den faktiske visning af, hvad opencv "ser", med ansigtet skitseret i en firkant. Hvis du vil observere, er den firkant ikke stabil (konstant), selvom du ikke bevæger dig.

Disse ændrede værdier ville få robotten til konstant at være i bevægelse, fremad eller bagud, til venstre eller højre.

Således skal du have en slags delta for både fremad/bagud og til venstre/højre.

Lad os tage venstre mod højre:

Når du har beregnet venstre og højre, så få differencen (delta):

delta = abs (venstre - højre)

Du skal tage det absolutte, fordi du ikke ved, hvilket der vil være det større tal.

Derefter tilføjer du en betinget kode for kun at forsøge at flytte, hvis deltaet er større end et minimum.

Du ville gøre det samme for forward vs back.

Trin 7: Ansigtsposition - bevægelig robot

Når du ved, at du har brug for robotten til at flytte til venstre eller højre, frem eller tilbage, hvordan gør du det?

Da denne Instructable er et igangværende arbejde, kopierede jeg lige nu koden fra min store robot til brug for dette projekt. Tjek venligst min Robotics -afspilningsliste på youtube, hvor den beskriver alt dette.

Kort fortalt har jeg koden i lag.

Python ansigtsgenkendelsesscript giver http-anmodninger til Node.js-serveren

Node.js server lytter efter http -anmodninger om bevægelsesretninger, konverterer dem til brugerdefineret seriel protokol

Tilpasset seriel protokol mellem Node.js -server og Arduino

Arduino -skitse, der udfører de egentlige kommandoer for at flytte robotten

Udemy -kurset gør det ikke som ovenfor. Men da jeg ville gøre gode fremskridt og fokusere på selve billedgenkendelsen, genbrugte jeg min tidligere kode for nu.

Anbefalede: