Innehållsförteckning:

Bygg din egen självkörande bil - (denna instruktion är på gång): 7 steg
Bygg din egen självkörande bil - (denna instruktion är på gång): 7 steg

Video: Bygg din egen självkörande bil - (denna instruktion är på gång): 7 steg

Video: Bygg din egen självkörande bil - (denna instruktion är på gång): 7 steg
Video: Se videon: Mannen försöker slåss med slottsvakten #norge #oslo 2024, Juli
Anonim
Image
Image

Hej, Om du tar en titt på min andra Instructable on Drive Robot With Remote USB Gamepad, är detta projekt liknande, men i mindre skala. Du kan också följa eller få lite hjälp eller inspiration från Robotics, Home-Grown Voice-Recognition eller Self-Driving Car-spellistor på Youtube.

Jag började med den stora roboten (Wallace 4), men sedan jag startade en lokal Meetup -grupp behövde jag något i mindre skala, och gruppen var mycket intresserad av datorsyn.

Så jag stötte på denna Udemy-kurs: Bygg din egen självkörande bil som gav mig idén till det här projektet.

Om du är intresserad av Udemy -kursen kan du fortsätta kolla tillbaka dit; den säljs till en enorm rabatt då och då. Obs! Det finns del 1 och del 2 - du måste undersöka hur du får de två kurserna som paket (rabatterat).

Syftet med denna instruerbara är tvåfaldig. Först för att ge några tips och alternativ till vissa delar av kursen (som delar och hårdvara). Och för det andra, att utöka kursen.

Huvudsyftet med Udemy -kursen:

är att kunna få en liten hjulbilar med robotar att själv köra på en nedskalad tvåfilig väg.

Den måste känna igen körfältets ränder och när den har nått slutet av vägen.

Den måste känna igen ett stoppskylt (och stopp).

Dessutom en RÖD och GRÖN trafiksignal.

Den måste också känna igen och manövrera runt ett hinder (en annan bil).

Vad detta instruerbara tillför till kursen:

Kör den lilla bilen med en fjärrkontroll USB -spelkontroll, ungefär på samma sätt som i denna andra instruerbara.

Ge några alternativ till vad kursen ger.

Du kanske inte ens behöver köpa kursen:

Denna instruerbara kan vara allt du behöver för att komma igång.

Tillbehör

De viktigaste (föreslagna) delarna:

Ett robotchassi

Fyra motorer

Arduino

Hallon Pi (3, 3B+, 4)

Kamera (USB -webbkamera eller Picamera -modul)

Batterikraft

På/Av -omkopplare

bygelkablar

avstånd (plast och kanske även metall)

Läs igenom hela instruktionsboken och även videorna innan du försöker köpa delar.

Efter att ha gjort detta projekt inser jag att de exakta delarna inte är så kritiska.

Steg 1: Mer information om delarna …

Image
Image
Mer information om delarna …
Mer information om delarna …
Mer information om delarna …
Mer information om delarna …

Den tillhörande videon går in på detaljer om delarna och några problem som jag hittade.

  • Titta runt efter olika chassi / motorer
  • Motorerna borde redan ha trådar lödda till dem
  • Du kanske vill ha en borr och borr, ELLER ett chassi med fler hål
  • Tänk på att vikt är ett problem. Allt ska vara så lätt som möjligt.
  • Motorföraren L298 H-Bridge fungerar utmärkt. OBS: skaffa en med skruvplintarna (se bild)
  • Du kommer förmodligen att vilja ha både plast- och metallavstånd, storlek M3 är förmodligen det bästa valet.

Plastavstånd är bra för att montera brädorna på chassit (motordrivrutin, Arduino, hallon, strömkort, på/av -omkopplare, etc.).

Metallavstånd är bra för montering av chassit (styrka), och även särskilt när du utvecklar (programmering, testning). För utveckling kan metallavstånden fungera som styltor. Precis som om du arbetade med en riktig bil, vill du höja bilen så att hjulen är i luften och kan röra sig fritt. Det här är väldigt viktigt! Du kommer att göra misstag och du vill inte att bilen bara ska lyfta och krascha.

Borr + borr

Jag vill verkligen betona användningen av en borrmaskin om du kan, och att använda avstängningar istället för dubbelsidig tejp. Det är mycket troligt att du kommer att ta bort och omplacera dina brädor osv flera gånger under det här projektet, och att använda tejpen blir väldigt rörigt.

Att använda en borr gör det väldigt enkelt att återplacera (särskilt om chassit är av plast) och det ser mer professionellt ut.

Steg 2: Driva bilen under utveckling

Driva bilen under utveckling
Driva bilen under utveckling
Driva bilen under utveckling
Driva bilen under utveckling

Enligt min mening är det snabbaste, enklaste sättet att komma igång med detta projekt:

  • för programvara för Arduino -skissutveckling, anslut bara Arduino till din dator via USB
  • för programvara Raspberry Pi, bör du ha en 5V USB -ström som kan leverera minst 3 ampere. Och den ska ha en på/av -omkopplare. Om du inte har en bra, driven USB -hubb ansluten till din dator kommer du förmodligen inte att kunna driva Hallon direkt från din dator.
  • För när du är redo att testa motorer/hjul är det enklaste (se bild) en bra strömförsörjning. Men de är inte billiga.

Min poäng med det här avsnittet är att säga att du inte vill använda batteriström under utvecklingen, för det kommer att bromsa dina framsteg kraftigt.

Genom att göra något som liknar ovanstående förslag behöver du inte (ännu) oroa dig för exakt hur du kommer att driva bilen. Du kan fördröja det beslutet senare i projektet.

Steg 3: Driva bilen under faktisk användning

Driva bilen under faktisk användning
Driva bilen under faktisk användning
Driva bilen under faktisk användning
Driva bilen under faktisk användning

Om du bestämmer dig för att följa kursen (eller vad jag har gjort) för 5V -effekt till logiken, var medveten om att inte alla 5V USB -powerbanks är bra för detta projekt.

Huvudpunkten här är att du behöver 5V men du behöver minst 3 ampere! Tänk på det här sättet - du vill ha en powerbank som kan driva en bärbar dator (kanske).

Om du bor i USA tror jag att ett av de bästa sätten att göra detta är att köpa från Best Buy. Varför? På grund av deras 14-dagars pengarna tillbaka-policy för returer.

Jag var faktiskt tvungen att prova tre olika powerbanks innan jag hittade en som skulle fungera. De andra får Raspberry Pi att klaga på underspänning.

Jag hade börjat med den billigaste powerbanken och försökte bara fortsätta med nästa modell (som kostade mer) tills jag hittade en som fungerade.

Hur man driver Arduino

I Udemy -kursen valde författaren att driva Arduino direkt från powerbanken (genom en anpassad kretskort som han tillverkade) och han använde strömstiften på GPIO -kontakten på Arduino.

Jag valde dock att bara driva Arduino direkt från Raspberry Pi, via USB -kabeln.

Du måste bestämma vilket som är bättre.

Hur man driver motorerna/motordrivrutinen

I Udemy -kursen valde författaren att driva motorerna/drivrutinen direkt från 5V powerbank. Det finns två överväganden om du använder den metoden.

  1. När motorerna först börjar svänga drar de mest ström. Detta kan (kommer) att få nätspänningen att sjunka (falla) under 5V och orsaka att hallonet återställs.
  2. Att bara använda 5V för att driva motorerna betyder att du inte ger så mycket kraft som möjligt till motorerna, och bilen kommer att gå långsammare (mer trög). Jag har testat motorerna (med den strömförsörjningen) (se bild) till minst 9V. De fungerar bra vid 9V.

Observationer om 9V (eller mer)

Om du tittade på alla foton och videor för denna instruktionsbok märkte du att jag monterade ett anpassat kretskort för att skapa min egen 9V strömkälla. Jag har lärt mig några saker på vägen.

Just nu använder jag flera (3) 9V battericeller parallellt för att driva motorerna. Jag har använt både alkaliska och NiMH laddningsbara batterier.

Lärarupplevelse nr 1: Det tar lång tid (många timmar) att ladda NiMH 9V -batterier korrekt.

Möjlig lösning: Investera i en NiMH-laddare med flera batterier. Det ska vara en "smart" laddare.

Nackdel: De är inte billiga.

Inlärningsupplevelse #2: 9V batterier består faktiskt av flera små inre celler. Om en av dessa celler dör är hela batteriet värdelöst. Jag har INTE haft det här problemet, men jag läste om det.

Lärarupplevelse #3: Alla 9V -batterier har inte samma spänning. Den här är viktig. Eftersom ju högre spänning, desto mer hastighet är möjlig. Vissa battericeller (och laddare) är bara 8,4V. Vissa ännu mindre. Vissa är 9,6V.

Inlärningsupplevelse #4: 9V batterier, speciellt NiMH -batterierna, är lätta i vikt. En bra sak. Men de flesta av dem ger bara mA av utström. Det var därför jag var tvungen att placera dem parallellt. Du behöver en total strömkapacitet på nästan 2 ampere, även under korta perioder.

Lärarupplevelse #5: Det finns 9,6V batteripack, som används för saker som radiostyrda bilar. Jag har inte använt en än, men jag tror att de ger mer ström än att göra parallella 9V -batterier som jag gjorde. Du kan också ladda en enhet. Förpackningarna finns i olika storlekar. Och det finns en vikthänsyn. Och sedan, använder du paketet för att driva hela bilen, eller bara motorerna? Om du behöver hela bilen behöver du en 5V nedtrappningsregulator för Raspberry Pi.

L298 H-Bridge har verkligen möjlighet att mata ut 5V för detta ändamål, men jag är orolig för hur mycket ström den kan producera för Raspberry Pi, och om det kommer att bli för mycket belastning på L298-kortet.

Om du bestämmer dig för att ha två separata strömkällor kan du ha ett viktproblem (för tungt).

Steg 4: Programvaruprogrammering för gamepadkörning

Jag tror att jag täckte mycket av det här avsnittet redan i Robot Driven Via Remote USB Gamepad Instructable, så jag kommer inte att upprepa det här.

