Stap 4: Het algoritme:: deel 2
Geconfronteerd met een muur is de meest uitdagende taak in het programma.
Oplossing... rechts 90 graden blijven draaien. Nou, een ideale 90 graden, maar het is zeer onwaarschijnlijk dat je geconfronteerd met de muur rechtstreeks hoofd op. De kansen zijn u bent geconfronteerd met een lichte hoek. Dus hoe je de juiste hoeveelheid draaien?
Als u wiel encoders, of beter nog een on-board kompas had, kon u nauwkeurig meten van de hoek. Maar dit project is ontworpen om te werken met alleen de opgegeven onderdelen. Zo moet het probleem worden opgelost met slechts twee sensoren, die niet 100% betrouwbaar, vooral dicht bij een object zijn.
Een voorgestelde oplossing zou zijn om "tijd" hoe lang duurt uw voertuig om te doen een 90 graden spil, en dat gebruiken. Echter als je batterijen zwakkere krijgen, zal uw snelheid vergaan, verhoging van de tijd die nodig is voor het uitvoeren van de gewenste spil. Ik vond een getimede oplossing niet nauwkeurig genoeg.
Ik experimenteerde met een aantal algoritmen die had verschillende niveaus van succes en complexiteit. Ik uiteindelijk afgerekend op... hier is gemakkelijk genoeg om te begrijpen, en betrouwbaar genoeg om consequent werken.
Kortom, het voertuig stopt, leest onder meerdere hoeken voor hoogste gereflecteerde licht van de IR-sensor, doet een kleine spil en wordt de procedure herhaald totdat de hoogste lezing onder een vooraf vastgestelde limiet is.
De oplossing is "gemakkelijk" als in "take it easy!". U zult merken in de video dat ik heb met opzet gecodeerd om te "take zijn tijd". Het algoritme ten onrechte aan de kant van voorzichtigheid. U kunt spelen met het om dingen te versnellen omhoog als u wilt. Herinner me enkel, ongevallen vergroten met snelheid :) Als ik typ dit, al mijn kleine Rover rond en rond een strakke boxed in cursus voor 60 minuten zonder mijn tussenkomst, bewijzen de consistentie van het algoritme.
Als je kijkt naar de lezingen op de TM1638, het linker getal staat voor de IR-sensor (gereflecteerde licht lezing), terwijl het juiste nummer is afkomstig van de voorzijde gemonteerd ultrasone.