Innholdsfortegnelse:

Lage avstandsmåler ved hjelp av en laser og et kamera: 6 trinn
Lage avstandsmåler ved hjelp av en laser og et kamera: 6 trinn

Video: Lage avstandsmåler ved hjelp av en laser og et kamera: 6 trinn

Video: Lage avstandsmåler ved hjelp av en laser og et kamera: 6 trinn
Video: Основные ошибки при возведении перегородок из газобетона #5 2024, Juni
Anonim
Lage avstandsmåler ved hjelp av en laser og et kamera
Lage avstandsmåler ved hjelp av en laser og et kamera

Jeg planlegger for tiden noen interiørarbeider til neste vår, men da jeg nettopp kjøpte et gammelt hus, har jeg ingen husplan. Jeg begynte å måle vegg til vegg -avstander ved hjelp av en linjal, men den er treg og utsatt for feil. Jeg tenkte på å kjøpe en avstandsmåler for å lette prosessen, men så fant jeg en gammel artikkel om å bygge sin egen avstandsmåler ved hjelp av en laser og et kamera. Som det viser seg, har jeg disse komponentene i verkstedet mitt.

Prosjektet er basert på denne artikkelen:

Den eneste forskjellen er at jeg skal bygge avstandsmåleren ved hjelp av en Raspberry Pi Zero W, en LCD og Raspberry Pi Camera -modulen. Jeg vil også bruke OpenCV til å spore laseren.

Jeg antar at du er teknisk kunnskapsrik og at du er komfortabel med å bruke Python og kommandolinjen. I dette prosjektet bruker jeg Pi i hodeløs modus.

La oss begynne!

Trinn 1: Liste over materialer

For dette prosjektet trenger du:

  • en billig 6mm 5mW laser
  • en 220 Ω motstand
  • en 2N2222A transistor eller noe tilsvarende
  • en Raspberry Pi Zero W
  • et Raspberry Pi -kamera v2
  • en Nokia 5110 LCD -skjerm eller tilsvarende
  • noen hoppetråder og et lite brødbrett

Jeg brukte min 3d -skriver til å skrive ut en jig som hjalp meg under eksperimentene. Jeg har også tenkt å bruke 3d -skriveren til å bygge et komplett kabinett for avstandssøkeren. Du kan helt klare deg uten.

Trinn 2: Bygg en laser- og kamerajigg

Bygg en laser- og kamerapigg
Bygg en laser- og kamerapigg
Bygg en laser- og kamerapigg
Bygg en laser- og kamerapigg
Bygg en laser- og kamerapigg
Bygg en laser- og kamerapigg

Systemet antar en fast avstand mellom kameralinsen og laserutgangen. For å lette testene skrev jeg ut en jigg der jeg kan montere kameraet, laseren og en liten drivkrets for laseren.

Jeg brukte kameramodulens dimensjoner til å bygge festet til kameraet. Jeg brukte hovedsakelig en digital tykkelse og en presisjonslinjal for å ta målingene. For laseren skapte jeg et 6 mm hull med litt forsterkning for å sikre at laseren ikke beveger seg. Jeg prøvde å holde nok plass til å få et lite brødbrett festet på baksiden av jiggen.

Jeg brukte Tinkercad for bygget, du finner modellen her:

Det er en 3,75 cm avstand mellom midten av laserlinsen og midten av kameralinsen.

Trinn 3: Kjøre laseren og LCD -skjermen

Kjøre laseren og LCD -skjermen
Kjøre laseren og LCD -skjermen
Kjøre laseren og LCD -skjermen
Kjøre laseren og LCD -skjermen

Jeg fulgte denne opplæringen https://www.algissalys.com/how-to/nokia-5110-lcd-on-raspberry-pi for å kjøre LCD-skjermen med Raspberry Pi Zero. I stedet for å redigere /boot/config.txt-filen kan du aktivere SPI-grensesnittet ved hjelp av sudo raspi-config via kommandolinjen.

Jeg bruker Raspberry Pi Zero i hodeløs modus ved å bruke den siste, til dato, Raspbian Stretch. Jeg dekker ikke installasjonen i denne instruksjonsboken, men du kan følge denne veiledningen: https://medium.com/@danidudas/install-raspbian-jessie-lite-and-setup-wi-fi-without-access-to- kommandolinje-eller-bruk-nettverket-97f065af722e

For å ha en lys laserprikk bruker jeg 5V -skinnen til Pi. For det vil jeg bruke en transistor (2N2222a eller tilsvarende) for å drive laseren ved hjelp av GPIO. En 220 Ω motstand ved foten av transistoren tillater nok strøm gjennom laseren. Jeg bruker RPi. GPIO for å manipulere Pi GPIO. Jeg koblet basen til transistoren til GPIO22 -pinnen (den 15. pinnen), senderen til bakken og kollektoren til laserdioden.

Ikke glem å aktivere kameragrensesnittet ved hjelp av sudo raspi-config via kommandolinjen.

Du kan bruke denne koden til å teste oppsettet ditt:

Hvis alt gikk bra, bør du ha en dot-j.webp

I koden setter vi opp kameraet og GPIO, deretter aktiverer vi laseren, vi tar bildet og vi deaktiverer laseren. Siden jeg kjører Pi i hodeløs modus, må jeg kopiere bildene fra Pi -en til datamaskinen før jeg viser dem.

På dette tidspunktet bør maskinvaren din konfigureres.

Trinn 4: Oppdage laseren ved hjelp av OpenCV

Først må vi installere OpenCV på Pi. Du har i utgangspunktet tre måter å gjøre det på. Du kan enten installere den gamle pakkede versjonen med apt. Du kan kompilere den versjonen du vil ha, men i dette tilfellet kan installasjonstiden gå opp til 15 timer, og det meste for den faktiske samlingen. Eller, min foretrukne tilnærming, kan du bruke en forhåndskompilert versjon for Pi Zero som er levert av en tredjepart.

Fordi det er enklere og raskere, brukte jeg en tredjepartspakke. Du finner installasjonstrinnene i denne artikkelen: https://yoursunny.com/t/2018/install-OpenCV3-PiZero/ Jeg prøvde mange andre kilder, men pakkene deres var ikke oppdaterte.

For å spore en laserpeker oppdaterte jeg koden fra https://github.com/bradmontgomery/python-laser-tracker for å bruke Pi-kameramodulen i stedet for en USB-enhet. Du kan bruke koden direkte hvis du ikke har en Pi -kameramodul og vil bruke et USB -kamera.

Du finner den komplette koden her:

For å kjøre denne koden må du installere Python -pakkene: pute og picamera (sudo pip3 install pute picamera).

Trinn 5: Kalibrering av Range Finder

Kalibrering av Range Finder
Kalibrering av Range Finder
Kalibrering av Range Finder
Kalibrering av Range Finder
Kalibrering av Range Finder
Kalibrering av Range Finder

I den originale artikkelen designet forfatteren en kalibreringsprosedyre for å få de nødvendige parameterne for å transformere y -koordinatene til en faktisk avstand. Jeg brukte stuebordet mitt til kalibreringene og et gammelt stykke kraft. Hver 10 cm eller så noterte jeg x- og y -koordinatene i et regneark: https://docs.google.com/spreadsheets/d/1OTGu09GLAt… For å sikre at alt fungerte som det skal, sjekket jeg ved hvert trinn de fangede bildene for å se om laseren ble sporet riktig. Hvis du bruker en grønn laser eller hvis laseren din ikke er riktig sporet, må du justere fargetone, metning og verditerskel for programmet tilsvarende.

Når målefasen er ferdig, er det på tide å faktisk beregne parametrene. I likhet med forfatteren brukte jeg en lineær regresjon; faktisk gjorde Google -regnearket jobben for meg. Jeg brukte deretter disse parameterne til å beregne en estimert avstand og sjekke den mot den faktiske avstanden.

Det er nå på tide å injisere parametrene i avstandsmålerprogrammet for å måle avstander.

Trinn 6: Måle avstander

Måle avstander
Måle avstander

I koden: https://gist.github.com/kevinlebrun/e767a46855e5fd501d820e1c5fcc527c oppdaterte jeg variablene HEIGHT, GAIN og OFFSET i henhold til kalibreringsmålingene. Jeg brukte avstandsformelen i den opprinnelige artikkelen til å estimere avstanden, og jeg skrev ut avstanden ved hjelp av LCD -skjermen.

Koden vil først sette opp kameraet og GPIO, deretter vil vi lyse opp LCD -bakgrunnsbelysningen for bedre å se målingene. LCD -inngangen er koblet til GPIO14. Hvert 5. sekund vil vi:

  1. aktiver laserdioden
  2. ta bildet i minnet
  3. deaktiver laserdioden
  4. spore laseren ved hjelp av HSV -filtrene
  5. skrive det resulterende bildet til disken for feilsøkingsformål
  6. beregne avstanden basert på y -koordinaten
  7. skriv avstanden på LCD -skjermen.

Selv om tiltakene er svært presise og nøyaktige nok for mitt brukstilfelle, er det mye rom for forbedringer. For eksempel er laserprikken av veldig dårlig kvalitet og laserlinjen er egentlig ikke sentrert. Med en laser av bedre kvalitet blir kalibreringstrinnene mer presise. Selv kameraet er egentlig ikke godt plassert i minen, det vipper til bunnen.

Jeg kan også øke oppløsningen til avstandsmåleren ved å rotere kameraet med 90º ved å bruke full med og øke oppløsningen til det maksimale som kameraet støtter. Med den nåværende implementeringen er vi begrenset til et område på 0 til 384 piksler, vi kan øke den øvre grensen til 1640, 4 ganger den nåværende oppløsningen. Avstanden blir enda mer presis.

Som oppfølging må jeg jobbe med presisjonsforbedringene jeg nevnte ovenfor og bygge et kabinett for avstandsmåleren. Kapslingen må ha presis dybde for å lette vegg -til -vegg -målinger.

Alt i alt er det nåværende systemet nok for meg og vil spare meg noen dollar for å lage husplanen min!

Anbefalt: