Innehållsförteckning:

Gör avståndsmätare med hjälp av en laser och en kamera: 6 steg
Gör avståndsmätare med hjälp av en laser och en kamera: 6 steg

Video: Gör avståndsmätare med hjälp av en laser och en kamera: 6 steg

Video: Gör avståndsmätare med hjälp av en laser och en kamera: 6 steg
Video: Mäta is och snö på väg och järnväg med laser- och kamerateknik 2024, November
Anonim
Gör avståndsmätare med hjälp av en laser och en kamera
Gör avståndsmätare med hjälp av en laser och en kamera

Jag planerar för närvarande lite inredningsarbete för nästa vår, men eftersom jag precis skaffade ett gammalt hus har jag ingen husplan. Jag började mäta vägg till väggavstånd med hjälp av en linjal, men det är långsamt och felaktigt. Jag tänkte köpa en avståndsmätare för att underlätta processen men sedan hittade jag en gammal artikel om att bygga en egen avståndsmätare med hjälp av en laser och en kamera. Som det visar sig har jag dessa komponenter i min verkstad.

Projektet är baserat på den här artikeln:

Den enda skillnaden är att jag kommer att bygga avståndsmätaren med en Raspberry Pi Zero W, en LCD och Raspberry Pi Camera -modulen. Jag kommer också att använda OpenCV för att spåra lasern.

Jag antar att du är tekniskt kunnig och att du är bekväm med att använda Python och kommandoraden. I detta projekt använder jag Pi i huvudlöst läge.

Låt oss börja!

Steg 1: Lista över material

För detta projekt behöver du:

  • en billig 6mm 5mW laser
  • ett 220 Ω motstånd
  • en 2N2222A transistor eller något motsvarande
  • en Raspberry Pi Zero W
  • en Raspberry Pi -kamera v2
  • en Nokia 5110 LCD -skärm eller motsvarande
  • några bygeltrådar och en liten brödbräda

Jag använde min 3d -skrivare för att skriva ut en jigg som hjälpte mig under experimenten. Jag planerar också att använda 3d -skrivaren för att bygga ett komplett hölje för avståndssökaren. Du kan helt utan.

Steg 2: Bygga en laser- och kamerajigg

Bygga en laser- och kamerapigg
Bygga en laser- och kamerapigg
Bygga en laser- och kamerapigg
Bygga en laser- och kamerapigg
Bygga en laser- och kamerapigg
Bygga en laser- och kamerapigg

Systemet antar ett fast avstånd mellan kameralinsen och laserutgången. För att underlätta testerna skrev jag ut en jigg där jag kan montera kameran, lasern och en liten drivkrets för lasern.

Jag använde kameramodulens mått för att bygga fästet för kameran. Jag använde främst en digital tjocklek och en precisionslinjal för att ta mätningarna. För lasern skapade jag ett 6 mm hål med lite förstärkning för att säkerställa att lasern inte rör sig. Jag försökte hålla tillräckligt med utrymme för att få en liten brödbräda fixerad på baksidan av jiggen.

Jag använde Tinkercad för bygget, du hittar modellen här:

Det är ett avstånd på 3,75 cm mellan laserlinsens mitt och kameralinsens mitt.

Steg 3: Körning av lasern och LCD -skärmen

Körning av lasern och LCD -skärmen
Körning av lasern och LCD -skärmen
Körning av lasern och LCD -skärmen
Körning av lasern och LCD -skärmen

Jag följde denna handledning https://www.algissalys.com/how-to/nokia-5110-lcd-on-raspberry-pi för att driva LCD-skärmen med Raspberry Pi Zero. Istället för att redigera filen /boot/config.txt kan du aktivera SPI-gränssnittet med sudo raspi-config via kommandoraden.

Jag använder Raspberry Pi Zero i huvudlöst läge med den senaste, för närvarande, Raspbian Stretch. Jag kommer inte att täcka installationen i den här instruktionsboken, men du kan följa den här guiden: https://medium.com/@danidudas/install-raspbian-jessie-lite-and-setup-wi-fi-without-access-to- kommandorad-eller-använder-nätverket-97f065af722e

För att få en ljus laserpunkt använder jag Pi: s 5V -skena. För det kommer jag att använda en transistor (2N2222a eller motsvarande) för att driva lasern med GPIO. Ett 220 Ω motstånd vid transistorns bas tillåter tillräckligt med ström genom lasern. Jag använder RPi. GPIO för att manipulera Pi GPIO. Jag kopplade transistorns bas till GPIO22 -stiftet (den 15: e stiftet), sändaren till marken och kollektorn till laserdioden.

Glöm inte att aktivera kamerans gränssnitt med sudo raspi-config via kommandoraden.

Du kan använda den här koden för att testa din installation:

Om allt gick bra bör du ha en dot-j.webp

I koden ställer vi in kameran och GPIO, sedan aktiverar vi lasern, vi tar bilden och inaktiverar lasern. När jag kör Pi i huvudlöst läge måste jag kopiera bilderna från min Pi till min dator innan jag visar dem.

Vid denna tidpunkt bör din maskinvara konfigureras.

Steg 4: Upptäcka lasern med OpenCV

Först måste vi installera OpenCV på Pi. Du har i princip tre sätt att göra det. Du kan antingen installera den gamla förpackade versionen med apt. Du kan kompilera den version du vill ha, men i det här fallet kan installationstiden gå upp till 15 timmar och det mesta för den faktiska sammanställningen. Eller, mitt föredragna tillvägagångssätt, du kan använda en förkompilerad version för Pi Zero som tillhandahålls av en tredje part.

Eftersom det är enklare och snabbare använde jag ett paket från tredje part. Du hittar installationsstegen i den här artikeln: https://yoursunny.com/t/2018/install-OpenCV3-PiZero/ Jag försökte många andra källor men deras paket var inte uppdaterade.

För att spåra en laserpekare uppdaterade jag koden från https://github.com/bradmontgomery/python-laser-tracker för att använda Pi-kameramodulen istället för en USB-enhet. Du kan använda koden direkt om du inte har en Pi -kameramodul och vill använda en USB -kamera.

Du hittar hela koden här:

För att köra den här koden måste du installera Python -paketen: kudde och picamera (sudo pip3 installera kudde picamera).

Steg 5: Kalibrering av avståndsmätaren

Kalibrering av avståndsmätaren
Kalibrering av avståndsmätaren
Kalibrering av avståndsmätaren
Kalibrering av avståndsmätaren
Kalibrering av avståndsmätaren
Kalibrering av avståndsmätaren

I den ursprungliga artikeln utformade författaren ett kalibreringsförfarande för att få de parametrar som krävs för att omvandla y -koordinaterna till ett verkligt avstånd. Jag använde mitt vardagsrumsbord för kalibreringarna och en gammal kraftbit. Var 10 cm eller så noterade jag x- och y -koordinaterna i ett kalkylblad: https://docs.google.com/spreadsheets/d/1OTGu09GLAt… För att säkerställa att allt fungerade korrekt kontrollerade jag vid varje steg de tagna bilderna för att se om lasern spårades korrekt. Om du använder en grön laser eller om din laser inte spåras korrekt måste du justera programmets nyans, mättnad och värdegräns.

När mätfasen är klar är det dags att faktiskt beräkna parametrarna. Liksom författaren använde jag en linjär regression; faktiskt Google Spreadsheet gjorde jobbet för mig. Jag återanvände sedan dessa parametrar för att beräkna ett uppskattat avstånd och kontrollera det mot det faktiska avståndet.

Det är nu dags att injicera parametrarna i avståndsmätarprogrammet för att mäta avstånd.

Steg 6: Mät avstånd

Mät avstånd
Mät avstånd

I koden: https://gist.github.com/kevinlebrun/e767a46855e5fd501d820e1c5fcc527c uppdaterade jag variablerna HEIGHT, GAIN och OFFSET enligt kalibreringsmätningarna. Jag använde avståndsformeln i den ursprungliga artikeln för att uppskatta avståndet och jag skrev ut avståndet med hjälp av LCD -skärmen.

Koden installerar först kameran och GPIO, sedan vill vi tända LCD -bakgrundsbelysningen för att bättre se mätningarna. LCD -ingången är ansluten till GPIO14. Var femte sekund eller så kommer vi att:

  1. aktivera laserdioden
  2. ta bilden i minnet
  3. inaktivera laserdioden
  4. spåra lasern med HSV -intervallfilter
  5. skriva den resulterande bilden till disken för felsökningsändamål
  6. beräkna avståndet baserat på y -koordinaten
  7. skriv avståndet på LCD -skärmen.

Men om åtgärderna är mycket exakta och noggranna för mitt användningsfall, finns det mycket utrymme för förbättringar. Till exempel är laserpunkten av mycket dålig kvalitet och laserlinjen är inte riktigt centrerad. Med en laser av bättre kvalitet blir kalibreringsstegen mer exakta. Även kameran är inte riktigt bra placerad i min jigg, den lutar till botten.

Jag kan också öka avståndsmätarens upplösning genom att rotera kameran med 90º med full med och öka upplösningen till det maximala som stöds av kameran. Med den nuvarande implementeringen är vi begränsade till ett intervall på 0 till 384 pixlar, vi kan öka den övre gränsen till 1640, 4 gånger den aktuella upplösningen. Avståndet blir ännu mer exakt.

Som uppföljning kommer jag att behöva arbeta med de precisionsförbättringar som jag nämnde ovan och bygga ett hölje för avståndsmätaren. Höljet måste vara av exakt djup för att underlätta vägg -till -väggmätningar.

Sammantaget är det nuvarande systemet tillräckligt för mig och kommer att spara mig några pengar på att göra mitt hus plan!

Rekommenderad: