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