Programmerings-/programvaruavsnitten i den andra instruerbara är bara ett förslag. Jag tror att man lär sig mer genom trial-and-error.

Steg 5: Lägga till en kamera

Lägga till en kamera
Lägga till en kamera
Lägga till en kamera
Lägga till en kamera
Lägga till en kamera
Lägga till en kamera

I Udemy -kursen tror jag att författaren använder runda träpluggar och en limpistol för att konstruera ett sätt att höja kameran.

Du kommer att vilja höja kameran så att den ser ned på den tvåfiliga vägen, så att den lättare kan känna igen banorna.

Där jag bor i USA var träpluggarna mycket billiga. Du kan köpa dem antingen på Lowe's eller Home Depot. Jag valde fyrkantiga pluggar istället för runda pluggar.

Jag valde också att göra en mer robust bas för kameratornet, och jag gjorde hela tornet avtagbart från bilen, så att jag kan leka med och experimentera med vad som är den bästa positionen för det på bilen.

Jag gjorde också tornet med tanken i åtanke att jag ska börja med en USB -webbkamera, men möjligen senare gå vidare till att använda Picamera -modulen.

Du kanske vill investera i en kamera med fiskögon.

Jag köpte en mycket billig varm limpistol, men jag ville förstärka tornets bas bättre, så jag förborrade några skruvhål och lade till skruvar för att hålla ihop allt bättre.

Sedan skruvade jag fast basen på bilens chassi.

Om jag senare vill flytta på saker, skruvar jag bara loss basen från chassit, borrar nya hål i chassiets nya plats och skruvar fast tornet på chassit igen.

Jag tog över "följ-mig" Python- och Node.js-koden från den stora roboten (Wallace Robot 4) som ett sätt att testa allt. Se bilderna i det här avsnittet för en lista över youtubes som ger mycket mer detaljer om "följ-mig".

Som jag nämnde var det lättare att först montera en USB -webbkamera. Senare kan jag montera Picamera -modulen.

Steg 6: Ansiktsigenkänning - Bestäm position

Image
Image

Denna del är inte i fokus för Udemy -kursen, men det var en rolig övning.

Om du letar lite efter "python opencv ansiktsigenkänning" hittar du många bra exempel på hur du gör det, och de följer i stort sett samma steg.

  1. ladda "haar" ansiktsfil
  2. initiera kameran
  3. starta en loop där du tar en ram
  4. konvertera färgbilden till gråskala
  5. mata den till opencv så att den hittar ansikte / ansikten
  6. starta en inre slinga (för varje ansikte som hittas) (i mitt fall lägger jag till kod för att avbryta om mer än 1 ansikte)

För detta ändamål här, när vi har upptäckt ett ansikte, känner vi till X, Y, W och H för den imaginära rutan som skisserar ansiktet.

Om du vill att roboten ska gå framåt eller bakåt måste du bara tänka på W. Om W är för stor (för nära), låt roboten gå tillbaka. Om W är för liten (för långt), låt roboten gå framåt.

Vänster/höger rörelse är bara lite mer komplicerad men inte galen. Ta en titt på bilden för det här avsnittet som beskriver hur du bestämmer vänster vs höger ansikte position.

NOTERA:

Om du kör något av OpenCV -exemplen på webben visar de alla den faktiska bilden av vad opencv "ser", med ansiktet uttecknat i en ruta. Om du kommer att observera är den rutan inte stabil (konstant), även om du inte rör dig.

Dessa förändrade värden skulle göra att roboten hela tiden var i rörelse, framåt eller bakåt, vänster eller höger.

Således måste du ha någon form av delta för både framåt/bakåt och för vänster/höger.

Låt oss ta vänster vs höger:

När du har beräknat vänster och höger får du skillnaden (delta):

delta = abs (vänster - höger)

Du måste ta det absoluta eftersom du inte vet vilket som blir det större antalet.

Sedan lägger du till en villkorlig kod för att bara försöka flytta om deltaet är större än något minimum.

Du skulle göra samma sak för framåt mot bakåt.

Steg 7: Ansiktsposition - rörlig robot

När du väl vet att du behöver roboten för att flytta åt vänster eller höger, framåt eller bakåt, hur gör du det?

Eftersom denna Instructable är ett pågående arbete för närvarande kopierade jag bara över koden från min stora robot för att använda för detta projekt. Kolla in min Robotics -spellista på youtube där den innehåller allt detta.

I korthet har jag koden i lager.

Python-ansiktsigenkänningsskript gör http-förfrågningar till Node.js-servern

Node.js -servern lyssnar efter http -förfrågningar för rörelseriktningar, konverterar dem till anpassat seriellt protokoll

Anpassat seriellt protokoll mellan Node.js -server och Arduino

Arduino -skiss som gör de faktiska kommandona för att flytta roboten

Udemy -kursen gör det inte som ovan. Men eftersom jag ville göra goda framsteg och fokusera på själva bildigenkänningen, återanvändde jag min tidigare kod för nu.

Rekommenderad: