Stap 23: Algoritme... dat is wat telt!
Het algoritme is ontwikkeld rekening houdend met de volgende regels:• bij elke doorsnede, als er een voorwaartse pad, dan de robot dat pad nemen moet en als het niet bestaat, dan de robot is vrij om een pad te kiezen.
• Als er discontinuïteit in de lijn, dan de robot heeft om verder te gaan totdat het detecteert de lijn.
• Er zullen niet alle dode uiteinden in de track.
Hieronder zijn drie stappen die herhaaldelijk wordt uitgevoerd wanneer de robot over de lijn beweegt.
Stap 1
De sensor lezingen zijn genomen en opgeslagen in een byte met elke bit die de status van een bepaalde sensor aangeeft. Als een beetje is 1, vervolgens de bijbehorende sensor is over de lijn en als de bit 0 is, dan is het niet op de regel. De volgende voorbeelden zullen duidelijk maken.
Als de waarde van de byte 00011000 is, alleen de twee sensoren in het midden zijn over de lijn en als de waarde van de byte 10000000, alleen de linkerkant meeste sensor is over de lijn.
Step2
Een telling van het aantal sensoren die over de lijn komt. De graaf, kan elke waarde tussen 0 en 8 worden.
Stap3
Voor de telling verkregen, wordt de sensorgegevens vergeleken met een verzameling waarden. Als een vergelijk wordt gevonden, zijn dan de snelheid en de richting van beide motoren dienovereenkomstig aangepast.
Hieronder zijn enkele van de waarden waarmee de sensorgegevens wordt vergeleken. Naast elke waarde gegeven is de actie die moet worden genomen.
0000000 - geen lijn gedetecteerd. Doorgaan met vorige bewerking.
10000000 - scherp draai aan de linkerzijde.
00000001 - scherp draai aan het recht.
11000000 - linksaf
01100000 - linksaf
00110000 - linksaf
00011000 - rechte vooruit op volle snelheid
00001100 - rechtsaf
00000110 - rechtsaf
00000011 - rechtsaf
11100000 - linksaf
01110000 - linksaf
00111000 - linksaf
00011100 - rechtsaf
00001110 - rechtsaf
00000111 - rechtsaf
10011000 - scherpe hoek draai naar links
00011001 - scherpe hoek draaien naar rechts
11110000 - 90 graden draai naar links
00001111 - 90 graden draai naar rechts
11001100 of 11011000 - scherpe hoek naar links draaien
00110011 of 00011011 - scherpe hoek draaien naar rechts
11111000 - 90 graden draai naar links
00011111 - 90 graden draai naar rechts
11011100 - scherpe hoek draai naar links
00111011 - scherpe hoek draaien naar rechts
11111100 - 90 graden draai naar links
00111111 - 90 graden draai naar rechts
11111110 of 01111111 of 11111111 - zet hetzij links of rechts
In de volgende stap zullen we zien hoe de robot reageert wanneer het detecteert een snijpunt of een scherpe bocht.