Begeleider: Toon Goedemé

Referentienummer: E3

index probleemstelling werkwijze realisatie conclusie referentie formulier

Inleiding

garage auto oeps cam oeps map

Eerst moesten we een methode bedenken om de auto makkelijk in het beeld te kunnen bepalen. We dachten eerst om reflectoren op de auto te monteren en om deze extra te laten opvallen, een sterke lamp naast de webcam. Deze methode bleek niet goed te zijn, omdat de lak van de auto mee reflecteerde. Om deze redenen, hebben we ervoor gekozen om de lichtbronnen (led's) direct op de auto te monteren. Om het detecteren gemakkelijker te maken, kozen we voor een rode en een groene led. Door deze kleuren te kiezen, konden we makkelijk 2 RGB filters maken, om de led's uit het beeld te filteren. Doordat het ingelezen beeld als een matrix beschouwd wordt, konden we makkelijk de middelpunten van de 2 led's bepalen (en dus ook de positie van de auto). Vanaf nu moesten we enkel nog maar een methode uitdenken om de auto naar de garage te laten rijden. We kozen voor een programma te maken dat gebruik maakt van 2 scripts.

Detectie

Referentiepunten

Ons eerst gedacht als referentiepunten, was het aanbrengen van 2 reflectoren met verschillende afmetingen. Om de vervorming van de reflectoren in het beeld te beperken, kozen we voor cirkels. Om de reflectoren beter in het beeld te laten opvallen, hadden we naast de webcam een spot geplaatst. Dit was geen goede oplossing, omdat de lak van de auto glanzend was, zagen we enkel nog maar een grote lichtvlek op de plaats van de auto.
Hierdoor hebben we een andere oplossing moeten bedenken en dat was 2 leds op de auto monteren. Doordat we de leds ver uit elkaar konden plaatsen, zagen we steeds 2 lichtvlekken.
Doordat het ingelezen beeld van de camera in RGB waarden is, hebben we gekozen voor een rode en een groene led (reden zie RGB-filter), zodat we de positie van de auto kunnen bepalen. Het nadeel aan deze methode was wel dat als de camera onder een slechte hoek werd gezet, het beeld overbelicht kon worden.

Beeldinvoer

Als beeldinvoer hadden we de keuze uit een webcam en een digitale reflex camera. Om te bepalen welke we zouden gebruiken, hebben we enkele test uitgevoerd.
De resolutie van de webcam was veel kleiner dan deze van de digitale camera, maar omdat we op kleine beelden werkten, speelde dit geen rol.
Het grootste nadeel van de webcam was wel dat het beeldbereik zeer klein was, zodat de auto niet max 1.7m van de garage verwijderd mocht staan. Dit probleem hadden we wel niet met de reflex camera, omdat we hier een andere lens konden voorzetten.
Vervolgens zijn we gaan zien met welke camera de auto het snelst konden laten parkeren. Doordat de webcam een continue beeldinput had, konden we op elk ogenblik een nieuw beeld inlezen. Op dit ingelezen beeld, moesten nog veel bewerkingen gebeuren, wat het proces vertraagde. beeld webcam
Op beeld dat we kregen met behulp van de digitale camera waren enkel nog maar de leds zichtbaar, zodat enkel de kleurenfilters toegepast moesten worden. Het nadeel was wel dat we maar om de 5 sec een beeld konden nemen.
beeld digitale camera
Omdat het parkeren met de webcam het minst lang duurde en de andere eig voldoende waren, kozen we om de webcam te gebruiken als beeldinvoer.

RGB filter

Doordat de led de sterkste lichtbron in het beeld zijn, konden we ervoor zorgen dat we in het ingelezen beeld, enkel deze 2 punten zagen. Hierdoor konden we 2 RGB filters maken die er telkens een 1 led uithalen, zodat we zo het middelpunt konden berekenen.
Een RGB filter zoekt in de foto(=matrix) naar de punten waar de rood (groen) tint >220 en de blauwe, groene (rode) tint <60.

rgb rgb

Beeldvervorming

Om een reële weergave van de positie en oriëntering van onze auto te bekomen moeten we dus eerst zorgen voor een ideaal perspectief. Maar aangezien we geen camera op een oneindig hoge afstand kunnen plaatsen zullen we dit dus kunstmatig moeten oplossen.

Het beeld dat we binnenkrijgen is genomen onder een hoek. op de foto links hier onder bevinden de rode lijnen zich op de groeven van de stenen , die uiteraard evenwijdig zijn in realiteit. En zoals dus ook te zien is bezorgt dit ons een parallellogram

Met behulp van een klein stukje Photoshop kunnen we dit beeld rechttrekken, en zo aan de hand van de verhouding van de breedte een lineaire formule op stellen.
Voor de gemakkelijkheid hebben we tijdelijk ons coördinatensysteem het helft van de breedte naar rechts opgeschoven. We bekwamen we het volgende:


X_correct = X_midden - ( ( Y / hoogte) * ( BREEDTE / breedte ) * X_midden


slecht beeld goed beeld

Met deze nieuwe waarden kunnen we de hoek veel nauwkeuriger bepalen, wat ook goed zichtbaar is in de rechtse foto. De hoek naar de garage toe hebben we bepaald aan de hand van de onderstaande formule.


Hoek = Argtan ( X_groen - X_rood / Y_groen - Y_rood )


Voor het bepalen van de positie is afhankelijk van het specifieke programma , de nieuwe x-waarde niet noodzakelijk. De auto parkeert namelijk toch ik vele kleine stapjes. En bovendien kunnen we zo het gehele beeldbereik benutten. Deze positie is gewoon het gemiddelde van de 2 LED's hun X- en Y-waarde.

besturing

Nadat een programma heeft beslist naar waar de auto moet bewegen , moet deze beweging nog wel gerealiseerd worden, We moeten dus de afstandsbediening zien te koppelen aan onze computer.

Onze begeleider had een Velleman Kit "K8055" voorzien, die dan later met zijn digitale uitgangen aan de interne schakelaartjes van de afstandsbediening werden verbonden. Maar enkel aansluiten laat zo'n ding natuurlijk nog niet werken.

  • Fysisch aansluiten
  • Driver
    • zoeken
    • instaleren
    • begrijpen
  • Besturingsfunctie schrijven
aansturing

Omdat we eerst niet al te veel windows wilden gebruiken, en omdat het mogelijk was, hebben we eerst een driver voor linux proberen te vinden en aan de praat te krijgen. en vervolgens dan toch ook voor windows. Het werkte uiteindelijk zelfs op Macintosh.

De Besturingsfunctie zorgt ervoor dat een algoritme de volgende parameters kan gebruiken:

  • Vooruit of Achteruit : 1 / -1 of F / B
  • Links, Rechts, Rechtdoor: -1 / 1 / 0 of L / R / --
  • Tijdsduur in milliseconden
k8055leds.jpg

En het zal daarna de uitgangen corresponderend met die richtingen voor de opegeven tijd op 1 zetten, Eventueel voorafgegaan door eerst het 'stuur' in die riching te zetten.


Wilt u de auto zien parkeren? Klik hier om het filmpje te bekijken

index about