Klassieke Lijnvolger met Camera

Voor een studie opdracht zit ik met een probleem. Wij moeten een PID gecontroleerde robot een lijn parcours laten rijden. Als sensor moeten wij gebruik maken van een camera die zwart/wit foto's maakt.

De connectie met de robot en de PID controller zijn op dit moment werkende. Nu moeten we een algoritme schrijven die de gemaakte afbeelding omzet in bruikbare informatie voor de robot. Deze code moet worden geschreven met behulp van matlab en simulink. In de eerste afbeelding staat het simulink schema dat gebruikt word als controle systeem. Te zien is dat de robot dus in 2 modes kan functioneren, differentiaal mode waar beide motoren in tegengestelde richting bewegen en de robot dus draait en common mode waar de robot vooruit/achteruit rijdt.

Nu is mijn vraag wat voor een type algoritme het best zou werken voor dit type robot met camera. Er zitten een paar scherpe bochten in het parcours waardoor de meest simpele algoritmes waarschijnlijk te kort schieten(zie afbeelding voor parcour).

de camera is onder een hoek gemonteerd waardoor deze lichtelijk vooruit kijkt i.p.v. strak naar beneden.

kun je het beeld verwerken? (contrast, helderheid)

zo kun je zorgen voor een goed onderscheid.

welke filters kun je nog meer gebruiken?

als je een goed beeld hebt, dan kun je zoeken. wat zoek je? een lijn. je kan dus scannen. je weet van te voren hoe groot de lijn is op de foto (je hebt geen heuvels, de afstand tot de grond is gelijk)

dus hoe zou je nu verder gaan?

GMT+1

ja er is al een code geschreven die de afbeelding omzet in een binaire afbeelding met alleen witte of zwarte kleur. Dit hebben we gedaan met behulp van een treshold waarde en door deze goed te kiezen. Dit werkt behoorlijk goed omdat de omstandigheden redelijk constant zijn. We hebben nu een script geschreven die het het zwaartepunt van het zwarte gedeelte van de afbeelding bepaald. Is de bocht naar links dan zal het zwaartepunt ook aan de linker kant van de afbeelding liggen. Hoe verder dit zwaartepunt van het midden afwijkt hoe scherper de bocht. Wij denken dat dit voor een flauwe bocht wel gaat werken, maar voor een haakse bochten bij streep 3 en de "kruisbocht" op het einde zal dit waarschijnlijk niet gaan werken. Een algoritme die de kromming van de lijn herkent zou misschien een optie zijn, maar ik weet niet wat voor een programma's hierbij zouden kunnen helpen. Verder heb ik op het internet veel gelezen over de Canny Edge detection, maar ik begrijp niet precies hoe ze dit algoritme toepassen om de robot de lijn te laten volgen.