PWS Doolhof oplossen met AI
-
Hallo,
Wij zijn 4 leerlingen uit 6 vwo en zijn bezig met een profielwerkstuk over kunstmatige intelligentie. Als praktijkonderzoek willen wij onderzoeken of het mogelijk is (voor ons) om een robot te maken die zelfstandig een doolhof op kan lossen en de tweede rit in 1x de kortste route kan rijden.
Wij zijn al erg ver met deze opdracht. We laten de robot door het doolhof rijden mbv de rechterhand methode (robot gaat dus altijd naar rechts, als dat kan). De robot kan ondertussen al wel zien welke kant hij dan op moet rijden. Ook is het, denken we, gelukt om een algoritme te schrijven dat de kortste route kan uitrekenen met de array die de robot de eerste rit bijhoudt.
Het probleem is echter dat de robot (een Lego Mindstorm, geprogrammeerd in Nxc) moeite heeft met de onregelmatigheid waar het tegen aanloopt, en wij weten niet hoe we deze onregelmatigheden kunnen uitsluiten. De robot kan namelijk niet constant dezelfde bocht maken, of telkens even ver vooruit rijden. Voor bochten gebruiken wij timedelays en voor rechtdoor gebruiken we hoeveel graden het wiel rond moet draaien. Doordat de robot geen constante bochten kan maken, loopt het na een aantal bochten en stukken rechtdoor vast tegen een van de muren. Wij kwamen erachter dat dit deels door de bijna lege batterijen kwam in de Mindstorm, maar na deze vervangen te hebben bleek de robot nog steeds geen constante bochten te kunnen maken. Dit kan ook nog liggen aan het derde wiel. Deze is er slechts voor het evenwicht van de robot en kan alleen voor- of achteruit draaien. Bij bochten schuurt dit wieltje over de grond, dus het zou ook kunnen dat de ondergrond van het MDF-hout doolhof niet overal even egaal/glad is, waardoor de ene bocht scherper is dan de ander. Nog een mogelijk probleem zou kunnen zijn dat het doolhof niet netjes genoeg is gebouwd. Het doolhof is oorspronkelijk ontworpen met 36 vierkantjes van 0,2 bij 0,2 meter. Bij het in elkaar zetten kwamen we erachter dat de wandjes ook een bepaalde dikte hebben (7mm) waardoor het ene wandje soms bijna 1cm uitsteekt of naar links of naar rechts staat. (alle wandjes staan wel evenwijdig met de vierkantlijnen, dus niet schuin.) Een laatste mogelijkheid zou kunnen zijn dat de aansturing van de Mindstorm niet constant genoeg is voor de bochten, maar dit lijkt ons iets onwaarschijnlijker.
Kort samengevat, weten wij niet precies waardoor de robot zijn bochten niet constant kan maken en hoe we dit dan uit zouden moeten sluiten, waardoor hij het doolhof kan oplossen zonder vast te lopen. Mocht het nodig zijn kunnen wij onze code ook opsturen, maar die is een beetje lang voor op dit forum ;)
Hopelijk is er iemand die ons verder kan helpen.
Groeten,
Jeffrey, Ramon, Chris en Lars -
Beste @LarsRhijns,
Bedankt voor julllie erg uitgebreide uitleg van jullie probleem!
Het blijft inderdaad lastig om robots die draaien precieze hoeken te laten maken. Is er voor jullie een mogelijkheid om bijvoorbeeld lijnen op het hout te tekenen en te programmeren dat de robot deze in ieder geval moet volgen (mbv een sensor/camera)?
Een andere optie waar ik aan denk is om lijnen in het hout te snijden/zagen waar de robot niet uit kan, met op kruispunten voldoende ruimte om te kunnen draaien.
Een laatste optie die lijkt op de eerste optie die ik noemde is om de robot constant kleine correcties laten maken wanneer deze dicht bij een rand komt maar niet frontaal tegen een rand aan loopt. Ook hiervoor zouden jullie gebruik moeten maken van sensoren.
Zit hier wat voor jullie bij? Mochten deze ideeën jullie niet helpen dan hoor ik het ook graag.
Groetjes,
Joost -
Ha JoostR,
Bedankt voor de reactie.
De oplossingen zouden zeker kunnen werken denken wij, vooral die met een extra sensor om zichzelf te corrigeren. Op die manier blijft het namelijk zo dat de robot elk willekeurig doolhof kan oplossen niet enkel die met bepaalde eigenschappen.
Wij hebben echter niet meer genoeg tijd om deze sensor aan te schaffen en de robot daarvoor te programmeren voor de deadline van ons project... Dit is gelukkig geen ramp, we hebben met onze begeleider overlegt en die vind het goed als wij een 'Discussie' toevoegen aan ons pws en daarin beschrijven hoe het project beter/sneller/handiger zou kunnen. Dus aan de gegeven tips hebben we zeker nog wel wat!
Bedankt en groeten,
Jeffrey, Ramon, Chris en Lars -
Beste Jongens,
Mooi! Jammer dat jullie geen tijd meer hebben maar dat is wel vaker het probleem met een pws. Heel veel succes met het afronden van jullie werkstuk!
Groetjes,
Joost